Tim*_*Tim 6 linux process kernel
我的理解是
但是看了下面两本书,我觉得我可能不太对。如果我错了,你能纠正我吗?
在 Maurer 的 Linux Kernel Architecture 中,“系统进程”和“用户进程”这两个术语是没有定义的,例如,在将虚拟地址空间划分为内核空间和用户空间时:
系统中的每个用户进程都有自己的虚拟地址范围,从 0 到 TASK_SIZE 。上面的区域(从 TASK_SIZE 到 2 32 或 2 64 )专为内核保留——用户进程不能访问。TASK_SIZE 是特定于体系结构的常量,它以给定的比率划分地址空间——例如,在 IA-32 系统中,地址空间以 3 GiB 划分,因此每个进程的虚拟地址空间为 3 GiB;1 GiB 可供内核使用,因为虚拟地址空间的总大小为 4 GiB。尽管实际数字因架构而异,但一般概念不会。因此,我将在进一步讨论中使用这些样本值。
这种划分不取决于有多少可用的 RAM。由于地址空间虚拟化,每个用户进程都认为它有 3 GiB 的内存。各个系统进程的用户空间彼此完全分离。虚拟地址空间顶端的内核空间始终相同,与当前正在执行的进程无关。
... 内核将虚拟地址空间分为两部分,以便能够相互保护各个 系统进程。
您可以通过在书中搜索“用户进程”或“系统进程”来阅读更多示例。
用户进程和系统进程都是进程,而不是内核?
他们的定义是什么?它们是否因所有者(普通用户或根用户?)、启动它们的用户或其他原因而异?
为什么这本书明确地写了“系统进程”或“用户进程”,而不仅仅是“进程”来涵盖这两种“进程”,例如,在上面的引用中?我猜它所说的“用户进程”也适用于“系统进程”,它所说的“系统进程”也适用于“用户进程”。
在播威的《Understanding Linux Kernel》一书中,有“内核控制路径”和“内核线程”两个概念。
内核控制路径表示内核为处理系统调用、异常或中断而执行的指令序列。
... 传统的 Unix 系统将一些关键任务委托给间歇运行的进程,包括刷新磁盘缓存、换出未使用的页面、服务网络连接等。实际上,以严格的线性方式执行这些任务效率不高。如果在后台调度它们的功能和最终用户进程,它们都会得到更好的响应。因为一些 系统进程只在内核模式下运行,现代操作系统将它们的功能委托给内核线程,内核线程不会受到不必要的用户模式上下文的影响。在 Linux 中,内核线程在以下方面与常规进程不同:
• 内核线程仅在内核模式下运行,而常规进程在内核模式和用户模式下交替运行。
• 因为内核线程只在内核模式下运行,所以它们只使用大于 PAGE_OFFSET 的线性地址。另一方面,常规进程在用户模式或内核模式下使用所有 4 GB 的线性地址。
您可以通过在Google 图书 中搜索来阅读更多内容。
Maurer 的书中和 Bovet 的书中的“系统过程”是同一个概念吗?
两本书中提到的“系统进程”可以在用户空间、内核空间或两者中运行吗?
“系统进程”与内核控制路径和内核线程不同吗?
问:用户进程和内核进程都是进程,而不是内核?
我不确定是否有一个正确的答案,但我会尝试一下。
引用《操作系统设计与实现》(A. Tanenbaum),第 3 版,第 2.1 章说:
2.1. 流程简介
所有现代计算机都可以同时做几件事。在运行用户程序时,计算机还可以从磁盘读取数据并将文本输出到屏幕或打印机。在多道程序设计系统中,CPU 还会从一个程序切换到另一个程序,每个程序运行数十或数百毫秒。虽然严格来说,在任何一个时刻,CPU只运行一个程序,但在1秒的时间内,它可能同时运行多个程序,从而给用户一种并行的错觉。有时人们在这种情况下谈论伪并行,以将其与多处理器系统的真正硬件并行(具有两个或更多 CPU 共享相同的物理内存)进行对比。人们很难跟踪多个并行的活动。因此,操作系统设计者多年来已经发展了一种概念模型(顺序进程),使并行性更容易处理。该模型、它的用途以及它的一些后果构成了本章的主题。
2.1.1. 过程模型
在此模型中,计算机上的所有可运行软件(有时包括操作系统)被组织成许多顺序进程,或简称为进程。进程只是一个正在执行的程序,包括程序计数器、寄存器和变量的当前值。
(强调我的)
虽然我还没有时间读完这本书,但根据这个解释,“进程”是在处理器上执行的一个工作单元,并拥有所有必要的资源(图像、状态、寄存器、计数器......)。
内核始终在内核模式下运行并且仅使用内核空间。
这取决于内核的类型。单片内核在单个地址空间(内核空间)中运行其内容,而微内核可以在用户空间中运行其内核进程。
两本书中提到的“系统进程”是否可以运行在用户空间、内核空间或两者中?
如上所述,系统进程可以在两种模式下运行,具体取决于内核的类型。
用户进程和系统进程都是进程,而不是内核进程?
是的,用户进程和系统进程都是进程 - 因此命名;-) 不过,我不明白逗号后面的部分。
“系统进程”与内核控制路径和内核线程不同吗?
是的。进程(用户或系统=内核)是不同的。
内核控制路径表示指令序列,内核线程(又名 LWP - 轻量级进程)是直接由内核创建和调度的线程(与由线程库创建的用户线程相反)。
过程只是一个理论结构。
内核是操作系统的一部分,它实现了进程的概念,以允许例如。所述进程的调度。
线程是进程中可以独立调度的最小部分。
归档时间: |
|
查看次数: |
11249 次 |
最近记录: |