什么是内存?有何作用
内存是用于存放数据的硬件,程序执行前需先放到内存中才能被CPU处理
Work hard for what you desire.
相对于操作系统则看重平均,就是除以作业数
利用率=忙碌时间/总时间
单位时间内完成作业的数量
吞吐量=总共完成了多少作业/总共花了多少时间
周转时间包括四部分:
1 作业在外存后备队列上等待高级调度
2 进程在就绪队列上等待低级调度
3 进程在CPU上运行
4 进程等待I/O操作完成的事件
后三项在一个作业的整个处理过程中可能发生多次
因而周转时间=作业完成时间-作业提交时间
但用户只关心自己的作业从提交到完成花了多少时间,也就是周转时间是多少
打个比方:假设作业1实际运行时间只需要一分钟,作业2实际运行时间需要十分钟;周转时间为12分钟,那对于1来说,用户体验感很差,我本来就一分钟就好了,你却让我等十几分钟;但对于作业2来说,他的体验就是极好的,也就是多等了一会而已。
那就给出了带权周转时间的定义:带权周转时间=作业周转时间/作业实际运行时间
那也就是周转时间越小带权周转时间越小,用户体验感更好
对于进程来说,等待时间指进程被创建后等待处理机的时间,其中在等待I/O完成的过程不算,即等待时间=周转时间-运行时间-I/O操作时间
对于作业来说,等待时间是指从作业被加入外存开始。即周转时间-运行时间
因为作业要被CPU,I/O设备处理多久一般都是确定的,所以调度算法只会影响等待时间
比如我按下键盘的一个键等待计算机给我响应的时间
在多道程序系统中,进程的数量往往是多于处理机的,这样不可能并行地处理各个进程。处理及调度,就是从就绪序列按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行
由于内存有限,有时无法将用户提交的作业都放进内存,就会通过高级调度,按照一定的规则从外存上处于后备队列中的作业挑一个给他分配内存等必要自愿,并创建相应的PCB,使他获得竞争处理机的权利。
因此,高级调度是外存和内存之间的调度,每个作业只能被调入,调出依次,作业调入时会创建PCB,调出时才销毁PCB,高级调度主要是指调入问题,因为只有调入的时机才由操作系统决定,但调出必须是作业运行结束才调出。
中级调度(内存调度)存入内存的有些进程可能暂时不能运行,但是他却占着内存位置,因此引入虚拟存储技术,来提高内存利用率和系统吞吐率,具体实现就是将暂时运行不了的进程调到外存等待,等进程具备运行条件且内存稍有空间时,重新调入内存。暂时调出内存的进程状态为挂起状态,但PCB不会被调出,因为操作系统还要根据PCB记录的进程数据存放在外存的地址,进程状态等信息对进程监控,管理,被挂起的进程PCB会被放到挂起队列中。
中级调度,就是要决定哪个处于挂起状态的进程需要重新被调入内存中,一个进程可能被调入调出很多次,因此中级调度比高级调度发生频率要高的多
进程的挂起状态和七状态模型暂时调到外存等待的进程状态叫挂起状态,挂起状态可以细分成就绪挂起状态和阻塞挂起状态。因此就有了下面的七状态模型
激活和挂起两部分不必多说,有时运行态或者创建态要转化成就绪态有可能因为内存不够或某种原印,将进程调到外存,成为就绪挂起状态,同样的,当处于阻塞他的进程等待的事件发生了,想转化成就绪态,同样也可能因为某些原因被调到外存,成为就绪挂起状态
低级调度(进程调度)低级调度的任务就是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给他,低级调度(进程调度)是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度,进程调度的频率很高,一般几十毫秒一次。
总结
先给出问题背景:桌子上有一个盘子,每次只能向其中放入一个水果,爸爸专向盘子里放苹果,妈妈专向盘子里放橘子,儿子专等着吃盘子里的橘子,女儿专等着吃盘子里的苹果。只有字盘子是空的时候,爸爸或妈妈才能向盘子里放水果;只有在盘子里有自己想要的水果时,儿子或女儿才能取出盘子里的水果吃掉。