启动,中断,异常和系统调用

一. 计算机系统启动过程
CPU加电之后,第一条指令在哪里?
(内存分成RAM和ROM,ROM大小大约1M左右,这就是我们熟知的BIOS固件)
根据CS和IP寄存器的值,求出执行的第一条指令的位置。

PC就是访问的第一条指令的起始位置,PC换算出的物理地址为0xFFFF0,这个地址就是1MB往下16字节的位置。
这块代码它为了从磁盘上读数据,BIOS里需要提供这样一些功能,分别为:
1.基本的输入输出
2.然后系统的配置信息
3.开机自检程序
4.系统自启动程序
依据这些设置,系统执行它的启动程序。就是把硬盘里的加载程序和操作系统内容先后加载到cpu当中当中来。
在这里插入图片描述
具体过程:
在BIOS初始化完成之后,BIOS它就会从磁盘上把引导散区的程序(
引导散区长度512字节) 读取到cpu的指定位置0x7C00。然后cpu就跳转到该固定位置,把控制权转到从磁盘上读进来的这个程序,我们称他为 “加载程序”(Bootloader)。Bootloader将操作系统的代码从硬盘读到内存里头来,并且能把控制权交给操作系统,跳到OS的起始地址来继续执行操作系统功能,这样OS就可以在内存中进行必要工作。

二. 中断,异常和系统调用
前面提到,控制权转给操作系统内核,但是在操作系统内核之上还有很多的应用程序,可以信任的内核必须对外界提供某种访问的接口,另外我们需要提出中断机制,当外设与系统有交互的时候需要知道怎么来处理,还有应用程序在执行过程当中对于意外的情况要知道怎么来处理。操作系统内核和外界打交道基本上就是中断,异常和系统调用。
1.中断,异常,系统调用之比较
中断:是外设对操作系统提出的处理请求。
异常:是非法指令或者其他原因导致的指令执行失败之后的处理请求,处理方法可能会是说我终止程序,也可能会是说解决遇到的问题之后重新执行这条指令。
系统调用:应用程序主动向操作系统发出的服务请求。
在这里插入图片描述
这里的同步和异步是指:函数或方法被调用的时候,调用者是否得到最终结果。直接得到最终结果的,就是同步调用。不直接得到最终结果的,就是异步调用。
2.中断和异常处理机制
硬件上:
(1)在CPU做初始化的时候要对中断使能,使能之后我才能够进行中断的处理。
(2)依据外部/内部事件,外设产生中断标记,CPU根据中断标记产生中断号,把中断号发给操作系统
(3)操作系统根据中断号查询到中断服务例程的起始地址,跳到地址执行。
软件上(中断):
(1)保存当前处理状态
(2)中断服务例程处理
(3)清除中断标记
(4)恢复之前保存的处理状态
软件上(异常):
(1)保存现场
(2)异常处理:杀死产生异常的程序/重新执行异常指令
(3)恢复现场
3.系统调用的概念及实现
在这里插入图片描述
在这里插入图片描述
4.程序调用和系统调用不同之处
在这里插入图片描述
用户态和内核态是CPU的两个不同工作状态。CPU的工作状态,内核态可以执行更高等级的指令,例如控制磁盘、屏幕等IO,读写整个内存等等,用户态只能执行有限的指令,比如±*/运算。
所谓的进入内核态,就是CPU进入更高特权级的工作模式
5.系统调用开销
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值