操作系统问题总结之进程管理

作业:

作业是用于需要计算机完成某项任务,而要求计算机所做工作的集合。一个作业的完成要经过作业提交,作业收容、作业执行和作业完成4个阶段。

 

进程定义:

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。

作业与进程区别:

  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将存储在外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。
  • 一个作业可由多个进程组成。且必须至少由一个进程组成,但反过来不成立。
  • 作业的概念主要用在批处理系统中。像Unix这样的分时系统中,则没有作业概念。而进程的概念则用在几乎所有的多道程序系统中。

进程状态:

初始状态、就绪状态、执行状态、等待状态、终止状态。

线程定义:

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

线程状态:

线程有执行、就绪、阻塞3个基本状态,派生、阻塞、激活、调度、结束5种基本操作。

进程/线程区别:

1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)

2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。

4、多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

临界区:

临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个进程访问。

并发进程间制约:

直接制约和间接制约。

直接制约是由并发进程互相共享对方的私有资源所引起的。

间接制约是由竞争共有资源而引起的。

进程间互斥:

互斥是进程间要求共享资源,有些资源存在互斥作用,各进程间竟争这些资源的关系称为进程的互斥。 

进程间同步:

同步是多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成项任务。

加锁法:

当某个进程进入临界区后,他将锁上临界区,直到他退出临界区为止。并发进程在申请进入临界区要测试是否被锁,如果被锁要等到临界区开锁后才有可能获得临界区。

P、V原语法:

采用信号量管理相应临界区的公有资源,信号量的数据仅能由P、V原语操作改变,而原语执行期间不允许中断发生。当某进程正在临界区内执行时,其他进程如果执行了P原语操作,该进程在等待队列中等待有其他进程做V原语操作释放资源后,进去临界区,这时P原语操作才真正结束。

加锁法/ P、V原语法区别:

加锁法采用反复测试lock而实现互斥,存在CPU浪费和不公平的现象,P、V原语采用信息量克服了加锁法的弊端。

死锁定义:

死锁是指各并发进程互相等待对方所拥有的资源,且这些并发进程在得到对方资源之前不会释放自己拥有的资源。

死锁必要条件:

  • 互斥条件:同一时间一个资源只能被一个任务使用
  • 请求与保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 不可剥夺条件:进程已获得的资源在未使用完前,不能剥夺,只能由自己释放。
  • 环路条件:若干进程之间形成一种头尾相连的循环等待条件

死锁解决办法:

  • 资源一次性分配:一次性分配所有资源,这样就不会再有请求了(破坏请求与保持条件)
  • 只要有一个资源得不到分配,也不给这个进程分配其他的资源(破坏请求与保持条件)
  • 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
  • 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)

哲学家问题:

有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五支筷子,哲学家饥饿时便试图取用两边的筷子用餐。

约束条件:(1)只有拿到两只筷子时,才能吃饭。(2)若筷子已被别人拿走,则必须等别人吃完后才能拿到筷子。(3)在未拿到两只筷子吃饭前,不会放下手中拿到的筷子。

  • 策略1:至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。定义信号量count,只允许4个哲学家同时进餐,这样就能保证至少有一个哲学家可以就餐。
  • 策略2:仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。可以利用信号量的保护机制实现。利用信号量的保护机制实现的思想是通过记录型信号量mutex对取左侧和右侧筷子的操作进行保护,使之成为一个原子操作,这样可以防止死锁的出现。
  • 策略3:规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号的哲学家则先拿起他右边的筷子,然后再去拿他左边的筷子。按此规定,将是1、2号哲学家竞争1号筷子,3、4号哲学家竞争3号筷子。即五个哲学家都竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐。
原文地址:https://www.cnblogs.com/BobPong/p/12630398.html