北航991考研——进程管理(重点)

为什么要引入进程的概念?进程的基本特点是什么?它与程序有何区别和联系。

  • 进程的概念是操作系统中最基本的概念。
  • 进程的基本特点是:动态性、并发性、独立性和异步性
  • 进程与程序的联系:进程是程序的一次执行过程,没有程序就没有进程
  • 区别:进程是程序的执行,是一组动态的概念。而程序是一组指令的有序集合,是静态的概念;进程既然是程序的执行,是有生命过程的,有创建进程和撤销进程的过程。换言之,进程的存在是暂时的,而程序的存在是永久的;进程是程序的执行,因此进程的组成包括程序和数据。除此之外,进程还由记录进程状态信息的PCB组成;进程是竞争计算机系统有限资源的基本单位;一个进程能与其他进程并发地活动;一个程序可以对应多个进程,一个进程也可以包含多个程序。也就是说,程序和进程没有一一对应的关系。

从调度性、并发性、拥有资源及系统开销几个方面,对进程和线程进行比较

  • 调度性:在引入线程的操作系统中,把线程作为CPU调度和分派的基本单位,把进程作为资源拥有的基本单位
  • 并发性:在引入线程的操作系统中,一个进程可以包含多个线程,不仅进程之间可以并发执行,而且在一个进程中的多个线程也可以并发执行,因而使操作系统具有更好的并发性。
  • 拥有资源:进程始终是拥有资源的独立单位,线程自己不拥有资源,但它可以访问其隶属进程的资源。
  • 系统开销:在创建、撤销和切换进程方面,进程的开销远远大于线程的开销。

简述进程和作业的区别

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。主要区别如下:

  • 一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。
  • 作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将他放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要他被创建,总有相应的部分存在于内存中。
  • 作业的概念主要用在批处理系统中。像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中,在现代操作系统中进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
  • 作业调度的主要功能是检查系统是否满足作业的资源要求,并按照一定的算法来选取作业,把外存中的作业调进内存,并为其创建进程,加入就绪队列中等待调度。进程调度根据一定的算法将CPU分派给就绪队列中的一个进程,即从就绪队列中选择一个进程分配处理器,让其执行。

分析作业、进程、线程三者之间的关系

一个作业被调入内存执行时可能要为其创建多个进程,进程是资源分配的基本单位,一个进程可能对应若干个线程,线程是处理器调度的基本单位。

简述进程同步与互斥的区别与联系

  • 进程之间竞争使用临界资源,只能让他们逐个使用,这种现象称为互斥,是一种竞争关系。
  • 另一种是进程之间协同完成任务,在关键点上等待另一个进程发来的消息,以便协同一致,是一种协作关系。
同步互斥
进程——进程进程——资源——进程
时间次序上受到某种限制竞争不到某一临界资源时不允许进程工作
相互清除对方的存在及作用,交换信息不一定清除其他进程的情况
往往有几个进程共同完成一个任务往往指多个任务多个进程间通信制约

信号量上的P、V操作只是对信号量进行减1或者加1吗?在信号量上可以执行除P、V之外的操作吗?

  • 根据信号量的定义可知:P、V操作并不只是对信号量进行减1或者加1的操作,更重要的是在减1或者加1后,还要判断运算的结果。
  • 对于P操作,判断后调用进程有可能继续运行,也有可能阻塞等待;对于V操作,判断后调用进程总是继续运行,但之前可能会唤醒在信号量队列上等待的进程。但之前可能会唤醒在信号量队列上等待的进程。
  • 在信号量上除了能执行P、V操作外,还可以对信号量赋初值。

进程之间有哪些基本的通信方式?他们分别有什么特点?适用于哪些场合?

进程通信根据交换信息量的多少分为高级通信和低级通信。

  • 低级通讯一般只传递一个或几个字节的信息,以达到控制进程执行速度的作用(如P、V操作),其效率低,对用户不透明,所有的操作都必须由程序员来实现。
  • 高级通讯工具可以弥补这些缺陷。用户可直接利用操作系统提供的一组通讯命令,高效地传送大量的数据。高级通信的目的不是为了控制进程的执行速度,而是为了交换信息。
  • 高级通信方式大概可以分为如下三类
    • 共享存储器:在内存中分配一片空间作为共享存储区。需要进行通信的进程把它附加到自己的地址空间中,不需要则把他取消。
    • 管道文件:用于连续读、写进程以实现通信的共享文件。
    • 消息传递:以消息为单位在进程间进行数据交换。

什么是管道?无名管道和有名管道的差别是什么?

  • 管道是指能够连接一个写进程和一个读进程的,并允许他们以生产者-消费者方式进行通信的一个共享文件,又称pipe文件。
  • 无名管道是一个临时文件,利用系统调用pipe,该临时文件没有路径名,只有调用该pipe的进程及其子孙进程才能识别次文件描述符,利用该文件(管道)进行通信。
  • 有名文件是利用mknod系统调用建立的。是可以在文件系统中长期存在的,即有路径名的文件,其他进程可以知道其存在,并利用该路径名来访问改文件。

什么是死锁?产生死锁的原因是什么?

  • 所谓死锁是指多个进程因竞争系统资源或相互通信而处于永久阻塞状态。若无外力作用,这些进程都将无法向前推进。
  • 产生死锁的原因
    • 一是由于多进程共享的资源不足而引起竞争资源
    • 二是由于进程在运行过程中具有异步性,进程推进顺序非法。

产生死锁的必要条件是什么?解决死锁问题常采用那些措施?

产生死锁的必要条件如下:

  • 互斥条件:指在一段时间内,某资源仅为一个进程所占有
  • 不剥夺条件:指进程所获得的资源在未使用完成之前,不能被其他进程强行夺走,而只能由该进程自己释放。
  • 请求和保持条件:指进程每次申请它所需要的资源,在等待新资源分配的同时,进程继续占有已分配到的资源。
  • 循环等待条件:指存在一种进程资源等待链。链中每个进程已获得的资源同时被链中下一个进程所请求。

解决死锁问题常采用的措施:

  • 死锁的预防:通过破坏死锁产生的必要条件中的后三条来预防死锁的发生。
  • 死锁的避免:在资源动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁。
  • 死锁的检测及解除:通过系统的检测机构及时地检索出死锁的发生,然后采取某种措施解除死锁。

在某一时刻,系统中是否可能出现既无运行状态进程又无就绪状态进程?若可能,在什么情况下会发生?

有可能。

  • 系统在死锁的状态下,进程处于占有等待资源的状态,既不属于运行态,也不属于就绪态。
  • 进程都处于阻塞状态等待I/O完成,这些进程既不属于运行态,也不属于就绪态。

进程死锁与“饥饿”之间有何相同点和不通点

进程“饥饿”与死锁有一定的联系:两者都是由于资源竞争引起的,但又有明显的差别,主要表现在如下几个方面:

  • 从进程状态考虑:死锁进程都处于等待状态。运行或就绪状态的进程并非处于等待状态,却有可能被“饿死”。
  • 死锁进程等待永远不会被释放资源。“饥饿”进程等待会被释放但却不会分配给自己资源。表现为等待时限没有上限(排队等待或忙而等待)
  • 死锁一定发生了循环等待,而“饥饿”则不然。这也表名通过资源分配图可以检测是否发生了死锁,却不能检测是否有进程“饿死”。
  • 死锁一定涉及多个进程,而“饥饿”或被“饿死”的进程可能只有一个。

为什么说不能通过“互斥条件”来预防死锁?

  • 破坏互斥条件,即允许多个进程同时访问资源。
  • 但这受到资源本身的使用方法限制,有些资源必须互斥访问,不能同时访问。如几个进程同时使用打印机,而打印机的使用必须是互斥的。

Dijkstra于1965年提出的银行家算法,其主要思想是什么?它能够用来解决实际中的死锁问题吗?为什么?

  • 银行家算法是避免死锁的一种方法。(2018年961填空题考点)
  • 实现思想:允许进程动态的申请资源,系统在每次实施资源分配前,先计算资源分配的安全性,若此次资源分配安全(即资源分配后,系统能按照某种顺序能为每个进程分配其所需的资源,使每个进程都可以顺利完成),便将资源分配给进程,否则不分配资源,让进程等待。
  • 银行家算法具有较好的理论意义,但在实际系统中却难以实施。其原因是:难以预先获得资源申请的最大资源数;运行过程中进程的个数是不断变化的,所以银行家算法难以用来解决实际中的死锁问题。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值