Operating system 一个过程会经历饥饿吗?

Operating system 一个过程会经历饥饿吗?,operating-system,scheduler,starvation,Operating System,Scheduler,Starvation,考虑使用非抢占式SJF调度的操作系统。如果给定10个进程的工作负载,每个进程执行10到20毫秒的CPU突发,然后执行500毫秒的I/O突发,是否有任何进程会经历饥饿 通过这项工作,我知道最短的流程是先安排的,无论哪个流程正在运行,都将运行到完成,但我不知道如何确定是否有任何流程会因资源从未分配而延迟,因为有此信息,在继续之前,我想知道,考虑到工作负载和调度器的类型,我想知道如何判断 考虑使用非抢占式SJF调度的操作系统。如果给定10个进程的工作负载,每个进程执行10到20毫秒的CPU突发,然后执

考虑使用非抢占式SJF调度的操作系统。如果给定10个进程的工作负载,每个进程执行10到20毫秒的CPU突发,然后执行500毫秒的I/O突发,是否有任何进程会经历饥饿

通过这项工作,我知道最短的流程是先安排的,无论哪个流程正在运行,都将运行到完成,但我不知道如何确定是否有任何流程会因资源从未分配而延迟,因为有此信息,在继续之前,我想知道,考虑到工作负载和调度器的类型,我想知道如何判断

考虑使用非抢占式SJF调度的操作系统。如果给定10个进程的工作负载,每个进程执行10到20毫秒的CPU突发,然后执行500毫秒的I/O突发,是否有任何进程会经历饥饿

如果您将饥饿定义为永远得不到任何CPU时间;然后,使用最短作业优先算法:

一个较长的工作岗位将面临饥饿,因为较短的工作岗位的创建速度快于完成速度,而不管有多少CPU,它们实际上无法跟上,因为新的较短工作岗位的创建过于频繁

b1如果占用无限长时间的任务数量超过CPU数量,并且没有任何任务阻塞(例如等待IO),或者更多进程将缺少CPU时间,除非您使用某种形式的分时来增加SJF,以避免在始终等长的作业中缺乏CPU时间

b2如果占用无限时间的任务数量超过CPU数量,并且某些任务确实阻塞(例如等待IO),则饥饿是否发生取决于每个进程未阻塞的时间总和

如果一个SJF调度器的工作负载为10个进程,并且没有一个进程是无限长的,并且没有创建额外的新进程;然后所有10个任务迟早都必须完成,并且没有一个任务会一直等待CPU

当然,这并不意味着某些任务不必临时等待,只需等待一个CPU

注意:对于实际系统,通常有许多无限长的任务会阻塞,例如,对于Windows和Linux,通常有100多个进程作为服务/守护进程和GUI运行;没有人知道任何任务需要多长时间,这不仅仅是因为每个CPU的速度因电源管理而不断变化——例如,您使用的web浏览器将运行多长时间?;通常没有人知道一个过程是需要无限长的时间还是不停止问题;有时,由于一个bug,一个进程会意外地永远循环。换言之;最短工作优先几乎总是不可能实现的

考虑使用非抢占式SJF调度的操作系统。如果给定10个进程的工作负载,每个进程执行10到20毫秒的CPU突发,然后执行500毫秒的I/O突发,是否有任何进程会经历饥饿

如果您将饥饿定义为永远得不到任何CPU时间;然后,使用最短作业优先算法:

一个较长的工作岗位将面临饥饿,因为较短的工作岗位的创建速度快于完成速度,而不管有多少CPU,它们实际上无法跟上,因为新的较短工作岗位的创建过于频繁

b1如果占用无限长时间的任务数量超过CPU数量,并且没有任何任务阻塞(例如等待IO),或者更多进程将缺少CPU时间,除非您使用某种形式的分时来增加SJF,以避免在始终等长的作业中缺乏CPU时间

b2如果占用无限时间的任务数量超过CPU数量,并且某些任务确实阻塞(例如等待IO),则饥饿是否发生取决于每个进程未阻塞的时间总和

如果一个SJF调度器的工作负载为10个进程,并且没有一个进程是无限长的,并且没有创建额外的新进程;然后所有10个任务迟早都必须完成,并且没有一个任务会一直等待CPU

当然,这并不意味着某些任务不必临时等待,只需等待一个CPU


注意:对于实际系统,通常有许多无限长的任务会阻塞,例如,对于Windows和Linux,通常有100多个进程作为服务/守护进程和GUI运行;没有人知道任何任务需要多长时间,这不仅仅是因为每个CPU的速度因电源管理而不断变化——例如,您使用的web浏览器将运行多长时间?;通常没有人知道一个过程是需要无限长的时间还是不停止问题;有时,由于一个bug,一个进程会意外地永远循环。换言之;首先执行最短作业几乎总是不可能的。

进程是否使用相同的I/O设备?N
o、 没有一个进程使用相同的I/o设备,因此没有一个进程在设备队列中等待。这些进程是否使用相同的I/o设备?没有,没有一个进程使用相同的I/o设备,因此没有一个进程在设备队列中等待