操作系统概论
操作系统的概念#
操作系统 是指控制和管理整个计算机系统的硬件和软件资源,并合理地到调度计算机工作和资源,以提供用户和其他软件方便的接口和环境;他是计算机系统中最基本的系统软件
简单说就是 操作系统是管理系统资源的软件
操作系统提供的功能#
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
操作系统向上提供的服务#
- GUI 点点点
- 命令接口
- 联机命令接口: cmd 交互式命令
- 脱机命令接口: 一个可以运行的文件
- 程序接口: 系统调用
操作系统的特征#
并发,共享,虚拟,异步
并发
单核CPU同一时刻只能执行一个程序,但是由于有并发在,可以在微小的时间内交互进行,从而实现人类视角意义上的”并行“
共享(宏观的同时,微观上还是并发访问)
互斥共享方式
一个时间段内只允许一个进程访问该资源(微信摄像头)
同时共享方式
允许一个时间段内由多个进程同时访问(比如说同时向微信和QQ上传同一个文件)
虚拟
虚拟是将物理上的实体变为逻辑意义上的对应物(也就是人们感受到的)
- 空分复用技术(虚拟存储器技术)
- 时分复用技术(虚拟处理器)
异步
由于资源有限,进程的执行不是一贯到底,会以不可预知的速度进行
比如进程A运行到一半堵塞了,就去运行进程B,进程B运行完再回来运行进程A
cpu的状态#
- 用户态
- 内核态
程序运行的过程就是把一条条指令输入CPU中让其执行指令的过程
这里的指令不是指 ls 这些指令,而是指转换后的二进制命令这些
cpu 运行应用程序的时候就是用户态; 运行内核程序的时候就是内核态
普通程序员写的就是应用程序,Linux那帮人写的就是操作系统内核
操作系统不全是内核,比如GUI就是应用程序
内核态可以执行特权指令,用户态只能执行非特权指令
内核态和用户态的转换可以通过 程序状态字寄存器(PSW)实现
内核态 -> 用户态:执行一条特权指令–修改PSW的标志位为”用户态“,操作系统让出CPU使用权
用户态 -> 内核态:由”中断“引发,硬件自动引发变态过程,操作系统强行夺回cpu使用权
刚开机时,CPU为“内核态”,操作系统内核程序先上CPU运行
开机完成后,用户可以启动某个应用程序
操作系统内核程序在合适的时候主动让出CPU,让该应用程序上CPU运行
应用程序运行在“用户态”
此时,一位猥琐黑客在应用程序中植入了一条特权指令,企图破坏系统…
CPU发现接下来要执行的这条指令是特权指令,但是自己又处于“用户态”,这个非法事件会引发一个中断信号一
CPU检测到中断信号后,会立即变为“核心态”,并停止运行当前的应用程序,转而运行处理中断信号的内核程序
“中断”使操作系统再次夺回CPU的控制权⑨ 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
中断#
内中断(异常): 与当前执行的指令有关,来自CPU内部
陷入
由 陷入指令 引发,是应用程序故意引发的(问题不大)
故障
由错误条件引起的,可能被内核程序修复,修复后会把CPU使用权返回给应用程序
终止
直接烂完了
外中断(中断):与当前执行的指令无关,中断信号来自CPU外部
- 时钟中断
- I/O中断请求
内中断#
比如说你在运行一个应用程序,然后突然植入一个非法的指令,那么他会引发一个中断信号,操作系统强行操作CPU,如果操作系统修复了bug就是故障,没有就是终止
又比如说有时候应用程序想要请求操作系统内核的服务(创建文件夹),此时会执行一个特殊的命令—陷入命令,引发一个中断信号,来唤醒操作系统进行内核操作
外中断#
时钟中断就是每隔一个时间给CPU发送一个时钟中断信号,比如说应用程序A运行到一半,发送一个时钟中断信号,然后去运行应用程序B,过一段时间再来一个中断信号…..就此实现并发
I/O中断请求就是关于输入输出有关的
操作系统体系架构#
- 大内核
- 微内核
内核时操作系统最基本核心的部分,实现操作系统内核功能的就是内核程序,一般有:
- 时钟管理
- 中断处理
- 原语:原子性的程序
- 进程通信
- 对系统资源管理的程序
- 进程管理
- 存储器管理
- 设备管理
- ….
总体来说前四点与硬件关联较为紧密,最后一点管理工作更多是对数据结构的操作,不直接涉及硬件,因此在操作系统体系架构中有了分歧:
- 大内核:五个都分为内核程序
- 微内核:管理功能分为应用程序,前四个分为内核程序
操作系统的内核需要运行在内核态,非内核功能需要运行在用户态
内核态和用户态的转变需要消耗很多资源
操作系统引导#
简单来说就是电脑启动过程中操作系统是如何开机的
内存分为两块 RAM 和 ROM
RAM会随着关机而清空,ROM不会,他内部有一个ROM引导程序,他会去磁盘找到一个分区表和磁盘引导程序,这个程序会去找到一个启动管理器从而启动操作系统
这个我觉得不重要就没有很详细记录了