1 概述
操作系统职能完成对硬件的管理和控制
1.1 操作系统需要关注的
计算机硬件有CPU, 内存, 磁盘, 声卡, 网卡等等, 所以操作系统关注CPU进程线程的调度, 内存管理(物理内存, 虚拟内存), 文件系统管理, 中断处理, IO设备驱动等等.
1.2 操作系统特征
1.2.1 并发和并行
并发是操作系统一段时间跑多个程序, 并行是指在一个时间点上有多个程序在跑, 需要依赖多核
1.2.2 资源共享
1.2.3 虚拟
把硬件虚拟化, 使得应用更好使用硬件.
1.2.4 异步
1.3 启动, 中断, 异常, 系统调用
上层应用是不能直接操作硬件的, 控制权都在操作系统.
1.3.1 启动
计算机启动之后, 先从硬盘读取BIOS启动程序, BIOS是基本IO处理系统, 在计算机启动时检测计算机各种外设, 如果发现外设没有问题, 就从硬盘上把bootloader程序读取到内存开始执行. bootloader接管了CPU的控制权之后从硬盘中读取os的起始地址和长度, 然后把其加载到内存中, 开始执行os(os是放到了硬盘的第一个主引导扇区).
1.3.2 系统调用 异常 中断
- 系统调用: 应用程序向操作系统发出指令. 应用程序需要调用系统调用接口来进行系统调用. 系统调用接口包括windows的Win32 API, Unix Linux以及MacOS的POSIX API等. 应用程序执行系统调用后, CPU状态会由用户态转换成内核态, 此时CPU可以执行任何一条指令. 系统调用和普通函数调用的区别是: 函数调用时, 是在一个空间内, 而系统调用后会由用户态切换到内核态, 堆栈也会切换(操作系统会有自己的堆栈), 开销会增大.
- 异常: 应用程序执行遇到问题, 由操作系统来处理. 当有异常产生时, 操作系统同样需要先保存当前执行的程序状态, 然后根据异常状态来进行处理, 处理完成后继续恢复之前执行的程序.
- 中断: 由外设让操作系统感知到有操作, 中断来源于外设, 比如键盘和鼠标, 网卡等. 中断产生的时候, 会有硬件和软件的处理, CPU获取中断之后会产生中断号, 并发给操作系统, 操作系统先把正在执行的程序的执行状态保存起来, 然后根据中断号来找到对应的中断程序进行执行, 执行完成后再把之前保存的程序取出来继续执行.