02-操作系统的启动及中断异常调用

操作系统的启动

DISK磁盘是用于存放OS的,BIOS是基本的IO处理系统,当加电之后能够开始检测外设例如显卡等然后执行BIOS,当加载完成之后,从磁盘的第一个主引导扇区(512字节)去找BootLoader将之加载到内存中然后跳转到CS:IP=0000:7c00,并传递控制权,接下来由Boot
Loader找到OS,然后讲OS读到内存中并转交控制权。

定义

  • 系统调用(来源于应用程序): 应用程序主动向操作系统发出服务请求。
  • 异常(来源于应用程序):异常是来源于不良的应用程序的非法指令(内存出错等)
  • 中断(来源于外设): 中断是来自不同硬件设备到额计时器和网络的中断
    在计算机运行中,内核是被信任的第三方,出于于安全考虑应用程序不能直接操作外设,出于方便的角度,是为了由操作系统提供统一的对外接口。

中断操作:异步
异常操作:同步
系统调用:异步或同步

中断处理

硬件:设置中断标记【CPU初始化】

  1. 将内部、外部事件设置终端标记
  2. 中断事件的id
    软件(OS):
  • 保存当前处理状态
  • 中断服务程序处理(根据id查表)
  • 清楚中断标记
  • 恢复之前保存的处理状态

异常处理:异常编号

  • 保存现场(指令,以及地址等)
  • 异常处理:1、杀死产生异常的程序 2、重新执行异常指令
  • 恢复现场

系统调用

例如应用程序调用printf(),会触发操作系统调用Write().

  • 程序访问主要是通过高层次的API接口而不是直接进行系统调用
    Win32 API用于WIndows、POSIX API用于 POSIX-Based systems(包括unix、linux、macos所有版本)、 java API并不属于操作系统的接口而是用于JVM

用户态

应用程序执行时cpu所处于的一种特权状态。拥有较低的权限,不能直接访问机器指令和io

内核态

操作系统执行时cpu所处的状态。可以完全操控整个计算机

当产生系统调用时会完成用户态到内核态的权限。

跨越操作系统边界的开销

在执行时间上的开销超过程序调用
开销:建议中断/异常/系统调用号与对应服务映射关系初始化的开销、建立内核堆栈的开销、验证应用程序发出参数的开销、内核态映射到用户态的地址空间更新页面映射权限的开销、内核态独立地址空间TLB的开销

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。