2024年最全操作系统(第二章-进程管理)_以键入事命令名可以实现多少(4),2024年最新HarmonyOS鸿蒙面试题handler

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 进程状态。它指明进程当前的状态,作为进程调度和对换时的依据。
  • 优先权高的进程将优先获得处理器。
  • 进程调度所需的其他信息。其内容与所采用的进程调度算法有关,如进  程等待时间、进程已运行时间等。
  • 等待事件是指进程由运行状态转变为等待状态时所等待发生的事件,即等待原因。

(3)现场信息(处理器状态信息)

现场信息是用于保留进程存放在处理器中的各种信息,主要由处理器中的各个寄存器的内容组成。尤其是当进程暂停运行时,这些寄存器内的信息将被保存在PCB里,当该进程重新运行时,能从上次停止的地方继续运行。

  • 通用寄存器。其中的内容可以被用户程序访问,用于暂存信息。
  • 指令计数器。用于存放要访问的下一条指令的地址。
  • 程序状态字。用于保存当前处理器的状态信息,如运行方式、中断屏蔽标志等。
  • 用户栈指针。每个用户进程都有一个或若干个与之相关的关系栈,用于存放过程和系统调用参数及调用地址,栈指针指向堆栈的栈顶。

(4)管理信息(进程控制信息)

管理信息包括进程资源、控制机制等一些进程运行所需要的信息。

  • 程序和数据的地址。它是指该进程的程序和数据所在的主存和外存地址,以便该进程再次运行时,能够找到程序和数据。
  • 进程同步和通信机制。它是指实现进程同步和进程通信时所采用的机制,如消息队列指针、信号量等。
  • 资源清单。该清单中存放有除CPU以外,进程所需的全部资源和已经分配到的资源。
  • 链接指针。它将指向该进程所在队列的下一个进程的PCB的首地址。

(5)进程控制块的组织方式

(1)链接方式

把具有相同状态的PCB用链接指针链接成队列,如就绪队列、等待队列和空闲队列等。就绪队列中的PCB将按照相应的进程调度算法进行排序。而等待队列也可以根据等待原因的不同,将处于等待状态的进程的PCB排成等待I/O队列、等待主存队列等多个队列。

(2)索引方式

系统根据各个进程的状态建立不同的索引表,如就绪索引表、等待索引表等,并把各个索引表在主存的首地址记录在主存中的专用单元里,也可以称为表指针。在每个索引表的表目中,记录着具有相同状态的各个PCB在表中的地址。

(6)进程控制原语

原语是指具有特定功能的不被中断的过程。它主要用于实现操作系统的一些专门控制操作。用于进程控制的原语有:

  • (1)创建原语     用于为一个进程分配工作区和建立PCB,置该进程为就绪状态。
  • (2)撤销原语     用于一个进程工作结束后,收回它的工作区和PCB。
  • (3)等待原语     用于进程在运行过程中发生等待事件时,把进程的状态改为等待状态。
  • (4)唤醒原语     用于当进程等待的事件结束时,把进程的状态改为就绪状态。

三、进程控制

(一)操作系统内核

核心态:又称管态、系统态,是操作系统管理程序执行时计算机所处的状态。这种状态具有较高的特权,能执行一切指令,访问所有的寄存器和存储器。

用户态:又称目态,是用户执行程序时计算机所处的状态。这种状态具有较低的特权,只有执行规定的指令,访问指定的寄存器和存储器。

用户态和内核态是操作系统中的两种不同的运行级别。用户态是指应用程序运行时所处的状态,而内核态是指操作系统运行时所处的状态。在用户态下,应用程序可以访问自己的内存空间和一些受限制的系统资源,但不能直接访问硬件设备和操作系统的核心功能。而在内核态下,操作系统可以访问所有的系统资源和硬件设备,并且可以执行所有的核心功能。

用户态和内核态之间的切换是通过系统调用、异常和外围设备中断来实现的。当应用程序需要访问受限制的系统资源或执行核心功能时,它会发起一个系统调用,这时操作系统会将应用程序的状态切换到内核态,执行相应的操作,然后将状态切换回用户态,继续执行应用程序。

用户态和内核态之间的切换是有开销的,因为需要保存和恢复现场、复制参数和代码等操作。这也是为什么说用户态和内核态切换的开销大的原因。

特权指令和非特权指令

在计算机体系结构中,存在两种主要类型的指令:特权指令和非特权指令。它们在处理器的执行权限方面有所区别。

特权指令

特权指令:系统态下运行的指令(相当于系统指令),对内存的访问不受限制,可以访问用户空间和系统空间,不允许应用程序使用。

特权指令是那些需要较高执行权限的指令,通常由操作系统或内核执行。这些指令涉及到对系统资源的管理和控制,如内存管理、I/O 操作、中断处理等。只有在特殊的特权级别下才能执行这些指令,一般用户程序无法直接执行它们。这有助于确保系统的安全性和稳定性。

常见的特权指令包括:

1. 操作系统调用指令
2. 修改页表的指令
3. 中断和异常处理指令
4. I/O 操作相关指令
5. 修改控制寄存器的指令

非特权指令

非特权指令:在用户态运行的指令,应用程序所使用的所有指令,访问内存受限,只允许访问用户空间,不能对系统中的软件和硬件直接访问。

非特权指令是那些可以由普通用户程序直接执行的指令。它们通常涉及到一般的计算、数据传输和逻辑运算等基本操作。非特权指令执行时不会对系统的关键资源产生直接影响,因此可以由用户程序自由使用。

常见的非特权指令包括:

1. 数据移动指令(如MOV)
2. 算术运算指令(如ADD、SUB)
3. 逻辑运算指令(如AND、OR)
4. 条件分支指令(如JUMP)
5. 栈操作指令(如PUSH、POP)

通过将特权指令和非特权指令分开,计算机体系结构可以实现更好的安全性和系统稳定性,确保只有授权的代码可以执行对系统关键资源的敏感操作。

(二)、进程创建

在系统中,只有进程才能得到运行。因此,程序要想运行,就必须为之创建进程。进程运行结束,还必须撤销它。

(1)用户登录:在分时系统中,用户键入登录命令后,如果是合法用户,系统将为该终端用户建立一个进程,并把它放入就绪队列。

(2)作业调度:在批处理系统中,当作业调度程序调度某个作业时,便将该作业装入主存,为其分配必要的资源,并为之创建进程,放入就绪队列。

(3)提供服务:当运行中的用户进程提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务。

(4)应用请求:基于应用进程自己的需要,由它自己创建一个新进程,这个新进程也称为该进程的子进程。

进程创建的处理过程

一旦操作系统发现了要求创建进程的事件后,便调用进程创建原语,按照下列步骤创建一个新进程:

① 为新进程分配唯一的进程标识符,并从PCB队列中申请一个空闲的PCB。

② 为新进程的程序和数据,以及用户栈分配相应的主存空间及其他必要的资源。

③ 初始化PCB中的相应信息,如标识信息、处理器信息、进程控制信息等。

④ 如果就绪队列可以接纳新进程,便将新进程加入到就绪队列中。

(三)、进程撤销

(1)进程正常结束     这是指程序运行到最后一条指令后。如在C语言程序的函数调用中,执行函数调用的最后一条指令return后,结束该函数。

(2)进程异常错误     在进程运行期间,由于出现某些错误和故障而使进程被迫中止。例如越界错误、超时故障、非法指令错、运行超时、等待超时、算术运算错、I/O故障等。

(3)进程应外界的请求而终止运行     例如,操作员或操作系统要求父进程干预或父进程结束等。

进程撤销的处理过程, 一旦操作系统发现了要求终止进程的事件后,便调用进程终止原语,按照下列步骤终止指定的进程:

① 根据被终止进程的标识符,从PCB集合中检索该进程的PCB,读出进程状态。

② 若该进程处于运行状态,则立即终止该进程的运行。

③ 若该进程有子孙进程,还要将其子孙进程终止。

④ 将该进程所占用的资源回收,归还给父进程或操作系统。

⑤ 将被终止进程的PCB从所在队列中移出,撤销该进程的PCB,并将其加入到空闲的PCB队列中。

(四)、进程等待(进程阻塞)

(1)请求系统服务   正在运行的进程请求系统提供服务时,例如申请打印机打印,但申请服务资源被另外的进程占有,该进程只能处于等待状态。

(2)启动某种操作   正在运行的进程启动某种操作后,其后续命令必须在该操作完成后才能运行,所以要先等待该进程。

(3)新数据尚未到达     对于相互合作的进程,如果一个进程需要先获得另一个进程提供的数据后才能运行,则只有等待所需要的数据到达。

(4)无新工作可做   系统往往设置一些具有特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来等待新任务的到来。

进程等待的处理过程,    一旦操作系统发现了要求等待进程的事件后,便调用进程等待原语,按照下列步骤阻塞指定的进程:

① 立即停止执行该进程。

② 修改进程控制块中的相关信息。把进程控制块中的运行状态由“运行”状态改为“等待”状态,并填入等待的原因,以及进程的各种状态信息。

③ 把进程控制块插入到等待队列。根据等待队列的组织方式,把等待进程的进程控制块插入等待队列中。

④ 转调度程序重新调度,运行就绪队列中的其他进程。

(五)、进程唤醒

(1)请求系统服务得到满足     因请求服务得不到满足的等待队列中的进程,得到相应的服务要求时,处于等待队列中的进程就被唤醒。

(2)启动某种操作完成     处于等待某种操作完成的等待队列中的进程,其等待的操作已经完成,可以执行其后续命令,则必须把它唤醒。

(3)新数据已经到达     对于相互合作的进程,如果一个进程需要另一个进程提供的数据已经到达,则把因此而处于等待的进程唤醒。

(4)有新工作可做     系统中的具有特定功能的系统进程,接收到新的任务时,就必须唤醒它。

进程唤醒的过程 ,    一旦操作系统发现了要求唤醒进程的事件后,便调用进程唤醒原语,按照下列步骤唤醒指定的进程。

① 从等待队列中找到该进程。

② 修改该进程控制块中的相关内容,把等待状态改为就绪状态,删除等待原语等。

③ 把进程控制块插入到就绪队列中。按照就绪队列的组织方式,把被唤醒的进程的进程控制块插入到就绪队列中。

四、进程同步

对于相关进程间的同步和互斥,必须进行有效的控制。这种控制涉及几个基本概念,即临界资源、临界区、进程同步和进程互斥。

(一)进程同步的概念

1. 临界资源

在系统中有许多硬件或软件资源,如打印机、公共变量等,这些资源在一段时间内只允许一个进程访问或使用,这种资源称为临界资源。

2. 临界区

作为临界资源,不论是硬件临界资源,还是软件临界资源,多个并发进程都必须互斥地访问或使用,这时把每个进程中访问临界资源的那段代码称为临界区。而这些并发进程中涉及临界资源访问的那些程序段称为相关临界区。

在临界区之前增加一段用于检查的代码,这段代码称为进入区。相应地,在临界区后面也要加入一段代码,称为退出区,用于将临界资源的被访问标志恢复为未被访问标志。

3. 进程同步

进程同步是指多个相关进程在执行次序上的协调,这些进程相互合作,在一些关键点上需要相互等待或相互通信。通过临界区可以协调进程间相互合作的关系,这就是进程同步。

4. 进程互斥

进程互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待。当占用临界资源的进程退出临界区后,另一个进程才被允许使用临界资源。通过临界区协调进程间资源共享的关系,就是进程互斥。进程互斥是同步的一种特例。

(二)、进程同步机制应遵循的原则

为了实现进程的同步与互斥,可以利用软件方法,也可以在系统中设置专门的同步机制来协调各个进程。但是,所有的同步机制都必须遵循以下四条原则。

  1. 空闲让进:当无进程处于临界区时,临界资源处于空闲状态,可以允许一个请求进入临界区的进程进入自己的临界区,有效地使用临界资源。

  2. 忙则等待:已有进程进入自己的临界区时,意味着临界资源正被访问,因而其他试图进入临界区的进程必须等待,以保证进程互斥地使用临界资源。

  3. 有限等待: 对要求访问临界资源的进程,应保证该进程在有效的时间内进入自己的临界区,以免陷入“死等”状态。

  4. 让权等待:当进程不能进入自己的临界区时,应立即释放处理器,以免陷入“忙等”。

(三)、进程同步机制——锁
  1. 锁的概念

在同步机制中,常用一个变量来代表临界资源的状态,称它为锁。通常用“0”表示资源可用,相当于锁打开。用“1”表示资源已被占用,相当于锁闭合。

互斥锁:最简单的一种线程同步方法,会阻塞线程;

自旋锁:避免切换的一种线程同步方法,属于“忙等待” ;

读写锁:为“读多写少”的资源设计的线程同步方法,可以显著提高性能;

条件变量:相对复杂的一种线程同步方法,有更灵活的使用方法。

(四)、进程同步机制——信号量
  1. 信号量的概念

信号量是一种特殊变量,它用来表示系统中资源的使用情况。     整型信号量就是一个整型变量。当其值大于“0”时,表示系统中对应可用资源的数目;当其值小于“0”时,其绝对值表示因该类资源而被等待的进程的数目;当其值等于“0”时,表示系统中对应资源已经用完,并且没有因该类资源而被等待的进程。

  1. 对信号量的操作

对于整型信号量,仅能通过两个标准的原语操作来访问,这两个操作被称为P操作、V操作,也合称为PV操作。其中P操作在进入临界区前执行,V操作在退出临界区后执行。

利用信号量实现进程同步的方法,使用PV操作的规则

(1)分清哪些是互斥问题(互斥访问临界资源的),哪些是同步问题(具有前后执行顺序要求的)。

(2)对于互斥问题要设置互斥信号量,互斥信号量的个数只与临界资源的种类有关。通常有几类临界资源就设置几个互斥信号量,且初值为1,代表临界资源可用。

(3)对于同步问题要设置同步信号量,通常同步信号量的个数与参与同步的进程种类有关,即同步关系涉及几类进程,就有几个同步信号量。

(4)在每个进程中用于实现互斥的PV操作必须成对出现;用于实现同步的PV操作也必须成对出现,但是它们分别出现在不同的进程中;在某个进程中如果同时存在互斥与同步的P操作,则其顺序不能颠倒,必须先执行对同步信号量的P操作,再执行对互斥信号量的P操作,但是V操作的顺序没有严格要求。

五、进程通信

进程通信是指进程之间的信息交换,其所交换的信息量少则几个字节,多则成千上万个字节,

(一)、共享存储器系统

在共享存储器系统中,相互通信的进程共享某些数据结构或存储区,进程之间能够通过它们进行通信。共享存储器系统又可以分为共享数据结构和共享存储区两种方式。

1. 共享数据结构方式

在这种通信方式下,相互通信的进程共用某些数据结构,并通过这些数据结构交换信息。这种方式与信号量机制相比,并没有发生太大的变化,比较低效、复杂,只适用于传送少量的数据。

  1. 共享存储区方式

这种通信方式是在存储器中划出一块共享存储区,相互通信的进程可以通过对共享存储区中的数据进行读或写来实现通信。这种方式效率高,可以传送较多的数据。

(二)、消息传递系统

在消息传递系统中,进程间的数据交换是以消息为单位进行的。用户直接利用系统中提供的一组通信命令(原语)进行通信,大大提高了工作效率,又简化了程序编制的复杂性。因此,消息传递系统成为最常用的高级通信方式。

1. 直接通信方式

发送进程使用发送原语直接将消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上。接收进程使用接收原语从消息缓冲队列中取出消息。

通常,系统提供两条通信原语:

(1)发送原语:Send(Receiver,message);

(2)接收原语:Receive(Sender,message);

2. 间接通信方式

发送进程与接收进程通过中间实体——信箱来完成通信,既可以实现实时通信,又可以实现非实时通信。

(1)信箱通信的操作

信箱的创建与撤销     进程可以利用信箱创建原语来建立一个新信箱。创建进程应给出信箱的名字、信箱属性等。当信箱所属进程不再需要该信箱时,可用信箱撤销原语来撤销信箱。

消息的发送与接收     相互通信的进程利用系统提供的下述通信原语来实现消息的发送与接收。     Send(mailbox,message):将一个消息发送到指定信箱。     Receive(mailbox,message):从指定信箱中接收一个消息。

信箱可以由操作系统创建,也可以由用户创建。创建者是信箱的拥有者,据此,可以把信箱分为以下三类:

私有信箱     用户进程可以为自己建立一个新信箱,并作为进程的一部分。信箱的拥有者有权从信箱中读取消息,其他用户只能将自己的消息发送到该信箱中。

公用信箱     它由操作系统创建,并提供给系统中所有核准的用户进程使用。核准的进程既可以把消息发送到该信箱,又可以从信箱中取出发送给自己的消息。

共享信箱   它实际上是某种进程创建的私有信箱。在创建时或创建后,又指明它是可以共享的,同时指出共享进程(用户)的名字,此时就成为共享信箱。

(3)通信进程间的关系

一对一关系   在一个发送进程和一个接收进程之间建立一条专用的通信通道,使它们之间的通信不受其他进程的影响。

多对一关系     允许提供服务的一个接收进程与多个用户发送进程之间进行通信,也称为客户机/服务器方式。

一对多关系     允许一个发送进程与多个接收进程进行通信,使发送进程可以用广播形式向一组或全部接收者发送消息。

多对多关系     允许建立一个公用信箱,让多个进程既可以把消息发送到该信箱,又可以从信箱中取出发送给自己的消息。

(三)、管道通信系统

所谓管道是指连接读进程和写进程的,用于实现它们之间通信的共享文件。向管道提供输入的发送进程(写进程)以字符流的形式将大量数据送入管道,而接受管道输出的接收进程(读进程)可以从管道中接收数据。由于发送进程和接收进程是利用管道进行通信的,故称为管道通信方式。这种方式首创于UNIX系统,因为它能传送大量的数据,又非常有效,所以又被引入到许多操作系统中。

六、处理机调度

一、进程调度算法的选取原则

1. 面向用户的原则

(1)周转时间短

(2)响应时间快

(3)截止时间有保证

(4)优先权原则

2. 面向系统的原则

(1)系统吞吐量高

(2)处理器利用率高

(3)各类资源的平衡利用

二、常用的进程调度算法

衡量调度算法优劣的标准是比较不同算法下的周转时间(或带权周转时间)和平均周转时间(或平均带权周转时间)。平均周转时间短或平均带权周转时间短的就是好算法。

1.先来先服务调度算法(FCFS)

先来先服务调度算法是一种最简单的调度算法,系统开销最少。     当系统采用这种调度算法时,系统从就绪队列中选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。进程一旦占有了处理器,就一直运行下去,直到完成或因发生某种事件而等待,才退出处理器。

先来先服务调度算法的裁决模式是非抢占式的,优先权函数=花费在系统中的实际时间,仲裁规则是随机的。这种调度算法有利于长进程,而不利于短进程

2.短进程优先调度算法(SPF)

短进程优先调度算法是从就绪队列中选择一个运行时间最短的进程,将处理器分配给该进程,使之占有处理器并运行。直到该进程完成或因发生某种事件而等待,才退出处理器。

短进程优先调度算法的裁决模式是非抢占式的,优先权函数=-运行时间,仲裁规则是按照时间先后顺序或随机方式。这种调度算法照顾到了系统中的短进程,有效地降低了进程的平均等待时间,提高了系统的吞吐量。但是,这种算法对长进程不利。

虽然短进程优先调度算法对短进程很好,但是也存在不容忽视的缺点:

  1. 该算法对长进程非常不利。
  2. 该算法和先来先服务调度算法一样,不能保证紧急进程得到及时的处理。
  3. 进程调度的依据是用户提供的估计运行时间,致使该算法不一定能真正做到短进程优先调度。

3.最短剩余时间优先调度算法(SRT)

最短剩余时间优先调度算法是短进程优先调度算法的抢占式的动态版本。它将CPU分配给需要最少时间来完成的进程。

最短剩余时间优先调度算法的裁决模式是抢占式的,优先权函数是动态的,随着进程运行和完成时间的减少而增加,仲裁规则是按照时间先后顺序或随机方式。这种调度算法充分照顾到了剩余运行时间短的进程。

4.时间片轮转调度算法(RR)

在该算法中,系统将所有的就绪进程按照进入就绪队列的先后次序排列。每次调度时把CPU分配给队首进程,让其运行一个时间片。当时间片用完,由计时器发出时钟中断,调度程序暂停该进程的运行,使其退出处理器,并将它送到就绪队列的末尾,等待下一轮调度运行。然后,把CPU分配给就绪队列中新的队首进程,同时也让它运行一个时间片。这样就可以保证就绪队列中的所有进程在一定的时间(可以接受的等待时间)内均能获得一个时间片的运行时间。

时间片轮转调度算法的裁决模式是面向时间片的,所有就绪进程的优先权函数值相同,仲裁规则是轮转规则。这种调度算法适用于交互进程的调度。

在时间片轮转调度算法中,时间片的大小对系统的性能有很大影响。因此,时间片的大小要适当,通常要考虑到以下几个因素:

① 系统对响应时间的要求     作为分时系统首先必须满足系统对响应时间的要求。响应时间与进程数目和时间片成正比。

② 就绪队列中进程的数目     在分时系统中,就绪队列上的进程数目是随着在终端上机的用户数目而改变的。时间片的大小应反比于分时系统所配置的终端数目。

③ 系统的处理能力     系统的处理能力是必须保证用户键入的常用命令能在一个时间片内处理完毕,否则将无法取得满意的响应时间。

5.优先权调度算法

为了使紧迫型进程获得优先处理,引入了优先权调度算法,也称为外部优先权调度算法。它是从就绪队列中选择一个优先权最高的进程,让其获得处理器并运行。

优先权调度算法的裁决模式是抢占式的或非抢占式的,优先权函数是用户或系统赋给它的优先权,仲裁规则是随机的或先进先出的。

对于优先权调度算法,其关键在于是采用静态优先权,还是动态优先权,以及如何确定进程的优先权。

6.响应比高者优先调度算法(HRRN)

响应比高者优先调度算法是一个比较折中的算法,它是从就绪队列中选择一个响应比最高的进程,让其获得处理器并运行,直到该进程完成或因等待某种事件而退出处理器为止。

响应比=响应时间/要求服务时间=等待时间/要求服务时间

响应比高者优先调度算法的裁决模式是非抢占式的,优先权函数=响应比,仲裁规则是随机或按照先后次序。这种调度算法既照顾了短进程,又考虑了进程到达的先后次序,也不会使长进程长时间得不到服务。因此,它是一个考虑比较全面的算法。但是每次进行调度时,它都需要对各个进程计算响应比,所以系统开销很大,比较复杂。

三、常用的作业调度算法

① 先来先服务调度算法     按作业到达系统的先后次序进行的调度。该算法优先考虑在系统中等待时间最长的作业。这种算法容易实现,但效率比较低,而且没有考虑到紧迫作业和短作业。

② 短作业优先调度算法     从作业的后备队列中挑选运行时间最短的作业作为下一个调度运行对象。这种算法容易实现,且效率较高,但未考虑长作业的利益。

③ 响应比高者优先调度算法     为了更有效地提高系统的利用率,可以采用响应比高者优先调度算法。响应比高者优先调度算法既照顾到了短作业和长作业,又照顾到等待时间长的作业,但对要求运行紧迫的作业,没有充分考虑到。

④ 优先权调度算法          优先权调度算法是根据作业确定的优先权来选取作业,每次总是选取优先权最高的作业。在优先权调度算法中,为了照顾紧迫作业的运行,可能使某些系统资源闲置,系统资源的利用率没有充分地发挥。

⑤ 分类调度算法          分类调度算法是根据系统运行情况和作业属性将作业分类,作业调度时轮流从这些不同的作业类中挑选作业。分类调度算法虽然可以均衡使用各类资源,但是需要为不同类型的作业设置队列,增加了系统开销。

(1)先来先服务算法。作业的执行情况如下表所示:

作业提交时间运行时间开始时间完成时间周转时间带权周转时间
J18:001.08:009:001.01.0
J28:500.509:009:300.671.34
J39:000.209:309:420.73.5
J49:100.109:429:480.636.3

作业的执行顺序为:J1,J2,J3,J4。     平均周转时间=(1.0+0.67+0.7+0.63)/4=0.75小时     平均带权周转时间=(1.0+1.34+3.5+6.3)/4=3.035小时

(2)短作业优先算法。作业的执行情况如下表所示:

作业提交时间运行时间开始时间完成时间周转时间带权周转时间
J18:001.08:009:001.01.0
J28:500.509:189:480.971.94
J39:000.209:009:120.21.0
J49:100.109:129:180.131.3

作业的执行顺序为:J1,J3,J4,J2。     平均周转时间=(1.0+0.97+0.2+0.13)/4 = 0.575小时     平均带权周转时间=(1.0+1.94+1.0+1.3)/4 = 1.31小时

(3)响应比高者优先算法。作业的执行情况如下表所示:

作业提交时间运行时间开始时间完成时间周转时间带权周转时间
J18:001.08:009:001.01.0
J28:500.509:189:480.971.94
J39:000.209:009:120.21.0
J49:100.109:129:180.131.3

作业的执行顺序为:J1,J2,J4,J3。     平均周转时间=(1.0+0.67+0.8+0.43)/4=0.725小时     平均带权周转时间=(1.0+1.34+4+4.3)/4=2.66小时

四、死锁的基本概念

1. 死锁的概念

死锁是指多个进程因竞争资源而造成的一种僵局现象,若无外力的作用,这些进程都不能继续运行。

2. 死锁的原因

(1)竞争资源     当系统中供多个进程共享的资源不足以同时满足它们的需求时,引起它们对资源的竞争而产生死锁。

(2)进程推进顺序非法     进程在运行过程中如果请求和释放资源的顺序不当,也可能会导致进程死锁。

3. 产生死锁的必要条件

死锁并不一定都会出现,如果一旦产生死锁,一定会满足下述四个必要条件。

(1)互斥条件:进程对分配到的资源进行排他性、独占性使用,即在一段时间内某资源只能由一个进程占用

(2)请求和保持条件:进程已经拥有并保持了至少一个资源,但是,又请求新的资源,而新请求的资源又被其他进程占有,此时请求进程被等待,但对已获得的资源保持不放。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

死锁是指多个进程因竞争资源而造成的一种僵局现象,若无外力的作用,这些进程都不能继续运行。

2. 死锁的原因

(1)竞争资源     当系统中供多个进程共享的资源不足以同时满足它们的需求时,引起它们对资源的竞争而产生死锁。

(2)进程推进顺序非法     进程在运行过程中如果请求和释放资源的顺序不当,也可能会导致进程死锁。

3. 产生死锁的必要条件

死锁并不一定都会出现,如果一旦产生死锁,一定会满足下述四个必要条件。

(1)互斥条件:进程对分配到的资源进行排他性、独占性使用,即在一段时间内某资源只能由一个进程占用

(2)请求和保持条件:进程已经拥有并保持了至少一个资源,但是,又请求新的资源,而新请求的资源又被其他进程占有,此时请求进程被等待,但对已获得的资源保持不放。

[外链图片转存中…(img-Ly2YfDEn-1715659658805)]
[外链图片转存中…(img-A4GtHoaS-1715659658805)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值