提纲
- 操作系统虚拟机
- 操作系统的组织结构
- 处理机状态
- 中断
操作系统虚拟机
计算机原本是纯硬件的,称为裸机,如果想直接操作,其难度会非常大。比如想存储一点东西到硬盘中,就需要知道该存到哪个区的哪个磁道。这明显是不行的,这些事情应该由操作系统完成。 在硬件上放上一层操作系统,让操作系统替代手工去完成这些操作。有了一层操作系统的裸机就构成了操作系统虚拟机。 操作系统虚拟机简化原有操作,并添加一些功能。访问计算机的硬件都可以在软件层面由操作系统去做。
操作系统虚拟机提供的额外功能是由命令体现的,称为操作命令语言,如Linux的cat,vi,cp,cd等命令。是操作下体哦那个能执行的指令的集合,描述了操作系统虚拟机的能提供的功能。
操作系统的组织结构
操作系统其组织架构十分庞大,因此衍生出不同架构,将操作系统的结构进行划分。操作系统在具体实现上,不会完全采用某一种方式,往往是混合内核
- 一体化结构
在一体化结构中,操作系统的所有功能模块,数据结构全部放在一个模块中,操作系统的软件模块之间没有显示的接口。采用这种结构的操作系统不在少数,好处是设计简便。但是缺点是难以维护,一旦系统某些功能不符合要求,就需要全部重做。
- 模块化结构
模块化结构的系统功能是通过逻辑独立的模块来划分的,相关模块间具有良好定义的接口。采用模块化设计的系统能作为抽象数据类型或对象方法来实现,缺点是存在潜在的性能退化。
- 可扩展内核结构
可扩展内核通过使用一个基本的功能集合,以实现特定操作系统的模块化组织结构。也称为微内核
微内核的系统具有许多优点
- 提高安全性、可靠性,绝大多数服务是作为用户进程运行的
- 便于操作系统扩充,只需将新服务增加到用户空间而无需修改内核
- 便于操作系统的移植,微内核所需修改的内容少
- 便于形成不同策略特征的操作系统,只需在同一微内核上进行定制化的修改。
- 层次结构
将系统功能模块分为不同层次,以一定的原则形成整体。上层的功能只依赖于下层实现。现实中几乎没有一种操作系统以分层结构设计,因为其限制过于严格,但是思想方法值得借鉴
处理机的状态
处理机在运行过程中,有两类程序,一类是管理程序,一类是用户程序。系统程序负责管理和分配资源,如I/O管理,主存分配,处理机调度等。而用户程序运行时,除了基本的操作之外,当需要使用系统资源时,需要向系统资源申请,让系统程序代为执行。这两类程序执行时有不同的权限,为此根据对资源和指令的权限将处理机分为多种状态(模式),一般而言分为管态和用户态。
管态是操作系统管理程序执行时机器所处的状态,该状态下允许处理机使用全部系统资源以及所有指令(包括一部分特权指令),允许访问整个存储区。
用户态是用户程序执行时机器所处的状态。此状态下禁止使用特权指令,不可直接取用系统资源与改变机器状态,用户程序只可访问自己的那部分存储区
特权指令,一般包括以下几个方面
- 改变机器状态的指令
- 修改特殊寄存器的指令
- 涉及外部设备输入输出的指令
为了区分处理机的不同状态,需要硬件支持,所以CPU内一般有系统状态位的状态寄存器。
用户程序运行时,若需要请求操作系统的服务,则要通过一种受控方式进入操作系统,将用户态转为管态,由操作系统取得控制权,执行相应的服务历程,服务完毕后返回用户态,用户程序继续执行
中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
比如:当你正在专心看书的时候,忽然来了一个电话,于是记下书的页码,去接电话,接完电话后接着刚才的页码继续看书,这是一个典型的中断的过程。电话是老师打过来的,让你赶快交作业,你判断交作业的优先级比看书高,于是电话挂断后先做作业,等交完作业后再接着刚才的页码继续看书,这是一个典型的在中断中进行任务调度的过程。
关于中断的详细介绍见对应文档