现代操作系统一般将OS划分为若干个层次,再将OS的不同功能分别设置在不同的层次中。
通常将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用及运行频率较高的模块(如时钟管理、进程调度和许多模块所公用的二些基本操作),都安排在紧靠硬件的软件层次中,将它们常驻内存,即通常被称为的0S内核。这种安排方式的目的在于两方面:
(一)是便于对这些软件进行保护,防止遭受其他应用程序的破坏;
(二)是可以提高OS的运行效率。
相对应的是,为了防止OS本身及关键数据(如pcB等)遭受到应用程序有意或无意的破坏,通常也将处理机的执行状态分成系统态和用户态两种。
系统态又称为管态,也称为内核态。它具有较高的特权,能执行一切指令,访问所有寄存器和存储区,传统的0S都在系统态运行。园用户态又称为目态。它是具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区。一般情况下,应用程序只能在用户态运行,不能去
执行OS指令及访问OS区域,这样可以防止应用程序对0S的破坏。
总体而言,不同类型和规模的os,它们的内核所包含的功能司存在着一定的差异,但大多数OS内核都包含了以下两大方面的功能:
1.支撑功能
该功能是提供给OS其它众多模块所需要的一些基本功能,以便支撑这些模块工作。
其中三种最基本的支撑功能是中断处理、时钟管理和原语操作。
(1)中断处理。中断处理是内核最基本的功能,是整个操作系统赖以活动的基础,OS中许多重要的活动,如各种类型的系统调用、键盘命令的输入、进程调度、设备驱动等,无不依赖于中断。通常,为减少处理机中断的时间,提高程序执行的并发性,内核在对中断进行”有限处理。后,便转入相关的进程,由这些进程继续完成后续的处理工作。
(2)时钟管理。时钟管理是内核的一项基本功能,在OS中的许多活动都需要得到它的支撑,如在时间片轮转调度中,每当时间片用完时,便由时钟管理产生一个中断信号,促使调度程序重新进行调度。同样,在实时系统中的截止时间控制、批处理系统中的最长运行时间控制等,也无不依赖于时钟管理功能。
(3) 原语操作。所谓原语(Primitive),就是由若干条指令组成的,用于完成指定功能的整个过程。它与一般过程的区别在于:它们是原子操作(ActionOperation)。所谓原子操作是指,一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位。因此,原语在执行过程中不允许被中断。原子操作在系统态下执行,常驻内存。在内核中可能有许多原语,如用于对链表进行操作的原语、用于实现进程同步的原语等。
2 资源管理功能
(1)进程管理。在进程管理中,或者由于各个功能模块的运行频率较高,如进程的调度与分派、进程的创建与撤消等或者由于它们为多种功能模块所需要,如用于实现进程同步的原语、常用的进程通信原语等。通常都将它们放在内核中,以提高0S的性能。
(2)存储器管理。存储器管理软件的运行频率也比较高,如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的地址转换机构、内存分配与回收的功能模块以及实现内存保护和对换功能的模块等。通常也将它们放在内核中,以保证存储器管理具有较高的运行速度。
(3)设备管理。由于设备管理用户硬件紧密相关,其中很大部分也都设置在内核中。如各类设备的驱动程序、用于缓和CPU与I/0速度不匹配矛盾的缓冲管理、用于实现设备分配和设备独立性功能的模块。
参考:《计算机操作系统》第四版 汤小丹,梁红兵