过程切换及用户态/内核态:深入理解Linux内核
发布时间
阅读量:
阅读量
进程在运行时一般会处于两种状态:用户态,内核态。
该系统中存在两种主要状态:一种是用户空间(user space),另一种是内核空间(kernel space)。当进程切换至内核空间时,会被指定为执行相应的内核代码块(process assigned to kernel code block)。通常情况下,在从用户态向内核态切换时会包含以下几种常见的情况:包括但不限于以下几种常见的情况:系统调用处理、资源分配以及中断处理等操作。通过深入分析发现该方案能够有效地实现目标。
(1)发生系统调用;(2)CPU执行异常;(3)外围设备发来中断请求
该系统中存在一种称为‘过程切换’的操作,在这种操作中存在一个特定的任务流程:当一个称为‘进程中断’的任务被触发时会发生这种情况。该操作通常由另一个能够立即运行的任务所触发:当另一个处于准备好运行的状态下的进程中断当前运行的任务时,则会将控制权转移给这个新任务并负责处理这些中断请求。整个从处理当前任务到转交给下一个任务的过程就是‘过程切换’。
在由进程A切换到进程C时,
随后, 内核负责将进程A的状态以及CPU寄存器中的数据状态指令等定位到进程A描述符所指的内存空间中。
(2)由核心部分随后将进程C的描述符指向相应的状态数据,并将其加载至CPU相应的寄存器中。完成后,CPU将处理相关指令
由于进程被视为资源分配的核心要素,在其间切换的
全部评论 (0)
还没有任何评论哟~
