下一篇在这里(三)(四)内存层次和连续、非连续分配
上一篇绪论在这里(一)操作系统绪论
INDEX
2-1 操作系统的启动
2-2 操作系统的中断、异常、系统调用

2-1 操作系统的启动

启动:机器三部分

          &CPU
总线———|———|————|—————|         |I/O      内存

Disk而不是内存存放OS,BIOS(基本I/O操作系统)提供支持,检测外设。硬盘上有个小程序Bootloader用于加载os。
内存中有一部分是BIOS占满,第一步从特定地址开始执行
CS:IP=0xf000:fff0. (以X86为例)
CS 段寄存器 IP 指令寄存器
之后BIOS会post 加电自检,寻找显卡(找屏幕),有键盘鼠标等外设,BIOS将其初始化;把BOOTLOADER从硬盘上加到内存,自身跳转到CS:IP=0000:7c00

Bootloader会将OS的代码和数据加载到内存中,把控制权给操作系统(跳转到OS的起始地址)。

2-2 操作系统的中断、异常和系统调用

操作系统正常工作后,与设备和程序交互。
interface包含三个,面向外设通过中断和i/o,面向应用程序通过系统调用和异常。

系统调用:应用程序主动向OS发出服务请求system call,一种特殊指令
异常:不良的应用程序,非法指令或者坏的处理状态
中断:有外设来发送请求了,来自不同的硬件设备的计时器和网络的中断

为什么应用程序不能直接访问外设?
OS 的kernel 是被信任的第三方(安全),是主管manager,只有内核可以执行特权指令,给上层应用提供简单的借口,屏蔽底层device的差异和复杂性,使APP更易用,可移植。

操作系统如何设计和实现中断、异常和系统调用?

三者差异:
1. 源头不一样,网卡声卡显卡等等产生事件—中断;APP意想不到的行为—异常;APP主动请求OS提供服务—系统调用
2. 处理时间不一样。中断:异步;异常:同步;系统调用:同步或异步
异步的含义:当一个事件发生时,APP并不知道它什么时候会发生
异常和系统调用都是一个特定指令触发了事件,同步时间点。
系统调用也有可能异步,当发出请求后返回的时间是异步的。如果APP在发出请求后没有等待,而是干别的去了,返回点是异步的。而请求的点是同步的。
3.响应状态
中断:持续,app对用户是透明的,感觉不到
异常:杀死或重新执行APP的异常指令,也透明
系统调用:等待和持续,不会重复执行

中断和异常的处理机制
中断—-
硬件:设置中断标记(cpu初始化),CPU看到具体的中断事件的ID中断号(程序访问的中断向量地址),根据中断表,访问一些为该事件服务的功能,跳到对应地址。
软件:OS要保存当前程序处理状态,中断服务程序处理(根据具体的时间ID对应功能/地址),清除中断标记,恢复之前保存的处理状态(应用程序是不知道的,是透明的)
异常——
异常编号,OS会保存现场,异常处理(杀死程序or OS修复程序需要的服务后重新执行异常指令),恢复现场。应用程序不知道在执行到特定指令后会产生异常,也是透明的。
系统调用——
应用程序调用printf时会触发系统调用write(),OS再去访问对应的外设。执行后OS返回一个成功或者失败。程序访问主要是通过高层的API接口而不是直接系统调用。常用的有:
Win32 API
POSIX API 通用可移植 linux unix mac os x
最底层就是win32 or posix 定义了操作系统到底能提供哪些系统调用
JAVA API 用于JAVA虚拟机(JVM)

OS是怎么设计和实现系统调用的?
通常,系统调用接口根据与每个系统调用相关的序号维护一个索引表;系统调用接口调用内核态中预期的系统调用,并return状态和other values,用户不需要知道具体实现,只要获取API和了解return 结果,接口的细节都隐藏在API中,通过APP所支持的库来管理(用包含编译器的库来创建函数集)。

APP直接或间接通过library code库访问系统调用的接口,并触发内核态到用户态的转变,控制权从应用程序交到了OS,OS标识ID号后完成具体的服务。
内核态:OS运行中,CPU处的高权限的状态,OS可以执行任何CPU提供的任何指令或调用I/O。
用户态:APP执行中,CPU处的一个较低权限的状态。不能直接访问特殊的机器指令和I/O

系统调用与传统的函数调用区别在两点:
APP发出函数调用时,在一个栈空间完成了函数的传参和返回,系统调用时,应用程序和OS内核各自拥有堆栈,有栈的堆栈和特权级的转换,需要开销,大于函数调用。但相对更安全可靠。

三种行为(中断、异常、系统调用)跨越了OS边界。执行时间上开销超过直接程序调用。开销包括:
1. 初始环节要对事件ID号与对应服务历程建立映射表
2. OS有自己的堆栈,要建立和维护内核堆栈(保存,恢复)
3. 操作系统不信任APP,有验证参数,检查的过程
4. 从内核态映射到用户态的地址空间,如果引起内存变化,更新页面映射权限,
5. 内核态独立地址空间 TLB

是值得的,保证安全可靠。

下一篇操作系统笔记(三)计算机体系结构&内存分层体系
(四)非连续内存分配:分段,分页,页表,TLB

操作系统from清华大学向勇,陈渝 笔记(二)操作系统的启动、中断、异常、系统调用相关推荐

  1. 操作系统原理:操作系统的启动 中断/异常/系统调用

    操作系统的存储刚开始并不是内存里,而是先放在硬盘DIsk上   .由BIOS(基本输入输出系统)提供支持. 开机时,BIOS首先检查外设,检查完没问题.再加载相应的软件 . Bootloader: 这 ...

  2. 清华大学操作系统公开课笔记(向勇、陈渝)

    转载:https://zhuanlan.zhihu.com/p/150510828 第一章:概述 内核功能:物理内存管理 | 虚拟内存管理 | 文件系统管理 | 中断处理和IO设备驱动 (底层硬件) ...

  3. 清华大学陈渝老师受聘车用操作系统与泛在操作系统联合实验室操作系统首席科学家

    汽车智能化已成为新一轮产业竞争的战略制高点.车用操作系统是智能网联汽车的灵魂,也是车路云一体化的基础.车用操作系统与芯片的协同变革将从根本上解决"缺芯少魂"问题,是实现国家战略的必 ...

  4. 【操作系统/OS笔记03】启动、中断、异常和系统调用

    本次笔记内容: 2.1 启动 2.2 中断.异常和系统调用 文章目录 启动 BIOS加载Bootloader 操作系统与设备和程序交互 定义 从源头区分 从处理时间区分 从响应区分 中断.异常和系统调 ...

  5. 操作系统笔记 清华大学陈渝

    课程概要 基本概念及原理 操作系统介绍 中断及系统调用 内存管理 进程及线程 调度 同步 文件系统 I/O子系统 1. 基本概念 操作系统是控制软件,管理应用程序,为应用程序提供服务,杀死应用程序,分 ...

  6. 【清华大学】操作系统 陈渝——Part6 全局页面置换算法

    [清华大学]操作系统 陈渝--Part6 局部页面置换算法 6.8 局部页面替换算法的问题,工作集模型 局部页面替换算法的问题 工作集模型 6.9 全局页面置换算法 1. 工作集页置换算法 2. 可变 ...

  7. 【清华大学】操作系统 陈渝 Part3 ——物理内存管理 之 连续内存分配

    [清华大学]操作系统 陈渝 Part3 --物理内存管理 之 连续内存分配 3.1计算机体系结构及内存分层 计算机体系机构 内存体系层次 管理内存方法 3.2地址空间 & 地址生成 地址空间定 ...

  8. Linux 进阶笔记(二)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  9. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:// ...

最新文章

  1. 计算机解决科学研究,近期查处科研不端行为典型案例及处理决定
  2. MySQL的命令合集
  3. mysql慢查询开启语句分析_linux下开启mysql慢查询,分析查询语句
  4. LeetCode 1497. 检查数组对是否可以被 k 整除(余数配对)
  5. qt 无法打开shell32_在Qt中用默认程序打开文件
  6. 方差为什么用平方不用绝对值_为什么戚风蛋糕用玉米油而不用黄油?
  7. HTML5新特征、窍门和技术(16~20)
  8. Python操作redis(普通操作,连接池,封装)
  9. 如何下载火山安卓软件开发平台
  10. navision系统和sap区别_MES与EPR进行系统集成的实际案例-系统接口、交互数据分析...
  11. c语言自定义结构,C语言如何定义结构体
  12. java实现中文转拼音包含声调
  13. 支付宝,模拟支付,JavaWeb为例
  14. PS的钢笔,路径,选取,描边(虚线)
  15. n维空间被m个n-1维的“刀”最多切出多少块
  16. 服务器就是一台性能好的电脑吗,科普:什么是服务器? 服务器与普通电脑有何区别?...
  17. java并发小说爬虫,多站点搜索下载,并实现Android客户端开发
  18. 吃算法的 计算机方向,算法工程师算是吃青春饭的吗
  19. 通过百度语音生成音频文件
  20. 设计模式之一工厂模式

热门文章

  1. Java基础之网络编程(一)
  2. 计算机应用基础国之重器_歼,浅谈《计算机应用基础》教学中如何激发学生的兴趣...
  3. 18.考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化
  4. 微信公众号扫描带参数二维码实现自动分组
  5. 2021年高考成绩长兴中学查询,长兴中学2018高考喜报
  6. 在梅林系统的路由器中安装使用opkg软件源
  7. 【比亚迪研究报告】比亚迪正在加速成为世界汽车巨头
  8. LINUX C中read,write
  9. (Aleppo + HAIST + SVU + Private) CPC 2022 J补充
  10. EFcore与动态模型