1. 操作系统的概念
-
操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。简单来说,操作系统具有以下三个概念:
-
操作系统是系统资源的管理者
- 提供的功能:处理机管理、存储器管理、文件管理、设备管理
- 实现的目标:安全、高效
-
操作系统向上层提供方便易用的服务
- 给用户的服务:GUI(图形化用户接口)、联机命令行接口、脱机命令行接口(win中.bat、Linux中.sh)
- 给软件/程序员的服务:程序接口
-
操作系统作为最接近硬件的层次
- 实现对硬件机器的扩展,把硬件资源合理组织起来协调工作
-
2. 操作系统的四大特征
-
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上同时发生的,但微观上交替发生的。
- 易混概念并行:指两个或多个事件在同一时刻同时发生
-
共享:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享方式:系统中的资源,一个时间段内只允许一个进程访问该资源(如同一个设备在微信和QQ中不能同时使用视频,同一时间摄像头资源只能给其中一个进程)
- 同时共享方式:系统中的资源,一个时间段内由多个进程“同时”进行访问该资源(宏观上同时访问,微观上交替访问)
- 并发和共享的关系:互为互斥条件
-
虚拟:把一个物理上的实体变为若干个逻辑上的对应物。
- 虚拟存储器技术:空分复用技术
- 虚拟处理器技术:时分复用技术
-
异步:在多道程序环境下,允许多个程序并发执行,由于资源有限,进程执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这是进程的异步性。
3. 操作系统的发展和分类
-
手工操作阶段
-
批处理阶段
- 单道批处理系统
- 多道批处理系统
-
分时操作系统
-
实时操作系统
- 硬实时操作系统(时间要求严格)
- 软实时操作系统(时间要求相对宽松)
-
网络操作系统
-
分布式系统
-
个人操作系统
4. 操作系统的运行机制
-
两种指令
- 特权指令:只能由操作系统内核使用
- 非特权指令:由普通应用程序使用
-
两种CPU状态
-
内核态:程序状态字寄存器,“1”表示“内核态”,不同的CPU使用不同的二进制位标识,不一定是”1“
-
用户态:程序状态字寄存器,“0”表示“用户态”,不同的CPU使用不同的二进制位标识,不一定是”0“
-
内核态与用户态的切换
- 内核态→用户态:执行一条特权指令——修改PSW的标志位为”用户态“,意味着操作系统主动让出CPU使用权
- 用户态→内核态:由”中断“引发,硬件自动完成变态的过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
-
5. 操作系统的中断和异常
-
中断类型
-
内中断(也称异常、例外):
- 与当前执行的指令有关,中断信号来源于CPU内部(例如:试图在用户态下执行特权指令)
- 若当前执行的指令是非法的,则会引发内中断信号
- 执行陷入指令(非特权指令),应用程序主动地交还给操作系统内核
-
外中断(也称”中断“)
- 与当前执行的指令无关,中断信号来源于CPU外部
- 时钟中断——由时钟部件发来的中断信号
- I/O中断——由输入/输出设备发来中断信号
-
-
中断基本原理
- 不同的中断信号,需要不用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号类型去查询”中断向量表“,以此来找到相应的中断处理程序在内存中的存放位置。简而言之,是通过”中断向量表“实现的。
6. 操作系统的系统调用
-
系统调用的概念:操作系统提供给应用程序(程序员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
-
系统调用和库函数的区别
- 系统调用更为底层
- 涉及操作系统的库函数封装系统调用,向上提供接口
-
系统调用的功能:
- 设备管理:完成设备的请求/释放/启动等功能
- 文件管理:完成文件的读/写/创建/删除等功能
- 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
- 进程通信:完成进程之间的消息传递/信号传递等功能
- 内存管理:完成内存的分配/回收等功能
-
系统调用的过程
- 传递系统调用参数→执行陷入指令(trap指令=访管指令)(用户态)→由操作系统的内核程序处理系统调用(核心态)→返回应用程序
7. 操作系统的体系结构
-
大内核
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码庞大、结构混乱、难以维护
- 例子:Linux、UNIX
-
微内核
- 只把最基本功能保留在内核
- 优点:内核功能少、结构清晰、方便维护
- 缺点:需要频繁地在核心态和用户态间切换,性能低
- 例子:Windows NT 8. 总结
-
重点关注内核态和用户态的切换,并发和并行区别,面试常问问题
-
熟悉程序执行在操作系统层面的简单处理过程,加深对程序运行的理解
-
请各位大佬发现错误,能指导菜鸟小弟
-
菜鸟也想努力进大厂,加油