- bootstrap:
- 执行者:boot-loader(不是操作系统的一部分). 如 GRUB
- 任务: 1)加载OS到内存 2)将控制转交给OS
- 中断
- 处理步骤:
- 硬件:保存寄存器, 切到ISR(Interrupt Service Routine)
- ISR汇编:保存需要的寄存器,设置环境
- ISR C: 处理中断,从外设读入数据
- ISR C: 返回汇编ISR
- ISR汇编:恢复寄存器,返回中断点。
- 中断向量:
- 本质:以IRQ(Interrupt ReQuest number)为索引的ISR向量
- 应用:处理中断时,CPU根据设备的IRQ定位Interrupt vector中对应的ISR
- 异常
- 本质:处理器执行指令时遭遇异常。因是同步事件(处理完才返回),又称为软件中断或同步中断
- 与中断区别:1)发起对象 外设 vs 软件 2)处理方式 异步 vs 同步
- 外设的访问:device controller(含寄存器)
- I/O 端口(8/16地址):特殊命令,如IN/OUT reg, port 将I/O端口的数据读或写到CPU寄存器
- 内存映射I/O(内存地址):通用指令,同一总线。
- 本质:视作内存
- 优势:设备驱动可以用C语言写; 不需要单独的I/O保护机制;指令重用
- 劣势:内存的缓冲机制对于外设很危险
- 现状:结合使用,memory-mapped i/o用于数据寄存器,i/o端口用于指令寄存器
- 硬件保护
- dual mode operation: 0 for 内核,1 for 用户。设置在硬件上。
- privileged instructions:I/o 保护。包括所有I/o命令。仅在内核态执行。
- memory protection:控制内存可访问的范围。base register and limit register。【base, base + limit)
- cpu protection: 防止单程序一直占用CPU。计时器(counter register and holding register)
- 系统调用
- 操作系统提供给用户程序访问的接口。
- call wapper of system call in C run-time(CRT) library -> store system call number -> trap into os -> get system call service routine by indexing a system call table using system call number -> run system call service routine and return to user programs ...
- 如何trap into os? exception(INT 0x80/0x2e) or special instruction(SYSENTER and SYSEXIT)
- 与库函数的区别:系统调用需要切换到内核态,也就意味着更大的调用开销。库函数本质上和用户自定义的函数一致。