1.操作系统的基本概念
1.1.操作系统的概念
1.操作系统控制和管理整个计算机系统的软件和硬件资源,并合理进行工作调度和资源分配(操作系统是系统资源的管理者,即处理机管理、存储器管理、文件管理和设备管理)
2.操作系统提供给用户和其他软件方便的接口和环境(向上层提供服务,上层即用户和软件;操作系统屏蔽底层硬件细节,即用户在使用的时候无需关心底层如何实现功能)
①②直接给用户使用,③给软件/程序员使用
①命令接口:联机命令接口(交互式命令接口)——用户说一句,系统做一句;脱机命令接口(批处理用户接口)——用户说一堆,系统做一堆
②图形用户接口(GUI)
③程序接口:在程序中进行系统调用(广义指令)使用程序接口。用户不能直接使用程序接口,只能通过程序代码间接使用程序接口
3.操作系统是计算机系统中最基本的系统软件(操作系统是一种软件,最接近硬件的软件)
操作系统需要实现对硬件机器的扩展(操作系统将CPU、内存等硬件合理组织,使得它们能实现更多功能)
1.2.操作系统的特征
1.并发:两个或者多个事件在同一时间间隔内发生(宏观上同时发生,微观上交替发生)
(区别于并行:两个或者多个事件在同一时间内同时发生)
单核CPU同一时刻只能进行一个任务,程序只能并发运行
多核CPU同一时刻可以进行多个任务,程序可以并行运行
2.共享:即资源共享。系统中的资源可供多个并发执行的进程共同使用
①互斥共享:一个时间段内只允许一个进程访问该资源
②同时共享:一个时间段内允许多个进程“同时”访问该资源(宏观同时,微观交替)
3.虚拟:一个物理上的实体变为若干个逻辑上的对应物
①时分复用:虚拟处理器(处理机在各个微小的时间内交替为各个进程服务))
②空分复用:虚拟存储器
4.异步:在多道程序环境下,以不可预知的速度向前推进(原因:资源有限)
2.操作系统的发展和分类
1.批处理阶段
①单道批处理系统:引入脱机输入/输出技术,并用监督程序(操作系统的雏形)负责控制作业的输入和输出
缺点:
内存中只能有一道程序运行(串行执行程序)
CPU需要大量时间等待I/O完成
②多道批处理系统:内存中存入多个程序,并且支持它们并发运行(共享资源)
缺点:没有人机交互功能(无法调试/输入参数)
2.分时操作系统:以时间片为单位轮流为用户/作业服务(可以进行人机交互)
用户感觉上独占计算机,实际共享计算机
缺点:完全公平(基于时间片)——不能优先处理紧急任务
3.实时操作系统:可以优先处理紧急任务
①硬实时:必须绝对严格在特定时间内完成
②软实时:可以偶尔违反时间规定
3.操作系统运行环境
3.1.处理器运行模式
1.应用程序只能使用非特权指令
2.特权指令只能由操作系统内核使用
3.CPU可以判断当前指令为特权指令/非特权指令:通过PSW标志位标记当前CPU处于何种状态
内核态(管态):正在运行的是内核程序,可以执行特权指令
用户态(目态):正在执行的是应用程序,只能执行非特权指令
4.内核态→用户态:执行一条特权指令——修改PSW标志位为用户态(操作系统主动让出CPU使用权)
5.用户态→内核态:由中断引发,硬件自动完成变态过程,操作系统强行夺回CPU使用权(停止运行当前程序,转而运行处理中断信号的内核程序)
3.2.中断和异常
中断是操作系统内核夺回CPU使用权的唯一途径(用户态→内核态)
3.2.1.内中断(异常)
与当前执行的指令有关,中断信号来源于CPU内部
①终止(由致命错误引起,内核无法修复,并且不会交还CPU使用权,而是直接终止应用程序):用户态下执行特权指令、除法指令除数为0
②故障(错误条件引起,内核程序修复后CPU,使用权交还给应用程序):缺页
③陷入(程序故意引发):应用程序请求系统内核服务,执行陷入指令(陷入指令并非特权指令,且需要在用户态下执行,系统调用通过陷入指令完成)
3.2.2.外中断(中断)
与当前执行的指令无关,中断信号来源于CPU外部
每一条指令执行结束时,CPU都会检查是否有外中断信号(中断周期)
①时钟中断——由时钟部件发来的中断信号(两个应用程序可以通过时钟中断的方式并发运行)
②I/O中断请求(例:打印机打印完成后,会向CPU发送中断信号)
3.2.3.中断机制的基本原理
1.不同类型的中断信号,需要不同的中断处理程序。因此,CPU检测到中断信号后,会根据中断信号的类型查询中断向量表
2.中断处理程序需要在内核态下执行
3.3.系统调用
特权指令、访管指令、陷入指令、广义指令--操作系统 - 哔哩哔哩
1.应用程序可以通过系统调用请求获得操作系统内核的服务(程序接口由一组系统调用组成)
2.系统调用和库函数的区别:
3.系统调用的应用场景:与共享资源相关的场景下必须使用系统调用功能让操作系统的内核合理进行资源分配(例如:两个应用程序并发使用打印机,如果不能够进行合理分配,那么将会导致A打印一段B打印一段)
4.系统调用的分类:
5.系统调用的过程:
①执行传参指令(用户态):在用户态下,通过若干传参指令将若干个参数分别传入寄存器中(参数的作用是指明应用程序需要系统调用的类型),操作系统根据参数提供对应的系统调用服务
②传参指令执行结束后,执行陷入指令(用户态→内核态):陷入指令引发内中断,CPU暂停执行应用程序,转而执行中断服务程序(陷入指令对应的中断服务程序为系统调用的入口程序)
③执行对应的系统调用服务程序(内核态):执行中断服务程序的过程中,根据寄存器中的参数执行对应的系统调用处理程序
④系统调用执行完毕(内核态→用户态)
6.系统调用的注意点:
①陷入指令并非特权指令,且需要在用户态下执行
②陷入指令执行后将会发出一个内中断,随后CPU由用户态→内核态
③用户态下发出系统调用请求,内核态下处理系统调用请求
④陷入指令 = trap = 访管指令