一、操作系统的基本概念
1.1 操作系统的概念
计算机系统自上而下可分为:硬件、操作系统、应用程序、用户
操作系统是控制和管理整个计算机系统的软件与硬件资源,合理的组织、调度计算机的工作和资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件
1.2 操作系统的特征
基本特征包括并发、共享、虚拟、异步
(1)并发
至少两个事件在同一个时间间隔内发生,这些事件在宏观上是同时发生的,在微观上是交替发生的, 操作系统的并发性指系统中同时存在着多个运行的程序
(2)共享
也就是系统资源可以供内存中多个并发执行的进程共同使用。资源共享分为两种方式:
- 互斥共享方式:资源在一段时间内只能有一个进程去访问,其他进程只能等待,这个资源叫做
临界资源 - 同时访问方式:在一段时间内可以由多个进程访问资源,当然只是宏观意义上的同时,其实是交替使用
并发和共享式操作系统的两个最基本的特征:
两者互为存在条件:资源共享是以并发为条件的,如果不并发,就么有资源共享的问题;如果系统不能对资源共享实施有效管理,那么就不能实现并发
(3)虚拟
把物理实体变成若干逻辑实体,叫虚拟技术。通过多道程序设计技术,采用让多道程序并发执行的方法,分时来使用一个CPU,实际物理上只有一个CPU,但是用户感觉到有多个CPU叫做虚拟CPU;从逻辑上扩充存储器容量,用户感觉到的但实际不存在的存储器叫虚拟存储器;将一台物理设备虚拟为逻辑上的多台设备,使多个用户在同一时间段内访问同一台设备,即同时共享,用户宏观上感觉是同时的,但实际上是微观交替访问同一台设备的叫做虚拟设备
(4)异步
多道程序环境允许多个程序并发执行,但由于资源有限,如CPU只有一个,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进
1.3 操作系统的目标和功能
(1)操作系统作为计算机系统资源的管理者
- 处理机管理
在多道程序环境下,cpu的分配和运行都以进程(或线程)为基本单位,因此对cpu的管理可理解为对进程的管理。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等
- 存储器管理
为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能
- 文件管理
计算机中所有的信息都是以文件的形式存在的,操作系统中负责文件的管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等
- 设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓存管理、设备分配、设备处理和虚拟设备等功能
(2)操作系统作为用户与计算机硬件系统之间的接口
为了让用户可以更方便快捷的使用计算机硬件并运行程序,操作系统提供了用户接口,包括命令接口和程序接口
-
命令接口:用户通过这些命令去管理作业的执行,包括联机命令接口和脱机命令接口
- 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令
- 脱机命令接口:又称批处理接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预
-
程序接口:编程人员可以使用它们来请求操作系统服务
- 由一组
系统调用(也称广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,只能通过用户程序间接调用,如使用各种外部设备、申请分配和回收内存及其它各种要求
- 由一组
(3)操作系统实现了对计算机资源的扩充
当只有硬件的时候被称为裸机,后面安装了各种软件,机器称为扩充机器或虚拟机
二、操作系统的发展历程
三、操作系统的运行环境
3.1 处理器运行模式
CPU一般会执行两种程序:内核程序和应用程序,内核程序应该有特权指令去管理由用户编写的应用程序
一般特权指令可以执行:I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字寄存器等指令
而非特权指令只有访问用户的地址空间,不能直接访问软硬件资源
而CPU的运行模式划分为两类:用户态(目态)和核心态(管态),比如当开关置于0上,变为核心态,可以执行特权指令,而变为1的时候,为用户态,可以执行非特权指令;应用程序运行在用户态,操作系统内核程序运行在管态,应用程序向操作系统请求服务时通过使用访问管态指令,从而产生中断事件将操作系统转换为核心态
操作系统的各项功能被放在不同的层次上,和硬件关联比较紧密的模块,比如时钟管理、中断处理、设备驱动等处于最底层。其次时运行频率比较高的程序,比如进程管理、存储器管理和设备管理,这两部分构成了操作系统的内核,这部分内容的指令操作工作在核心态
(1)时钟管理
时钟非常关键,首先有计时功能,另外可以通过时钟中断的管理,实现进程的切换,可见系统管理各方面都离不开时钟。比如进程通过时间片切换
(2)中断机制
中断是为了在多道程序运行环境下,提高CPU利用率,后来中断可以实现很多操作:键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等
(3)原语
底层的一些小程序,完成一些规定的操作,特点是:
- 处于操作系统最底层,最接近硬件
- 这些程序具有原子性
- 这些程序运行时间较短、调用频繁
这些小程序叫做原语,定义原语的直接方法是关闭中断,让其所有动作不可分割的完成后再打开中断
系统使用了很多操作系统来记录状态信息,比如作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等,系统的3种常见的操作如下:
- 进程管理:进程状态管理、进程调度和分派、创建与撤销进程控制块等
- 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换等
- 设备管理:缓冲区管理、设备分配和回收等
(4)系统控制的数据结构及处理
3.2 中断和异常的概念
(1)中断的过程
当CPU收到计时部件发出的中断信号时,操作系统切换为核心态,并对中断进行处理(通过内核进行处理),此时意味着进程1的时间片已用完,切换到进程2运行,并切换为用户态。进程2运行时可能发出系统调用(内中断信号),请求输出,此时,CPU切换为核心态,并对中断进行处理(进程2暂停运行、等待 I/O 完成,换进程3运行,并切换为用户态)。I/O 完成后,设备向CPU发出中断信号,操作系统切换为核心态,并对中断进行处理(恢复进程2的运行,并切换为用户态,以完成后续工作)
(2)中断和异常的定义
- 中断:也叫外中断,中断信号来源于外部设备,指来自CPU执行指令外部的事件,通常用于信息输入/输出,比如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,时钟中断表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务
- 异常:也叫内中断,中断信号来源于当前指令,指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页和专门的陷入指令等引起的事件,异常不能被屏蔽,一旦出现就应该立即处理
(3)中断和异常的分类
外中断可以分为可屏蔽中断和不可屏蔽中断,可屏蔽中断时通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活,不可屏蔽中断是指通过NMI线发出得中断请求,通常是紧急得硬件故障
异常可以分为故障、自陷、终止,故障通常是由指令执行引起得异常,自陷是一种事先安排得异常,终止时指出现了使得CPU无法继续执行得硬件故障。故障和自陷通常是软件中断,终止和外部中断是硬件中断
(4)中断和异常得处理过程
如果程序遇到中断或异常,先到对应得中断或异常看它是否可以被解决,如果可以解决,那么解决之后,CPU通过执行中断或异常得返回指令,回到原来得程序位置继续执行,如果不能被解决,就终止用户程序
3.3 系统调用
系统调用是指用户再程序中调用操作系统提供的一些子功能,系统调用可视为特殊的公共子程序,系统的各个共享资源都由操作系统管理,用户程序必须通过系统调用区执行有关资源的操作,系统调用大概有以下几类:
- 设备管理:完成设备的请求或释放,以及设备启动等功能
- 文件管理:完成文件的读、写、创建和删除等功能
- 进程控制:完成进程的创建、撤销、阻塞、唤醒等功能
- 进程通信:完成进程之间消息传递或信号传递等功能
- 内存管理:完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
用户程序只有通过陷入指令才能执行系统调用,所以必须在内核态才能执行,也就是说用户态将CPU的使用权交给操作系统,执行完系统调用后,再切换给用户程序继续执行