129 research outputs found
Paramecium: An Extensible Object-Based Kernel
In this paper we describe the design of an extensible kernel, called Paramecium. This kernel uses an object-based software architecture which together with instance naming, late binding and explicit overrides enables easy reconfiguration. Determining which components reside in the kernel protection domain is up to the user. An certification authority or one of its delegates certifies which components are trustworthy and therefore permitted to run in the kernel protection domain. These delegates may include validation programs, correctness provers, and system administrators. The main advantage of certifications is that it can handle trust and sharing in a non-cooperative environment
The flask security architecture: system support for diverse security policies
technical reportOperating systems must be flexible in their support for security policies, i.e., the operating system must provide sufficient mechanisms for supporting the wide variety of real-world security policies. Systems claiming to provide this support have failed to do so in two ways: they either fail to provide sufficient control over the propagation of access rights, or they fail to provide enforcement mechanisms to support fine-grained control and dynamic security policies. In this paper we present an operating systems security architecture that solves both of these problems. The first problem is solved by ensuring that the security policy (through a consistent replica) is consulted for every security decision. The second problem is solved through mechanisms that are directly integrated into the service-providing components of the system. The architecture is described through its prototype implementation in the Flask microkernel-based OS, and the policy flexibility of the prototype is evaluated. We present initial evidence that the architecture's performance impact is modest. Moreover, our architecture is applicable to many other types of operating systems and environments
Hey, You Got Your Language In My Operating System!
Several projects in the operating systems research community suggest a trend of convergence among features once divided between operating systems and languages. We describe how partial evaluation and transformational programming systems apply to this trend by providing a general framework for application support, from compilation to run-time services. We contend that the community will no longer think of implementing a static collection of services and calling it an operating system; instead, this general framework will allow applications to be flexibly configured, and the ``operating system\u27\u27 will simply be the application support that is supplied at run-time
Recommended from our members
Issues in Extensible Operating Systems
Operating systems research has traditionally consisted of adding functionality to the operating system or inventing and evaluating new methods for performing functions. Regardless of the research goal, the single constant has been that the size and complexity of operating systems increase over time. As a result, operating systems are usually the single most complex piece of software in a computer system, containing hundreds of thousands, if not millions, of lines of code. Today’s operating system research is directed at finding new ways to structure the operating system in order to increase its flexibility, allowing it to adapt to changes in the application set it must support. This paper discusses the issues involved in designing such extensible systems and the array of choices facing the operating system designer. We present a framework for describing extensible operating systems and then relate current operating systems to this framework.Engineering and Applied Science
Advancing Operating Systems via Aspect-Oriented Programming
Operating system kernels are among the most complex pieces of software in existence to-
day. Maintaining the kernel code and developing new functionality is increasingly compli-
cated, since the amount of required features has risen significantly, leading to side ef fects
that can be introduced inadvertedly by changing a piece of code that belongs to a completely
dif ferent context.
Software developers try to modularize their code base into separate functional units.
Some of the functionality or “concerns” required in a kernel, however, does not fit into
the given modularization structure; this code may then be spread over the code base and
its implementation tangled with code implementing dif ferent concerns. These so-called
“crosscutting concerns” are especially dif ficult to handle since a change in a crosscutting
concern implies that all relevant locations spread throughout the code base have to be
modified.
Aspect-Oriented Software Development (AOSD) is an approach to handle crosscutting
concerns by factoring them out into separate modules. The “advice” code contained in
these modules is woven into the original code base according to a pointcut description, a
set of interaction points (joinpoints) with the code base.
To be used in operating systems, AOSD requires tool support for the prevalent procedu-
ral programming style as well as support for weaving aspects. Many interactions in kernel
code are dynamic, so in order to implement non-static behavior and improve performance,
a dynamic weaver that deploys and undeploys aspects at system runtime is required.
This thesis presents an extension of the “C” programming language to support AOSD.
Based on this, two dynamic weaving toolkits – TOSKANA and TOSKANA-VM – are presented
to permit dynamic aspect weaving in the monolithic NetBSD kernel as well as in a virtual-
machine and microkernel-based Linux kernel running on top of L4. Based on TOSKANA,
applications for this dynamic aspect technology are discussed and evaluated.
The thesis closes with a view on an aspect-oriented kernel structure that maintains
coherency and handles crosscutting concerns using dynamic aspects while enhancing de-
velopment methods through the use of domain-specific programming languages
Java operating systems: design and implementation
Journal ArticleLanguage-based extensible systems such as Java use type safety to provide memory safety in a single address space. Memory safety alone, however, is not sufficient to protect different applications from each other. such systems must support a process model that enables the control and management of computational resources. In particular, language-based extensible systems must support resource control mechanisms analogous to those in standard operating-systems. They must support the separation of processes and limit their use of resources, but still support safe and efficient interprocess communication
Customizable Operating Systems
A customizable operating system is one that can adapt to improve its functionality or performance. The need for customizable and application-specific operating systems has been recognized for many years, but they have yet to appear in the commercial market. This paper explores the notion of operating system customizability and examines the limits of existing approaches. The paper begins by surveying system structuring approaches for the safe and efficient execution of customizable operating systems. Then it discusses the burden that existing approaches impose on application software, and explores techniques for reducing this burden. Finally, support for customizability in the Synthetix project is described and illustrated through two examples: a dynamically specialized file system read call, and an adaptive Internet-based MPEG video player
- …