Talk:COMP 3000 Essay 1 2010 Question 1
Microkernel
- Moving kernel functionality into processes contained in user space, e.g. file systems, drivers
- Keep basic functionality in kernel to handle sharing of resources
- Separation allows for manageability and security, corruption in one does not necessarily cause failure in system
- Large amount of moving from a process to Kernel to user space and back again, this is a costly operation.
Microkernel
- try's to minimize the amount of software that is mandatory or required
advantages of Microkernel
- favors a modular system structure
- one failure of a program does not impact any other programs
- can support more than one api or strategies since all programs are seperated
Microkernel Concepts
Address Space
Thread's IPC
Unique Identifiers
Virtual Machine
- Partitioning or virtualizing resources among OS virtualization running on top of host OS
- Virtualized OS believe running on full machine on its own
System Level Virtualization
VMM
- stands for Virtual Machine Monitor, also known as the hyper-visor[4]
- responsible for virtualization of hardware(mapping physical to virtual) and the VM that run on top of the virtuallized hardware [4]
- usually a small os with no drivers , so it is coupled with a linux distro that provides device / hardware access [4]
- the os that the VMM is using for driver's is called the hostOS [6]
- the hostOS provides login and physical access to the hardware as well as management for the VMM [6]
VM
- the OS that the vm is running is called the guestOS [6]
- the guestOS only sees resources that have been allocated to the VM [6]
three approaches
- Type I virtualization [5]
- runs off the physical hardware [4]
- Isolation of the guestOs from the hardware is done threw processe level protection meachnism[6]
- ring 0 = VMM [6]
- ring 1 = VM [6]
- this means all instructions from the VM must go threw the VMM [6]
- since there can be multiple VM's on a computer the scheduling is done by the VMM [6]
- on boot the VMM creates a hardware platform for the VM [6]
- load's the VM kernel into virtual memory and then boot's it like a regular computer [6]
- ex. Xen [4]
- Type II virtualization [5]
- run off the host Os [4]
- ex. VMware , QEMU [4]
- Para-virtualization [6]
- Similar to Type but use the HostOs for Device driver access [6]
Exokernel
- Micro-kernel architecture with limited abstractions, ask for resource, get resource not resource abstraction
- Less functionality provided by kernel, security and handling of resource sharing
- Once application receives resource, it can use it as it wishes/in control
- Keep the basic kernel to handle allocating resources and sharing rather than developing straight to the hardware
- multiplex resources securely providing protection to mutual distrustful application threw the use of secure binding's[1]
- Goal of the exokernel is to give LibOS maximum freedom with out allowing them to interfere with each other. to do this the exokernel separates protection from management in doing this it provide 3 important tasks[1]
- tracking ownership of resources [1]
- ensuring protection by guarding all resource usage and binding points (not to shure what binding points are)[1]
- revoking access to the resources [1]
- LibrayOS (LibOs)
- Reduces the number of kernel crossings[1]
- Not trusted by the exokernel so can be trusted by the application , Example given is a bad parameter passed to the LibOs only the application is affected.[1] (So LibOs cant interact with kernel ???)
- Any application running on the Exokernel can change the LibrayOs freely [1]
- Application that use LibOS that implement standard interfaces (POSIX) will be portable on any system with the same interface [1]
- LibOs can be made portable if it is designed to interact with a low-level machine independent level to hide hardware details [1]
Exokernel Design
Design Principles
- Securely Expose Hardware [1]
- an Exokernel tries to create low level primitives that the hardware resources can be accessed from, this also includes interrupts,exceptions [1]
- the exokernel also export privileged instructions to the LibOS so that traditional OS abstractions can be implemented (eg Process , address pace)[1]
- Exokernels should avoid resource management except when required protection ( allocation , revocation , ownership)[1]
- application based resource management is the best way to build flexible efficient flexible systems [1]
- Expose allocation[1]
- allow LibOs to request physical resources [1]
- resource allocation should not be automatic, the LibOS should participate in every single allocation decision [1]
- Expose Names[1]
- Use physical name's when ever possible[3] (not to sure what physical names are, I think it is as simple as what the hardware is called)--Asoknack 20:27, 9 October 2010 (UTC)
- Physical names capture useful information [3]
- safer than and less resource intensive than virtual names as no translations are needed[3]
- Expose Revocation [1]
- use visible revocation protocol [1]
- allows well behaved LibOS to preform application level resource management [1]
- Visible revocation allows the LibOS to choose what instance of the resource to release[1](Visible means that when revocation happens the exokernel tell the LibOS that resource is being revoked)
Policy
- LibOS handle resource policy decisions
- Exokernels have a policy to decided between competing LibOS (Priority , share of resources)
- it enforces this threw allocation and deallocation (every thing can achieved threw this even what block to write and such)
Secure Bindings
- Used by the exokernel to allow the LibOS to bind to resources [1]
- Allows the separation of protection and resource use [1]
- only checks authorization during bind time [1]
- Application's with complex needs for resources only authorized during bind.[1]
- access checking is done during access time and there is no need to understand complex resources needs during access[1]
- (this means that the exokernel checks once to make sure an application has authorization once approved, when the application tries to use the resource the exokernel is only concerned about policy conflict's)--Asoknack 18:20, 9 October 2010 (UTC)
- allows the kernel to protect the resources with out understanding what the resource is [1]
- three way's to implement
- Hardware Mechanisms [1]
- Software caching [1]
- Downloading application code [1]
Downloading Code to the Kernel
- used to implement secure bindings , and improve performance[1]
- eliminate the number of kernel crossings [1]
- downloaded code can be run with out the application to be scheduled [2]
Visible Resource Revocation
- Used for most resources [1]
- allows for LibOS to help with deallocation [1]
- LibOS are able to garner what resources are scare [1]
- Slower than Invisible as application involvement is required [1]
- ex of when invisible is used is Processor addressing-context identifiers [1]
Abort Protocol
- allows the exokernel to take resources away from the LibOS [1]
- used when the LibOS fails to respond to the revocation request [1]
- Exokernel must be careful not to delete as the LibOS might need to write some system critical data to the resource [1]
Comparisons
Exokernel/Microkernel
Similarities
- Limited functionality in kernel
- functionality in kernel to handle sharing of resources and security
- avoids programming directly to hardware which creates a dependency
- Additional functionality provided in user space as processes
Differences
- Minimal abstractions provided by the kernel
- Applications given more power in exokernel
Exokernel/VM
Similarities
- Idea of partitioning resources between applications/OSs
- "Control" of resource given
- Isolation from other applications/OSs
Differences
- Exokernel runs applications, VM runs OS
- VM uses a hostOS and guestOSs run on top
- Virtualization on VMs, Exokernel deals with real resources
- VM hides a lot of information because it emulates. Exokernel does not.
Microkernel/VM
Differences
- With a virtual machine, you are not virtualizing apps like with a microkernel but virtualizing an entire Operating System.
- This can be costly but the benefits are that it's easier and all the standard OS features are available.
References
[1] Engler, D. R., Kaashoek, M. F., and O'Toole, J. 1995. Exokernel: an operating system architecture for application-level resource management. In Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles (Copper Mountain, Colorado, United States, December 03 - 06, 1995). M. B. Jones, Ed. SOSP '95. ACM, New York, NY, 251-266. DOI= http://doi.acm.org/10.1145/224056.224076
[2]Engler, Dawson R. "The Exokernel Operating System Architecture." Diss. Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1998. Web. 9 Oct. 2010. <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.5054&rep=rep1&type=pdf>.
[3]Kaashoek, M. F., Engler, D. R., Ganger, G. R., Briceño, H. M., Hunt, R., Mazières, D., Pinckney, T., Grimm, R., Jannotti, J., and Mackenzie, K. 1997. Application performance and flexibility on exokernel systems. In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (Saint Malo, France, October 05 - 08, 1997). W. M. Waite, Ed. SOSP '97. ACM, New York, NY, 52-65. DOI= http://doi.acm.org/10.1145/268998.266644
[4]Vallee, G.; Naughton, T.; Engelmann, C.; Hong Ong; Scott, S.L.; , "System-Level Virtualization for High Performance Computing," Parallel, Distributed and Network-Based Processing, 2008. PDP 2008. 16th Euromicro Conference on , vol., no., pp.636-643, 13-15 Feb. 2008 DOI= http://doi.acm.org/10.1109/PDP.2008.85
[5]Goldberg, R. P. 1973. Architecture of virtual machines. In Proceedings of the Workshop on Virtual Computer Systems (Cambridge, Massachusetts, United States, March 26 - 27, 1973). ACM, New York, NY, 74-112. DOI= http://doi.acm.org/10.1145/800122.803950
[6]Vallee, G., Naughton, T., and Scott, S. L. 2007. System management software for virtual environments. In Proceedings of the 4th international Conference on Computing Frontiers (Ischia, Italy, May 07 - 09, 2007). CF '07. ACM, New York, NY, 153-160. DOI= http://doi.acm.org/10.1145/1242531.1242555
[7]Liedtke, J. 1995. On micro-kernel construction. In Proceedings of the Fifteenth ACM Symposium on Operating Systems Principles (Copper Mountain, Colorado, United States, December 03 - 06, 1995). M. B. Jones, Ed. SOSP '95. ACM, New York, NY, 237-250. DOI= http://doi.acm.org/10.1145/224056.224075
Unsorted
Exokernel- Minimalistic abstractions for developers Exokernels can be seen as a good compromise between virtual machines and microkernels in the sense that exokernels can give that low level access to developers similar to direct access through a protected layer and at the same time can contain enough hardware abstraction to allow similar benefit of hiding the hardware resources to application programs. Exokernel – fewest hardware abstractions to developer Microkernel - is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system Virtual machine is a simulation of any or devices requested by an application program Exokenel – I’ve got a sound card Virtual Machine – I’ve got the sound card you’re looking for, perfect virtual match Microkernel – I’ve got sound card that plays Khazikstan sound format only MicroKernel - Very small, very predictable, good for schedualing (QNX is a microkernel - POSIX compatable, benefits of running linux software like modern browsers)
This is some ideas I've got on this question, please contribute below -Rovic
Outlining some main features here as I see them.
I found that the exokernel was an even lower-level design than the microkernel, closer to the hardware without abstraction. They have the same architecture with the basic functionality contained in the kernel to manage everyone. As the exokernel "gives" the resource to the application it can use the resource in isolation of other applications (until forced to shared) much like VMs receive their resources, either partitioned or virtualized, and execute as if its running on its own machine. There is this similar notion of partitioning the resources among applications/OS and allowing them to take control of what they have.
I'll locate some references later on. --Slay 15:00, 7 October 2010 (UTC)
I'm just going to post my answer for question 1 on the individuel assignment and hope it helps. --Aellebla 15:06, 12 October 2010 (UTC)
The design of the micro kernel was to take everything they could out of the Kernel and put it into a process. For ex, networking would be put into a process instead of staying in the kernel. The micro kernel dev's tried to keep lots of things in user space for efficiency. But one major problem with this is there would be a large amount of moving from a process to the kernel to user space and back again and this is a costly, non efficient process.It was an application specific OS, there was no multiplexing. With a virtual machine you are not virtualizing apps like with a microkernel but virtualizing an entire Operating System. This is very heavy however but the benefits are that it‟s easy and all the standard OS features are there whereas in a microkernel setup they would not all be there and this can be seen as a compromise.
Exokernels can be seen as a compromise to virtual machines and microkernels because virtual machines emulate and exokernels do not. When you emulate something you hide a lot of the actual information because you wouldn‟t be able to see the „real‟ hardware. If we look at a virtual box setup running Linux, and we go look at all the hardware, it will be displayed as fake hardware.
Maybe we can have an introduction - paragraph or so on each type - then similarities - differences - and the compromise. I am going to do some research and writing this weekend and I will put some up -- Jslonosky
btw in my page (i guess you can call it that) i have some resources i have found --Asoknack 15:50, 8 October 2010 (UTC) - Wow, nice man. I will go ahead and write up the descriptive paragraphs on each kernel and virtual machine if no one minds. --Jslonosky
I think we should divide up the paragraphs and proofread each others instead. (Are there only 4 of us?) I don't have much time to work on this today though but I'll try to work on it tomorrow morning. - Slay
Sure guy. That sounds good. There should be 5 or 6 of us though.. . Oh well. Their loss. I will do some before or after work today. Ill start with Microkernel since there is not a large amount of info here, and so we don't overlap each other - JSlonosky
yeah i think there was more like 7 of us btw if any one has any more information feel free to add it would be nice if you add the references so that way citing is really easy on acm.org it will auto give you the citation info (where it says Display Formats click on ACM Ref and new window with the citation info auto pop's up) --Asoknack 02:28, 11 October 2010 (UTC)
I added an outline of the similarities and differences. Add any more that I missed. These are from observations so I don't have any resources. -Slay That's probably fine. Our textbook probably outlines some of them, so I am sure we can find a few there - JSlonosky
The Essay
Let's actually breakdown the essay into components then write it here.
We have our intro/thesis statement
...to the extent that exokernels be seen as a compromise between virtual machines and microkernels. -I'll work on the initial intro, should have it ready by tonight. -Slade
3 paragraphs that prove it Explain how the key design characteristics of these three system architectures compare with each other.
and conclusion