操作系统的启动和中断

简介: 操作系统的启动和中断

操作系统


操作系统启动


简单的启动过程:


DISK:存放OS

BIOS:基本I/O处理系统

BootLoader:加载OS

POST(加电自检):寻找显卡和执行BIOS


执行步骤:

  • BIOS:将bootloader从磁盘的引导扇区加载到0x7c00,跳转到CS:IP = o00o:7c00
  • bootloader:将操作系统的代码和数据从硬盘中加载到内存中,跳转到操作系统的起始地址


中断、异常和系统调用


  • 系统调用:应用程序主动向操作系统发出服务请求
  • 异常:非法指令或者其他坏的处理状态
  • 中断:来自不同的硬件设备的计时器和网络的中断


操作系统如何设计和实现中断、异常和系统调用?他们三者有什么特点和区别?


  • 源头不同
  • 中断:外设产生的
  • 异常:应用程序意想不到的行为
  • 系统调用:应用程序请求操作提供服务
  • 处理时间:
  • 中断:异步
  • 异常:同步
  • 系统调用:异步或者同步
  • 响应状态
  • 中断:持续,对用户应用程序是透明的
  • 异常:杀死或者重新执行意想不到的应用程序指定
  • 系统调用:等待和持续


中断和异常的处理机制


中断:

  • 中断是外设的事件
  • 异常是内部CPU的事件
  • 中断和异常迫使CPU访问到一些被中断和异常服务访问的功能


硬件:

  • 设置中断标记(CPU初始化)
  • 将内部、外部事件设置中断标记
  • 中断事件的ID


软件:

  • 保存当前处理状态
  • 中断服务程序处理
  • 清除中断标记
  • 恢复之前保存的处理状态


异常:异常编号


  • 保存现场
  • 异常处理
  • 杀死产生异常的程序

  • 重新执行异常指令
  • 恢复现场


系统调用


例子:应用程序调用printf()时,会触发系统调用write()


  • 程序访问主要是通过高层API接口而不是直接进行系统调用
  • Win32 API用于Windows
  • POSIX API 用于POSIX-based systems(包括unix, linux, mac os等)
  • 通常情况下,与每个系统调用相关的序号
  • 系统调用接口会根据这些序号来维护表的索引
  • 并且返回系统调用的状态和其他任何返回值
  • 用户不需要知道系统调用时如何实现的
  • 只需要获取API和了解操作系统将什么作为返回结果
  • 操作系统接口的细节大部分都隐藏在API中
  • 通过运行程序支持的库来管理(用包含编译器的库来创建函数)


跨操作系统边界的开销


  • 在执行时间上的开销超过程序调用
  • 开销:
  • 建立中断异常系统调用号与对应服务例程映射关系的初始化开销
  • 建立内核堆栈
  • 验证参数
  • 内核态映射到用户态的地址空间,更新页面映射权限
  • 内核态独立地址空间TLB
目录
相关文章
|
6天前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
86 0
|
8月前
操作系统:中断和异常
内中断(异常):与当前CPU的执行的指令有关,中断信号来自CPU内部 外中断:与当前CPU的执行的指令无关,中断信号来自CPU外部 (注:在大部分教材中,“中断”是狭义的中断,指外中断;而内中断则称为异常)
131 0
|
6天前
|
资源调度 调度 UED
CPU执行系统调用时发生中断,操作系统还能切回中断前的系统调用继续执行吗?
系统调用服务例程在执行过程中,通常不会被中断。系统调用服务例程的执行是一个原子操作,即在执行期间不会被中断。这是为了确保在系统调用服务例程执行期间对内核数据结构的一致性和完整性。
|
5月前
【操作系统】—中断和异常
【操作系统】—中断和异常
【操作系统】—中断和异常
|
6月前
|
存储 前端开发 Linux
操作系统实验一:时钟中断程序设计
操作系统实验一:时钟中断程序设计
84 0
|
9月前
|
C语言
《计算机操作系统-第三章》之中断与系统调用
《计算机操作系统-第三章》之中断与系统调用
200 0
|
10月前
|
存储 JavaScript 算法
重学操作系统----15 | 中断和中断向量:Java/js 等语言为什么可以捕获到键盘输入?
当你拿到一个问题时,需要冷静下来思考和探索解决方案。你可以查资料、看视频或者咨询专家,但是在这之前,你先要进行一定的思考和梳理,有的问题可以直接找到答案,有的问题却需要继续深挖寻找其背后的理论支撑。
138 0
|
安全 Java Linux
【操作系统】第二章:OS的启动和中断、异常、系统调用(二)
【操作系统】第二章:OS的启动和中断、异常、系统调用
140 0
|
存储 安全
【操作系统】第二章:OS的启动和中断、异常、系统调用(一)
【操作系统】第二章:OS的启动和中断、异常、系统调用
286 0
|
安全 Java Unix
四、操作系统的启动,中断,异常和系统调用
四、操作系统的启动,中断,异常和系统调用
四、操作系统的启动,中断,异常和系统调用