2启动、中断、异常和系统调用

3.1BIOS

计算机体系结构概述

cpu加电执行的第一条指令是在内存中,内存分成RAM随机访问存储,还有一个ROM只读存储,rom中还有一些原来写入的一些内容,这些内容系统初始化代码就从那里开始执行

启动时计算机内存和磁盘布局

加载程序的内存地址空间

加载程序读操作系统,再把相应的控制权转到读进来的操作系统内核代码上,操作系统就可以开始运行的

BIOS系统调用 (提供功能)

■BIOS以中断调用的方式 提供了基本的I/O功能

INT 10h:字符显示

INT 13h:磁盘扇区读写

INT 15h:检测内存大小

INT 16h:键盘输入

■只能在x86的实模式下访问(限制)

3.2系统启动流程

主引导记录着从哪个文件系统里去读加载程序,有了主引导记录之后,然后就进到当前哪个分区里面,分区里面又有一个分区的引导扇区,这个活动分区的引导扇区再来加载之前那个加载程序(BootLoader)

CPU初始化

CPU初始化之后,根据代码段段寄存器和当前指令指针寄存器这两个的内容,算出来它的第一条指令在内存当中的什么地方

■CPU加电稳定后从0XFFFF0读第一条指令

CS:IP = 0xf000:fff0

第一条指令是跳转指令

■CPU初始状态为16位实模式

CS:IP是16位寄存器

指令指针PC = 16*CS+IP

最大地址空间是1MB(因为是20为的地址)

BIOS初始化过程

■硬件自检POST

■检测系统中内存和显卡等关键部件的存在和工作状态

■查找并执行显卡等接口卡BIOS,进行设备初始化;(设备自身有初始化程序)

■执行系统BIOS,进行系统检测;

检测和配置系统中安装的即插即用设备;

■更新CMOS中的扩展系统配置数据ESCD(配置表,每次加电都会更新插入和拔出的卡)

■按指定启动顺序从软盘、硬盘或光驱启动(设置启动顺序来读进第一块扇区)

主引导记录MBR格式

■启动代码:(只有)446字节(因为分区的信息也要存在512字节中)

检查分区表正确性

加载并跳转到磁盘上的引导程序

■硬盘分区表:64字节

描述分区状态和位置

每个分区描述信息占据16字节

■结束标志字:2字节(55AA)

主引导记录的有效标志

分区引导扇区格式

■跳转指令:跳转到启动代码(cpu不一样,指令也是不一样的)

与平台相关代码

■文件卷头:文件系统描述信息

■启动代码:跳转到加载程序(存在硬盘上可以改动)

■结束标志:55AA

加载程序(bootloader)

配置文件,不同系统这个文件格式是不一样的,依据这个选择你启动的这种参数,比如说我是在正常启动,还是说我是在安全模式启动,还是说我是在一个调试状态下启动我的系统,那这些区别都会读出来之后,它导致我在加载内核的时候的一些内核会不一样,或者说我加载的时候的参数会不一样,依据配置去加载内核

系统启动规范

■BIOS

固化到计算机主板上的程序

包括系统设置、自检程序和系统自启动程序

BIOS-MBR、BIOS-GPT、PXE(GPT,全局唯一标识分区表,可以描述更多分区(四个以上))

■UEFI(统一可扩展固件接口)

接口标准

在所有平台上一致的操作系统启动服务

扩展:可信流

3.3中断、异常和系统调用比较

背景

■为什么需要中断、异常和系统调用

在计算机运行中,内核是被信任的第三方

只有内核可以执行特权指令

方便应用程序

■中断和异常希望解决的问题(用于解决意外的情况)

当外设连接计算机时,会出现什么现象?

当应用程序处理意想不到的行为时,会出现什么现象?

■系统调用希望解决的问题

用户应用程序是如何得到系统服务?

系统调用和功能调用的不同之处是什么?

内核的进入与退出

中断、异常和系统调用

■系统调用(system call)

应用程序主动向操作系统发出的服务请求

■异常(exception)

非法指令或者其他原因导致当前指令执行失败(如:内存出错)后的处理请求

■中断(hardware interrupt)

来自硬件设备的处理请求

中断可以满足应用程序,外部设备或者程序执行异常的服务请求

中断、异常和系统调用比较

■源头

中断:外设

异常:应用程序意想不到的行为(可能内部也可能外部)

系统调用:应用程序请求操作提供响应方式服务

■响应方式

中断:异步

异常:同步

系统调用:异步或同步

■处理机制

中断:持续,对用户应用程序是透明的

异常:杀死或者重新执行意想不到的应用程序指令

系统调用:等待和持续

中断处理机制

硬件处理

■在CPU初始化时设置中断使能标志

依据内部或外部事件设置中断标志

依据中断向量调用相应中断

服务例程

中断和异常处理机制

软件

现场保存(编译器)

中断服务处理(服务例程)

清除中断标记(服务例程)

现场恢复(编译器)

中断嵌套

■硬件中断服务例程可被打断

不同硬件中断源可能硬件中断处理时出现

硬件中断服务例程中需要临时禁止中断请求

中断请求会保持到CPU做出响应

■异常服务例程可被打断

异常服务例程执行时可能出现硬件中断

■异常服务例程可嵌套(异常中还可以出现异常)

异常服务例程可能出现缺页

3.4系统调用

■操作系统服务的编程接口

■通常由高级语言编写(C或者C++)

■程序访问通常是通过高层次的API接口而不是直接进行系统调用

■三种最常用的应用程序编程接口(API)

Win32 API用于Windows

POSIX API用于POSIX-based systems (包括UNIX,LINUX,Mac OS X的所有版本)

Java API用于JAVA虚拟机(JVM)

系统调用的实现

■每个系统调用对应一个系统调用号

·系统调用接口根据系统调用号来维护表的索引

■系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果

■用户不需要知道系统调用的实现

·需要设置调用参数和获取返回结果

·操作系统接口的细节大部分都隐藏在应用编程接口后

通过运行程序支持的库来管理

函数调用和系统调用的不同处

系统调用与函数调用的堆栈不一样,系统调用可以用特权操作

■系统调用

·INT和IRET指令用于系统调用

■系统调用时,堆栈切换和特权级的转换

■函数调用

·CALL和RET用于常规调用

常规调用时没有堆栈切换

中断、异常和系统调用的开销

■超过函数调用

■开销:

·引导机制

·建立内核堆栈

·验证参数(参数的有效性合法性是需要做验证的)

·内核态映射到用户态的地址空间

更新页面映射权限

·内核态独立地址空间(TLB)

系统调用示例

000pt;" � 2Ԅ��

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容