操作系统原理(IV)—运行机制

前言

程序是怎么运行的,其主要包含以下阶段

阶段描述
编写代码开发者使用编程语言编写源代码。
编译代码编译器将源代码转换为机器代码或中间代码。
链接链接器将目标文件和库文件合并为可执行文件。
加载到内存操作系统将可执行文件加载到内存中。
执行程序CPU 逐条执行指令,运行时环境提供支持(如 CLR、JVM)。

实际就是CPU一条一条指令执行的过程。 

一、内核程序VS应用程序

特性内核程序(Kernel)应用程序(Application)
定义操作系统的核心部分,管理硬件和提供基础服务。运行在操作系统之上的软件,完成特定任务。
权限高权限(内核模式),可直接访问硬件。低权限(用户模式),需通过系统调用访问硬件。
功能硬件管理、进程调度、内存管理、文件系统等。完成用户任务,如文档编辑、网页浏览等。
稳定性要求高,崩溃会导致系统崩溃。较低,崩溃通常不会影响系统。
性能要求高效,影响整个系统的性能。视具体应用而定,通常不如内核严格。
运行环境内核模式,常驻内存。用户模式,依赖操作系统。
与硬件的关系直接管理硬件,与硬件架构相关。通过操作系统间接访问硬件,与硬件无关。

普通程序员编写的为“应用程序”,比如浏览器(如 Chrome、Firefox)、QQ这类;类似微软、苹果这类负责操作系统的实现,写的是“内核程序”,比如设备驱动程序(如显卡驱动、网卡驱动)。 

  1. 应用程序运行在操作系统之上,完成用户任务,运行在用户模式;
  2. 内核程序操作系统的核心,管理硬件和提供基础服务,运行在内核模式=》负责管理电脑的所有硬件(比如 CPU、内存、硬盘、键盘、鼠标等),并且为其他程序提供服务。

其中,由于内核程序是“管理者”,有时会让CPU执行一些“特权指令”,比如“内存清零”这些比较重要的指令,这些指令影响重大,只能由“管理者”进行操作。

因此,应用程序只能使用“非特权指令”(进行加减乘除),内核程序使用“特权指令”。(CPU在设计的时候已经被划分了特权指令和非特权指令),

-》那么CPU如何区分应用程序和内核程序的指令呢?

这里需要引进CPU的两种状态内核态(核心态/管态)用户态(目态):

当处于内核态的时候,说明此时运行的是内核程序,此时可以执行特权指令;反之,执行非特权指令。

-》如何判断CPU处于哪种状态(内核态/用户态)?

在CPU中有一个程序状态字寄存器(PSW),其中有个二进制位,“1”表示处于“内核态”,“0”表示“用户态”

-》CPU如何实现两种状态的切换?=》修改PSW标志位

1.电脑开机的时候,CPU处于“内核态”,内核程序先在CPU上运行

2.进入电脑的时候,我点开了QQ(应用程序)

3.此时,操作系统内核程序在合适时让出CPU给QQ(利用特权指令修改PSW标志位改为用户态),让QQ在CPU运行

4.此时,处于用户态

假设电脑此时被入侵,QQ被植入特权指令, 但由于此时处于“用户态”,按道理这个指令不能出现,所以此时就会引发中断信号,转换为“核心态”====》操作系统夺回CPU使用权,对异常事件进行处理,处理结束之后在把CPU使用权交给应用程序。

如此,便完成了两种状态的切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值