第一章
一、操作系统的定义
操作系统是一组计算机程序的集合,用于控制和管理硬件资源和软件资源,合理地组织计算机的工作流程,为用户提供方便、快捷、友好的应用程序使用接口。
- 是系统最基本最核心的软件,属于系统软件
- 控制和管理整个计算机的硬件和软件资源
- 合理的组织、调度计算机的工作与资源的分配
- 为用户和其它软件提供方便的接口和环境
二、操作系统的特征
- 并发性
两个及以上的进程在同一个时间间隔内同时运行。
注:并行是同一个时间点,并发是同一个时间段。
一个单核(CPU)同一时刻只能执行一个程序,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)。操作系统是伴随着“多道程序技术出现的”,因此操作系统和并发是一同诞生的。在如今的计算机中,一般都是多核cpu的,即在同一时刻可以并行执行多个程序,比如我的计算机是8核的,我的计算机可以在同一时刻并行执行8个程序,但是事实上我们计算机执行的程序并不止8个,因此并发技术是必须存在的,并发性必不可少。
- 共享性
内存中并发执行的多个程序可以共享计算机的硬件资源和软件资源。
分为互斥共享和交替共享,
- 互斥共享:利用信号量或其他手段;
- 交替共享:所谓的“同时”往往是宏观上的,而在微观上,这些用户或程序可能是交替地对该资源进行访问,例如对磁盘设备的访问
- 随机性
也叫异步性。每道程序在何时执行、各个程序执行的顺序以及每道程序所需要的时间都是不确定的,也是不可预知的。
中断的存在导致一个程序很可能不是一次性运行完,而是运行与等待交替进行
- 虚拟性
将一个物理实体映射为一个或多个逻辑对象。
三、操作系统的功能与分类
操作系统的功能
从资源管理角度来讲,操作系统具有以下五大基本功能:
- 进程和线程的管理
在多道程序环境下,cpu的分配和运行都以进程(或线程)为基本单位,因此对cpu的管理可理解为对进程的管理。进程管理的主要功能包括:进程控制、进程同步、进程通信、死锁处理、处理机调度 - 存储管理
为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括:内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。 - 文件管理
计算机中所有的信息都是以文件的形式存在的,操作系统中负责文件的管理的部分称为文件系统,文件管理包括:文件存储空间的管理、目录管理及文件读写管理和保护 - 设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括:缓存管理、设备分配、设备处理和虚拟设备等功能。 - 用户接口
为了让用户方便、快捷、可靠的操作计算机硬件并执行自己的程序,操作系统提供了用户接口
操作系统提供的接口分为两类:命令接口和程序接口- 命令接口:用户可以直接使用的,利用这些操作命令来组织和控制作业的执行。命令接口分为两类:联机命令接口和脱机命令接口,用户可以直接调用
- 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令;例如:CMD
- 脱机命令接口:又称批处理接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预。例如:.bat文件
- 程序接口:用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务
- 程序接口:由一组系统调用(也称广义指令)组成
- 用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,只能通过用户程序间接调用
- 如使用各种外部设备、申请分配和回收内存及其它各种要求
- 比如常见的图形用户界面程序接口GUI
- 命令接口:用户可以直接使用的,利用这些操作命令来组织和控制作业的执行。命令接口分为两类:联机命令接口和脱机命令接口,用户可以直接调用
操作系统的分类
按照系统功能分类,分为以下几类:
- 批处理操作系统:多用于早期的计算机,将作业一次性提交给系统,然后由系统成批的处理
- 分时操作系统:将CPU的时间分成很小的时间片,按时间片轮转法分配给多个终端用户使用的操作系统。UNIX就是典型代表。
- 实时操作系统:对于特定的输入,系统能在极短的时间内做出响应,并完成对该输入请求处理的系统。主要用在生产过程自动处理的行业。如售票系统,航天发射系统、生产过程自动控制领域。具有实时性、可靠性的特点。但是实时系统一般是专用的,交互性比较差。
- 分布式操作系统: 通过计算机网络,将分布在不同位置的计算机互连起来,实现信息交换or资源共享。其基本特征为:功能和任务的分布性、高可靠性。
- 网络操作系统:除一般操作系统的基本功能外,还提供网络服务功能和管理。
- 嵌入式操作系统:发展非常快的领域。能运行在嵌入式系统中,对整个嵌入式系统以及它控制的各种资源进行统一管理和调度的操作系统。嵌入式操作系统能有效管理复杂的系统资源,具有实时高效性、软件固态化以及应用专业化等特点。
第二章
一、处理机的态及分类
所谓处理机的态,又称处理机的特权级,就是处理机当前处于何种状态,正在执行哪类程序。
操作系统的管理程序和用户程序在处理机上执行时,二者的职责不同,权限也不同,为了保护操作系统,所以要区分处理机的态。
基本的处理机的态是管态和用户态。
- 管态:又称系统态,是操作系统的管理程序执行时机器所处的状态。在管态状态下,中央处理机可以使用全部机器指令,包括一组特权指令,可以使用所有的资源,允许访问整个存储区。
- 用户态:又称目态,是用户程序执行时机器所处的状态。在用户态状态下,禁止使用特权指令,不能直接取用资源与改变及其状态,并且只允许用户程序访问自己的存储区域。
从目态转换为管态的唯一途径是中断。
从管态到目态可以通过修改程序状态字来实现,这将伴随这由操作系统程序到用户程序的转换。
二、特权指令
在核态下系统可以操作所有系统指令,一组特权指令主要涉及以下几个方面:
- 改变机器状态的指令
- 修改特殊寄存器的指令
- 设计外部设备的输入/输出指令
特权级(Ring)也叫(hierarchical protection domains),有的也称为用户态(user mode)。它是一种机制来保护数据和阻止恶意行为(确保计算机安全)。电脑操作系统提供不同权限访问级别的资源。特权级分为4级,特权级0、1、2、3。
在windows中只使用特权级0和特权级3。特权最高的一般是特权级0,可以直接操作硬件,如CPU和内存。一般操作系统和驱动运行在此级别下。特权级3是给一般的程序使用的,可以调用基本的CPU指令。在特权级三无法调用特权级0的指令,如果调用则显示为非法指令。
引用特权级的概念是为了保护计算机,一些危险指令只有操作系统可以执行,防止普通程序滥用其他程序的资源。如间谍软件要想开启摄像头就必须向特权级0的驱动程序请求开启,否则就不允许。
中断门、调用门之类的。当然,也可以直接写一个驱动,因为驱动一般是ring0级别的,所以,只要驱动被加载,就意味着进入了ring0.
在系统的表象上看,我们打开任务管理器,可以看到一个名称为“System”的进程,这个事实上就是ring0的进程。所有的驱动都显示为在这个进程中,所有的驱动中创建的系统线程都是在这个进程中。表面上看,好像是ring3的进程,事实上,它是工作在ring0的。
三、中断
中断的概念
CPU 暂时停下现行程序的执行,转向为临时发生的事件进行处理,处理完后,再返回执行原程序。中断是一种在发生了一个外部的事件时调用相应的处理程序(或称服务程序)的过程。中断服务程序与中断时CPU正在运行的程序是相互独立的,相互不传递数据。
起作用主要有以下几点:
- 实现主机和外设并行工作
- 故障的处理
- 实时处理
中断的类型
- 内中断:发生在主机内部的中断称为内中断,也称为异常
- 外中断:由主机外部事件引起的中断称外中断
中断的例子:复位,时钟中断,键盘中断,页面失效中断
内部中断(异常处理):算术操作异常、非法指令、越权指令、页面失效
外部中断(可屏蔽,不可屏蔽):键盘、鼠标、电源
软件中断 :自陷(系统调用)
向量中断和探询中断
在向量中断里,由于每个中断都有一个独立的标识符,所以不需要经过分析就可以直接转入处理该中断的程序。而探询中断机制是将系统中的中断分为几个大类,每一个大类都包含若干中断类型。当产生一个中断信号时,在探寻机制下,由中断响应转入到某一大类的中断程序入口。在这一程序中,有一个分析例程用来分析、判断应该转入哪个具体的中断处理程序。
所以向量中断比起探询中断在处理时间上可以大大缩短,但是会消耗大量存储中断向量的主存。