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.
Published Version
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have