计算机操作系统--进程管理(上)

前言

最近刷面经,发现有很多进程和线程的问题,无一例外,跟看天书一样,含泪去看菜鸟教程的操作系统部分,自己能记多少记多少。

一、与进程有关的时间

在这里插入图片描述

1.到达时间

进程进入就绪队列的时间

2.突发时间

CPU整个执行的时间,不包括等待时间。(突发时间无法进行调度)

3.完成时间

进程进入完成状态的时间或完成执行的时间

4.周转时间

该过程是从抵达到完成所花费的时间总量称为周转时间

5.等待时间

进程等待CPU分配的总时间称为等待时间

6.响应时间

到达时间和进程首次获取CPU的时间之间的差异

二、操作系统CPU调度

像MS DOS这种单编程系统,当进程等待任何I/O操作完成时,CPU也是空闲的,这是一个开销,因为它浪费时间并导致饥饿问题。但在多系统中,CPU在进程的等待时间不会保持空闲状态,而是去开始其它进程,操作系统必须定义CPU将被给予那个进程。

扫描二维码关注公众号,回复: 13309455 查看本文章

在多程序系统中,操作系统调度CPU上的进程以获得最大的利用率,此过程称为CPU调度。操作系统使用各种调度算法来调度过程。

1.进程控制块中保存了什么?

操作系统在进程的生命周期维护一个进程控制块。进程终止或终止时,进程控制块将被删除。并有以下信息保存到过程控制块中。
在这里插入图片描述

2.为什么需要调度?

在多道程序中,如果长期调度程序选择更多的I/O绑定进程,那么大多数时候CPU仍然是空闲的。操作系统的任务就是优化资源的利用。如果大多数正在正在运行的进程将其状态从运行状态更改为等待状态,那么系统中可能始终存在死锁。因此,操作系统需要调度作业以获得CPU的最佳利用率来避免死锁的可能性。

三、操作系统调度算法

1.调度算法的目的

<1>最大CPU利用率
<2>公平分配CPU
<3>最大吞吐量
<4>最短周转时间
<5>最短等待时间
<6>最短响应时间

2.先来先服务

这是最简单的算法,最短到达时间的过程首先获得CPU。到达时间越少,进程得到CPU速度越快。这是非抢先式的调度。

3.轮循

在循环调度算法中,操作定义了一个时间片。所有进程将以循环方式进行。每个进程都会获得CPU一小段时间(时间片),然后返回就绪队列等待下一回合。这是一种抢先式调度

4.最短作业第一

具有最短爆发时间作业将首先获得CPU,突发时间越短,进程得到的CPU速度越快,这是非抢先式调度

5.首先剩余时间最短

这是SJF的抢先形式,在这个算法中,操作系统根据执行的剩余时间来安排作业。

6.基于优先级的调度

这个算法中,优先级将被分配给每个进程。优先级越高,进程得到的CPU速度越快。如果两个进程的优先级相同,则会根据他们的到达时间进行安排。

7.最高响应下一个

这种算法调度,下一步将调度响应比率最高的进程。这减少了系统中的饥饿。

四、操作系统FCFS(先来式服务)

1.FCFS调度

先来先服务(FCFS)调度算法根据其到达时间简单地调度作业。 就绪队列中第一个工作将首先获得CPU。 工作到达时间越少,工作得到的CPU就越快。 如果第一个进程的突发时间是所有作业中最长的,则FCFS调度可能会导致饥饿问题。

FCFS的优势

<1>简单
<2>容易
<3>先到先得

FCFS 的缺点

<1>调度方式是非抢先式的,该进程将运行到完成
<2>由于算法非抢先性,可能会出现饥饿问题
<3>尽管实现起来很容易,但因为平均等待时间比其他调度算法高,因此性能较差。

2.FCFS护航效果

如果CPU在就绪队列的前端获得较高突发时间的进程,则较低突发时间的进程可能被阻塞,这意味着如果执行中的作业具有非常高的突发时间,则它们可能永远不会获得CPU。 这被称为队列效应或饥饿

在这里插入图片描述

3.FCFS的开销

假设所有的进程只是CPU绑定进程。但是也忽略了上下文切换时间。然而,如果考虑调度器在上下文切换中花费的时间,则系统的平均等待时间将增加,这也影响系统的效率。上下文切换始终是开销。

猜你喜欢

转载自blog.csdn.net/qq_52269550/article/details/116779273