《一个操作系统的实现》笔记(3)--中断和I/O保护


中断和异常机制

有时候普通的程序流必须可以被要求快速反应的处理事件中断。电脑提供了一个称为中断的结构来处理这些事件。 外部中断由CPU的外部引起。 例如:当一个鼠标移动了,硬件鼠标中断现在的程序来处理鼠标移动(移动鼠标,等等)。中断导致控制权转移到一个中断处理程序。中断处理程序是处理中断的程序。每种类型的 中断都分配了一个中断号。在物理内存的开始处,存在一张包含中断处理 程序段地址的中断向量 表。中断号是这张表中最基本的指针。 内部中断由CPU的内部引起,要么是由一个错误引起,要么由中断指令引 起。错误中断称为陷阱。由中断指令引起的中断称为软中断。DOS使 用这些类型的中断来实现它的API。 许多中断处理程序当它执行完成时,将控制权返回给被中断的程序。它 们恢复寄存器,里面的值与中断发生之前的值相同。因此,被中断的程序 就像没有任何事情发生一样运行(除了它失去了一些CPU周期)。

在实模式下能用的BIOS中断在保护模式下已经不能用了,实模式下的中断向量表被保护模式下的IDT所代替。 IDT的作用是将每一个中断向量和一个描述符对应起来。 联系调用门我们知道,其实中断门或者任务门的作用机理几乎是一样的,只不过使用调用门时使用call指令,而这里我们使用int指令。 中断过程调用:

中断门和陷阱门的结构:

外部中断需要建立硬件中断与向量号之间的对应关系,由CPU的引脚INTR来接收:

8259A是可编程中断控制器,通过向相应的端口写入特定的ICW(Initialization Command Word)来实现的,在写入ICW2时涉及与中断向量号的对应,这里IRQ8~IRQ15被设置成对应中断向量28h~2Fh,这个范围处于用户定义的中断向量。

Init8259A:
    mov al, 011h
    out 020h, al    ; 主8259, ICW1.
    call    io_delay

    out 0A0h, al    ; 从8259, ICW1.
    call    io_delay

    mov al, 028h    ; IRQ8 对应中断向量 0x28
    out 0A1h, al    ; 从8259, ICW2.
    call    io_delay
    ;...

中断或异常发生时的堆栈


保护模式下的I/O

保护模式下对I/O做了限制,用户进程如果不被许可是无法进行I/O操作的。主要通过IOPL和I/O位图来实现。

IOPL

IOPL位于寄存器eflags的第12、13位。 I/O敏感指令如in、out等只有在CPL<=IOPL时才能执行。

I/O许可位图

I/O许可位图位于TSS偏移102字节处,每一位表示一个字节的端口地址是否可用。


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

Linux 远程登录:Xshell、SecureCRT、Putty

       Alt + Enter -- 全屏   Alt + B --打开新的连接   Alt + 1/2/3/4/5.../9 -- 切换到第1/2/...

7542
来自专栏技术博文

linux ssh安全设置

修改ssh端口号: Port 8622 指定要绑定的网络接口,默认是监听所有接口,建议绑定到内网通讯的网卡地址 ListenAddress 192.168.1...

3666
来自专栏蘑菇先生的技术笔记

WSL与Windows交互实践

7167
来自专栏安恒信息

邮箱安全服务第6期 | 邮箱自身系统安全的防御部署实践

前面几期我们介绍的是发现邮箱安全问题和分析问题,本期我们介绍一下邮箱系统安全防御及加固手段,可以重点解决邮箱系统通用应用漏洞缺陷防护和邮箱反入侵问题。为解决邮箱...

2876
来自专栏Linux启动过程

基于Linux的pc启动过程

作为一个Android开发者,了解整个系统架构是必须的,所以这篇就总结一下Android手机从按下开机键到启动这一过程发生了什么。

1870
来自专栏网络

从零开始搭建Nginx和Tomcat的web集群环境

一直以来对于web服务器对tomcat还是很熟悉了,但是很对于nginx还是有些陌生,一看到nginx的配置就让人有一种莫名的排斥,这就是对于陌生的恐惧,我们今...

2167
来自专栏北京马哥教育

Kubernetes框架概览

Kubernetes是什么 Kubernetes是互联网巨头Google推出的一款开源的容器集群管理工具。下面分别对这里面提到的概念做点解释: 容器 容器技术...

4037
来自专栏惨绿少年

KVM 虚拟化技术

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等...

4522
来自专栏张善友的专栏

IIS 7.0的六大安全新特性为你的Web服务器保驾护航

文章来自:WindowsITPro  2009年2月期 当你启用一台Web服务器的时候,你就把你公司的一部分完全展现给了公众,任凭他人摆布。Web服务器上的那些...

23210
来自专栏惨绿少年

KVM 虚拟化技术

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等...

6713

扫码关注云+社区

领取腾讯云代金券