一、进程状态、状态转换都有哪些?状态转换各自原因是什么?
计算机进程的状态可以分为以下几种:
新建状态 (New):进程被创建,等待系统为其分配资源。
就绪状态 (Ready):进程已经获得了所有需要的资源,但是因为CPU正在执行其他进程而暂时无法执行。
运行状态 (Running):进程正在被CPU执行。
阻塞状态 (Blocked):进程因为等待某个事件(例如文件读写、网络通信)而暂停执行。此时进程不占用CPU资源。
终止状态 (Terminated):进程已经执行完毕或者因为某些原因被强制中止。
进程的状态转换分为以下几种,并且原因各不相同:
创建进程 (New) -> 就绪状态 (Ready):当一个新进程被创建时,它会进入就绪状态,等待系统调度与分配资源。
就绪状态 (Ready) -> 运行状态 (Running):当CPU被分配给该进程时,它会从就绪状态转变为运行状态。
运行状态 (Running) -> 就绪状态 (Ready):当CPU完成该进程的执行后,进程会回到就绪状态等待下一次执行。
运行状态 (Running) -> 阻塞状态 (Blocked):如果进程需要等待某些事件发生(例如文件读写、网络通信等),则它会进入阻塞状态。
阻塞状态 (Blocked) -> 就绪状态 (Ready):当事件发生并且资源可用时,进程会从阻塞状态转换成就绪状态,等待CPU执行。
运行状态 (Running) -> 终止状态 (Terminated):当进程执行完成或者被强制结束时,进程会进入终止状态。
二、进程控制块(PCB)中包含哪些信息?这些信息的主要用途是什么?
进程控制块(Process Control Block,PCB)是操作系统中用来描述和管理进程的数据结构。每个进程都有一个唯一的PCB,其中包含了该进程的所有信息。
PCB中通常包含如下重要信息:
1. 进程ID:标识进程的唯一标识符。
2. 进程状态:记录进程当前的状态,例如新建、就绪、运行、阻塞或终止。
3. CPU寄存器状态:记录进程在执行过程中CPU寄存器里的值。
4. 内存管理信息:包括进程的地址空间、页表等信息。
5. 文件指针信息:记录该进程打开文件的情况及访问权限。
6. 进程优先级:Scheduler根据该数值判断哪个进程应该得到更多的CPU时间片,以便增加性能。
7. 进程调度信息:记录进程上次执行完后被挂起前的状态,以及等待处理事务的进程与当前进程在同步时共享的中间变量。
8. 时间戳:记录进程的创建时间和最近一次执行时间等信息,以便用于计算进程的运行时间。
9. 信号处理与异常信息:记录进程可能收到的信号及相应的处理程序以及异常处理程序等信息。
10. 用户ID和组ID:标识进程的用户和用户组。
11. 其他进程管理信息:例如父子进程关系、线程等信息。
PCB中存储了所有与进程有关的重要信息,这些信息用于存储和维护进程的状态以及各种属性。当操作系统在进行进程切换时,就可以利用PCB保存当前进程的运行信息并切换到另一个进程。PCB的使用可以提高操作系统的效率和稳定性,有助于操作系统实现合理、高效的调度算法,确保不同进程之间的相互独立和安全性。
三、进程间通信主要有哪几种方式?
进程间通信主要有以下几种方式:
1. 消息传递:通过操作系统提供的消息传递机制,将信息从一个进程发送到另一个进程。其中包括直接通信和间接通信两种形式。
2. 共享内存:将某一块物理内存区域映射到多个进程的虚拟地址空间中,使得这些进程可以直接访问同一段共享内存区域。这样的方式可以提高通信效率,但也需要考虑并发控制等问题。
3. 管道通信:在Unix/Linux系统中,管道(Pipe)支持父子或者兄弟进程之间的通信。其中,命名管道允许不具亲缘关系的进程使用,并且可以持续存在,而无名管道仅限于父子进程使用,且只能在创建该进程时使用。
4. 套接字通信:套接字(Socket)是一种常用的跨网络进程通信方式。它允许不同主机上的进程进行通信,例如客户端与服务器之间的通信,同时可以支持流式、面向连接等多种通信方式。
5. 信号量通信:信号量是一种特殊的计数器,用于多个进程之间对共享资源的互斥访问。进程在访问信号量之前必须获得其使用权,并在使用完毕后将其释放。
四、处理机调度方式有哪两种类型?调度的时机有哪些?
处理机调度方式主要有以下两种类型:
1. 非抢占式调度(Non-preemptive Scheduling):一旦处理机分配给某个进程,该进程将一直运行直至完成或者发生阻塞,才会让出处理机。该调度方式简单、容易理解和实现,但响应时间长且系统的吞吐量较低。
2. 抢占式调度(Preemptive Scheduling):处理机可以被其他高优先级进程抢占,因此当前正在运行的进程不能保证会一直运行到完成。该调度方式可获得更快的响应时间和更高的系统吞吐量,但需要一定的调度开销,且可能产生饥饿问题。
而处理机调度的时机主要包括以下三种情况:
1. 进程创建:所有新建进程都必须经过调度程序进行调度,以便为其分配处理机并开始运行。
2. 进程阻塞:当一个进程请求某些资源时由于这些资源已经被其他进程所占用而无法分配时,该进程就会被阻塞,并放入阻塞队列中等待资源释放。
3. 进程唤醒:当其他进程占用的资源已经释放,就会唤醒等待该资源的进程,并放入就绪队列等待调度程序的调度。
五、进程切换过程需要完成什么操作?
进程切换需要完成以下操作:
1. 保存当前进程的上下文信息,包括程序计数器、寄存器状态、通用内存等重要内容。
2. 将当前进程从内存中移出,改变其状态为等待状态(或挂起状态),让系统去调度和运行其它处于就绪状态的进程。
3. 根据调度策略从就绪队列中选取一个合适的进程,将其从内存中读入,恢复进程的状态和数据,如CPU使用状态、内存页表、寄存器内容等,并将该进程对应的PCB信息转至处理机控制块。
4. 最后将系统控制权交给新进程,更新进程状态为运行状态,开始执行新进程的指令,此时原进程已经被完全替换,并处于停滞状态,等待下一次内存调度。
六、处理机调度的准则包含哪些?
1.CPU利用率 2.系统吞吐量 3.就绪等待时间 4.响应时间 5.周转时间
七、各调度算法的优缺点有哪些?
1.先来先服务(FCFS)算法:
优点:简单,易于理解,便于在程序中运用;有利于长进程和CPU繁忙型作业
缺点:不利于短进程和I/O繁忙型作业。
2.短作业优先(SJF)算法:
优点:对于一组给定的作业,若所有的作业同时达到,SJF调度算法是最佳算法,平均周准时间最短,系统吞吐量最大。
缺点:实现上有困难,需要知道或至少需要估计每个作业/进程所需要的处理时间;对于长进程不利,长作业可能会因为长期的不到调度而产生“饥饿”现象;不能保证及时处理紧迫作业。
3.最短剩余时间优先(SRTF)算法
优点:保证新的短作业一进入系统就能很快得到服务,平均等待时间短。
缺点;需要保存进程断点现场,统计进程剩余时间,因此增加了系统开销;不利于长作业。
4.高响应比较优先(HRRF)算法:
优点:兼顾短进程、长进程。
缺点:调度前需要计算进程的响应比,增加系统开销;对实施系统无法做出即使反应。
5.时间片轮转调度(RR)算法:
优点:简单易行,平均响应时间短。
缺点:不利于处理紧急作业。
八、根据以下各题条件,列出进程执行顺序(时间轴或甘特图),计算进程结束时间、周转时间以及平均周转时间。
- 有5个批处理作业A、B、C、D、E几乎同时到达,预计它们的运行时间为10、6、2、4、8分钟。其优先级分别为3、5、2、1、4,这里5为最高优先级。分别采用先来先服务算法(按A、B、C、D、E)、短作业优先算法、优先级算法、时间片轮转算法(时间片为2分钟)。
1)先来先服务
执行次序 | 运行时间 | 优先级 | 等待时间 | 周转时间 |
A | 10 | 3 | 0 | 10 |
B | 6 | 5 | 10 | 16 |
C | 2 | 2 | 16 | 18 |
D | 4 | 1 | 18 | 22 |
E | 8 | 4 | 22 | 30 |
平均周转时间:19.2 |
2)短作业优先法
执行次序 | 运行时间 | 优先级 | 等待时间 | 周转时间 |
C | 2 | 2 | 0 | 2 |
D | 4 | 1 | 2 | 6 |
B | 6 | 5 | 6 | 12 |
E | 8 | 4 | 12 | 20 |
A | 10 | 3 | 20 | 30 |
平均周转时间:14 |
3)优先级调度算法
执行次序 | 运行时间 | 优先级 | 等待时间 | 周转时间 |
B | 6 | 5 | 0 | 6 |
E | 8 | 4 | 6 | 14 |
A | 10 | 3 | 14 | 24 |
C | 2 | 2 | 24 | 26 |
D | 4 | 1 | 26 | 30 |
平均周转时间:20 |
4)时间片调度算法(令时间片2min)
A | B | C | D | E | A | B | D | E | A | B | E | A | E | A |
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
各进程的周转时间为
平均周转时间=20.4min
- 分别采用先来先服务算法、短作业优先算法、最短剩余时间优先算法、时间片轮转算法(时间片为1)。
进程名称 | 到达时间 | 运行时间 |
P1 | 0 | 8 |
P2 | 3 | 3 |
P3 | 5 | 1 |
P4 | 9 | 4 |
1)先来先服务
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P1 | 8 | 0 | 8 |
P2 | 3 | 8 | 11 |
P3 | 1 | 11 | 12 |
P4 | 4 | 12 | 16 |
平均周转时间:11.75 |
2)短作业优先法
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P3 | 1 | 0 | 1 |
P2 | 3 | 1 | 4 |
P4 | 4 | 4 | 8 |
P1 | 8 | 8 | 16 |
平均周转时间:7.25 |
3)最短剩余时间优先法
4)时间片调度优先法(时间片为1min)
P1 | P2 | P3 | P4 | P1 | P2 | P4 | P1 | P2 | P4 | P1 | P4 | P1 | P1 | P1 | P1 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
各进程的周转时间为;P1=16min、P2=9min、P3=3min、P4=12min
平均周转时间=10min
- 分别采用先来先服务算法、短作业优先算法、最短剩余时间优先算法、时间片轮转算法(时间片为5)。
进程名称 | 到达时间 | 运行时间 |
P1 | 0 | 25 |
P2 | 5 | 15 |
P3 | 10 | 5 |
P4 | 15 | 10 |
1)先来先服务算法
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P1 | 25 | 0 | 25 |
P2 | 15 | 25 | 30 |
P3 | 5 | 30 | 35 |
P4 | 10 | 35 | 45 |
平均周转时间:33.75 |
2)短作业优先法
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P3 | 5 | 0 | 5 |
P4 | 10 | 5 | 15 |
P2 | 15 | 15 | 30 |
P1 | 25 | 30 | 55 |
平均周转时间:26.25 |
3)最短剩余时间优先法
4)时间片轮转算法(时间片为5)
P1 | P2 | P3 | P4 | P1 | P2 | P4 | P1 | P2 | P1 | P4 | P1 |
0 5 10 15 20 25 30 35 40 45 50 55 60
各进程的周转时间为;P1=60min、P2=30min、P3=15min、P4=55min
平均周转时间 =40min
- 分别采用先来先服务算法、短作业优先算法、最短剩余时间优先算法、时间片轮转算法(时间片为3)。
进程名称 | 到达时间 | 运行时间 |
P1 | 0 | 3 |
P2 | 1 | 12 |
P3 | 5 | 1 |
1)先来先服务算法
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P1 | 3 | 0 | 3 |
P2 | 12 | 3 | 15 |
P3 | 1 | 15 | 16 |
平均周转时间:11.3333 |
2)短作业优先法
执行次序 | 运行时间 | 等待时间 | 周转时间 |
P3 | 1 | 0 | 1 |
P2 | 3 | 1 | 4 |
P1 | 12 | 4 | 16 |
平均周转时间:7 |
3)最短剩余时间优先法
4)时间片轮转算法(时间片为3)
P1 | P2 | P3 | P1 | P1 | P1 |
0 3 6 9 12 15 16
各进程的周转时间为;P1=16、P2=6、P3=9
平均周转时间=10.3333