Kernel 内核的工作
我对操作系统的“内核”有一个模糊的概念 简而言之,这就是我所知道的 有一个用户空间和一个内核空间 内核限制用户空间程序访问超出其限制的内存 现在我的问题是 用户空间程序被编译成目标代码和可执行文件,其操作码可以直接在处理器上执行 内核到底做了什么来执行代码,又是如何管理系统资源的?特权模式和非特权模式是如何起作用的 提前谢谢 我对操作系统的“内核”有一个模糊的概念。简而言之,这就是我所知道的 有一个用户空间和一个内核空间 是的,这些通常由CPU强制执行。保护“环”限制您可以在用户模式(x86上的环3)和内核模式(环0)下执行哪些CPU指令 内核限制用户空间程序访问超出其限制的内存 (MMU)为内存提供硬件级保护。这为用户模式进程提供了来自其他用户模式进程的保护,并保护内核不受所有用户模式进程的影响 内核负责正确配置此硬件以实施保护 现在我的问题是:用户空间程序被编译成目标代码和可执行文件,它们的操作码可以直接在处理器上执行 对。内核和用户模式进程实际上并没有太大区别。它们都是为同一个处理器编译的代码 不同之处在于内核可以直接访问硬件(用户空间通常不能),并且可以执行特权指令。这些说明包括切换模式、配置保护等的说明 在x86上,一些相关指令包括:Kernel 内核的工作,kernel,cpu,scheduling,processor,opcode,Kernel,Cpu,Scheduling,Processor,Opcode,我对操作系统的“内核”有一个模糊的概念 简而言之,这就是我所知道的 有一个用户空间和一个内核空间 内核限制用户空间程序访问超出其限制的内存 现在我的问题是 用户空间程序被编译成目标代码和可执行文件,其操作码可以直接在处理器上执行 内核到底做了什么来执行代码,又是如何管理系统资源的?特权模式和非特权模式是如何起作用的 提前谢谢 我对操作系统的“内核”有一个模糊的概念。简而言之,这就是我所知道的 有一个用户空间和一个内核空间 是的,这些通常由CPU强制执行。保护“环”限制您可以在用户模式(x86上的
LGDT
(加载全局描述符表)、MOV CRx
(移动到/从控制寄存器x)、RDMSR
/WRMSR
(读/写特定于模型的寄存器)。这些都用于配置处理器的工作方式
内核到底做了什么来执行代码,又是如何管理系统资源的?特权模式和非特权模式是如何起作用的
同样,内核没有主动执行任何用户模式进程!它通常是这样的:
- 硬件定时器向CPU的中断引脚之一发送电信号
- CPU通过执行内核的计时器中断处理程序进行响应
- 内核决定当前运行的进程已经运行了足够长的时间(它的时间片已经过期),是时候给进程一些执行时间了
- 内核将旧进程的状态保存到“进程控制块”(或等效块)中,并将新进程的状态加载到CPU上
- 内核从中断处理程序返回,确保硬件处于适合运行用户空间代码的状态
- 系统调用包装函数(即
)通过将其参数移动到适当的寄存器中来设置系统调用write
- 包装器函数执行一条特殊指令,以触发切换到内核模式。在x86上,这是
(软件中断0x80),或者在x86-64上是新的int80h
。在手臂上,这是一个syscenter
- 此指令使CPU转换到内核模式上下文(x86上的环0),并开始执行内核预定义为其“系统调用入口点”的代码
- 内核在保存的用户模式CPU状态下“查看”系统调用上下文,并执行完成特定系统调用所需的操作
- 然后,内核允许CPU转换回用户模式上下文(环3),并继续执行进程的代码