操作系统导论(1)——操作系统碎碎念

2020-08-29  本文已影响0人  小盼盼_1

操作系统作用

操作系统是负责让电脑上安装的各类程序运行变得容易:

1.允许同时运行多个程序,比如可以一边打开网易云音乐听歌,一边打开Safari浏览器浏览网页

2.允许程序共享内存

3.让程序与设备交互,比如微信聊天可把键盘敲的字显示在对话框里面

即确保系统易于使用又正确高效地运行。

操作系统虚拟化

注:进程就是运行中的程序

虚拟化CPU

通过让一个进程只运行一个时间片,然后切换到其他进程,可以使操作系统达到提供多个虚拟CPU的假象,称之为时分共享CPU技术,允许多个进程并发运行。缺点是性能损失。

上下文切换技术:操作系统能够停止运行一个程序,并开始在给定的CPU上运行另一个程序

进程的机器状态:内存和寄存器

进程状态:运行/就绪/阻塞

上下文切换:用于切换进程

创建新进程:

1.创建进程 fork()系统调用,从父程序中新建子程序

2.wait()系统调用,等待子进程/父程序完成相应的操作

3.exec()系统调用,可以让子进程执行与父程序不同的程序

调用fork()创建新进程,调用exec()的某个变体来执行这个可执行程序,调用wait()等待该命令完成。子进程执行结束后,shell从wait()返回并再次输出一个提示符,等待用户输入下一条命令。

高效/可控地虚拟化CPU:

受限的直接执行:直接在CPU上运行程序,有两个问题需要解决:

1.需要访问一些敏感信息时怎么操作  用户模式/内核模式

2.怎么做进程切换  时钟中断

在特定时间内,操作系统应该运行哪个进程? 

优化周转时间:先进先出 最短任务优先 抢占式最短作业优先

优化响应时间:轮转调度

重叠操作

注:进程在向I/O发起请求的时候,是不会使用CPU的

多级反馈队列:操作系统通常不知道工作要运行多久,而这又是SJF(或STCF)等算法所必需的。其次,MLFQ希望给交互用户(如用户坐在屏幕前,等着进程结束)很好的交互体验,因此需要降低响应时间。

MLFQ中有许多独立的队列(queue),每个队列有不同的优先级(priority level)。任何时刻,一个工作只能存在于一个队列中。MLFQ总是优先执行较高优先级的工作。

规则1:如果A的优先级 > B的优先级,运行A(不运行B)。

规则2:如果A的优先级 = B的优先级,轮转运行A和B。

饥饿问题

比例份额调度程序

在硬件的一些帮助下,操作系统可将单个CPU转换成虚拟的无限数量的CPU,从而让许多程序看似同时运行。同时运行多个程序会引发各种新问题,如两个程序想要在特定时间运行,应该运行哪个?

虚拟化内存

上一篇 下一篇

猜你喜欢

热点阅读