本文共 3300 字,大约阅读时间需要 11 分钟。
内核程序和用户程序
两种程序,前者是后者的管理者
,可以执行一些如 I/O 指令等在内的特权指令,这些指令是用户程序或用户无法直接使用的;在具体实现上,CPU 划分为两种运行状态
,并在 CPU 中设置一个特殊的电路逻辑,逻辑值为 1 时 CPU 处于内核态
,逻辑值为 0 时 CPU 处于用户态
;用户程序在用户态中运行,内核程序在内核态中运行。操作系统的内核由一些与硬件关联紧密的模块和运行频率比较高的程序组成,前者如始终管理、中断处理、设备驱动;后者如进程管理、存储器管理和设备管理
。不同的操作系统对内核的定义不完全一样,但是大多数操作系统都包括以下四个方面的内容:
关键设备
,操作系统的大多数功能都依赖于时钟
的正常工作,批处理系统中通过时钟管理来衡量一个作业的运行程度,实时系统中按截止时间控制运行。计时
,为用户提供标准的系统时间;通过时钟中断
的管理,实现进程的切换
。出于提高多道程序运行环境中 CPU 利用率而诞生的
,主要针对外部设备
;随着时间发展,成为操作系统各项操作的基础
,进程的管理和调度就依赖于中断机制;可以说现代操作系统是靠中断驱动的软件
。一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序,减少中断的处理时间,提高系统并行处理能力
。底层必然是一些可被调用的公用小程序
,这些小程序各自完成一个规定的操作,特点如下:1)处于操作系统最底层,是最接近硬件的部分。 2)具有原子性,其操作只能一气呵成。 3)运行时间较短,调用频繁。
常把具有这些特点的程序称为“原语(Atomic Operation)
;定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断
。设备驱动、CPU 切换、进程通信等功能中的部分操作都可以定义为原语
,使其称为内核组成部分。登记状态信息的数据结构
很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存区分配表
等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下 3 种:1)进程管理:进程状态管理、进程调度和分派、创建与撤销进程控制块。 2)存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。 3)设备管理:缓冲区管理、设备分配和回收等。
中断,Interruption,也成为外中断,指来自 CPU 执行指令以外的事件的发生
,如设备发出的 I/O 结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行等任务
。这些中断通常与当前指令执行无关的事件,即它们与当前处理机运行的程序无关。
异常,Exception,也称内中断、例外或陷入(trap),指源自 CPU 执行指令内部的事件
,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令引起的事件。对异常的处理一般依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理
。指 CPU 响应中断后,首先保护程序的现场状态
,在保护现场过程中,为了能够在中断服务程序结束后正确恢复并继续执行现行程序,CPU 不响应更高级中断源的中断请求。指将原来的程序的断点,即程序计数器 PC,保存起来
,这是为了保证中断服务程序结束后可以继续执行程序。取出中断服务程序的入口地址送入程序计数器 PC
。允许更高中断请求得到响应
。保证在恢复现场和屏蔽字时不中断
。指用户调用操作系统提供的一些用于管理各种资源的程序或用于提供系统服务的服务程序
。系统调用大致分为:1)设备管理:完成设备的请求和释放,以及设备启动。 2)文件管理:完成文件的读写、创建删除。 3)进程管理:进程的创建、撤销、阻塞及唤醒。 4)进程通信:进程之间的消息传递和信号传递等功能。 5)内存管理:内存的分配、回收以及获取作业占用内存区大小及首地址等功能。
系统调用的一般过程:
用户程序执行陷入指令(访管指令或trap指令),将 CPU 使用权交给内核程序,内核程序对系统调用作相应处理,执行完成后内核程序将 CPU 使用权还给用户程序
。
一些会发生用户态向核心态转换的例子:
1)用户程序要求操作系统的服务,即系统调用。 2)发生一次中断。 3)用户程序中产生了一个错误状态。 4)用户程序中企图执行一条特权指令。 5)从和心态转向用户态由一条指令实现,这条指令也是特权指令,一般是中断返回指令。
值得注意的是,访管指令不属于特权指令
。为什么说直到出现中断和通道技术后,多道程序概念才变得有用? 多道程序并发执行指有的程序在 CPU 上运行,而另一些程序在 I/O 设备上进行传输,即通过 CPU 操作与外设传输在时间上的重叠必须有中断和通道技术的支持,原因如下: 1)通道是一种控制一台或多台外部设备的硬件机构,一旦被启动就独立于 CPU 运行,因而做到了输入/输出操作与 CPU 并行工作。但早期 CPU 与通道的联络方法是由 CPU 向通道发出询问指令来了解通道工作是否完成;若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到 CPU 与 I/O 设备并行工作。 2)在硬件上引入中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件即中断机构向 CPU 发出信号,这时候 CPU 立即停下工作转向处理中断请求,待处理完中断后继续原来的工作。 因此,通道技术和中断技术结合起来就可实现 CPU 与 I/O 设备并行工作,即 CPU 启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向 CPU 发出中断请求,CPU 则暂停正在执行的操作,对出现的中断进行处理,处理完成再继续原来的工作。这样,就真正做到了 CPU 与 I/O 设备并行工作。此时,多道程序的概念才变成现实。
大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态
,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行
,从而降低内核的设计复杂性。那些移出内核的操作系统代码根据分层原则被划分成若干服务程序
,他们的执行相互独立,交互则借助于微内核进行通信。微内核结构有效地分离内核与服务、服务与服务
,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统地可靠性。转载地址:http://mmqgn.baihongyu.com/