操作系统面试——进程与线程

目录基本概念关系线程线程状态线程同步方式信号量和互斥锁进程进程状态进程调度策略进程通信方式进程同步机制守护、僵尸、孤儿进程进程切换和线程切换内存池、进程池、线程池多线程多进程的优缺点C++多线程,互斥,同步同步和互斥的区别同步与异步同步异步死锁产生条件解决方法基本概念关系线程线程状态线程同步方式信号量和互斥锁进程进程状态进程调度策略进程通信方式进程同步机制守护、僵尸、孤儿进程进程切换和线程切换内存池、进程池、线程池多线程多进程的优缺点C++多线程,互斥,同步同步和互斥的区别
摘要由CSDN通过智能技术生成

进程

https://baike.baidu.com/item/进程/382503#2_2

基本概念

进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。

  1. 组成:进程 = 程序段 + 数据段 + PCB
  2. 特点:
    (1)动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
    (2)并发性:任何进程都可以同其他进程一起,并发执行。
    (3)独立性:进程是一个能独立运行的基本单元,同时也是系统分配资源和调度的独立结构。
    (4)异步性:由于进程之间相互制约,使进程具有执行的间断性,进程按照各自独立的,不可预知的速度向前推进。

进程状态

https://baike.baidu.com/item/进程状态/7387758?fr=aladdin

  1. 三态模型
    在这里插入图片描述
    (1)运行(running)态:进程占有处理器正在运行。
    (2)就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。
    (3)阻塞(blocked)态:又称为等待(wait)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。
  2. 五态模型
    在这里插入图片描述
    多了
    (1)新建(new)态:进程刚刚被创建,没有被提交到进程池。
    (2)终止(exit)态:进程已经完成执行。

进程调度策略

https://blog.csdn.net/qq_35642036/article/details/82809812

  1. 先来先服务调度算法(FCFS)
    (1)作业调度:从后备作业队列中选择一个或多个最先进入的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。
    (2)进程调度:从就绪队列中选择一个最先进入的进程,为之分配处理机,使之投入运行。
  2. 短作业(进程)优先调度算法(SJF/SPF)
    (1)SJF:从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
    (2)SPF:从就绪队列中选出一个估计运行时间最短的进程。
  3. 高优先权优先调度算法(HPF)
    (1)作业调度:系统将从后备队列中选择若干个优先权最高的作业装入内存。
    (2)进程调度:该算法是把处理机分配给就绪队列中优先权最高的进程,有两种:
    非抢占式优先权算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成或中止。主要用于批处理系统或者对实时性要求不严的实时系统中。
    抢占式优先权调度算法:出现一个优先权更高的进程,进程调度程序就立即停止当前进程,重新将处理机分配给新到的优先权最高的进程。用于要求比较严格的实时系统或者对性能要求较高的批处理和分时系统中。
  4. 高响应比优先调度算法(HRRN)
    (1)在批处理系统中,短作业优先算法比较好,但是不足之处是长作业的运行得不到保证。
    (2)引入动态优先权,优先级【RP = ( 等待时间 + 要求服务时间 ) / 要求服务时间 = 响应时间 / 要求服务时间】随着等待时间的增加而提高,则长作业在等待一定的时间后,必然有机会分配到处理机。
    (3)调度之前须先做响应比的计算,这会增加系统开销
  5. 时间片轮转法(RR)
    (1)最古老,最简单,最公平且使用最广的算法。每个进程被分配一个允许运行的时间,称作它的时间片。
    (2)时间片结束,进程还在运行,则CPU将被剥夺并分配给就绪队列中新的队首进程,该进程被移到绪队列的末尾。
    (3)进程在时间片结束前阻塞或结束,则CPU当即进行切换。
  6. 多级反馈队列调度算法(MFQ)
    (1)不必事先知道进程所需的执行时间,还可以满足各种类型进程的需要,目前被公认的一种较好的算法。
    (2)设置多个不同优先级的就绪队列。优先级越高,时间片越小
    (3)新进程进入内存后,首先被放入优先级最高的队列的末尾,按FCFS排队等待调度。
    (4)轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;否则转入下一队列的末尾,然后(4)循环。
    (5)仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。
    (6)如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则抢占,即把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

优先级倒置现象

优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。

解决方案:

  1. 设置优先级上限:给临界区一个高优先级,进入临界区的进程都将获得这个高优先级,如果其他试图进入临界区的进程的优先级都低于这个高优先级,那么优先级反转就不会发生。
  2. 优先级继承:当一个高优先级进程等待一个低优先级进程持有的资源时,低优先级进程将暂时获得高优先级进程的优先级别,在释放共享资源后,低优先级进程回到原来的优先级别。
  3. 临界区禁止中断:采用此种策略的系统只有两种优先级:可抢占优先级和中断禁止优先级。前者为一般进程运行时的优先级,后者为运行于临界区的优先级。

进程通信

https://blog.csdn.net/zhaohong_bo/article/details/89552188
https://blog.csdn.net/a718515028/article/details/108385942

线程之间的叫同步,进程之间的叫通信。

分类

  1. 低级通信
    (1)只能传递状态和整数值(控制信息)。
    (2)传送信息量小,效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。
    (3)编程复杂,用户直接实现通信的细节,容易出错。
  2. 高级通信
    (1)提高通信效率,传递大量数据,减轻程序编制的复杂度。
    (2)提供三种方式:① 共享内存模式、②
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值