OS 进程如何管理用户进程,而它们本身就是进程?
How is it possible for OS processes to manage User processes while they themselves are processes?
最近,我一直在阅读有关操作系统的内容,这让我很烦恼。
一个进程怎么可能真正管理另一个进程。
基本上CPU只是简单地执行指令,执行完一条指令后,然后执行IP指向的地址的指令并增加IP。
举个例子说说我的疑惑。假设我有一个由 CPU 执行的用户进程(或简称为一个进程)。比方说,它有 'n' 条指令并且当前正在执行第 i 条指令。 IP指向第(i+1)条指令。
因此,此时所有其他 OS 进程(如调度程序、调度程序等)如何发挥作用,因为 CPU 已经在执行另一个进程。
我能想到的一个解决方案(只是一个猜测)是,使用中断和中断服务例程。
但这只是猜测。
PS: 我搜索了一下,没有找到满意的答案。
在硬件的帮助下,滴答使CPU执行操作系统代码。此代码检查系统状态和自此流程执行开始以来经过的时间。此时,操作系统可以决定安排一个不同的进程。它所要做的就是将 运行 进程的当前状态与即将启动的进程 运行 一起保存。 (基本上更改寄存器的内容并在更改为新进程之前保存寄存器状态)。
最终,CPU 被带走,即使进程不想产生它。
为了解决您的问题,没有您所想的操作系统进程...队列中并不像有 OS 个进程在其他进程中等待....
最近,我一直在阅读有关操作系统的内容,这让我很烦恼。 一个进程怎么可能真正管理另一个进程。
基本上CPU只是简单地执行指令,执行完一条指令后,然后执行IP指向的地址的指令并增加IP。
举个例子说说我的疑惑。假设我有一个由 CPU 执行的用户进程(或简称为一个进程)。比方说,它有 'n' 条指令并且当前正在执行第 i 条指令。 IP指向第(i+1)条指令。 因此,此时所有其他 OS 进程(如调度程序、调度程序等)如何发挥作用,因为 CPU 已经在执行另一个进程。
我能想到的一个解决方案(只是一个猜测)是,使用中断和中断服务例程。
但这只是猜测。
PS: 我搜索了一下,没有找到满意的答案。
在硬件的帮助下,滴答使CPU执行操作系统代码。此代码检查系统状态和自此流程执行开始以来经过的时间。此时,操作系统可以决定安排一个不同的进程。它所要做的就是将 运行 进程的当前状态与即将启动的进程 运行 一起保存。 (基本上更改寄存器的内容并在更改为新进程之前保存寄存器状态)。
最终,CPU 被带走,即使进程不想产生它。
为了解决您的问题,没有您所想的操作系统进程...队列中并不像有 OS 个进程在其他进程中等待....