操作系统如何与CPU通信?
操作系统中有驱动程序,我理解那部分。操作系统使用驱动程序 - >通信 - >设备控制器。
通讯如何发生?操作系统是否直接使用其命令触摸CPU,还是使用BIOS作为接口?
我们假设我将制作自己的操作系统。它的唯一任务是将算术运算发送到CPU并将结果打印到屏幕上。 我将告诉CPU将存储器字放入寄存器,计数它们,然后将它们放回内存。我怎样才能做到这一点?
答案 0 :(得分:3)
CPU只是从内存开始以某个偏移量运行指令,然后继续获取下一条指令并重复。引导加载程序将CPU设置为在计算机启动时开始运行OS入口点。键盘或鼠标输入等操作会导致中断,中断控制器使用这些中断来查找操作系统设置的特殊代码,以处理这些中断。这些中断还用于允许操作系统使用只能在内核模式下运行的特殊权限指令来切换当前在CPU上运行的线程。中断导致CPU在调用OS中断处理程序代码之前切换到内核模式,以便操作系统可以使用必要的特权指令来控制不允许用户模式代码的各种行为。
有很多关于哪些寄存器用于什么目的的细节以及更多,但是需要一本书才能涵盖所有内容。
Here是一本免费的书,涵盖了相对介绍级别的许多细节。
答案 1 :(得分:2)
CPU使用中断调用OS执行特定任务,OS使用特殊权限CPU寄存器对CPU进行编程。
例如,当您按键盘上的键时,硬件会产生中断。 CPU调用中断处理程序函数(它是操作系统的一部分),它将处理按键,例如,将其传递给用户程序。
频繁的OS-CPU交互的其他示例是任务切换。大多数操作系统使用硬件定时器每秒产生大约100个定时器中断。在此中断OS调度程序被调用,有时它可以通过更改某些CPU寄存器来切换任务。在最简单的OS& CPU,调度程序将更改SP(堆栈指针)和PC(程序计数器)寄存器。对于更复杂的CPU,它还将重新编程CPU的MMU硬件单元并更改许多内部控制寄存器。
外部硬件通常由驱动程序通过对映射的PCI空间进行PIO写入或写入来编程(写入硬件存储器的特殊地址)。