2024.06.11:操作系统的运行环境学习笔记
第3节 操作系统的运行环境
- 3.1 操作系统引导
- 3.2 操作系统内核
- 3.2.1 内核资源管理
- 3.2.2 内核基本功能
- 3.3 CPU的双重工作模式
- 3.3.1 CPU处于用户态(目态)
- 3.3.2 CPU处于内核态(管态)
- 3.4 特权指令&非特权指令
- 3.4.1 非特权指令
- 3.4.2 特权指令
- 3.5 系统调用
- 3.5.1 用户态到内核态
- 3.5.2 内核态到用户态
- 3.5.3 系统调用的过程(CPU变态的过程)
- 3.6 中断和异常的处理(现代OS是由中断驱动的)
- 3.6.1 异常处理过程
- 3.6.2 中断处理过程
3.1 操作系统引导
从开机到操作系统加载到主存中,过程是怎么样的
电脑主板
- 计算机启动时,首先进行电源自我检查,确保所有的硬件设备都正常,并且准备就绪
- 准备就绪后,计算机就会从主板的ROM区去激活一个BIOS程序,这个程序会负责初始化硬件,进一步进行硬件自检
大家做题的时候,题目问你主存是由什么样的存储器组成的?见招拆招,看情况
- RAM (大部分)
- RAM+ROM:题干把存放BIOS这个程序的这个ROM去给它并到主存里面了
- 硬件自检没有问题之后,这个BIOS就会从硬盘,也就是磁盘,它的主引导记录MBR中去读取引导程序
BIOS程序读取硬盘0号扇区的主引导记录MBR,MBR包括(磁盘引导程序)和(分区表信息)
- 磁盘会被分成好几个区,(分区表信息)就是用来记录这个区的,我们的电脑里面系统分区最常见的这个C盘,C盘里面不仅有我们下载的这些数据,更多的是一些系统的文件,这个东西我们会把它叫做(系统分区)
- 假设我们要去启动windows的话,我们会根据MBR里面的磁盘引导程序去读取系统盘的第一个扇区(0号扇区),也就是分区表里面告诉我们windows所在的这个系统分区,它的盘是C盘。
- 我们就会根据这个起始地址找到C盘,然后通过MBR里面的磁盘引导程序去启动这个盘的第一个扇区。
- 这个盘的第一个扇区,又叫做(分区引导记录PBR),它里面会存储windows这个操作系统它的引导程序,这个引导程序会帮助你找到操作系统的内核,从而你就可以把内核调到内存了
- 我们最终的结果就是将一个操作系统它的内核部分调入到了主存中,并且让它常驻主存。这样就可以让以后的用户直接使用这样的操作系统。
- 注意操作系统并不是一整个全部调入到了内存引导的过程中,我们只是把内核部分调入到了内存。
- 这个过程中,也请大家去注意区别MBR和PBR,MBR是磁盘的0号扇区,也就是第一个扇区里面的内容,它叫做主引导记录,它里面有磁盘引导程序和分区表信息。根据分区表,你可以找到一个系统分区,这个系统分区里面的第一个扇区就是0号扇区,它会存放分区引导记录,这个里面存放的是这个操作系统的引导程序,其实也就是几段代码,把它调入到主存里面,它就会告诉你这个内核它的位置在哪里
3.2 操作系统内核
定义:操作系统中与硬件紧密相关的模块,负责管理系统的各种资源
注意:只有内核从引导开始,就一直在内存的某一个空间常驻,这个空间我们把它叫做(内核空间),而主存的其他部分我们把它叫做(用户空间)
3.2.1 内核资源管理
进程管理、存储器管理、设备管理都是由操作系统的内核代码去执行的
- 进程管理:确保操作系统可以高效、公平、安全地同时运行多个应用程序
- 存储器管理:确保有效、安全地分配管理计算机系统中的内存资源
- 设备管理:确保所有外围设备和硬件都能有效且安全地与计算机系统交互
3.2.2 内核基本功能
- 原语:在单个步骤中完成操作系统的基本构件;原语处于操作系统最底层,运行时不可以被打断;原语运行时长较短,调用频繁
- 中断处理:系统调用、键盘命令输入、进程调度、设备驱动等很多重要的活动都依赖于中断
操作系统是靠中断去驱动的。每一次去处理中断的时候呢,都是由操作系统的内核先对中断进行一个有限处理,然后转入相关的进程,这些进程会完成后续的一个处理工作
- 时钟管理:操作系统用来处理和控制时间和时间相关函数的机制
3.3 CPU的双重工作模式
在引导操作系统的时候,这个内核部分会被加载到内存的内核空间,然后常驻到(操作系统内核)。内核空间以外的这些内存空间就是(用户空间)。
在访问用户空间和访问内核空间的时候,CPU其实是处于两种不同的工作模式的,那么由谁来代表当前的工作模式呢,计组里面学过,CPU内部有这样的一个寄存器PSW(状态字寄存器),它里面会有一个模式位,这个模式位会用来记录当前CPU的工作模式是怎么样的
3.3.1 CPU处于用户态(目态)
CPU在用户态可以访问内存的用户空间
3.3.2 CPU处于内核态(管态)
CPU只有在内核态可以访问内存的内核空间(内核空间其实放的就是操作系统的内核)
3.4 特权指令&非特权指令
3.4.1 非特权指令
此时,应用程序里的所有指令都是非特权指令,非特权指令(不能直接访问)系统硬件和软件,非特权指令对内存的访问也只限于(用户空间)
所有应用程序里面的所有指令,它都是非特权指令
3.4.2 特权指令
如果应用程序中出现特权指令,则硬件不会执行该指令,而是发出错误信号,操作系统捕捉到信号后会停止该进程的运行并转入(错误处理程序)
特权指令是在CPU内核态下才可以运行的一种指令,它对内存的访问是不受限制的
3.5 系统调用
系统调用(system call)形如一组打包号的库函数,这些函数的功能需要由操作系统内核来实现,系统调用提供了(用户程序)和(操作系统内核)之间的(接口)。应用程序通过系统调用来获得操作系统的服务。
3.5.1 用户态到内核态
- 用户程序发起系统调用
- 发生中断,必须陷入内核态由OS内核处理中断
- 发生异常,必须陷入内核态由OS内核处理中断
- 用户程序试图执行特权指令
3.5.2 内核态到用户态
- 设置程序状态字寄存器PSW中的CPU模式位,将其置为1
3.5.3 系统调用的过程(CPU变态的过程)
3.6 中断和异常的处理(现代OS是由中断驱动的)
3.6.1 异常处理过程
- 异常触发
当程序执行中发生异常,CPU会自动检测并触发异常
- 保存上下文
与中断处理相似,CPU会保存当前的执行状态,包括程序计数器和寄存器值
- 执行异常处理程序
CPU查找异常向量表,根据异常类型跳转到相应异常处理程序处理
- 处理结果
根据异常的性质,处理程序可能会修正错误并允许程序继续执行,或终止程序返回错误信息
- 恢复或终止
如果异常可恢复,CPU将恢复之前的程序状态并继续执行;若不可恢复,终止程序并进行错误处理
3.6.2 中断处理过程
- 触发中断
中断指由外部设备(键盘、鼠标等)发起,通常是设备完成任务或需要注意时触发
- 中断信号接收
CPU会在当前执行的指令完成后检测中断,暂停当前进程的执行
- 保存上下文
CPU会保存当前任务的状态,包括程序计数器和其他寄存器值(现场信息),以便中断处理完成后能恢复运行
- 执行中断服务程序
CPU根据中断向量表找到相应中断处理程序并执行
- 恢复上下文并返回
中断服务程序完成后,CPU恢复之前保存的程序状态,继续执行被中断的程序