snowFlakeXue

Work hard for what you desire.


  • 首页

  • 关于

  • 分类

  • 归档

  • 搜索

内存的基础知识

发表于 2019-11-04 | 更新于 2019-11-11 | 分类于 操作系统

什么是内存?有何作用

内存是用于存放数据的硬件,程序执行前需先放到内存中才能被CPU处理

阅读全文 »

调度算法

发表于 2019-11-03 | 更新于 2019-11-04 | 分类于 操作系统

先来先服务算法(FCFS,First Come First Serve)(考虑等待时间)

FCFS

阅读全文 »

调度算法的评价指标

发表于 2019-10-31 | 更新于 2019-11-04 | 分类于 操作系统

相对于操作系统则看重平均,就是除以作业数

CPU利用率(CPU贵,希望他利用率高一点)

利用率=忙碌时间/总时间

系统吞吐量(希望少时间内完成更多作业)

单位时间内完成作业的数量

吞吐量=总共完成了多少作业/总共花了多少时间

周转时间(希望作业从提交到完成花的时间少一点)

周转时间包括四部分:

1 作业在外存后备队列上等待高级调度

2 进程在就绪队列上等待低级调度

3 进程在CPU上运行

4 进程等待I/O操作完成的事件

后三项在一个作业的整个处理过程中可能发生多次

因而周转时间=作业完成时间-作业提交时间

但用户只关心自己的作业从提交到完成花了多少时间,也就是周转时间是多少

打个比方:假设作业1实际运行时间只需要一分钟,作业2实际运行时间需要十分钟;周转时间为12分钟,那对于1来说,用户体验感很差,我本来就一分钟就好了,你却让我等十几分钟;但对于作业2来说,他的体验就是极好的,也就是多等了一会而已。

那就给出了带权周转时间的定义:带权周转时间=作业周转时间/作业实际运行时间

那也就是周转时间越小带权周转时间越小,用户体验感更好

等待时间(希望作业/进程等待处理机的时间尽可能少)

对于进程来说,等待时间指进程被创建后等待处理机的时间,其中在等待I/O完成的过程不算,即等待时间=周转时间-运行时间-I/O操作时间

对于作业来说,等待时间是指从作业被加入外存开始。即周转时间-运行时间

因为作业要被CPU,I/O设备处理多久一般都是确定的,所以调度算法只会影响等待时间

响应时间(从用户提交请求到首次产生响应)

比如我按下键盘的一个键等待计算机给我响应的时间

进程调度

发表于 2019-10-31 | 分类于 操作系统

进程调度的时机

时机

阅读全文 »

处理机调度的概念和层次

发表于 2019-10-31 | 分类于 操作系统

调度的基本概念

在多道程序系统中,进程的数量往往是多于处理机的,这样不可能并行地处理各个进程。处理及调度,就是从就绪序列按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行

调度的三个层次

高级调度(作业调度)

由于内存有限,有时无法将用户提交的作业都放进内存,就会通过高级调度,按照一定的规则从外存上处于后备队列中的作业挑一个给他分配内存等必要自愿,并创建相应的PCB,使他获得竞争处理机的权利。

因此,高级调度是外存和内存之间的调度,每个作业只能被调入,调出依次,作业调入时会创建PCB,调出时才销毁PCB,高级调度主要是指调入问题,因为只有调入的时机才由操作系统决定,但调出必须是作业运行结束才调出。

高级调度

中级调度(内存调度)

高级调度

存入内存的有些进程可能暂时不能运行,但是他却占着内存位置,因此引入虚拟存储技术,来提高内存利用率和系统吞吐率,具体实现就是将暂时运行不了的进程调到外存等待,等进程具备运行条件且内存稍有空间时,重新调入内存。暂时调出内存的进程状态为挂起状态,但PCB不会被调出,因为操作系统还要根据PCB记录的进程数据存放在外存的地址,进程状态等信息对进程监控,管理,被挂起的进程PCB会被放到挂起队列中。

中级调度

中级调度,就是要决定哪个处于挂起状态的进程需要重新被调入内存中,一个进程可能被调入调出很多次,因此中级调度比高级调度发生频率要高的多

进程的挂起状态和七状态模型

暂时调到外存等待的进程状态叫挂起状态,挂起状态可以细分成就绪挂起状态和阻塞挂起状态。因此就有了下面的七状态模型

中级调度

激活和挂起两部分不必多说,有时运行态或者创建态要转化成就绪态有可能因为内存不够或某种原印,将进程调到外存,成为就绪挂起状态,同样的,当处于阻塞他的进程等待的事件发生了,想转化成就绪态,同样也可能因为某些原因被调到外存,成为就绪挂起状态

低级调度(进程调度)

低级调度的任务就是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给他,低级调度(进程调度)是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度,进程调度的频率很高,一般几十毫秒一次。

中级调度

总结

总结

哲学家进餐问题

发表于 2019-10-31 | 分类于 操作系统

问题描述:在一张圆桌上坐着5位哲学家,在每两位哲学家中间放一只筷子,桌子中间是一碗米饭,哲学家只要两个动作,要么思考,要么吃饭,但哲学家只有拿起两只筷子才能正常吃饭,如果筷子在别人手里,这位哲学家就被阻塞,当进餐完毕之后,放下筷子继续思考

阅读全文 »

吸烟者问题

发表于 2019-10-30

问题描述:假设系统中有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起一支烟,抽烟者需要三种材料:烟草,纸和胶水,三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水,供应者无限地提供三种材料,供应者每次将两种材料放桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者进程一个信号告诉他完成了,供应者就会放另外两种材料到桌子上,这个过程一直重复(让三个抽烟者轮流抽烟)

阅读全文 »

读者写者问题

发表于 2019-10-30 | 更新于 2019-10-31 | 分类于 操作系统

问题描述:有读者和写者两组并发进程,共享一个文件。

阅读全文 »

多消费者-多生产者问题

发表于 2019-10-30 | 分类于 操作系统

先给出问题背景:桌子上有一个盘子,每次只能向其中放入一个水果,爸爸专向盘子里放苹果,妈妈专向盘子里放橘子,儿子专等着吃盘子里的橘子,女儿专等着吃盘子里的苹果。只有字盘子是空的时候,爸爸或妈妈才能向盘子里放水果;只有在盘子里有自己想要的水果时,儿子或女儿才能取出盘子里的水果吃掉。

阅读全文 »

生产者-消费者问题

发表于 2019-10-29 | 分类于 操作系统

所谓生产者-消费者问题实际上就是有一个缓冲区,生产者生产好了放进去,消费者可以从缓冲区中取出来产品用,但是需要注意的是肯定是要保证各进程都是互斥的,生产者和消费者要互斥不用多说,假设现在有两个生产者想要把产品放进缓冲区,如果都想放在同一个地方怎么办,因此一定要保证互斥性,那互斥的初始信号量是1,因此我们要设置一个互斥信号量 semaphore mutex = 1;

阅读全文 »
1…345…12
Liu Xue

Liu Xue

119 日志
11 分类
RSS
GitHub E-Mail
© 2020 Liu Xue
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.1
本站总访问量 次 | 有人看过我的博客啦