操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
其主要作用是,**提高设备的利用率和系统吞吐量。**并为用户和应用程序提供一个简单的接口。
主要目标是:方便性,有效性,可扩充性,开放性。
方便性是配置了OS使计算机变得易学易用。
有效性:提高系统资源利用率,提高系统吞吐量。
可扩充性:从无结构到模块化结构,又到层次化结构
开放性:兼容。能遵循世界标准规范。
操作系统的作用:
1.OS作为用户与计算机硬件系统之间的接口:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
2.OS作为计算机系统资源的管理者(处理机,存储器,I/O设备,文件)
处理机管理用于分配和控制处理机
存储器管理负责内存的分配与回收
I/O设备管理负责I/O设备的分配回收与操纵
文件管理用于实现文件的存取,共享和保护。
3.OS实现了对计算机资源的抽象
扩充机器或虚机器
操作系统发展的主要动力:
操作系统发展过程
1945年诞生第一台计算机,采取人工操作方式进行。
1.人工操作方式
(1)用户独占全机(独占性)
(2)CPU等待人工操作(串行性)
2.脱机输入/输出方式
(1)减少CPU的空闲时间
(2)提高了I/O速度
单批道处理系统 20世纪50年代中期
处理过程:内存中始终保持一道作业。
特征: 自动性
顺序性
单道性
解决人机矛盾和CPU与I/O设备速度不匹配,提高系统资源利用率和系统吞吐量(单位时间系统完成作业的数目)
缺点:
系统中的资源得不到充分利用。
多批道处理系统 20世纪60年代
目的:进一步提高资源利用率和系统吞吐量
在该系统中,用户提交的作业先存放在外存上,并排成一个队列“后备队列”作业调度程序按照一定的算法,从后备序列中选择若干作业调入内存,同时在内存中,多道程序交替运行,保持CPU处于忙碌状态。
特点:
1.多道性
2.成批处理交互性
3.无序性
4.调度性
优缺点:
1.资源利用率高,CPU处于忙碌状态
2.系统吞吐量大
3.平准周转时间长
4.无交互能力
5.提高I/O设备的利用率
待解决的问题:
1.处理机争用问题
2.内存分配问题
3.I/O设备分配问题
4.文件的组织和管理问题
5.作业管理问题
6.用户与系统的接口问题
操作系统定义:操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理的对各类作业进行调度,以及方便用户使用的程序的集合
分时系统 60年代中期
a.提高资源利用率
b.提高系统吞吐量
表现:
1.人机交互
2.共享主机
3.便于用户上机
关键问题:
实现人机交互
(1). 及时接受
①在系统中配置一个多路卡
②为每个终端配置一个缓冲区,用来暂存用户键入的命令(或数据)
(2). 及时处理
①作业直接进入内存
②采用轮转运行方式
分时系统的特征
1.多路性
2.独立性
3.及时性
4.交互性
实时系统 60年代中
特点:及时性要求高,系统可靠性高(时间是关键参数)
实时任务类型:
(1).周期性实时任务和非周期性实时任务
(2)硬实时任务和软实时任务
优点:
实时系统必须和先进的技术装备相结合
a.对外部请求在严格时间范围内做出反应
b.高可靠性
c.安全性
d.完整性
操作系统基本特征
并发,共享,虚拟,异步
A.并发和并行:
1.并行是同一时刻
2.并发是同一时间间隔。宏观上多个程序同时进行,微观上程序分时地交替执行
程序是静态的,进程是动态的且并发执行。
B.共享
C.虚拟
a)定义:
i.把通过某种技术将一个物理试题变成为若干个逻辑上的对应物
ii.利用时分复用技术和空分复用技术
1.时分复用技术:利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
D.异步
a)多道程序环境下,系统允许多个进程并发执行。
i.由于资源等因素的限制,使进程的执行通常都不能一气呵成,而是采用走走停停的方式运行。
ii.进程是以人们不可预知的速度向前推进的,即进程的异步性。
操作系统的主要功能:
OS结构设计
前趋图
是指一个有向无循环图
(前趋图中不允许有循环,否则会产生不可能实现的前趋关系)
合作关系
程序的顺序执行
程序的并发执行
对于不存在前趋关系的程序之间才有可能并发执行
进程的描述
1.定义和特征
(1)由程序段,相关的数据段和PCB构成进程实体(进程映像)简称进程。
(2)PCB是OS种最重要的记录型数据结构
(3)定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
(4)特征:程序段+数据段+PCB
①动态性,是进程的基本特征
②并发性,指多个进程实体同存于内存中,且能在一段时间内同时运行
③独立性,指进实体是一个独立运行,独立获得资源和独立接受调度的基本单位
④异步性,按照各自独立,不可预知的速度向前推进,其产生的结果不可再现。
进程基本状态和转换
1.三种基本状态(进程在其生命周期内可能有多种状态)
(1)就绪状态 Ready 按一定的策略(优先级策略)排成一个队列就叫就绪队列
(2)执行状态 Running 指进程已获得CPU,其程序正在执行的状态
(3)阻塞状态 block 进程执行收到阻塞 通常系统将处于阻塞状态的进程也排成一个队列成为阻塞队列
2.三种基本状态的转换
3.创建状态和终止状态
为了满足进程控制块对数据及操作的完整性要求以及增强管理的灵活性
(1) 创建状态
进程申请一个空白PCB,填入信息,此时创建状态尚未完成,进程不能被调度运行,进程所处的状态就叫创建状态
(2) 终止状态
挂起操作和进程状态的转换
挂起操作时,进程处于静止状态、
与挂起操作相对应的是激活状态
挂起操作的引入
(1)被动引入
①终端用户的需要
②符合调节的需要
③操作系统的需要
以上是优先级的需要
④ 父进程请求(挂起就绪状态的进程)
挂起原语操作后进程状态的转换(挂起原语Suspend,激活原语Active,原语操作命令必须全执行完)
(1)活动就绪→静止就绪
①Readya + suspend →readys 此时就是静止就绪
(2)活动阻塞→静止阻塞
①Blockeda + suspend →Blockeds 此时就是活动阻塞
②当处于该状态的进程在其所期待的时间出现后,从静止阻塞变为静止就绪readys
(3)静止就绪→活动就绪
①Readys + Active → Readya
(4)静止阻塞→活动阻塞
①Blockeds + Active → Blockeda
3.引入挂起操作后五个进程状态的转换
(1)执行状态被挂起是强制用户干预
4.进程管理中的数据结构
(1)操作系统中用于管理控制的数据结构
①在计算机系统中,对每个资源和进程设置一个数据结构称之为资源信息或进程表信息
②分为内存表,设备表,文件表,进程表(进程控制块PCB)
(2)PCB的作用
为了便于系统描述和管理进程的进行,在OS核心为每个进程专门定义了一个数据结构——PCB
作用是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的过程
①作为独立运行基本单位的标志(PCB已成为进程存在于系统中的唯一标志)
②能实现间断性运行方式
③提供进程管理所需要的信息
④提供进程调度所需要的信息
⑤实现与其他进程的同步与通信
(3)进程块中的信息
①进程标识符
1)外部标识符
2)内部标识符
②处理机状态
1)通用寄存器
2)指令计数器
3)程序状态字PSW
4)用户栈指针
处理机状态信息都必须保存于相应的PCB中
③进程调度信息
1)进程当前状态
2)进程优先级
3)进程调度所需其他信息
4)事件(阻塞原因)
④ 进程控制信息(管理协调)
1)程序和数据地址
2)进程同步和通信机制
3)资源清单
4)链接指针(本进程PCB所在队列中下一个进程PCB的首地址)
(4)进程控制块的组织方式
①线性方式(将该表的首址存放在内存的一个专用区域中,适合进程数目不多的系统)
②链式方式(适用广泛,具有相同状态的链接字链接成一个队列)
1)处于阻塞状态进程的PCB根据其阻塞原因的不同,排列成多个阻塞队列
(阻塞队列原因是挂在阻塞资源上)
③ 索引方式
1)即系统根据所有状态的不同,建立几张索引表,并把各索引表在内存的首地址记录在内存的一些专用单元中
2)每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址
3)索引表是队列的一种形式
进程控制
进程控制一般是由OS内核中的原语来实现
原语:由若干条机器指令构成,用以完成特定功能的一段程序
操作系统内核
通常将一些与硬件紧密相关的模块,常用设备的驱动程序以及运行频率较高的模块,将他们常驻内存,即被称为OS的内核
目的:
一方面便于对这些软件进行保护,放置遭受其他应用程序的破坏
另一方面可以提高OS的运行效率
为了防止OS本身以及关键数据被破坏,通常将处理机的执行状态分为系统态和用户态,一般情况应用程序只在用户态运行,防止应用程序对OS的破坏
功能:
① 支撑功能
1)中断处理
2)时钟管理
3)原语操作(在系统态下执行,常驻内存)
② 资源管理功能
1)进程管理
2)存储器管理
3)设备管理
进程的创建
进程的层次结构
允许一个进程创建另一个进程的叫父进程,被创建的叫子进程,子进程可以创建更多的孙进程。
进程图——进程树
引起创建进程的事件
为使程序之间并发执行,先分别为他们创建进程。典型事件四类:
① 用户登录
② 作业调度
③ 提供服务
④ 应用请求
进程的创建
OS调用进程原语Creat 创建一个新进程
①申请空白PCB,并获得唯一数字标识符,从PCB集合中索取一个空白PCB
②为新进程分配其所需要的物理和逻辑资源,如内存,文件,I/O设备和CPU空间等
③初始化进程控制块
④如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
进程的终止
引进进程终止的事件
引起原因:
① 正常结束,表示进程的任务已经完成,准备退出运行,terminal指令
②异常结束,进程在运行时发生了某种异常事件,使程序无法继续运行
1)越界错
2)保护错
3)非法指令
4)特权指令错
5)运行超时
6)算数运算错
7)I/O故障
③外界干预 进程应外界请求而终止运行
1)操作员或操作系统干预
2)父进程请求
进程的终止过程
系统中发生了要求终止进程的某事件,OS便调用进程终止原语
PCB从所在队列(链表)中移出
进程的阻塞与唤醒
引起进程阻塞或被唤醒的事件:
1.向系统请求共享资源失败
2.等待某种操作的完成
3.新数据尚未到达
4.等待新任务的到达
进程阻塞的过程:
进入block过程后,由于该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由“执行”改为阻塞,,并将PCB插入阻塞队列
进程的唤醒过程:
Wakeup的执行过程是首先吧被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。
进程的挂起与激活
进程的挂起OS利用挂起原语suspend将指定进程或阻塞状态的进程挂起
进程的激活是系统激活,OS将利用激活原语active将指定进程激活
进程同步
进程同步基本概念:
是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(时序)共享系统资源,并相互合作,使程序的执行具有可再现性。
两种制约关系:
在多道程序环境下,对于同处于一个系统中的多个进程,由于他们共享系统中的资源或为了完成某一任务而相互合作。
间接相互制约:由于共享系统资源,多个进程互斥访问。
直接相互制约:就是同步,一些进程像“前趋图”一样相互合作。
临界资源:
共享的外设,内存表格,硬件等都属于临界资源
临界区:
每个进程中访问临界资源的那段代码称为临界区。
(如果某一临界资源正在被某一进程访问,则本进程不能进去临界区)
在临界区前面增加一段检查代码——进入区
在临界区后面增加一段恢复为未被访问标志的代码——退出区
同步机制应遵循的原则(临界区调用原则):
①空闲让进
②忙则等待
③有限等待
④让权等待
硬件同步机制:
利用编程解决
信号量机制:
是一种进程同步工具
广泛应用于单处理机和多处理机系统以及计算机网络
1.整形信号量
(1)应用于多处理机系统
(2)只进行三种操作:赋初值,P、V操作。
(3)PV操作是两个原子操作,执行时不可中断
(4)P:申请占用(处于忙等状态,占用CPU)
V:释放
(5)没有队列,没有遵循让权等待。
2.记录型信号量
(1)需要一个用于表示资源数目的整型变量value
(2)增加一个进程链表指针list
(3)采用了记录型的数据结构
(4)会调用block原语进行自我阻塞,遵循了“让权等待”
(5)S-value的绝对值表示该信号量链表中已阻塞进程的数目
(6)会调用wakeup原语,将S->list链表中第一个等待进程唤醒
3.AND型信号量
(1)是指一个进程同时需要多种资源,且每种占用一个时的信号量操作
(2)A/B两进程处于僵持状态,若外力作用就进入死锁状态。
(3)当进程同时要求共享的资源越多时,发生进程死锁的概率越大。
(4)AND同步机制基本思想:将进程在整个运行过程中所有需要的资源,一次性全部分配给进程,待进程使用完后一起释放。(要么全部分配,要么一个不要)
(5)当无法满足时,进程请求进入第一个无法运行的队列
4.信号量集
PV操作仅能对信号量施以加1和减1操作,意味着每次只能对某类临界资源进行一个单位的申请或释放。当需要N个单位时,则要进行N次P操作,所以,当申请的某类临界资源低于某一下限值时,不予以分配。
当进程申请某类临界资源时,在每次分配之前,都必须测试资源的数量,判断是否大于可分配的下限值,决定是否予以分配。
P(S, D,D)在次信号量集中,只有一个信号量S,但允许他每次申请D个资源,当现有资源数少于D时,不分配。
信号量的应用:
1.利用信号量实现进程互斥(互斥操作):
(1)实质:利用信号量协调进程之间的竞争关系。
(2)为资源设置互斥信号量mutex,初始值1,是全局变量
(3)先P后V,PV处于同一进程
2.利用信号量实现前趋关系(同步操作):
(1)前趋关系看前趋图好理解
(2)在进程P1和进程P2之间共享一个公共信号量S,赋初值0,全局变量,可设置若干。
(3)先V后P,PV不处于同一进程。
2.4.5管制机制没讲。。。(可能以后再补充,也可能不补充)
2.5经典进程的同步问题
2.5.1生产者——消费者问题(P–C问题)
A.记录型信号量解决PC问题
PC之间共享有界缓冲池,不再是环形缓冲区,公共缓冲池中有N个缓冲区。利用互斥信号量mutex实现进程对缓冲池的互斥作用。
1.生产者——empty信号量,表示缓冲区数量
2.消费者——full信号量,表示满缓冲区数量
3.用于实现互斥的P(mutex)和V(mutex)必须成对出现
4.对资源信号量empty和full的PV操作一样要成对出现
5.以上信号量分别处于不同程序中
6.先协调合作(同步)信号量,再协调竞争关系
B.AND信号量解决PC问题
a)用SP(empty,mutex)代替P(empty)和P(mutex)
b)用SV(mutex,full)代替V(mutex)和V(full)
c)用SP(full,mutex)代替P(full)和P(mutex)
d)用SV(mutex,empty)代替V(mutex)和V(empty)
e)P操作的顺序不能换(仔细看代码描述)
f)V操作的顺序可以换(不影响正确性,但速度变慢)
C.管程没讲。。。
2.5.2哲学家进餐问题
(看看代码,不是很难,我也没记。。)
2.5.3读者——写者问题(建议看着代码理解吧)
就是要允许多个进程同时读一个共享对象,读进程必须和其他进程互斥的访 问。
1.记录型信号量解决读写问题
(1)设置一个互斥信号量wmutex,再设置一个整型变量readcount表示 在读进程数目,初始值1
①“写—写”文件时是互斥资源(wmutex互斥信号量,初始值1)
②“读—读”文件时是共享资源
(2)只要有一个reader进程,就不允许writer去写
(3)Rmutex:修复readcount的互斥信号量
2.信号量集机制解决没讲。。感兴趣的自己看看。。
2.6进程通信
1.进程通信是指进程之间的信息交换(交换信号量),进程的互斥与同步 低级进程通信
(1)效力低
(2)通信对用户不透明
2.高级进程通信,用于传送大量数据
(1)使用方便
(2)高效地传送大量数据
3.高级通信机制分为四大类:
(1)共享存储器系统
①相互通信的进程共享某些数据结构或共享存储区
1)基于共享数据结构的通信方式
a.通信效率低,属于低级通信
2)基于共享存储区的通信方式
a.在内存中共享一块存储区
b.属于高级通信
(2)管道通信系统(pipe)
①管道是用于连接一个读进程和一个写进程的一个共享文件,又名 pipe文件
②向管道写进程时以字符流的形式将大量数据送入管道
③从管道读进程时按照写入管道的顺序依次读出数据
④首创于Unix,有效地传送大量数据
⑤管道机制提供三方面的协调能力
1)互斥
2)同步(管道长度有限,顺序读取)
3)确定对方存在时再传送数据
⑥实质:共享文件通信机制
(3)消息传递系统(message passing system)
①不必借助任何共享区域和数据结构,而是以格式化的信息为单位, 利用操作系统提供的一组通信命令传递信息。
②隐藏了通信实现细节,降低了通信程序设计的复杂性和错误率
③当前应用最为广泛的一类进程通信机制
④在计算机网络中,消息称为报文。属于高级通信机制
1)直接通信方式,利用原语
2)间接通信当时,利用原语+信箱
3)非对称寻址和对称寻址
a.发送者命令接受者
b.接受者接受来自任何进程的消息
(4)客户机—服务器系统(没讲。。。)
2.6.2 消息传递通信的实现方式(有部分顺便整理到上面里了,便于理解)
2.6.3 直接消息传递系统实例
1)1. 消息缓冲队列通信机制中的数据结构:
a.1)消息缓冲区,主要利用的数据结构是消息缓冲区
b.2)PCB。中采用了消息缓冲队列通信机制时。在PCB中增加消息队列首指针,以及互斥信号量mutex和资源信号量sm
2.7线程的基本概念
(1)进一步提高进程并发性
(2)减少系统开销,提高进程间的通信
3.线程略过了。。。没讲(可能后面会补充)