每天3分钟操作系统修炼秘籍(2):并行的假象和…
2019-10-08 08:49:02来源:博客园 阅读 ()
每天3分钟操作系统修炼秘籍(2):并行的假象和分时系统
点我查看秘籍连载
假象:“并行”运行多个进程
现代操作系统都支持多任务同时执行。在这里,操作系统对我们用户“营造了一种假象”,让CPU看上去是用不完的,能够不断地添加新的程序使它们同时运行。
但每核CPU在某一时刻都只能执行一个进程。使用操作系统的人是不会去关注CPU是单核还是多核的,每个人都希望操作系统能同时运行多个程序,比如可以同时看网页、发邮件、聊QQ、听音乐等。
所以操作系统提供的多程序同时运行是“伪并行”。要想实现真正的并行运行多个进程,只能使用多核CPU来实现。
OS营造这种假象的技术是“CPU时间共享(time sharing)”,也称为“分时系统”,即CPU执行一会进程A,然后停下来去执行一会进程B,再停下来执行一会进程A。即,每个进程都只执行一会,然后CPU切换去执行其它进程,每一段执行和切换的时间很短(每秒能执行很多个进程),使得用户以为进程根本未停过,从而形成了假象。
例如,下图描述了分时系统的进程切换方式。进程A执行一会后切换到进程B,B执行一会后又切换到C,C执行一会后又切换到B,再切换回C、A、C、D。
这种不断切换进程的机制,其关键技术是CPU从一个进程切换到另一个进程,这是通过“上下文切换(context switch)”实现的。上下文切换可以直接理解为进程的切换,之所以使用“上下文”这个术语,是因为CPU要从进程A切换到进程B时,必然要保存进程A的执行环境,比如进入切换时进程A执行到了哪个地方,以便下次切换回进程A的时候能够从这里恢复继续执行,此外,既然要切换到进程B,必然还要恢复之前已保存好的进程B的执行环境,才能知道从哪里开始继续执行进程B。而在计算机世界中,“环境”和“上下文”通常是可以互换的概念,所以CPU的上下文切换正是两个前后进程执行环境的切换。
CPU时间共享的好处是提升了交互性,因为每个进程都可以尽快地执行起来,都能够更快地被响应,使得每个进程都像是被公平对待,这是非常感人的。但是时间共享却带来了另外一个问题,站在进程的角度上看,每个进程从启动开始到执行完成,中间需要花费更长时间,而且很多时间处于等待状态。
再考虑另外一个问题,既然要不断的切换进程,操作系统如何选择下一个要执行的进程?例如下图中,当进程D开始进程切换时,下一个要执行的是哪个进程呢?
选择下一个要执行的进程,是通过操作系统的进程调度程序(也称为调度器或调度类)来决定的,调度器根据一些调度算法策略决定哪个进程将幸运地被选中(即,被调度到)作为下一个要执行的进程。
而进程调度算法策略的两个关键性指标正是响应时间和周转时间。响应时间体现的是交互性和公平性,响应时间越短,表示交互时能更快得到响应,比如当敲下键盘时,用户肯定不希望还要等一段时间才显示字符。周转时间体现的是何时完成任务的问题,周转时间越短,表示从启动开始到执行结束所花的时间更短,也就是更快完成任务。
另外,虽然在分时系统下,通过为每个进程分配固定的时间片能保证每个进程都有机会执行,但总会有一些进程是比较重要的,它们的优先级比较高,它们可以从当前正在执行的进程处抢占CPU,这称为“抢占式多任务处理”。当然,这里的抢占并不是真的无条件抢到CPU,CPU给谁是由操作系统的调度策略决定的,“抢占”只是表明某进程比较重要,应当优待,比如让该进程尽快执行或让它多执行一会。
进程调度是非常重要的概念,在后面还会专门花费一些篇幅介绍进程的调度。
原文链接:https://www.cnblogs.com/f-ck-need-u/p/11633451.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Shell 编程 数组
下一篇:Linux下的应用进程监控
- 操作系统第六次实验报告——使用信号量解决哲学家进餐问题 2020-05-28
- Linux基础(二)在vmwaer虚拟机 上安装Linux操作系统 2020-05-27
- 操作系统第五次实验报告——内存管理 2020-05-17
- 基于mykernel 2.0编写一个操作系统内核 2020-05-13
- 操作系统第四次实验报告——文件系统之使用LinuxAPI实现ls - 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash