操作系统复习(进程、线程、死锁)

1.进程的定义

进程是程序的一次执行,是进程实体的运行过程,是一个可拥有资源的独立单位,是系统进行资源分配和调度的一个基本单位(此时未引入线程)

什么是进程实体:
由程序段、相关的数据段、PCB(进程控制块,包含标识符和进程调度和控制相关信息)

PCB进程控制块的作用:
使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。或者说OS是根据PCB来对并发执行的进程进行控制和管理的。PCB是进程存在的唯一标志。

2.进程的状态

1.三种基本状态:
①就绪状态:当进程分配到出CPU以外的所有必要资源后,只要再获得cpu,便可立即执行,这个状态叫做~~

②执行状态:进程已获得CPU,其程序正在执行。

③阻塞状态:正在执行的进程由于发生某事件而无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,这种暂停状态称为~
在这里插入图片描述

在不少系统中进程只有上述三种状态,在另一些系统中,又增加了一些新的状态,如下

2.挂起状态:
引起挂起状态的原因:
①终端用户的请求:当终端用户在自己程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态

②父进程请求:有时候父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

③负荷调节的需要:当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起

④操作系统的需要:操作系统有时候希望挂起某些进程,以便检查运行中的资源使用情况

3.创建状态和终止状态:
创建状态:
创建一个进程一般要通过两个步骤:为一个新进程创建PCB,并填写必要的管理信息;把该进程转入就绪状态并插入就绪队列之中。

终止状态:
首先等待操作系统进行善后处理,然后将其PCB清零,并将PCB空间返还给系统。

3.进程同步和异步

1.进程同步:
间接制约:当两个进程需要同一资源时,当A进程占用资源时,B进程就不能使用资源,从而导致阻塞,当A进程使用完毕时,B进程才能从阻塞状态转为就绪状态;
直接制约:A进程需要获取写入内存,B进程需要从此内存中读出数据,这是当A进程没有写入时,B进程就处于阻塞状态,当A进程写入B进程才能转为就绪执行
注:简单来说进程同步就是两个进程相互影响,相互制约的一种行为现象

2.进程异步
当一个进程执行过程中不受另一个进程的影响

3.如何实现进程同步:
①信号量:signal=1时 ,A进程可以占用资源,占用资源后signal-1;此时signal=0;B进程不可占用此资源,当A进程释放资源后,signal+1(即signal=1)时,B进程可使用
②互斥机制:你用我就不能用,一山不容二虎
③管程机制:代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。
管程可以根据资源的情况,或接受或阻塞进程的访问,确保每次仅有一个进程使用共享资源,这样就可以统一管理对共享资源的所有访问,实现进程互斥。

4.同步机制应遵循的规则:
①空闲让进
②忙则等待
③有限等待
④让权等待

4.进程的通信

1.信号量:不能传递复杂消息,只能用来同步

2.共享存储器系统:
①基于共享数据结构的通信方式。在这种通信方式中,要求诸进程公用某些数据结构,比如生产消费者里面的有界缓冲区这种数据结构来实现通信。公用的数据机构的设置及进程间同步的处理都是程序员的责任,增加程序员的负担,因此这种通信方式是低效的,只适于传递相对少量的数据。

②基于共享存储区的通信方式:
为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储中的数据读或写来实现通信

3.消息传递系统:

进程间的数据交换是以格式化的消息(message)为单位的,在计算机网络中成为报文,程序员直接利用操作系统放入一组通信命令(原语)进行通信,根据实现的方式不同,分为两种:

①直接通信方式:
指发送进程利用OS所提供的发送命令直接把消息发送给目标进程,利用通信命令(原语)

②间接通信方式:
指进程间的通信需要通过作为共享数据结构的实体。该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。这种中间实体称为信箱。利用信箱通信方式,即可实现实时通信,又可实现非实时通信

4.管道通信:
所谓’管道‘,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。向管道提供输入的发送过程,以字符流形式将大量的数据送入管道;而接受管道输出的接收进程,则从管道中接收数据。
管道机制必须提供一下三方面的协调能力:
①互斥:即有一个进程对pipe进行读/写操作时,另一进程必须等待
②同步:当输入进程把一定数量的数据写入pipe,便去睡眠等待,直到输出进程取走数据后,再把它唤醒。
③确定对方是否存在,只有确定了对方存在,才能进行通信

5.进程和线程的关系和区别

1.首先为什么要引入线程:
首先在未引入线程之前,进程有两个基本属性,第一个进程是一个可拥有资源的独立单位,第二个是进程同时又是一个可以独立调度和分派的基本单位。
换言之,由于进程是一个资源的拥有者,因此在创建、撤销和切换中,系统必须为之付出交大的开销。正因如此,在系统中所设置的进程,其数量不宜过多,进程切换的频率也不宜过高,限制了并发程度的进一步提高。
如何能使多个程序更好地并发执行同时又尽量减少系统的开销呢?—引入线程 把之前进程的两个基本属性分开,把独立调度和分派的基本单位赋予给线程

2.线程和进程之间的关系和区别:

①调度:
进程是一个可拥有资源的独立单位,线程是可以独立调度和分派的基本单位。
是线程基本不拥有资源,这样线程能轻装前进,从而显著的提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换,但从一个进程的线程切换到另一个进程的线程时,会引起进程的切换。

②并发性:
在引入线程的操作系统中,不仅进程间可以并发执行,线程之间也可以并发执行,使操作系统有更好的并发性,从而能更加有效地提高系统资源的利用率。例如在一个未引入线程的单CPU操作系统中,仅设置一个服务进程,当该进程阻塞时,没有其他服务进程来提供服务。而在引入了线程的操作系统中,则可以在一个服务进程中设置多个线程,当第一个线程等待时,第二个线程可以继续运行,以提供服务。

③拥有资源:
线程自己不拥有系统资源,但他可以访问其隶属的进程的资源,即一个进程的代码段、数据段及拥有的系统资源可以供该进程中的所有线程所共享

④系统开销:
在创建和撤销进程时,系统都要为之创建和回收PCB,分配或回收资源,如内存空间和I/O设备等,操作系统所付出的开销明显大于线程创建或撤销时的开销。(线程创建需要利用一个线程创建函数和相应的参数)相应的在进程切换,需要保留当前进程的CPU环境,又要设置新选中的进程CPU环境,而线程的切换不涉及cpu方面的操作。

⑤影响性:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

6.处理机调度的层次

在这里插入图片描述

7.处理机调度算法

1.先来先服务调度算法(FCFS):
可用于作业调度和进程调度,有利于长作业进程不利于短作业进程

2.短作业优先算法:
该调度算法能有效地降低作业的平均等待时间
可用于作业调度和进程调度,对长作业不利,适用于短作业

3.高优先权优先调度算法:
为了照顾紧迫形作业,提出了这个算法
可用于作业调度和进程调度
分为非抢占式和抢占式
抢占式就是来到优先级更高的进程,就立即停止当前进程处理优先级较高的进程 非抢占式相反

4.基于时间片的轮转调度算法:
系统将所有就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令执行一个时间片。当执行的时间片用完时,由一个计时器发出中断请求,调度程序便据此信号来停止该进程的执行,并把它送往就绪队列的末尾。依次类推。

系统能在给定的时间内响应所有用户的请求。

8.死锁的定义

所谓死锁,是指多个进程在运行过程中因争夺资源造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。

9.产生死锁的原因:

1.竞争资源:当系统中供多个进程共享的资源如打印机,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。

2.进程间推进顺序非法:进程在运行过程中,请求或释放资源的顺序不当,也同样会导致产生进程死锁。

10.产生死锁的必要条件

1.互斥条件:在一段时间内某资源只由一个进程占有,别的请求者只能等待
2.请求和保持条件:指进程已经至少保持了一个资源,但是又提出了一个新的资源请求。而该资源请求被其他进程占有,请求进程堵塞,但又对自己获得的其他资源不放
3.不剥夺条件:指进程已获得资源,不能中途剥夺,只能使用完自己释放
4.环路等待条件:
p0等待p1占有的资源 p1等待p2占有的资源

11.处理死锁的基本方法

1.预防死锁:破坏四个必要条件中的一个或多个
2.避免死锁:属于事先预防的策略
3.检测死锁:允许发生死锁,但可以检测到并清除死锁
4.解除死锁:与检测死锁配套的方案

---------------------------------------------------------------------------------

。。。。有其他的遇到的在更新

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值