【问题标题】:How is it possible for OS processes to manage User processes while they themselves are processes?操作系统进程如何管理用户进程,而它们本身就是进程?
【发布时间】:2019-01-30 21:54:32
【问题描述】:

最近,我一直在阅读有关操作系统的内容,这让我很困扰。 一个进程如何真正管理另一个进程。

基本上CPU只是简单地执行指令,在执行一条指令后,它会在IP指向的地址处执行指令并递增IP。

让我用一个例子来阐述我的疑问。假设我有一个由 CPU 执行的用户进程(或简称为进程)。可以说,它有“n”条指令,当前正在执行“i”条指令。 IP 指向第 (i+1) 条指令。 那么,此时所有其他操作系统进程(如调度程序、调度程序等)如何发挥作用,因为 CPU 已经在执行另一个进程。

我能想到的一个解决方案(只是猜测)是,使用中断和中断服务例程。

但这只是一个猜测。

PS:我搜索了一下,没有找到满意的答案。

【问题讨论】:

  • 操作系统是一个系统,而不是一个进程。它是一个“操作系统”,用于管理硬件的使用方式。要在 OS 中运行进程,还有许多其他帮助程序(可能是也可能不是 OS 本机的)可用。
  • 据我了解,操作系统在操作系统进程的帮助下进行管理活动对吗?我认为你并没有真正理解我的意思。请再次阅读我的问题。
  • 是的,这是正确的,尽管语言律师可能会质疑措辞。
  • 操作系统内核是代码和数据的状态机。它本身没有执行线程,它不需要堆栈(尽管更改为内核堆栈通常用作实现/优化)。它不是一个经典的进程——它是在硬件中断和系统调用时从进程线程输入的代码。如果没有硬件中断,也没有系统调用,内核代码就不会进入或执行。 “使用中断”——是的,必不可少。 '我搜索并找不到任何令人满意的答案' - 真的吗?你尝试了什么搜索字符串?
  • @MartinJames 谢谢,您的回答帮助我清楚地理解了这个概念。它是操作系统内核和其他类似于困扰我的用户进程的操作系统进程之间的区别。另外,如果我能找到满意的答案,我为什么要在这里问?

标签: operating-system cpu-architecture


【解决方案1】:

在硬件的帮助下,滴答声使 CPU 执行操作系统代码。此代码检查系统状态和自该流程执行开始以来经过的时间。此时,操作系统可以决定调度不同的进程。它所要做的就是将正在运行的进程的当前状态与即将开始运行的进程一起保存。 (基本上在更改为新进程之前更改寄存器的内容并保存寄存器状态)。
最终,即使进程不想让出 CPU,CPU 也会被拿走。

为了解决您的问题,您认为没有操作系统进程......这不像队列中有操作系统进程在等待其他进程......

【讨论】:

  • 'ticks 导致 CPU 执行操作系统代码' - 虽然一般来说并非不真实,但它具有高度误导性。有许多中断会导致调度运行。
猜你喜欢
  • 2019-02-17
  • 1970-01-01
  • 2011-08-11
  • 2014-02-19
  • 2022-10-14
  • 2014-05-22
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
相关资源
最近更新 更多