mirror of
https://github.com/Didnelpsun/CS408.git
synced 2026-02-10 14:15:53 +08:00
301 lines
16 KiB
Markdown
301 lines
16 KiB
Markdown
# 概述
|
||
|
||
## 操作系统的定义
|
||
|
||
+ 是系统最基本最核心的软件,属于系统软件。
|
||
+ 控制和管理整个计算机的硬件和软件资源。
|
||
+ 合理的组织、调度计算机的工作与资源的分配。
|
||
+ 为用户和其它软件提供方便的接口和环境。
|
||
|
||
## 操作系统的功能
|
||
|
||
### 计算机系统资源的管理者
|
||
|
||
管理软硬件资源、合理的组织、调度计算机的工作与资源的分配。
|
||
|
||
#### 处理器(CPU)管理
|
||
|
||
在多道程序环境下,CPU的分配和运行都以进程(或线程)为基本单位,因此对CPU的管理可理解为对进程的管理。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
|
||
|
||
#### 存储器管理
|
||
|
||
为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
|
||
|
||
#### 文件管理
|
||
|
||
计算机中所有的信息都是以文件的形式存在的,操作系统中负责文件的管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
|
||
|
||
#### 设备管理
|
||
|
||
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓存管理、设备分配、设备处理和虚拟设备等功能。
|
||
|
||
### 用户与计算机硬件系统之间的接口
|
||
|
||
为了让用户方便、快捷、可靠的操作计算机硬件并执行自己的程序,操作系统提供了用户接口。
|
||
|
||
操作系统提供的用户接口分为三类:命令接口、程序接口、图形用户接口。
|
||
|
||
#### 命令接口
|
||
|
||
用户可以直接使用的,利用这些操作命令来组织和控制作业的执行。
|
||
|
||
命令接口分为两类:联机命令接口和脱机命令接口。
|
||
|
||
+ 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令。
|
||
+ 脱机命令接口:又称批处理接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预。
|
||
|
||
批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat。
|
||
|
||
#### 程序接口
|
||
|
||
用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务。由一组系统调用(也称广义指令)组成。
|
||
|
||
用户通过在程序中使用这些系统调用来请求操作系统为其提供服务(也称为系统调用),只能通过用户程序间接调用,如使用各种外部设备、申请分配和回收内存及其它各种要求。
|
||
|
||
#### 图形用户接口
|
||
|
||
即图形用户界面GUI。指采用图形方式显示的计算机操作用户界面。
|
||
|
||
### 作为扩充机器(虚拟机)
|
||
|
||
没有任何软件支持的计算机称为裸机。
|
||
|
||
覆盖了软件的机器称为扩充机器或虚拟机。
|
||
|
||
## 操作系统的特征
|
||
|
||
操作系统具有并发、共享、虚拟、异步四个特征,其中并非和共享是两个最基本的特征,两者互为存在条件。
|
||
|
||
### 并发
|
||
|
||
+ 并发:两个或多个事件在同一时间间隔内发生,这些事件在宏观上是同时发生的,在微观上是交替发生的,操作系统的并发性指系统中同时存在着多个运行的程序。
|
||
+ 并行:两个或多个事件在同一时刻发生。
|
||
+ 一个单核(CPU)同一时刻只能执行一个程序,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)。
|
||
+ 操作系统是伴随着“多道程序技术”出现的,因此操作系统和并发是一同诞生的。
|
||
+ 在如今的计算机中,一般都是多核CPU的,即在同一时刻可以并行执行多个程序,比如计算机是八核的,计算机可以在同一时刻并行执行八个程序,但是事实上计算机执行的程序并不止八个,因此并发技术是必须存在的,并发性必不可少。
|
||
|
||
### 共享
|
||
|
||
+ 资源共享即共享,是指系统中的资源可以供内存中多个并发执行的进程共同使用。
|
||
+ 共享分为两类:互斥共享和同时共享。
|
||
|
||
#### 互斥共享
|
||
|
||
+ 计算机中的某个资源在一段时间内只能允许一个进程访问,别的进程没有使用权。
|
||
+ 临界资源(独占资源):在一段时间内只允许一个进程访问的资源,计算机中大多数物理设备及某些软件中的栈、变量和表格都属于临界资源,它们被要求互斥共享。
|
||
+ 比如QQ和微信视频。同一段时间内摄像头只能分配给其中一个进程。
|
||
|
||
#### 同时共享
|
||
|
||
+ 计算机中的某个资源在在一段时间内可以同时允许多个进程访问。
|
||
+ 同时共享通常要求一个请求分为几个时间片段间隔的完成,即交替进行,“分时共享”。
|
||
+ 这里的同时指在宏观上是同时的,在微观上是交替进行访问的,只是cpu处理速度很快,我们感觉不到,在宏观上感觉是在同时进行。
|
||
+ 举个例子:比如QQ在发送文件A,微信在发送文件B,宏观上两个进程A和B都在访问磁盘,在我们看来是同时进行的,但是在微观上两个进程A和B是交替进行访问磁盘的,只是时间太短,CPU处理速度太快,我们感觉不到。
|
||
+ 有时候多个进程可能真的是在同时进行资源访问,比如玩游戏时可以放音乐,游戏声音和音乐声音都能听见。
|
||
|
||
### 虚拟
|
||
|
||
多道程序设计:是指在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始到结束之间的状态。这就称为多道程序设计。多道程序技术运行的特征:多道、宏观上并行、微观上串行。
|
||
|
||
+ 虚拟是把一个物理上的实体变为若干逻辑上的对应物。
|
||
+ 物理实体(前者)是实际存在的;而后者是虚的,是用户感觉上的事务。
|
||
+ 虚拟技术:用于实现虚拟的技术。
|
||
+ 虚拟处理器(CPU):通过多道程序设计技术,采用让多道程序并发执行的方法,分时来使用一个CPU,实际物理上只有一个CPU,但是用户感觉到有多个CPU。
|
||
+ 虚拟存储器:从逻辑上扩充存储器容量,用户感觉到的但实际不存在的存储器。
|
||
+ 虚拟设备:将一台物理设备虚拟为逻辑上的多台设备,使多个用户在同一时间段内访问同一台设备,即同时共享,用户宏观上感觉是同时的,但实际上是微观交替访问同一台设备的。
|
||
+ 操作系统的虚拟技术科归纳为:
|
||
+ 时分复用技术:如处理器的分时共享。
|
||
+ 空分复用技术:如虚拟存储器。
|
||
|
||
### 异步
|
||
|
||
+ 异步指多道程序环境允许多个程序并发执行,但由于资源有限,如CPU只有一个,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进。
|
||
+ 比如A进程正在占用CPU计算,B进程这时也想占用CPU计算,B进程只有等,等A进程算完了,A进程去访问磁盘资源了,这时B进程再占用CPU进行计算,B进程还没计算完,A进程从磁盘取出资源了,A进程发现B这时在占用CPU,这时A进程就需要等待,等B算完后再继续到CPU中进行计算。由于每个进程占用资源的时间不固定,所以进程的执行以不可预知的速度前进。
|
||
|
||
## 操作系统的发展阶段
|
||
|
||
### 手动操作阶段
|
||
|
||
+ 缺点:
|
||
+ 用户独占全机。
|
||
+ 人机速度矛盾。
|
||
|
||
### 单道批处理系统
|
||
|
||
+ 引入脱机输入/输出技术(磁带),并用监督程序复杂控制作业的输入输出。
|
||
+ 优点:
|
||
+ 缓解了一定的人机速度矛盾,资源利用率得到提升。
|
||
+ 缺点:
|
||
+ 内存只能有一道程序运行。只能串行执行。
|
||
+ CPU大量时间用于等待I/O的完成,资源利用率低。
|
||
|
||
### 多道批处理系统
|
||
|
||
+ 操作系统正式诞生,引入中断技术,从而能并发执行程序。
|
||
+ 优点:
|
||
+ 多道程序并发执行,共享计算机资源。
|
||
+ 资源利用率提升,CPU和其他资源基本上忙碌,系统吞吐量增大。
|
||
+ 缺点:
|
||
+ 用户响应时间长,无法人机交互,不能控制作业执行。
|
||
|
||
## 操作系统的分类
|
||
|
||
由于无法人机交互,操作系统进一步发展,出现了不同种类的操作系统。
|
||
|
||
### 分时操作系统
|
||
|
||
+ 计算机以时间片为单位轮流为各个用户/作业服务,每个用户可以通过终端与计算机交互。
|
||
+ 优点:
|
||
+ 用户请求可以及时响应,解决人机交互问题。
|
||
+ 运行多个用户共同使用一台计算机,且用户对计算机的操作哦相互独立,感受不到其他人存在。
|
||
+ 缺点:
|
||
+ 不能处理紧急任务,操作系统对于每个用户都是公平的,循环给出时间片。
|
||
|
||
### 实时操作系统
|
||
|
||
+ 能优先响应紧急任务,不用等待时间片排队。
|
||
+ 优点:
|
||
+ 能优先处理紧急任务,使用率更高。
|
||
+ 对于紧急事件能有效高速处理,可靠性较高。
|
||
+ 分类:
|
||
+ 硬实时系统:对某个动作必须绝对在指定时间内完成,如导弹系统、股票系统、自动驾驶系统等。
|
||
+ 软实时系统:对某个动作可以接受偶尔违反规定且伤害较小,如订票系统,旅店管理系统。
|
||
|
||
### 其他操作系统
|
||
|
||
+ 网络操作系统:伴随计算机网络发展而但是,能连接网络中各个计算机从而能传输数据,实现网络中各种资源的共享和计算机之间的通信,如Windows NT。
|
||
+ 分布式操作系统:具有分布性和并行性,系统中各个计算机地位相同,任何工作可以分布在这些计算机上,并行写协同完成任务。
|
||
+ 个人计算机操作系统:方便个人使用的操作系统,如Windows 10、MacOS。
|
||
|
||
## 操作系统的运行机制
|
||
|
||
### 两种指令
|
||
|
||
+ 指令就是处理器能识别和执行的最基本命令。所以指令能控制处理器,需要给指令进行控制,对于危险的指令要更高的权限。
|
||
+ 特权指令:
|
||
+ 指具有特殊权限的指令,只用于操作系统或其他系统软件,一般不直接提供给用户使用。
|
||
+ 如有关对I/O设备使用的指令、有关访问程序状态的指令、存取特殊寄存器指令。
|
||
+ 具体而言如清内存、置时钟、分配系统资源、修改虚存的段表和页表,修改用户的访问权限等。
|
||
+ 非特权指令:
|
||
+ 可以被用户自由使用的指令。
|
||
+ 如读取时钟、从内存中取数、将运算结果装入内存、算术运算等。
|
||
|
||
### 两种处理器状态
|
||
|
||
操作系统根据处理器状态来判断是否可以使用特权指令。
|
||
|
||
操作系统用程序状态字寄存器PSW中的某标志位来标识当前处理器处于什么状态,如0为用户态,1为核心态。
|
||
|
||
+ 用户态(目态):只能执行非特权指令。
|
||
+ 核心态(管态):可以执行特权指令。
|
||
|
||
### 两种程序
|
||
|
||
根据程序所可以使用指令的权限,程序分为两种:
|
||
|
||
+ 内核程序:是系统的管理者,既可以运行特权指令也可以运行非特权指令,运行在核心态。
|
||
+ 应用程序:为了保证安全,普通应用程序只能执行非特权指令,运行在用户态。
|
||
|
||
## 操作系统的内核
|
||
|
||
操作系统的程序既然分为内核程序和应用程序,就说明有些程序是更重要的。
|
||
|
||
内核是计算机上配置的底层软件,是操作系统最基本最核心的部分,而实现操作系统内核功能的程序就是内核程序,其他的就是非内核功能。
|
||
|
||
内核功能分为:
|
||
|
||
+ 时钟管理:进程等的计时功能。
|
||
+ 中断处理:负责实现中断机制。
|
||
+ 原语:是一种特殊的程序,是最接近硬件的部分,这种程序的运行具有原子性,运行时间短,调用次数频繁,如设备驱动、CPU切换等。
|
||
+ 系统资源管理功能:可能包含在内核中也可能不包含:
|
||
+ 进程管理。
|
||
+ 存储器管理。
|
||
+ 设备管理。
|
||
|
||
## 操作系统的体系结构
|
||
|
||
体系结构根据内核功能的多少分为:
|
||
|
||
+ 微内核:内核功能只包含基本的时钟管理、中断处理、原语功能。
|
||
+ 优点:内核功能少,结构清晰,方便维护。
|
||
+ 缺点:因为很多功能不在内核中,需要频繁在核心态和用户态之间切换,效率较低。
|
||
+ 大内核:除了基本功能外还包含进程管理等其他功能。
|
||
+ 优点:高性能。
|
||
+ 缺点:内核代码庞大,结构混乱,难以维护。
|
||
|
||
## 中断
|
||
|
||
中断是内核所必要的基本功能。
|
||
|
||
### 中断机制的概念
|
||
|
||
+ 并发批处理就需要中断机制。发生中断就表示需要操作系统介入,开展管理工作。
|
||
+ 用户态道核心态之间的转换是通过中断实现的,且是唯一的途径。
|
||
+ 而核心态道用户态之间的切换只用执行一个特权指令,将程序状态字PSW的标志位设置为用户态。
|
||
|
||
1. 当中断发生时,CPU立刻进入核心态。
|
||
2. 当中断发生后,当前运行的进程暂停,并由操作系统内核对中断进行处理。
|
||
3. 对于不同的中断信号会进行不同的处理。
|
||
|
||
### 中断的分类
|
||
|
||
+ 内中断(异常、例外、陷入)信号来自CPU内部,与当前执行的命令有关。
|
||
+ 自愿中断:指令中断。如系统调用时使用的访管指令(陷入指令、trap指令)
|
||
+ 强迫中断:
|
||
+ 硬件故障。(缺页)
|
||
+ 软件中断。(整数除0)
|
||
+ 外中断(中断)信号来自CPU外部,与当前执行的命令无关。
|
||
+ 外设请求。(I/O操作完成时发出的中断信号)
|
||
+ 人工干预。
|
||
|
||
另一种分类方式内中断分为:
|
||
|
||
+ 陷阱、陷入。
|
||
+ 故障。
|
||
+ 终止。
|
||
|
||
### 外中断的处理过程
|
||
|
||
1. 执行外每个指令后,CPU都要检查当前是否有外部中断信号。
|
||
2. 若检测到外部中断信号,则需要保护呗中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)。
|
||
3. 根据中断信号类型转入相应的中断处理程序。
|
||
4. 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行。
|
||
|
||
## 系统调用
|
||
|
||
### 系统调用的概念
|
||
|
||
系统调用是程序接口的组成部分,用于应用软件调用,也称为广义指令。可以任务是一种可供应应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
|
||
|
||
### 系统调用的过程
|
||
|
||
为什么要使用系统调用来处理应用程序的请求?如果不同进程争用有限的资源,没有良好的处理机制就会混乱。所以操作系统提供系统调用提供统一处理的过程规范,应用程序通过系统调用发出请求,操作系统在根据请求协调管理。
|
||
|
||
系统调用本质就是指令中断,所以需要特权指令,从而系统调用的相关处理只能在**核心态**下进行。
|
||
|
||
1. 传递系统调用参数。
|
||
2. 执行陷入指令(用户态)。
|
||
3. 执行系统调用相应服务程序(核心态)。
|
||
4. 返回用户程序。
|
||
|
||
+ 陷入指令在用户态执行,执行陷入指令后立刻引发一个内中断,从而CPU进入核心态。
|
||
+ 发出系统调用请求的是在用户态,而对系统调用的相应处理在核心态下进行。
|
||
+ 陷入指令是**唯一一个**只能在用户态执行,而不能核心态执行的指令。
|
||
|
||
### 系统调用的类别
|
||
|
||
+ 设备管理:设备的请求、释放、启动。
|
||
+ 文件管理:文件的读、写、创建、删除。
|
||
+ 进程管理:进程的创建、撤销、阻塞、唤醒。
|
||
+ 进程通信:进程之间的消息传递、信号传递。
|
||
+ 内存管理:内存的分配、回收。
|
||
|
||
### 系统调用与库函数的区别
|
||
|
||
层次|使用关系
|
||
:--:|:-----:
|
||
普通应用程序|可直接使用系统调用,也可以使用库函数。有的库函数涉及系统调用有些则不涉及
|
||
编程语言|向上提供库函数,有时会将系统调用封装为库函数以隐藏系统调用细节,从而使上层系统调用更方便
|
||
操作系统|向上提供系统调用
|
||
裸机|无
|