北航OS课程笔记--一、绪论
部分内容参考王道,一些名词与北航课件有少量出入。
欢迎指正。
绪论
操作系统定义
操作系统是一组管理计算机硬件资源的软件集合,它:
- 提供一个计算机用户与计算机硬件系统之间的接口,使计算机系统更易于使用
- 有效控制和管理计算机系统中的各种硬件和软件资源
- 合理地组织计算机系统的工作流程,以改善系统性能。
操作系统功能
向上层提供方便易用的服务。
作为最接近硬件的层次,操作系统需要实现对硬件机器的拓展。
操作系统简史
-
手工操作阶段:纸带机
主要缺点:用户独占全机,人际速度矛盾导致资源利用率很低。
-
批处理阶段(单道)
- 把用户提交的作业成批送入计算机,由作业调度程序自动选择作业运行。
- 目的:缩短作业之间的交换时间;减少处理机的空闲等待,提高系统效率
- 联机批处理:作业的输入、输出由CPU来处理–>高速主机与慢速外设
- 脱机批处理:输入、输出脱离主机控制,增加一台专门用于与输入输出设备打交道的卫星机。
- 缺点:每次主机内存中仅存放一道作业,每当它运行期间发出输入/输出请求后,CPU便处于等待IO完成的状态,使得CPU空闲。
-
批处理阶段(多道):
-
每次往内存中读入多道程序,并允许它们交替在CPU中运行。
-
操作系统正式诞生,用于支持多道程序并发运行。
-
优点:系统吞吐量大,资源利用率高;
-
缺点:平均周转时间长;没有人机交互功能,无法调试程序,无法在运行过程中输入参数。
-
-
分时操作系统:
- 把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
- 多个用户分享使用同一台计算机;多个程序分时共享硬件和软件资源。
- 用户请求可以被及时响应,解决了人机交互问题。
- 主要缺点:不能优先处理紧急任务。
-
实时操作系统:
- 计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件
- 及时性和可靠性
-
操作系统的网络化(略)
-
分布式操作系统(略)
操作系统的特征
-
并发
-
并发是指一个处理器同时处理多个任务。在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
-
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
多核CPU同一时刻可以执行多个程序,各个程序可以并行地执行。
-
并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。
-
-
共享
-
共享即资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用。
-
两种共享方式:
-
互斥共享方式:系统中的某些资源在一个时间段内只允许一个进程访问该资源
-
同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
“同时”往往是宏观上的,微观上是交替访问资源,即分时共享。
-
-
-
虚拟
- 把一个物理上的实体变为若干个逻辑上的对应物。
-
异步性
- 在多道程序环境下,允许多个程序并发执行;但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
并发和共享是最基本的两个特征,且它们互为存在条件。
操作系统的运行机制
-
内核程序&应用程序
- 应用程序:建立在操作系统上的程序
- 内核程序组成了操作系统内核(简称内核)
-
特权指令&非特权指令
- 特权指令:如“内存清零指令”等,只能由操作系统内核来使用;内核程序中可能存在。
- 非特权指令:与上相反。应用程序中只有非特权指令。
-
内核态&用户态
- CPU处于内核态时,说明正在运行内核程序,此时可以执行特权指令
- CPU处于用户态时,说明正在进行应用程序,此时只能执行非特权指令
-
内核态与用户态的切换:
- 刚开机时为内核态。
- 开机完成后,操作系统内核程序能用一条特权指令,将PSW的标志位设为“用户态”
- 操作系统内核让出CPU,应用程序在“用户态”运行。
- 当应用程序中有特权指令,但CPU处于用户态时,会引发一个中断信号
- CPU检测到中断信号后,会变为内核态,并停止运行当前的应用程序,转而对引发中断的时间进行处理。
中断和异常
名词上略有差异。以下为王道版本:
中断是让操作系统内核夺回CPU使用权的唯一途径。
- 内中断(即异常):与当前执行的指令有关,中断信号来源于CPU内部
- 例1:用户态下试图执行特权指令
- 例2:执行除法指令时除数为0
- 例3:应用程序想请求操作系统内核的服务,执行“陷入指令”(trap),引发一个内部中断信号。(陷入指令不是特权指令)
- 外中断(即狭义中断):与当前执行的指令无关,中断信号来源于CPU外部
- 例1:时钟中断,由时钟部件发来中断信号,用以实现程序并发运行
- 例2:I/O中断,当输入输出任务完成时,向CPU发送中断信号。
内中断=异常,引发原因:
- 陷入(trap),陷入指令引发
- 故障(fault),由错误条件引起,可能被内核程序修复;内核程序修复故障后会把CPU使用权还给应用程序。例如:缺页故障。
- 终止(abort),由致命错误引起,内核程序无法修复,一般会直接终止应用程序。例如上面的例1、例2
以下为你航版本:
异步异常=中断,可能随时发生,与处理器正在执行的内容无关。
同步异常:某一特定指令执行的结果。具体见下图。
中断后进入内核线程处理中断。
系统调用
操作系统作为用户和系统之间的接口,需要向上提供一些简单易用的服务,主要包括命令接口和程序接口。其中程序接口由一组系统调用组成。
系统调用是操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数;
应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用的过程:
- 传参
- Trap
- 由操作系统内核程序处理系统调用请求
- 返回应用程序
操作系统体系结构
以上两部分的划分,引出了两种操作系统的体系结构:大内核和微内核(常考)
微内核结构:只包含中断处理、进程通信、基本调度等。
关于效率:CPU状态转换是有成本的,频繁转换会降低系统性能→
- 微内核性能低
- 优点:结构清晰方便维护、可移植性好、适应分布式系统。
典型大内核:Linux UNIX
典型微内核:Windows
分层结构,模块化结构,外核结构:王道课有,PPT涉及不多。
不同层次的接口
一个操作系统中编译好的程序,在另一个ABI兼容的操作系统中无需重新编译就能运行。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)