小王的期末复习
🌞2022.06.26 更新了第一章和第二章的一部分
由于时间问题,可能后续都不会继续更新咯
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。
操作系统是计算机系统中最基本的系统软件
单道批处理操作系统
特点:
自动性
磁带上的一批作业能够自动地逐个执行,无需人工干预
顺序性
磁带上各道作业进入顺序进入内存,顺序完成,一系列遵循先来先服务的算法原则
单道性
内存中只有一道程序运行,只有当程序运行完成或者出现问题时才换入后续程序进入内存运行
缺点:
- 每次内存中只存放一个作业,当它在运行时发出I/O请求后,高速的CPU便处于等待低速I/O完成的状态,资源利用率和系统吞吐量多
多道批处理操作系统
特点:
多道性
内存中可以同时存放多道相互独立的程序
宏观上并行
同时进入系统的多道程序在宏观上都在运行
微观上串行
内存中的多道程序轮流占有CPU,交替执行
缺点:
- 用户响应时间长
- 平均周转时间长
- 不提供人机交互能力
优点:
- 资源利用率高
- 多道程序共享计算机资源,资源利用率高
- CP一直保持忙碌,系统吞吐量大
分时操作系统
特点:
同时性
多个终端用户同时使用一个计算机
交互性
用户能够方便地与计算机交互,通过人机对话的方式直接控制程序运行,同程序进行交互
独立性
系统中多个用户可以彼此独立地操作,不会相互干扰,每个人都感觉好像只有自己单独使用这台计算机一样
及时性
用户地请求能够在很短地时间内获得响应。
缺点:
- 无法在规定的时间内做出处理
实时操作系统
特点:
多路性
可以为多个终端用户服务
独立性
每个终端用户在使用计算机时彼此不会互相干扰
及时性
根据控制对象所要求的截止时间来进行调度进程,因此能够及时反馈
交互性
提供用户交互能力,但是比分时操作系统要差一些
可靠性
系统高度可靠,因为考虑到任何差错都可能带来灾难性的后果
- 操作系统作为计算机系统资源的管理者
- 操作系统为作为用户与计算机硬件系统之间的接口
- 实现了对计算机资源的抽象,让用户可以更容易使用计算机
并发
多个程序在同一时间间隔内发生
共享
系统中资源可以供多个并发执行的进程共同使用
互斥共享方式
某个资源只能一此给一个进程使用,不然就会出问题,于是在一个进程占有时,其他进程只能等待
同时访问方式
某个资源可以同时给多个进程使用页不会出现问题,于是可以被多个进程同时使用
虚拟
将物理上的一个实体变成逻辑上的多个物体,让每个用户都感觉自己独占了一个实体
异步
多道程序环境允许多个程序并发执行,但是由于资源有限,所以每个进程不是一下子执行完成的,而是走走停停地
并发性是指宏观上多个进程同时执行,但是微观上几个程序是交替执行地
并行性指宏观上微观上都是几个程序同时在执行
通常在操作系统地核心中都设置了一组用于实现各种系统功能的子程序,并将它们提供给应用程序调用。
系统调用提供了用户程序和操作系统之间的接口,应用程序通过系统调用来实现其与操作系统的通信,并取得它的服务
目的:
- 避免用户程序直接调用操作系统的过程,从而避免了系统的不安全性
- 间接为用户程序提供系统的服务
系统调用一般运行在核心态,一般要先通过软中断机制,先由用户态转换为系统态,然后再执行系统调用函数
特权指令就是在系统态运行的指令
- 特权指令对内存空间的访问范围基本不受限制,既可以访问用户存储空间,也可以访问系统存储空间
- 特权指令只允许操作系统使用,不允许应用程序使用,否则会引起系统混乱
非特权指令是指在用户态时运行的指令
他只能完成一般的操作和任务,不能对系统中的硬件和软件直接进行访问,对内存的访问也局限于用户空间
程序接口
程序接口是用户在执行中访问系统资源而设置的,是用户取得操作系统服务的唯一途径,由一组系统调用组成。
命令接口
联机用户接口
使用命令行方式,当用户在终端或者控制台中输入一条命令以后,系统便立即转入命令解释程序,对该命令加以解释执行,再执行完成以后会回到终端等待用户下一条指令
(Linux的终端,Windows的CMD)
脱机用户接口
主要是批处理的运行方式,就是用户只要作业控制语言JCL将需要对作业进行的控制和干预的命令事先写在作业说明书上,然后将其与作业一同交给系统
(Windows的.bat批处理程序,Linux的sh)
图形用户接口
用户使用图形化界面对系统即各种软件进行操作
核心态
核心态又可以称为系统态、内核态、管态
核心态主要运行操作系统程序,以及操作硬件
具有较高的特权,能够执行一切指令,访问所有寄存区和存储区,操作系统就运行在核心态
用户态
又称为目态
用户态主要运行用户程序,具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存去和存储区。
如果用户态的程序执行系统调用,操作系统会通过中断机制将CPU切换到内核态执行系统调用,执行完成以后返回系统调用,并回到用户态
中断分为两种,分别为内中断和外中断,它们最主要的区别在于中断命令的来源
内中断
也成为异常,指来自于CPU执行指令内部的时间,比如:程序的非法操作码、地址越界、算术溢出、虚拟内存的缺页、陷入指令等
外中断
指CPU执行指令以外的事件的发生导致的中断,比如:设备发出的I/O结束中断、时钟中断。
这些中断通常与当前指令执行无关的事件
顺序执行
一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时都需要按照某种先后次序顺序执行,仅当前一段程序执行完成以后才能运行后面一段程序。
特点:
顺序性
处理机严格按照程序所规定的顺序执行
封闭性
指程序在封闭的环境下运行,程序运行时独占全机资源,资源的状态只有本程序才能改变,程序一旦开始执行,其执行结果不受外界因素影响
可再现性
只要程序执行时的环境和初始条件相同,当程序重复执行时,不论他是从头到尾不停顿地执行还是走走停停地执行,都可以获得相同的结果。
并发执行
在引入多道程序技术以后,使得不存在前驱关系的程序或者程序段间能够并发执行
特点:
间断性
由于程序在并发执行时会共享系统资源,以及为了完成同一项任务而相互合作,致使在这些并发执行的程序间形成了相互制约的关系
(进程的同步)
失去封闭性
当系统中存在多个可以并发执行的程序时,系统中的各种资源为它们所共享,而资源的状态也会被这些程序所改变,导致在任一程序在运行时其环境都会受到其他程序的影响
不可再现性
并发程序运行的结果不会每次一样(因为失去了封闭性)
- 进程是动态的,而程序是静态的
- 进程是程序的一次执行
- 一个程序可以对应多个进程
进程并发执行时如果共享了公共变量,其执行结果将于并发程序执行的相对速度有关,即给定相同的初始条件,也可能得到不同的结果
定义:
- 进程是程序的一次执行
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的以一个独立单位
特征:
动态性
进程的实质是进程实体的执行过程
并发性
多个进程实体可以同时存在于内存中,且在同一段时间内同时运行
独立性
进程实体是一个能独立运行、独立获得资源和独立接收调度的基本单位
异步性
进程各自独立的,以不可预知的速度向前推进
进程的三种基本状态分别为:运行态、就绪态和阻塞态
三种基本状态的转换
就绪态->运行态
当处于就绪态的进程被调度后,获得处理机资源,于是进入了运行态
运行态->就绪态
在运行态的进程时间片完以后,让出处理机,转为就绪态
运行态->阻塞态
进程请求某一资源的使用和分配(设备)或者等待某一事件(I/O完成)的发生时就转为阻塞态
阻塞态->就绪态
进程需要的资源得到分配或者事件到来时,就进入就绪态
(进程从运行态进入阻塞态是一种主动行为,而阻塞态变成就绪态是一种被动的行为【操作系统调度】)
定义:
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构
作用:
作为独立运行的基本单位(进程)的标志
当一个程序配置了PCB后,就表示它已经是一个能在多道程序环境下独立运行的、合法的基本单位,拥有取得操作系统服务的基本单位
能实现间断性运行方式
当程序因为阻塞而暂时停止运行时,PCB可以保留进程运行时的CPU现场的信息,并在下次被调度运行时恢复现场信息
记录进程管理所需要的信息。
当调度到某个进程执行时,只能根据该进程PCB中记录的程序和数据在内存或者外存中的始址指针,找到相应的程序和数据;在进程运行过程中,当需要访问文件系统中的文件或者I/O时也需要借助于PCB中的信息
提供进程调度所需要的信息
只有处于就绪状态的进程才能被调度执行,PCB中记录了进程状态以及进程优先级的信息
实现与其他进程的同步与通信
PCB中具有实现进程通信的区域或者通信队列指针等
内容:
进程标识符
外部标识符
主要为了方便用户对进程的访问
内部标识符
用数字构成,主要方便系统对进程的使用
处理机状态
处理机状态信息还称为处理机的上下文,主要由处理机的各种寄存器的内容组成,包含:
通用寄存器
用户可以访问,主要存放信息
指令计数器
存放下一条指令的地址
程序状态字
包含状态信息,比如条件码、执行方式、中断屏蔽标志等
用户栈指针
每个用户进程都有一个或者若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址
在进程发生状态切换时,处理机状态信息需要保存在相应的PCB中,以便下次调度进程时使用
进程调度信息
存放进程的有关信息,包括:
进程状态
进程优先级
其他信息
与采用的进程调度算法有关,比如进程已经等待CPU的时间总和、进程已经执行的时间总和
事件
进程变为阻塞态时等待发生的事件,也就是阻塞原因
进程控制信息
进程控制所需的信息,包含:
- 程序和数据的地址
- 进程同步和通信机制,入消息队列指针、信号量等
- 资源清单
- 链接指针,指向队列中下一个进程的PCB的首地址
进程的创建
使用原语: C r e a t e Create Create
执行过程:
申请空白PCB,为进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB
分配资源,为进程分配内存、文件、I/O设备和CPU时间等。
初始化PCB,主要过程为:
1️⃣初始化标识信息,将系统分配的标识符和父进程标识符填入新的PCB中
2️⃣初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶
3️⃣初始化处理机控制信息,将进程的状态设置为就绪状态或者静止就绪状态,一般将其优先级设置为最低优先级
4️⃣如果可以,将新进程插入就绪队列
进程的终止
使用原语: D e s t o r y Destory Destory
执行过程:
- 根据被终止的进程标识符,从PCB中找到该进程的PCB,从中读取该进程的状态
- 如果进程处于执行状态,应立即终止该进程的执行,将调度标志置为真,用于指示该进程被终止后应重新进行调度
- 若该进程有子孙进程,则先将它们终止
- 将终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统
- 将被终止进程从所在队列中移除,等待其他程序来搜集信息 ? ^? ?
进程的阻塞
使用原语: B l o c k Block Block
执行过程:
- 进程先调用阻塞原语将自己阻塞
- 将进程停止执行,将PCB中的状态由运行状态改为阻塞状态
- 将PCB插入阻塞队列
- 转到调度程序重新调度,将处理机分配给另一个就绪进程
进程的唤醒
使用原语: W a k e u p Wakeup Wakeup
执行过程:
- 把阻塞的进程从阻塞队列移出
- 将PCB中的进程状态由阻塞态改为就绪态
- 将PCB插入就绪队列中
进程的挂起
使用原语: S u s p e n d Suspend Suspend
执行过程:
- 检查被挂起进程的状态,如果是就绪就改成静止就绪,如果是阻塞就改为静止阻塞
- 将PCB复制到指定的内存区域
进程的激活
使用原语: A c t i v e Active Active
执行过程:
- 将进程从外村调入内存
- 检查进程的状态,如果是静止就绪就改成活动就绪,如果是静止阻塞就改为活动就绪
- 将进程插入对应的队列
- 原语处于操作系统的底层,最接近硬件
- 原语程序的运行具有原子性
- 原语程序运行时间短且调用频繁
定义
Hansan为管程所下的定义是:”一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据“
其实管程就有点像面向对象的程序设计方式,将共享资源及其操作方法封装到一个类中,所有程序只能通过类中的方法来操作共享资源。多个进程要访问临界资源时,只能通过管程访问,而管程每次仅允许一个进程进入管程,从而实现了进程互斥
由定义,管程由以下四部分组成:
- 管程的名称(类名)
- 局部于管程的共享数据结果说明(成员变量)
- 对该数据结果进行操作的一组过程(方法)
- 对局部与管程的共享数据设置初始值的语句(构造函数 ? ^? ?)
特性
- 模块化。每个管程都是一个基本程序单位,可以单独编译
- 抽象数据类型。管程内不仅有数据,而且有对数据的操作
- 信息屏蔽。管程中的数据结构只能被管程中的方法访问,外部进程只能通过管程向外提供的方法来操作数据。而且管程中的数据结构和方法的具体实现对外部不可见
作用
将资源以及操作资源的过程封装起来,简化了程序设计。使用管程可以实现进程对资源的互斥访问