操作系统(1)----操作系统的运行机制

简介: 操作系统(1)----操作系统的运行机制

1.CPU指令

CPU的指令类型有特权指令与非特权指令。应用程序只能使用“非特权指令”,如:加法指令,减法指令等。操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大只允许“管理者”一即操作系统内核来使用。

CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型,CPU是怎么判断出指令类型的呢?


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


处于内核态(核心态,管态)时,说明此时正在运行的是内核程序,此时可以执行特权指令


处于用户态(目态)时,i说明此时正在运行的是应用程序,此时只能执行非特权指令

2.内核态、初始态的切换

内核态--->用户态: 执行一条特权指令--修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态--->内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权,这种情况会发生在非法使用特权指令,或者操作系统需要开展某项管理工作,即操作系统需要介入,都需要触发中断信号。

举个例子:


(1)开机时,需要加载操作系统,进行操作系统的初始化工作,初始化工作就是由操作系统中某些内核程序完成的,所以CPU此时处在"内核态"


(2)开机完成后,用户可以启动某个应用程序。


(3)操作系统内核程序在合适的时候主动让出CPU,让该应用程序上CPU运行。操作系统内核在让出CPU之前,会用一条特权指令把 PSW 的标志位设置为“用户态”


(4)应用程序运行在“用户态”


(5)若此时植入一条特权指令,这个非法事件会引发一个中断信号,但CPU检查PSW的状态为“0”,处于“用户态”,CPU检测到中断信号后,会立即变为“核心态”,并停止运行当前的应用程序(拒绝执行这一植入的特权指令),转而运行处理中断信号的内核程序


(6)操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序


3.中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。中断处理程序一定是内核程序,需要运行在“内核态”。

4.中断的类型

中断的类型由内中断与外中断。内中断(异常,例外)与当前执行的指令有关,中断信号来源于CPU内部。


内中断:

内中断,也称为异常,有以下几种类型:


陷阱、陷入:由陷入指令引发,是应用程序故意引发的


故障:由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如: 缺页故障。


终止:由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。

内中断的例子:

1.由非法植入的特权指令引起的中断(终止)

2.除法指令中发现除数为0,也会引起内中断(终止)。

3.有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令--陷入指令,该指令会引发一个内部中断信号。("系统调用"就是通过陷入指令完成的)


注:陷入指令是一条特殊的指令,不是特权指令


所以若当前执行的指令是非法的,则会引发一个中断信号。


注:CPU在执行指令时会检查是否有异常发生

这里补充一下系统调用:


操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。


“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务


系统调用的作用:

操作系统内核会对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。


应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

高级语言的库函数,在底层也会使用到系统调用,所以系统调用是比高级语言的库函数更为底层的接口:

注:不是所有的库函数都需要涉及系统调用

不涉及系统调用的库函:如的“取绝对值”的函数

涉及系统调用的库函数:如“创建一个新文件”的函数

系统调用的过程:

1.应用系统首先会执行传参指令,传参指令会将参数传递到寄存器中,传递多少参数取决于系统调用需要多少参数,操作系统会根据这些参数判断是哪种类型的服务。

2.参数传递完毕后,应用程序会执行陷入指令,触发内中断信号,转入相应的中断处理程序一即系统调用的入口程序

3.接下来CPU就会响应中断,进行系统调用入口程序的处理,此时CPU的状态由"用户态"转为"内核态",该程序会根据寄存器中的参数判断用户需要哪种系统调用服务。


4.接下来CPU就会转入响应的系统调用处理程序进行处理。


总结来讲就是:


传递系统调用参数--->执行陷入指令(用户态)--->执行相应的内核请求程序处理系统调用(核心态)

--->返口应用程序

注意:

1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态

2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

外中断:

外中断(中断)与当前执行的指令无关,中断信号来源于CPU外部。

1.时钟中断---由时钟部件发来的中断信号。时钟部件每隔一个时间片(如 50ms) 会给CPU发送一个时钟中断信号,通过这个时钟中断信号就可以实现多道程序并发运行了。

假设系统中想要并发执行两个应用程序,应用程序1执行自己的应用程序,直到50ms,时钟部件会向CPU发送中断信号,CPU收到中断信号会将“用户态”转变为“内核态”,在内核态下执行内核程序,处理中断信号,并且决定让另一个应用程序上CPU运行。所以切换应用程序2上CPU运行。这样两个应用程序就可以实现交替运行。


2.I/O中断一一由输入/输出设备发来的中断信号。


当输入输出任务完成时,向CPU发送中断信号。CPU收到中断信号,就会处理I/O中断中的内核程序。


注:CPU在每一条指令执行结束后,都会理性检查是否有外中断信号。


目录
相关文章
|
6天前
|
存储 缓存
操作系统的虚拟内存管理机制
在现代计算机系统中,虚拟内存是一种至关重要的内存管理技术。它允许操作系统使用硬盘空间来扩展物理内存容量,从而支持更多并发运行的程序。本文将深入探讨虚拟内存的概念、实现方式以及其在操作系统中的作用和重要性。
|
8天前
|
缓存 算法 Linux
深入理解操作系统的内存管理机制
【6月更文挑战第23天】内存管理是操作系统中一个至关重要的功能,它直接影响到系统性能和资源利用效率。本文旨在深入探讨现代操作系统中内存管理的核心概念、关键技术以及面临的挑战。通过分析内存管理的基本原理、内存分配策略、虚拟内存技术、缓存管理和内存安全等方面,揭示内存管理在提升操作系统稳定性、安全性与高效性方面的作用。文章将结合具体操作系统实例,如Windows、Linux等,阐述不同内存管理技术的实现细节和优化策略,为读者提供对操作系统内存管理机制全面而深刻的认识。
19 3
|
10天前
|
存储 缓存 算法
探索现代操作系统的虚拟内存管理机制
【6月更文挑战第21天】在数字时代的浪潮中,操作系统作为计算机系统的核心,其设计和管理策略直接影响着计算效率和用户体验。本文将深入探讨现代操作系统中的虚拟内存管理机制,包括其工作原理、实现方式及其对系统性能的影响。通过分析虚拟内存技术如何优化资源分配、提高多任务处理能力及对硬件资源的抽象管理,揭示其在现代操作系统中的重要性和应用价值。
|
12天前
|
存储 算法
深入理解操作系统的内存管理机制
【6月更文挑战第19天】本文旨在探讨现代操作系统中内存管理的关键技术和策略,分析其对系统性能及稳定性的影响。通过介绍分页、分段、虚拟内存等概念,揭示操作系统如何有效管理物理与虚拟内存资源,以及这些技术在多任务处理和内存保护方面的应用。文章将重点讨论内存泄漏、碎片整理和页面置换算法等高级主题,以期为读者提供对内存管理复杂性及其解决方案的深刻理解。
14 2
|
13天前
|
算法 安全 调度
深入理解操作系统的虚拟内存管理机制
【6月更文挑战第18天】在现代计算机系统中,虚拟内存是实现多任务处理和内存保护的关键技术。本文将深入探讨操作系统如何通过虚拟内存管理机制来优化物理资源的使用,提高系统效率,并确保进程间的隔离与安全。我们将从虚拟内存的基本概念出发,逐步解析分页、分段、内存交换以及页面替换算法等核心组件,揭示它们如何协同工作以支撑起整个系统的内存需求。
|
13天前
|
调度
操作系统之进程调度机制
操作系统之进程调度机制
15 1
|
15天前
|
IDE Oracle Java
Java 是一种跨平台的编程语言,可以在各种操作系统上运行。
Java 是一种跨平台的编程语言,可以在各种操作系统上运行。
|
17天前
|
监控 算法 安全
深入理解操作系统的内存管理机制
在数字时代的心脏,内存管理扮演着至关重要的角色。它是操作系统中的一项核心功能,负责协调、监控和控制计算机系统中的内存资源分配与回收。本文将深入探讨内存管理的基本原理、关键算法以及它在现代操作系统中的实现方式,揭示如何有效地利用和管理内存资源以优化系统性能和稳定性。
|
6天前
|
存储 缓存 算法
深入理解操作系统之内存管理机制
【6月更文挑战第25天】内存是计算机系统中至关重要的资源,其管理效率直接关系到系统性能。本文旨在探讨操作系统中内存管理的基本原理、关键技术以及面临的挑战,通过分析不同的内存管理策略,揭示内存分配与回收的复杂性,并讨论虚拟内存技术的实现细节及其在现代操作系统中的应用。文章将着重于内存管理对系统稳定性的影响,并提出未来内存技术的发展方向。
|
8天前
|
存储 算法 数据处理
探索现代操作系统的虚拟内存管理机制
在数字时代的浪潮下,操作系统作为计算机系统的核心,其设计和管理策略直接影响到计算性能和用户体验。本文将深入分析现代操作系统中至关重要的一个组成部分——虚拟内存管理机制。我们将探讨其工作原理、实现技术以及面临的挑战和解决方案,旨在为读者提供一个关于如何通过优化虚拟内存来提升操作系统性能的全面视角。