Operating system 操作系统的每秒指令数

Operating system 操作系统的每秒指令数,operating-system,instruction-set,clockrates,machine-instruction,Operating System,Instruction Set,Clockrates,Machine Instruction,我不熟悉计算机架构和设计。我的问题是一个高级程序指令集在CPU中一个接一个地执行。在执行这些指令时,它是否会将操作系统指令作为开销?。例如:如果在2GHz处理器中,有2*10^9条指令可以在2*10^9时钟周期内执行。然后,操作系统每秒执行大约1*10^9条指令。这种开销是否总是存在,并且只有另外的1*10^9指令可供其他自定义计划程序免费执行 这是否意味着操作系统应该总是有尽可能少的指令来执行,以便它可以容纳更多的其他程序来执行?这两个问题都是肯定的,在一定范围内 首先,是的,如果操作系统使用

我不熟悉计算机架构和设计。我的问题是一个高级程序指令集在CPU中一个接一个地执行。在执行这些指令时,它是否会将操作系统指令作为开销?。例如:如果在2GHz处理器中,有2*10^9条指令可以在2*10^9时钟周期内执行。然后,操作系统每秒执行大约1*10^9条指令。这种开销是否总是存在,并且只有另外的1*10^9指令可供其他自定义计划程序免费执行


这是否意味着操作系统应该总是有尽可能少的指令来执行,以便它可以容纳更多的其他程序来执行?

这两个问题都是肯定的,在一定范围内

首先,是的,如果操作系统使用每秒1e9条指令,则只剩下每秒1e9条指令

第二,是的,你希望尽可能减少这一点;这叫做“开销”


“限制”是操作系统确实为您做了好事。例如,考虑MyTeTebug,OS允许你同时运行多个程序,在它们之间共享处理器。一方面,涉及到管理费用。另一方面,如果没有它,你要么让机器长时间闲置,而没有程序可以运行,要么你必须自己模拟多任务处理——这至少需要与操作系统一样多的指令 操作系统的工作是处理那些程序不想自己处理的事情,比如处理I/O中断和安排多个任务来共享机器。在一台运行一个应用程序的机器上的完美世界中,程序将控制CPU,直到它需要操作系统为它做一些事情,比如从磁盘文件读取下一条记录(它调用分层的“服务”来确定哪个磁盘、哪个文件、哪个记录、哪个字节,并计算从磁盘控制器请求哪个磁道上的哪个磁盘块。典型的“真实”机器也有一系列后台任务在运行,保持屏幕更新、读取时钟、检查新邮件、下载补丁等是优先级的来源。有些任务以较低的优先级运行,因为我们不在乎它们何时完成,例如更新Windows中的系统托盘图标以获得新邮件通知。其他任务以较高的优先级运行,但非常短,例如在屏幕上跟随鼠标并将鼠标从指针更改为手。 请记住,一个典型的任务在需要某些操作系统服务和睡眠之前只执行几百条指令。大型应用程序可能有数十万条“指令”,但也要花三分之一的时间等待其他指令,从按键或键盘输入到数据库查询的响应那台机器。 CPU最密集的应用程序,如将Pi计算到小数点后一百万位,可能会长时间占用99.9%的处理器,但操作系统会周期性地中断它,以查看是否需要执行其他操作。 回到DOS时代(20世纪80年代)该程序实际上可以占用who的CPU一段时间,但如果它需要在屏幕上读、写或键入某些内容,则必须将其作为BIOS来执行,除非该程序是为执行这些基本操作而编写的d直接从键盘或鼠标设备缓冲区读取,绕过操作系统。
希望我没有再把你弄糊涂了…

你的问题没有意义。操作系统执行简化操作,提供硬件中断服务,并执行用户代码给出的命令。它不需要任何固定的CPU时间,而且显然,它尽量不浪费时间。可能是在一个足够简单的CPU上。但一般来说,我认为性能不太好rmance几乎和你想象的一样简单。有缓存、虚拟内存、共享库、调度、I/O等。例如,如果操作系统使用一些指令在进程之间共享libc的一个副本,并且libc的热函数在我的程序启动之前就在我的二级缓存中,这可能很容易为自己买单。