顺序执行的特征:
顺序性:按照程序结构所指定的次序。
封闭性:独占全部资源,计算机的状态只由于该程序的控制逻辑所决定。
可在见性:初始条件相同则结果相同。
并发执行的特征:
进程(强调并发性和动态性):可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。
进程的表示
进程控制快是进程存在的唯一标志
进程和程序的区别:
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可以包含多个程序
进程的特征:
由程序+数据+进程控制块组成了进程实体,其中进程控制块是进程存在的标志
进程是进程实体的执行过程,它由创建而产生,由调度而执行,因为某件事而暂停,由撤销而死亡
多个进程同时存在于内存中,一起向前推进,并发执行
进程是独立获得资源和独立调度的基本单位
进程的三种基本状态:运行、阻塞、就绪
PCB:
系统把所有的PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表
PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度。
原语:由若干条机器指令构成的并用以完成特定功能的一段程序,而且这段程序在执行期间不允许中断
内核中包含的进程控制原语主要有:
作业:用户在一次计算过程中,或者一次事务处理过程中,要求计算机系统所作的工作的总称。
做业包括程序、数据、作业说明书
作业步:一个作业可以划分成若干个部分,每个部分称为一个作业步,在作业运行期间,个作业步之间存在着相同联系,往往上一个作业步的结果是下一个作业步的输入
作业流:一次由一批作业进入系统,并在操作系统控制下,一个接一个进行处理。
系统调用:系统调用是操作系统提供给软件开发人员的唯一接口,开发人员可利用它使用系统功能
管态:操作系统管理系统程序运行的状态,较高的特权级别,又称为特权态,系统态
算态:用户程序运行时的状态,较低的特权级别,又称为普通态,用户态,目态。
系统调用:为了保证OS不被用户程序破坏,不允许用户程序直接访问OS的系统程序和数据,只能调用访问,用户在程序中调用操作系统提供的子功能被称为系统调用。
系统调用与一般过程调用的对比。
相同点:改变指令流程、重复使用和执行、要返回原处。
不同点:一般过程调用:调用程序和被调用程序都运行在相同的状态(系统态或用户态),调用的时候不涉及状态的变换
系统调用:调用程序在用户态,被调用程序在系统态,调用的时候涉及状态的变换,不允许由调用过程直接转向被调用过程,先通过软中断机制由用户态转换为系统态,在OS核心分析后,再转向相应的系统调用处理子程序。
中断:是CPU对系统发生的某事件的响应:
CPU暂停正在执行的程序,保护现场转去执行该事件的中断处理程序,执行完成之后返回原程序断电继续执行。
陷入(内中断,捕获):是由CPU内部事件引起的中断:
如:非法指令、地址越界、溢出、电源故障等
陷入是由执行现性指令引起,中断则是与现性指令无关。
在系统中为控制系统调用服务的机构被称为陷入(TRAP)或异常处理机构
把由系统调用引起处理器中断的指令称为陷入或异常指令(或称为仿管指令)
进程之间的同步和互斥
进程之间的这种执行次序上的制约关系叫做直接制约关系,又叫同步关系,这种关系可用“进程-进程”来描述。
因共享资源而使并发执行的各进程之间产生的关系叫做间接制约关系,又叫做互斥关系,这种关系可以用“进程-资源-进程”来描述。
临界资源:系统中一次只允许一个进程访问的资源
临界区
:并发执行的进程中,访问临界资源的必须互斥执行的程序段叫做临界区
多个相关进程在执行次序上的协调称为进程同步,用于保证多个进程在执行次序上的协调关系的相应机制称为进程的同步机制。、
进程同步机制应遵循的准则
对要求访问临界资源的进程,应保证进程能在有限时间进入临界区,以免陷入“饥饿”状态。
管道通信方式:
也称为共享文件方式,基于文件系统,利用打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质
管道就是用于连接读进程和写进程的共享文件,写进程向管道发送字符流,读进程从管道接收字符流,
管道机制必须提供的协调能力
互斥:当一个进程正在对pipe进行读写操作的时候,另一个进程必须等待。
同步:当写进程 把一定数量数据据写入管道后,便去睡眠等待,直到读进程取走数据后,再把它唤醒,当读进程读到一空pipe时,也应该睡眠等待,直到写进程把数据写入管道后,才将它唤醒。
对方是否存在:只有确定对方已存在时,方能进行通信
作为并发执行的进程具有两个基本属性:
资源拥有单位称为进程,调度单位称为线程
进程和线程关系
1) 线程是进程的一个组成部分,每个进程创建的时通常只有一个线程,需要时可创建其他线程,
2) 进程的多线程都在进程的地址空间活动
3) 资源分配给进程的,不是分配给线程的。线程执行种需要资源时,可从进程中划分。
4)处理机调度的基本单位是线程,线程之间竞争处理机。真正在CPU上运行的是线程。
5)线程在执行的时候需要同步。
1、进程调度的功能
1) 记录系统所有进程的状态、优先数和资源的使用情况。
2)确定调度算法:决定将CPU分配给哪个进程及多长时间。
3)分配处理机给进程。进行CPU现场的保护和移交,并实现CPU使用权发的移交。
2、进程调度方式
(1)非抢占式
(2)抢占式:剥夺的原则有:优先权原则、短进程优先原则和时间片原则
吞吐量:单位时间内所完成的作业数,跟作业本身特性和调度算法有关
处理机利用率:
各种设备的均衡利用
周转时间:作业从提交到作业完成所经历的时间
响应时间:用户输入一个请求到系统首次响应的时间
截止时间:
公平性:
优先级:
易于执行
执行开销比
1. 先来先服务:
特点:
比较有利于长作业,而不利于短作业,有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
2.短作业优先调度算法(SJF)
优点:比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间。
提高系统的吞吐量。
缺点:对长作业非常不利,可能长时间得不到执行
未能依据作业的紧迫程度来划分执行的优先级
难以准确估计作业的执行时间,从而影响调度性能。
3.优先权调度算法:
非抢占式优先权算法:仅发生在进程放弃CPU
抢占式优先权算法:可剥夺当前运行的进程CPU
优先权的类型:静态优先权:在进程创建时指定优先权,在进程运行时优先数不变
动态优先权:在进程创建时创建一个优先权,但在其生命周期内可以改变优先数可以动态变化,。
确定优先级的依据:进程类型、对资源的需求、根据用户需求
4.高响应比优先(Highest Response Ratio First)
HRRF是FCFC和SJF 的折中算法,响应比的公式如下:
特点:
等待时间相同要求服务时间越短优先权越高,有利于短作业‘
要求服务时间相同,等待时间越长优先权越高,近似于先来先服务
长作业的优先权会随着等待时间加长而升高,长作业也会得到执行。
5.时间片轮转调度算法:
算法思想:通过时间片轮转,提高进程 并发性和响应时间特性,从而提高资源利用率
1 将系统中所有的就绪进程按照FCFS原则,排成一个队列。
2 每次调度时将CPU分派给队徽首进程,让其执行一个时间片,
3 在一个时间片结束后,发生时钟中断
4 调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过CPU现场切换执行当前的队首进程
5 进程可以未使用完一个时间片,就让出CPU
CPU调度过程
保存现场:顺序保存,最后一步保存PSW
选择要运行的程序
如果没有就绪进程,系统会安排一个闲逛进程(idle),没有其他进程时该进程一直运行,在执行过程中可以接收中断。
恢复现场:最后一步恢复选中进程的PSW
永久性资源:
临时性资源:
对资源采用“申请—分配—使用—释放“
进程争夺资源有可能产生死锁,但不一定就会死锁,其取决于进程向前推进的速度和对资源请求的顺序。死锁是一种与时间有关的错误。
2. 产生死锁的必要条件
1) 互斥条件:一个资源每次只能给一个进程使用。
2) 不可剥夺条件:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放。
3) 请求和保持:在申请新的资源的同时保持对原有资源的占有
4) 循环等待条件:存在一个进程-等待资源环形链。
预防死锁的方法是破坏产生死锁的四个必要条件之一。
在运行前,一次性将其所需要的所有资源分配给该进程,这样该进程在整个运行期间,便不再提出资源申请,从而摒弃了请求条件。
优点:简单,易于实现且很安全
缺点:资源利用率很低,进程也会延迟 运行
系统的安全状态:
安全状态是指系统的一种状态,在次状态开始系统能按照某种顺序来为各个进程分配其所需资源,直至最大需求,使每个进程都可顺序地一个个地完成,这个序列称为安全序列,。
避免死锁地实质是使系统不进入不安全状态。