美文网首页
2启动、中断、异常和系统调用

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

作者: 龟龟51 | 来源:发表于2017-10-25 21:55 被阅读0次

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Ԅ��

相关文章

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

    3.1BIOS 计算机体系结构概述 cpu加电执行的第一条指令是在内存中,内存分成RAM随机访问存储,还有一个RO...

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

    系统调用:给用户提供一个接口来访问内核,又不至于对内核产生安全问题。 外部设备键盘输入过快,数据存在缓冲区,中断告...

  • 进程切换和系统的一般执行过程

    进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回...

  • windows异常

    异常处理 异常和中断是由CPU触发的.操作系统怎么接收到异常的?IDT表, 操作系统在启动时,就会将中断处理的地址...

  • 2018/07/08

    系统,中断,异常,系统调用,内存分配。 今天07/09储存,特权级等

  • 二、中断,异常,系统调用

    1、中断由于外设等原因导致的中断,系统将设置中断标记,将内部和外部事件设置中断标记,中断事件将会有相应的ID标记;...

  • 操作系统的启动

    启动过程 先启动 BootLoader ,再由 BootLoader 将操作系统从磁盘加载到内存 系统调用、异常和...

  • 操作系统系列(二):启动、中断、异常、系统调用

    一、操作系统的启动: OS存放于磁盘(Disk);BIOS(基本IO处理系统): 开机后从特定内存地址开始执行,检...

  • 中断和系统调用

    中断和异常 中断本质 需要操作系统介入 ,开展管理工作 CPU状态从用户态转换为核心态核心态到用户态程序状态子(P...

  • 理解hello word汇编程序

    寄存器以及中断号对应表 eax(系统调用号)系统调用ebx(系统调用参数1)ecx(系统调用参数2)ecx(系统调...

网友评论

      本文标题:2启动、中断、异常和系统调用

      本文链接:https://www.haomeiwen.com/subject/ombcpxtx.html