我是计算机体系结构和设计的新手。我的问题是高级程序指令集在CPU中一个接一个地执行。在执行这些指令时,它甚至将操作系统指令作为开销吗?例如:如果在2 GHz处理器中有2 * 10 ^ 9条指令可以在2 * 10 ^ 9个时钟周期内执行。然后,操作系统总是每秒执行大约1 * 10 ^ 9条指令。这个开销是否始终存在,只有另外一个1 * 10 ^ 9指令可供执行,以便执行其他自定义计划程序?
这是否意味着操作系统应始终具有尽可能少的执行指令,以便它可以容纳更多其他要执行的程序?
答案 0 :(得分:1)
对于这两个问题都是肯定的。
首先,是的,如果操作系统使用1e9指令/秒,则每秒只有1e9指令。
第二,是的,你想尽可能地减少它;它被称为“开销”。
“限制”是操作系统确实为您做好事。例如,考虑miltitasking,其中OS允许您同时运行多个程序,在它们之间共享处理器。一方面,涉及开销。另一方面,如果没有它,你可以让机器在没有程序运行的情况下长时间闲置,或者你必须自己模拟多任务 - 这至少需要与操作系统一样多的instructinos。
答案 1 :(得分:1)
稍微谈谈马丁先生的回答:(注意,这是高度简化的) 操作系统的工作是处理程序本身不想要的东西 - 比如处理I / O中断和安排多个任务来共享机器。在运行一个应用程序的机器上的完美世界中,程序将控制CPU,直到它需要操作系统为其执行某些操作,例如从磁盘文件读取下一条记录(调用分层'服务'来弄清楚哪个磁盘,哪个文件,哪个记录,哪个字节并计算哪个磁盘块在磁盘控制器上询问哪个磁盘块。一个典型的“真正的”机器也有一堆后台任务在运行,保持屏幕更新,读取时钟检查新邮件,下载补丁等。这是优先级的来源。某些任务以较低优先级运行,因为我们不关心它们何时完成,例如在Windows中更新系统托盘图标以获取新邮件通知。其他任务以高优先级运行,但非常短,例如在屏幕上按下鼠标并将其从指针更改为手。 请记住,典型的任务在需要某些OS服务之前只会执行几百条指令,并在它发生时进入休眠状态。大型应用程序可能有数十万条“指令”,但是再次花费一些时间等待其他东西,从按钮按键或键盘输入到另一台机器上的数据库查找响应。 大多数CPU密集型应用程序(如计算Pi到一百万个小数位)可能会长时间占用处理器的99.9%,但操作系统会定期中断它以查看是否需要执行其他操作。 回到DOS(1980年代)的时代,该程序实际上可以占用谁的CPU一段时间,但如果它需要读取或写入或在屏幕上键入内容,它必须作为BIOS来做到这一点,除非程序是写这些基本操作itsef。其中一些是计算机游戏如何响应,通过直接修改屏幕所需的特定操作,并直接从键盘或鼠标设备缓冲区读取,绕过操作系统。 希望我没有让你更困惑......