进程的运行模式

1.1.1操作系统的内核

1.CPU的执行模式

CPU的基本功能就是执行指令。通常,CPU指令集的指令可以划分为两类:特权指令和非特权指令。特权指令是指具有特色权限的指令,可以访问系统中所有的寄存器和内存单元,修改系统的关键设置。如清理内存、设置时钟、执行I/O操作等都是由特权指令完成的。而非特权指令是那些用于一般性的运算和处理的指令。这些指令只能访问用户程序自己的内存地址空间。
特权指令的权限高,如果使用不当可能会破坏系统或其他用户的数据,甚至导致系统崩溃。为了安全起见,这类指令只允许操作系统的内核程序使用,而普通的应用程序只能使用那些没有危险的非特权指令。实现这种限制的方法是在CPU中设置了一个代表特权级别的状态字(对x86的CPU来说就是cs寄存器中的DPL字段),修改这个状态字就可以切换CPU的运行模式。
x86的CPU支持4种不同特权级别,Linux系统只用到了其他两个,即称为核心态的最高特权级模式(ring0)和称为用户态的最低特权级模式(ring3)。在核心态,CPU能不受限制地执行所有指令,访问全部的内存地址,从而表现出最高的特权。而在用户态下,CPU只能执行一般的非特权指令,访问受限的地址空间,因而也就没有特权。

2.操作系统内核

一个完整的操作系统有一个内核和一些系统服务程序构成。内核(kernel)是操作系统的核心,它负责最基本的资源管理和硬件控制工作,为进程提供运行的环境。内核在系统引导时载入并常驻内存。它运行在核心态,因而能够访问所有的系统资源。
从进程的角度,内核的功能有两个:一是支持进程的运行,包括为进程分配资料,控制和调度进程的运行;二是为进程提供服务,也就是提供一些内核函数(称为系统调用)供进程调用使用。由于进程运行在用户态,不能访问系统资料,因此当需要使用某些系统资源时,如向屏幕输入一些文字,都需要通过调用内核的服务来完成。

3.Linux系统的内核

Linux系统的内核结构图在这里插入图片描述
Linux系统的内核主要由以下成分构成:
(1)系统调用接口。提供进程与内核的接口,进程通过此接口调用内核的功能。

(2)进程管理子系统。负责支持、控制和调度进程的运行,包括以下模块:

  • 进程管理模式 kernel,负责CPU管理、调用和协调进程的运行。
  • 进程通信模块 ipc,实现进程间的本地通信。
  • 内存管理模块 mm,管理内存和进程的地址空间。

(3)文件与I/O子系统。管理文件、设备和I/O操作,包括以下模块:

  • 文件系统模块 fs,为进程提供访问文件和设备的服务。
  • 网络模块 net,管理网络接口设备,提供进程间的网络通信服务。
  • 设备驱动模块 drivers,驱动设备的运行。

(4)硬件控制接口。提供与硬件平台的接口,负责控制硬件并响应和处理中断。

1.1.2中断与系统调用

1.中断

在现代系统中,CPU与各种设备时并发工作的。当CPU需要与设备传输数据时,它向设备发出一个特定的中断信号,启动设备执行I/O操作,然后继续执行程序。当设备完成操作后,向CPU发出一个特定的中断信号,打断CPU的运行。CPU响应中断后暂停正在执行的程序,转去执行专门的中断处理程序,然后再返回原来的程序继续执行。这个过程就是中断。
中断的概念是为实现CPU与设备并行操作而引入。然而,这个概念后来被大大地扩大了。现在,系统中所有异步发生的事件都是通过中断机制来处理的,包括I/O设备中断、系统时钟中断、硬件故障中断、软件故障中断(也称为异常)等。每个中断都对应一个中断处理程序。中断发生后,CPU通过中断处理入口转入相应的处理程序来处理中断事件。

2.系统调用

一般的中断都是源自CPU外部事件,但还有一种特殊的中断,其中断源来自CPU内部,即当CPU执行了某个特殊指令时引发的。这种通过执行指令而主动引发的中断称为“陷入“,引发陷入的指令就称为陷入指令。陷入的处理过程与一般中断的处理过程相似,就是暂停当前进程的执行,转去执行专门的处理程序,然后再返回继续执行。陷入的作用是使得用户进程可以执行内核中的服务程序,主要用于实现系统调用。
系统调用是系统内核提供给用户进程的一组特殊的函数。与普通函数的不同之处在于,系统调用是内核中的程序代码,它们的运行会受到系统的限制,不能访问系统资源。当用户进程需要执行涉及系统资源的操作时,需要通过系统调用,让内核来完成。
系统调用是通过陷入机制实现的。当用户进程需要调用一个内核中的系统调用函数时,秩序执行一个系统调用陷入指令,转去执行内核中的系统调用函数,待执行完毕后再返回继续执行。

1.1.3进程的运行模式

Linux的内核运行在核心态,而用户程序则只能运行在用户态。从用户态转换为核心态的唯一途径是中断(包括陷入)。一旦CPU响应了中断,则将CPU的状态切换到核心态,待中断处理结束返回时,再将CPU状态切换到用户态。
用户进程的运行模式图在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值