IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> DOS中断/ BIOS中断 -> 正文阅读

[系统运维]DOS中断/ BIOS中断

目录

前言

一、中断简介

1.1 中断信息

1.2 内中断

1.3 外中断

二、中断服务程序

2.1 BIOS中断

2.2 DOS中断

三、系统调用

3.1 操作系统为什么要提供系统调用?

3.2 操作系统如何进行权限限制

3.3?如何访问内核函数

总结


前言

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。


提示:以下是本篇文章正文内容,下面案例可供参考

一、中断简介

????????执行完当前指令后,检测到从CPU内部或者外部发送过来的中断信息,并且可以立即对所接受到的信息进行处理;

1.1 中断信息

????????中断信息根据来自CPU内部和外部分为:内中断和外中断

1.2 内中断

? ? ? ? (1)硬件故障:断电等

????????(2)软件异常:缺页、除法错误、溢出等

????????(3)调用int指令引发中断

? ? ? ? ? 例:BIOS中中断处理程序的形式提供了微机中基本I/O设备的控制程序,称为"BIOS中断",应用程序可以用"INT n"指令调用这些程序。?

1.3 外中断

? ? ? ? 外部中断是实时地处理外部事件的一种内部机制。当某种外部事件发生时,中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。

? ? ? ? 例:鼠标、键盘引起的中断;

二、中断服务程序

????????通过执行事先编好的某个特定程序,用来处理中断信息的程序。

?

2.1 BIOS中断

????????BIOS中,以中断处理程序的形式提供了计算机中基本I/O设备的控制程序,称为"BIOS中断",应用程序可以用"INT n"指令调用这些程序。

例:"int 0x13h" BIOS提供给程序控制磁盘IO资源;?

2.2 DOS中断

????????程序运行的主要软件环境是操作系统。

????????操作系统为程序运行提供基本的服务,如,程序的装入、结束,内存的分配,文件管理等。以DOS操作系统为例,它也以中断处理程序的形式提供这些服务,称为"DOS中断",?应用程序也用"INT n"指令调用这些服务。

? ? ? ? 也可称为:操作系统提供系统调用(接口)来供上层应用来和操作系统交互,进而控制系统资源。

例:如计算机应用程序用 “ int 0x80h” 或者 “ int 0x21h”,通过操作系统提供的系统调用来操作计算机资源;

类型号中断处理程序功能类型号中断处理程序功能

0

除数为0中断

1

单步中断

2

NMI中断

3

断点中断

4

溢出中断

5

打印屏幕

6

保留

7

保留

8

定时中断( 中断)

9

键盘中断( 中断)

A

保留( 中断)

B

串行口COM2( 中断)

C

串行口COM1( 中断)

D

硬盘中断( 中断)

E

软盘中断( 中断)

F

打印机中断( 中断)

10

CRT显示驱动程序

11

设备检测

12

存储器容量检测

13

磁盘I/O驱动程序

14

RS-232 I/O驱动程序

15

磁带机I/O处理

16

键盘I/O驱动程序

17

打印机驱动程序

18

ROM BASIC

19

系统引导

1A

BIOS日期、时钟中断

1B

BIOS提供的Ctrl_Break处理

1C

定时器时标(54.9ms)

1D

CRT初始化参数表

1E

磁盘参数

1F

图形字符集

20

程序结束

21

DOS系统功能调用

22

结束地址

23

DOS的Ctrl_Break处理

24

严重错误处理

25

磁盘顺序读

26

磁盘顺序写

27

程序结束且驻留(TSR)

28~2E

为DOS保留

2F

DOS内部使用

30~3F

DOS保留

40~7F

未用

80~85

BASIC保留

86~F0

BASIC使用

F0~FF

未用

/

/

三、系统调用

????????通过执行事先编好的某个特定程序,用来处理中断信息的程序。

3.1 操作系统为什么要提供系统调用?

? ? ? ? 为防止用户程序随意对操作系统内核区域的访问与操作,操作系统进行权限控制;

3.2 操作系统如何进行权限限制

????????操作系统将内存区域分为了用户态和内核态,由于CS:IP是当前的指令,所以使用CS的最低两位来表示: 0是内核态,3是用户态。
????????每次访问时,目的指令的DPL >= 当前指令的CPL时才能访问,内核段的DPL都是为0(在初始化阶段DPL就都置成了0) 这样内核态可以访问任何数据,用户态不能访问内核数据。通过DPL和CPL就实现了用户态无法直接访问内核态的内容

DPL是目标内存段的特权级; CPL是当前内存段的特权级

?3.3?如何访问内核函数

? ? ? ? 操作系统提供了中断指令int 0x80(DOS系统调用)来主动进入内核,这是用户程序发起的调用访问内核代码的唯一方式;

  • 用户程序中包含一段包含int指令的代码,通常是由库函数通过内联汇编插入
  • 操作系统根据编号(选择对应的系统调用函数)执行相应的代码

调用系统函数时会通过内联汇编代码插入int 0x80的中断指令,(不仅会插入中断指令,还会将系统调用编号设置给 %eax 寄存器)

核心:内核接收到int 0x80中断后,需要查询IDT表来取出中断处理函数地址,此处不同与其他操作系统区域的代码,int 0x80的idt表中的DPL被设置成了3,所以能从用户态能直接访问int 0x80的中断指令的(唯一入口)然后将CPL修改为0(访管指令),后续就可以正常访问内核代码。
?

?图为 IDT表结构

void sched_init(void)
{set_system_gate(0x80, &system_call)}
在linux/include/asm/system.h中
#define set_system_gate(n, addr) \
_set_gate(&idt[n],15,3,addr); //idt是中断向量表基址 
#define _set_gate(gate_addr, type, dpl, addr)\ 
__asm__(“movw %%dx,%%ax\n\t” “movw %0,%%dx\n\t”\ 
“movl %%eax,%1\n\t” “movl %%edx,%2”:\ 
:”i”((short)(0x8000+(dpl<<13)+type<<8))),“o”(*(( \ 
char*)(gate_addr))),”o”(*(4+(char*)(gate_addr))),\
“d”((char*)(addr),”a”(0x00080000))

注:这是一段在系统初始化阶段执行的代码,主要工作是用来设置0x80的中断处理IDT表项,设置相应的&system_call入口函数的地址。并且注意到这里面会将0x80的IDT表项的DPL设置为3,这样CPL=3用户态的程序就能进入,跳入IDT表之后,段选择符是8,将段和偏移设置为新的pc,cs=8,ip=&system_call,这个cs=8 还要再找gdt表,就是从内核0位开始,此时CPl已经变成了0。也就完成了特权级的转化。再下一步,在system_call中会根据%eax中跳转到相应的处理函数执行,这样就完成了一个系统函数的调用过程

总结

????????Linux的系统调用通过int 80h实现,用系统调用号来区分入口函数。 操作系统实现系统调用的基本过程是:

  1. ? ? ? 应用程序调用库函数(API);
  2. ? ? ? API将系统调用号存入EAX,然后通过中断调用使系统进入内核态;
  3. ? ? ? 内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);
  4. ? ? ?系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数;
  5. ? ? ?中断处理函数返回到API中;
  6. ? ? ?API将EAX返回给应用程序。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 23:07:26  更:2021-07-22 23:07:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:13:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计