在传统的操作系统中,核心对于用户程序是由特权级工具和CPU的MMU提供保护的。第一,用户进程和核心是由CPU的不同运行级别分开的:用户进程在用户模式中运行,拥有最低的优先级;核心在核心模式运行,拥有最高的优先级。第二,核心被映射到只有在内核模式程序才可访问的一块内存地址上,由CPU中MMU的一个页表控制,因此,用户程序是不能直接存取内核的。用户进程通过系统调用来获取核心服务,这样的设计保证了系统核心的安全,
系统调用是系统的一个功能,它在用户程序向受保护的内核请求服务时被触发。在传统的操作系统中,系统调用检查用户程序提供的参数,建立一个数据结构将这些参数传递到内核,并且执行一个被称为软中断的指令。 接着,CPU的中断管理机构保存用户进程的状态并且将运行级别切换到内核模式。最后,系统进入内核函数去执行系统调用。因此,在传统的操作系统中,用户进程需要承担系统调用准备工作的额外开销,因为他们需要付出软中断和进程上下文切换的开销。
用户进程不能直接存取系统核心,但同时也因为频繁的核心模式和用户模式的切换降低了系统的性能。如果用户进程在核心模式下运行,因为不需要用户模式和内核模式的切换,系统调用前期的额外开销就可以节省下来。因此,在某些对执行性能要求比较高的环境,一些原属于用户模式的程序,需要运行到核心模式下以提高性能,典型的如一些web服务程序。但是,简单的让用户进程在核心模式下运行是很危险的,因为核心模式下的进程可以无限制的作用于整个操作系统的资源。
目前有几种使用户程序在核心模式运行的方法,本论文试图通过比较各种使用户进程运行到核心模式下的方法,分析各自的原理和实现方案,找出各自的适用范围和优缺点,并提供其中一种的详细实现方案,以验证程序在核心模式下运行所带来的好处,为提高程序运行性能服务。
为了性能的检验,编写用于验证程序运行效率的程序,通过使其运行在核心模式下,得出比在用户模式下节省约1/3时间的结论。
论文的其余部分是这样组织的:在第二章,我们讨论了使用户程序在核心模式运行需要的相关知识。在第三章,我们介绍了目前使用的几种方案,介绍了其基本原理、适用环境并比较了它们的问题和不足。在第四章,我们对于其中的一个方案详细介绍了方案的实施。
文章来源于领测软件测试网 https://www.ltesting.net/