我刚刚学习操作系统,我在课堂上的讲义中偶然发现了这个问题。在我们的课程中,我们将流程定义为执行中的程序,我知道操作系统本身就是一个程序。因此,根据这个定义,操作系统就是一个过程。
同时,可以通过上下文切换来切换或切换进程,这是操作系统管理和处理的内容。但是当它没有运行时会处理操作系统本身是什么?
此外,如果它是一个过程,OS是否有与之关联的过程控制块?
我看过这个网站上有一个较旧的问题,但我觉得好像答案不够清楚,无法真正概述为什么操作系统是/不是一个过程所以我想我会再问这里
答案 0 :(得分:2)
首先,操作系统是多个部分。核心部分是内核,它不是进程。它是运行流程的框架。在实践中,一个过程不仅仅是一个执行程序"。在具有MMU的系统上,进程通常在其自己的虚拟地址空间中运行。但是,内核通常映射到所有进程。它一直在那里。
操作系统的其他辅助部分是为了使其可用。操作系统可能具有作为其管理的一部分运行的进程。例如,Linux有许多内核线程,这些线程是独立调度的任务。但这些通常对操作系统的操作并不重要。
答案 1 :(得分:2)
简短回答:不。
以下是“操作系统”的定义:
https://en.wikipedia.org/wiki/Operating_system
操作系统(OS)是管理计算机的系统软件 硬件和软件资源并提供通用服务 电脑程序。操作系统是系统的一个组件 计算机系统中的软件。应用程序通常需要一个 操作系统运行。
甚至“系统级进程”(如Linux上的“init”或Windows上的“svchost.exe”)依赖在“操作系统”上......但它们本身不是 操作系统。
答案 2 :(得分:2)
同意上面/下面的一些评论。
操作系统不是一个过程。然而,设计中的变体很少会产生相反的错觉。
例如:如果您正在运行FreeRTOS,那么就没有单独的OS地址空间和进程地址空间,每个东西都作为单个进程运行,FreeRTOS框架提供了允许同步的API不同的任务。
操作系统只是一组API(系统调用)和实用程序,有助于实现多处理,资源共享等。例如:schedule()是一个处理多处理的核心OS功能操作系统的功能。
从这个意义上讲,操作系统不是一个过程。虽然它附加到CPU上运行的每个进程,否则该进程将如何使用操作系统的API。
答案 3 :(得分:0)
如果您愿意,它更像是身体(硬件)的 灵魂 。
它不是一个进程,而是在系统中运行用户进程所需的一组(内核)进程。 PID 0
是为其余内核/用户进程提供调度程序/交换功能的所有进程的父级,但它不是唯一的进程。这些内核进程(在内核驱动程序的帮助下)为用户进程提供访问器功能(通过系统调用)。
答案 4 :(得分:0)
这就是说,并且存在严重过度简化的风险,大多数人称之为“操作系统”和“操作系统”。通常在内核模式下从用户进程执行。通过中断,陷阱或故障进入内核。
要进行上下文切换,通常一个进程会导致进入内核模式的错误(例如写入磁盘)。在内核模式下,进程意识到它必须等待,以便通过将上下文切换到另一个进程来产生。另一种常见的方法是计时器导致中断,强制进程进入内核模式。然后,该过程确定下一个应该执行的人,并切换过程上下文。
某些操作系统确实有自己的内核进程,但功能却越来越少。
大多数操作系统都有自己的进程组件。