本次笔记内容:
2.1 启动
2.2 中断、异常和系统调用

文章目录

  • 启动
    • BIOS加载Bootloader
  • 操作系统与设备和程序交互
    • 定义
    • 从源头区分
    • 从处理时间区分
    • 从响应区分
  • 中断、异常和系统调用
    • 中断
    • 异常
    • 系统调用
    • 跨越操作系统边界更安全,但开销更大

启动

通电之后,如何启动。

  • DISK: 存放OS
  • BIOS: 基本I/O处理系统

在DISK上,还存在Bootloader,用于加载OS。

开始加电时,BIOS从CS:IP这个地址开始执行,之后完成一系列工作,包括:

  • POST(加电自检),寻找显卡和执行BIOS等。

BIOS加载Bootloader

Bootloader放在硬盘的第一个主引导扇区(512字节)。BIOS从硬盘的第一个扇区寻找,一下便找到Bootloader,Bootloader再负责加载OS。

之后,由Bootloader将操作系统的代码和数据从硬盘加载到内存中。之后,控制权交给到OS。(跳转到OS的地址)

操作系统与设备和程序交互

  • 操作系统面向外设,通过中断I/O进行处理;
  • 操作系统面向应用程序通过系统调用异常提供支持。

定义

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

为什么应用程序不能直接访问外设呢?(必须要经过操作系统?)

  • 在计算机运行中,内核是被信任的第三方;只有内核可以执行特权指令
  • 安全;为应用程序提供了统一的外设接口,方便应用程序开发

从源头区分

  • 中断: 外设(即非CPU产生
  • 异常: 应用程序意想不到的行为
  • 系统调用: 应用程序请求操作提供服务

从处理时间区分

  • 中断: 异步(不知什么时候产生)
  • 异常: 同步(由指令确定时间)
  • 系统调用: 异步或同步(发出请求的点是同步的,但是获取返回的点可能是异步的)

从响应区分

  • 中断: 持续,对用户应用程序是透明的(感觉不到)
  • 异常: 杀死或者重新执行意想不到的程序指令
  • 系统调用: 等待和持续

中断、异常和系统调用

中断、异常都有针对软硬件的处理过程。对中断和异常进行编号(中断表),编号对应特定地址,跳到处理历程,解决问题。
但是,中断打断了一个程序的正常执行,因此要设置保护与恢复机制

中断

  • 硬件: 设置中断标记(CPU初始化),将内部、外部事件设置中断标记,产生中断号,来找到对应的处理历程
  • 软件: 保存当前处理状态(便于程序从被打断的点继续执行);中断服务程序处理;清除中断标记;恢复之前保存的处理状态。因此,应用程序完全不用感知到中断的产生。

异常

得到异常编号:

  • 保存现场;
  • 异常处理(杀死了产生异常的程序or重新执行异常指令);
  • 恢复现场

系统调用

例:标准C库的例子。

  • 应用程序调用printf()时,会触发系统调用write()。

程序访问主要是通过高层次API接口而不是直接进行系统调用。例如:

  • Win32 API 用于 Windows
  • POSIX API 用于POSIX-based systems(包括UNIX,LINUX,Mac OS X的所用版本)
  • Java API用于JAVA虚拟机(JVM),JVM再访问Win32 API等

程序的用户态是指级别比较低的状态;
操作系统的内核态是等级最高的状态。

应用程序发出系统调用之后,要切换堆栈(操作系统堆栈与其不同),也要实现由用户态到内核态的转换

跨越操作系统边界更安全,但开销更大

  • 在执行时间上的开销超过程序调用
  • 开销有:
    • 建立中断/异常/系统调用号与对应服务
    • 建立内核堆栈
    • 验证参数(操作系统并不信任程序,要花费时间检查参数)
    • 内核态映射到用户态的地址空间,不能使用简单的改变指针的方法,要拷贝
    • 内核态独立地址空间 TLB

【操作系统/OS笔记03】启动、中断、异常和系统调用相关推荐

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

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

  2. 操作系统学习笔记-05-中断和异常

    操作系统学习笔记-2019 王道考研 操作系统-05-中断和异常 文章目录 5-中断和异常 5.1知识概览 5.2 中断机制的诞生 5.3中断概念和作用 5.4中断的分类 5.5 外中断的处理过程 5 ...

  3. 操作系统OS笔记(未完)

    硬件所做的事情 1.产生某种标记,比如中断标记 2.cpu得到这种标记后就会找到对应的中断处理然后告知操作系统 软件(操作系统) 1.保存当前程序状态,比如当前寄存器数据等等,以便中断结束后恢复 2. ...

  4. 【操作系统/OS笔记12】同步互斥的三种实现方法:禁用硬件中断、基于软件的解决方案、更高级的抽象

    本次笔记内容: 9.5 临界区 9.6 方法1:禁用硬件中断 9.7 方法2:基于软件的解决方案 9.8 方法3:更高级的抽象 文章目录 临界区 管理临界区的方法 方法1:禁用硬件中断 方法2:基于软 ...

  5. 【操作系统/OS笔记06】虚拟内存、覆盖、交换

    本次笔记内容: 5.1 虚拟内存的起因 5.2 覆盖技术 5.3 交换技术 5.4.1 虚存技术(上) 5.4.2 虚存技术(下) 文章目录 虚拟内存的起因 覆盖技术 产生 基本原理 存在问题 交换技 ...

  6. 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型

    本次笔记内容: 7.1 进程的定义 7.2 进程的组成 7.3 进程的特点 7.4 进程的控制结构 7.5 进程的生命期原理 7.6 进程状态变化模型 7.7 进程挂起 文章目录 进程的描述 进程(p ...

  7. 【操作系统/OS笔记02】操作系统的历史、操作系统结构

    本次笔记内容: 1.4 如何学习操作系统 1.5 操作系统的实例 1.6 操作系统的历史 1.7 操作系统结构 1.8 小结 文章目录 操作系统的大概分支 操作系统的历史和演变过程 操作系统结构 微内 ...

  8. 【操作系统/OS笔记01】课程概要、什么是操作系统

    本次笔记内容: 1.1 课程概述 1.2 什么是操作系统 1.3 为什么学习操作系统 文章目录 课程概要 纲要 实验工具 预备知识 操作系统 什么是操作系统? 操作系统包含什么 OS Kernel的特 ...

  9. 【操作系统/OS笔记20】打开文件、文件数据块分配、空闲空间管理、多磁盘管理(RAID)、磁盘调度算法概述

    本次笔记内容: 12.12 打开文件的数据结构 12.13 文件的分配 12.14 空闲空间列表 12.15 多磁盘管理-RAID 12.16 磁盘调度 文章目录 打开文件 何谓"打开文件& ...

最新文章

  1. 如何在NLP领域干成第一件事
  2. android 根目录缓存,Android系统中内部存储和外部存储(公有目录、私有目录、缓存目录)详解...
  3. thinkphp笔记
  4. 基于Mono跨平台移动应用开发框架发布Xamarin 3.0
  5. MVC模型构建管理系统
  6. php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码
  7. 信号与系统 chapter4 单位脉冲与单位阶跃序列
  8. c语言设计一维数组,一维数组 (1)C语言程序设计.pdf
  9. Python笔记-相关性分析(连续变量和分类变量)
  10. Redis之List类型操作
  11. 收获,不止SQL优化——抓住SQL的本质--第三章
  12. linux查找符合条件的文件并删除
  13. centos7安装便捷小工具命令
  14. python使用抓包工具Fiddler4和selenium获取国家药监局网站数据
  15. 算法导论第四版更新了什么?
  16. 没有公网ip怎么访问家里内网
  17. 拼音打字时不定时出现重复字母
  18. 计算机网络计算题:时延
  19. 2015浙大计算机考研,2015浙大计算机考研机试题解.pdf
  20. SharePoint2010资源库-视频库的使用

热门文章

  1. 解决Ubuntu “E: 软件包 vim 还没有可供安装的候选者“问题
  2. Emgu.CV.CvInvoke的类型初始值设定项引发异常
  3. ie不兼容的几个js问题及解决办法
  4. axios请求中跨域及post请求问题解决方案
  5. 第一次使用pyqt5解决的几个小问题
  6. CSS显示:内联vs内联块[重复]
  7. PHP期望T_PAAMAYIM_NEKUDOTAYIM?
  8. rosweb显示2d地图时,车在地图中的图形显示有时后特别大
  9. springBoot中shiro与Redis整合的配置文件
  10. 2020-12-02