linux内核简介

操作系统和内核

      操作系统是指在整个系统中负责完成基本功能和系统管理的部分,这些部分包括内核设备驱动程序启动引导程序命令行shell或其它种类的用户界面基本的文件管理工具系统工具。其中,用户界面只是操作系统的外在表象,内核才是操作系统的内在核心。通常一个内核由负责响应中断的中断程序,负责管理多个进程从面分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络进程间通信等系统服务程序共同组成。对于提供保护机制的现代操作系统来说,内核独立于普通应用程序,它一般处理系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。相对的,应用程序在用户空间执行。它们只能看到允许他们使用的部分系统资源,并且不能使用些某些特定的系统功能,不能直接访问硬件,还有其它一些使用限制。当内核运行的时候,系统以内核态进入内核空间,相反,普通用户程序以用户态进入用户空间。应用程序通过系统调用和内核通信来运行。应用程序通过调用库函数,再由库函数通过系统调用界面让内核代其完成各种不同任务。

      内核负责管理系统的硬件设备,当硬件设备想和系统通信的时候,它首先要发出一个异步中断信号去打断内核正在执行的工作。中断通常对应着一个中断号,内核通过这个中断号查找相应的中断服务程序,并调用这个程序响应和处理中断。

单内核与微内核

操作系统内核分为单内核和微内核两种:

      单内核就是把它从整体上作为一个单独的大过程来实现,并同时运行在一个单独的地址空间。这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核空间中运行,内核之间的通信是微不足道的,因为大家都在内核态,并处于同一个地址空间。

      微内核的功能被划分为独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其它服务器都运行在用户空间。不过,所有的服务器都保持独立并运行在各自的地址空间,因为,不可能像单内核那样直接调用函数,而是通过消息传递处理微内核通信:系统采用了进程间通信(IPC)机制,因此,各种服务器之间通过IPC机制传递消息,互换“服务”。服务器的各自独立有效地避免了一个服务器的失效影响另一个。

      linux是一个单内核,linux内核运行在单独的内核地址空间,但linux汲取了微内核的精华,包括模块化设计、抢占式内核、支持内核线程以及装载内核模块的能力。不仅如此,linux还避其微内核设置上的性能损失缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。