SiYu

积少成多 聚沙成塔

欢迎来到我的个人站~


Linux内核简介

操作系统和内核简介

  用户界面时操作系统的外在表象,内核才是操作系统的内在核心。系统其他部分必须依靠内核这部分软件提供的服务,像管理硬件设备,分配系统资源等等。内核有时候被称作是超级管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址控件的内存管理程序和网络、进程间通信等系统服务程序共同组成。对于提供保护机制的现代系统来说,内核独立于普通应用程序,它一般处于系统状态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存控件,统称为内核控件。相对的,应用程序在用户空间执行。它们只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,不能直接访问硬件,还有其他一些使用限制。当内核运行的时候,系统以内核态进入内核空间,相反,偶同用户程序以用户态进入用户空间。应用程序通过系统调用和内核通信来运行。如图

操作系统中的中断服务程序都不在进程上下文中执行。它们在一个与所有进程都无关的、专门的中断上下文中运行。之所以存在这样一个专门的执行环境,就是为了保证中断服务程序能够在第一时间响应 和处理中断请求,然后快速的退出。

这些上下文代表着内核活动的范围。实际上可以将处理器在任何指定时间点上的活动范围概括为下列三者之一:

  1.运行于内核空间,处于进程上下文,代表某个特定的进程执行。

  2.运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。

  3.运行于用户空间,执行用户进程。

  操作系统内核分为单内核和微内核。单内核就是把它从整体上作为一个单独的大过程来实现,并同时运行在一个单独的地址控件。因此这样的内核通常以单个静态二进制文件的形式存放于磁盘。所有内核服务都在这样的一个大内核控件中运行。微内核的功能被划分为多个独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才在各自的地址空间上。系统通过IPC机制进行消息传递。

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