Abstract
Paging is an important virtual memory mechanism used in advanced operating systems for making illusion of infinite memory. However currently available second-generation microkernels provide only limited, inflexible, and unnatural support for this mechanism. The solutions used in them are implemented at the runtime level, and they incur considerable overheads. These overheads are caused by a large number of switches between different processor modes and thread context switches. The limited support of virtual memory by operating systems based on the second-generation microkernel considerably reduces the attractiveness of their usage. The reason for this is that the computer systems encountered in practice typically use many memory managers simultaneously. This paper proposes a new approach aimed at improving the support of virtual memory for operating systems based on second-generation microkernels. It is based on the implementation of the explicit intrakernel support for runtime environments simultaneously served by multiple memory managers. According to this approach, the virtual address space is divided into multiple regions each of which may be assigned a specific memory manager. This division makes it possible to organize a simple and efficient dispatching of page fault exceptions. Mechanisms for second-generation microkernel are proposed that support runtime environments that are simultaneously served by multiple memory managers. These mechanisms have improved performance and flexibility. The proposed solution is compared with the well-known L4 + L4Re solution in terms of the cost of page fault handling. The proposed solution reduces by a third the overhead due to processor mode and thread context switches compared with the L4 + L4Re approach, which is used in Fiasco.OC based on the modern version of the second-generation microkernel L4/Fiasco.
Similar content being viewed by others
References
Elphinstone, K. and Heiser, G., From L3 to seL4—What have we learnt in 20 years of L4 microkernels? Proc. of the ACM SIGOPS Symposium on Operating Systems Principles (SOSP), 2013, pp. 133–150.
Accetta, M., Baron, R., Bolosky, W., Golub, D., Rashid, R., Tevanian, A., and Young, M., Mach: A new kernel foundation for UNIX development, Proc. of the USENIX Conference, 1986, pp. 93–112.
Sechrest, S. and Park, Y., User-level physical memory management for mach, USENIX MACH Symposium, 1991, pp. 189–200.
Russinovich, M. and Solomon, D.A., Windows Internals: Including Windows Server 2008 and Windows Vista, Redmond: Microsoft Press, 2009, 5th ed.
Bovet, D. and Cesati, M., Understanding the Linux Kernel, Sebastopol: Oreilly, 2005.
Brightwell, R., Pedretti, K., and Hudson, T., Smartmap: Operating system support for efficient data sharing among processes on a multicore processor, Proc. of the ACM/IEEE Conference on Supercomputing, Piscataway, 2008, pp. 25:1–25:12.
Hofmann, O.S., Dunn, A.M., Kim, S., Lee, M. Z., and Witchel, E., InkTag: Secure applications on an untrusted operating system, Proc. of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASP-LOS), Houston, 2013, pp. 265–278.
Srivastava, A. and Giffin, J. T., Efficient monitoring of untrusted kernel-mode execution, Proc. of the Network and Distributed System Security Symposium, San Diego, 2011.
J. Liedtke, J., On microkernel construction, Proceedings of the 15th ACM Symposium on Operating System Principles (SOSP-15), Copper Mountain Resort, 1995, pp. 237–250.
Klein, G., Elphinstone, K., Heiser, G., Andronick, J., Cock, D., Derrin, P., Elkaduwe, D., Engelhardt, K., Kolanski, R., Norrish, M., Sewell, T., Tuch, H., and Winwood, S., seL4: Formal verification of an OS kernel, Proc. of the ACM SIGOPS 22nd Symposium on Operating Systems Principles, Big Sky, 2009, pp. 207–220.
The Fiasco microkernel—overview. http://os.inf.tudresden.de/fiasco/. Accessed November 30, 2013.
L4Re—the L4 runtime environment. http://os.inf.tudresden.de/L4Re/. Accessed February 2, 2014.
Aron, M., Park, Y., Jaeger, T., Liedtke, J., Elphinstone, K., and Deller, L., The SawMill framework for VM diversity, Proc. of the 6th Australasian Computer Systems Architecture Conference, Gold Coast, 2001, pp. 3–10.
Burdonov, I.B., Kossachev, A.S., and Ponomarenko, V.N., Real-time operating systems, Preprint of Inst. of Systems Programming, Russ. Acad. Sci., Moscow, 2006, no. 14. http://www.ispras.ru/ru/preprints/docs/prep-1-4-2006.pdf. Accessed February 2, 2014.
Intel Architecture Software Developer’s Manual, vol. 3: System Programming, Intel Corporation, 1999.
Author information
Authors and Affiliations
Corresponding author
Additional information
Original Russian Text © Y.I. Klimiankou, 2015, published in Programmirovanie, 2015, Vol. 41, No. 1.
Rights and permissions
About this article
Cite this article
Klimiankou, Y.I. A method for supporting runtime environments simultaneously served by multiple memory managers for operating systems based on second-generation microkernel. Program Comput Soft 41, 31–40 (2015). https://doi.org/10.1134/S036176881501003X
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S036176881501003X