【软考之路】操作系统—进程

时间:2022-04-30 14:26:47

在自考操作系统中也学习过进程,这次软考视频中同样讲到了,看完视频,又翻了一遍自考的书。过了一遍基础的知识点,同时还对操作系统这本书有了新的理解。下面主要是一些关于进程的基础知识积累。

一、基本概念和进程调度

1.定义:

一个程序在一个数据集上的一次执行称为一个进程,进程是动态的,程序是静态的。

2.为什么引进程?

对于多道程序设计而言,程序的执行实际上走走停停的,为了能够正确反映程序执行的活动规律和状态的变化,我们引入一个新的概念,以便从变化的角度来动态多道分析和研究程序的执行。其实多道程序执行时候,各个作业执行的状况,其实就是进程的执行。

(1) 提高资源的利用率,
操作系统中把一个计算问题中可以独立执行的程序看成是一个进程。例如:输入进程、处理进程、打印进程,三者是可以同时进行的,当处理器处理数据的时候,打印也是可以同时的进行,这就提高了整个程序执行的效率。详细可以看自考书操作系统p16.
(2). 正确描述程序的执行情况。
3.进程属性:
(1). 进程是动态的,它包含了数据和运行在数据集上的程序。
(2). 多个进程可以含有相同的程序。
 进程和程序并非一一对应,一个程序运行在不同的 数据集上就构成不同的进程,从而得到不同的结果。例如:从廊坊到邯郸的火车是K7746,从邯郸开往廊坊的火车就成了K7748 。
(3). 多个进程可以并发执行。
就像不同车次的火车可以同时运行一样,同一个进程可以在不同的数据集上运行而构成不同进程。
4. 进程的三种状态
等待态——等待某一事件。
就绪态——等待系统分配处理器以便运行。
运行态——正在占有处理器运行。
状态转化:
(1) 运行态——等待态
进程启用外围设备,等待外围设备传输结束;进程申请资源得不到满足;进程出现故障
(2) 等待态——就绪态
等待资源二道满足;故障结束;外围设备结束等待。
(3) 运行态——就绪态
分配给进程占用处理器的时间用完,强迫进程让出处理器;更加高级的进程要运行,所以迫使正在运行的进程让出处理器。
(4) 就绪态——运行态
进程被选中,占有了处理器。
5. 进程特性:
动态性、
并发性、 异步性。
6.进程控制块:
系统中往往存在很多的进程,为了能够区分不同的进程,记录各个进程执行时的情况,对每一个进程都设置了进程控制块,进程控制块就是对进程运行管理和调度的信息集合。
7.进程队列:
在多道程序设计系统中,往往会创建多个进程,这些被创建的就绪进程可以按照一定次序排成队列,等待运行。这些进程排成队列运行,形成了就绪队列、等待队列。
8.中断:

  因为某些事件的出现,终止现行进程的运行,而由操作系统去处理出现的事件,待适当的时候让被中断的进程继续运行,这个过程称为中断。

主要讲了中断类型、中断响应、中断处理。


9. 处理器调度
如何对资源进行管理和分配是操作系统中的一个重要问题。处理器的调度担负着对处理器的分配工作,他将决定谁先占用处理器以及一次性能够占用处理器多长时间。
 (1)相关概念
作业调度: 在操作系统中用来存放作业信息的专用区域称为 输入井 ,把在输入井中等待处理的作业称为后备作业。从输入井中选取后备作业装入主存储器的工作称为作业调度。
进程调度: 进行作业调度之后,从就绪的进程中选取一个进程,让它占用处理器的工作称为进程调度。
所以作业调度和进程调度相互配合实现多道作业的并行执行。对于任何一个作业来说,只有作业调度被选中后才有计划去竞争处理器,并且当进程调度选中后才能够占用处理器。

(2)作业调度算法:
先来先服务算法 :按照作业进入输入井的先后次序来挑选作业,先进入的作业优先挑选。
评价:具有公平性,但是完全按照次序,可能使计算时间短的作业长时间的等待,增加了平均周转时间。
计算时间短的作业优先算法
优先选择计算时间短且资源能得到满足作业,这种算法能够降低作业平均周转时间,提高系统吞吐能力。
响应比高优先算法:
综合了前面两种的优点,综合考虑等待时间和计算时间。响应比=等待时间/计算时间。
优先级调度算法:
每个作业确定一个优先级,优先级高的被选取。
(3)进程调度算法
1. 先来先服务算法
按照进程进入就绪队列的先后次序来选择可占用处理器的进程。
2. 最高优先级调度算法
3. 时间片轮转调度算法


二、PV操作和死锁
   1.进程的互斥和同步
进程的互斥 :当有若干个进程都要使用某一个资源时,任何时刻最多只允许一个进程去使用该资源,其他要使用它的进程必须等待,知道该资源的占用着释放了该资源。
进程同步:
并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息。当一个进程没有得到另一个进程的消息时候应该等待,知道消息到达才被唤起。

 2.进程通信:

在计算机系统中,并发进程之间经常要交换一下信息,这种信息的传递需要专门的通信机制来实现,这是一种高级的通信方法,我们把通过专门的通信机制实现进程间交换大量信息的通信方式成为进程通信。常用的是信箱通信。
3.死锁:
(1)产生原因
系统提供的资源数比进程要求的资源少;或者若干个进程要求的资源总数 大于系统能够提供的资源数,这时候,进程之间就会出现竞争资源的现象,对竞争资源分配不当,就会出现死锁。
(2)死锁的必要条件:
互斥的使用资源——每个资源每次都只能够给一个进程是用脑。
占有且等待资源——一个进程申请资源得不到满足时候处于等待自愿的状态,且不释放占有资源。
非抢夺式分配——任何一个进程不能够抢夺另一个进程所占用的资源,只能够自己来释放。
循环等待资源——存在一组进程,每个进程都在等待别人释放进程。
注意:四个条件是必要不充分条件。即发生死锁,四个条件一定同时成立;四个条件同时成立,不一定发生死锁。
(3)解决死锁方法:
1.死锁防止:
(1)静态分配资源:仅当系统能够马努进程的全部资源申请要求且把资源分配给进城后,该进程才开始进行。破坏了“占有且等待资源”“循环等待资源”,所以达到防止效果。
(2)按序分配资源:给进程编号,任何进程申请资源时候,总是先申请编号小的资源。
破坏了“循环等待资源”达到防止目的。
(3)剥夺式分配资源:当一个进程申请资源得不到满足时,可以从另一个进程那里去抢夺。只适用于处理器和主存资源的分配。破坏了“非抢夺式分配”,可以防止死锁。
2. 死锁的避免
通过算法合理的分配资源,达到避免死锁的效果,经典的算法是银行家算法。它是在保证至少有一个进程能够得到所需的全部资源的前提下进行资源分配的。
3 .死锁的检测

为解决死锁问题,这种系统设置了一些定时运行的“死锁检测程序”当检测到有死锁情况时候,再设法将其排除。

小结:

这个部分基础都过了一遍,个人认为重点是进程调度算法、PV操纵、银行家算法,遗留问题是PV操作自己去看,还是不太明白,后面的学习主要是这些点。