现代操作系统——输入输出

前言:

     《现代操作系统》第四章,文件系统,感觉学习之后主要是对于各个文件系统的了解,不太好写一篇记录学习心得的博客,因此跳过了这一章,直接记录第五章所学。6y6y

我的github:

我实现的代码全部贴在我的github中,欢迎大家去参观(这一部分内容就没有github的代码了,毕竟是实验室的内容)。

https://github.com/YinWenAtBIT

I/O设备:

简介:

一、设备分类

1. IO设备大致可以分成两类:

块设备和字符设备,块设备传输以块为单位,磁盘,CD和USB盘都是常见的块设备。

2. 设备控制器:

IO设备一般有机械部件和电子部件两部分组成。电子部件一般称作设备控制器。

3. 内存映射IO:

每个控制器都有几个寄存器用来与CPU进行通信,通过写入这些寄存器,操作系统可以命令设备发送数据,接收输出,开启或者关闭。除了这些寄存器以外,许多设备还有一个操作系统可以读写的数据缓冲区。

CPU与设备的缓冲区进行通信有两种办法:

a. 通过给每个控制寄存器一个IO端口号,形成IO端口空间。

b. 通过将控制寄存器映射到内存空间内。

4. 直接存储器存取:

CPU可以从IO控制器每次请求一个字节的数据,但是这样做浪费CPU的时间,所以精彩用到一种称为直接存储器存取的方案(DMA),无论DMA控制器在物理上处于什么地方,它都能够独立于CPU而访问系统总线。

二、IO软件原理

1. 设备独立性:

设计IO软件可以访问任意IO设备而无需事先指定设备。

2. 同步和异步传输:

大多数的物理IO是异步的。

3. 缓冲问题:

数据离开一个设备之后通常不能直接存放到其最终的目的地。

4. IO实现方式:

有三种不同方式:

a. CPU做全部工作,这种叫做程序控制IO

b. 中断驱动IO

c. 使用DMA的IO

二、IO软件层次


1. 中断处理程序:

2. 设备驱动程序:

每个连接到计算机的IO设备都需要有某些设备特定的代码来对其进行控制。这样的代码称为设备驱动程序。

为了访问设备的硬件(意味着访问设备控制器的寄存器),设备驱动程序通常必须是操作系统内核的一部分。操作系统通常将驱动程序归类于少少数的类别之一,最为通用的是块设备和字符设备。

驱动程序必须是可重入的。

3. 与设备无关的IO软件:

a. 设备驱动程序的同一接口

b. 提供缓冲

c. 错误报告

d. 分配与释放专用设备

e. 与设备无关的块大小

4. 用户控件的IO软件:

尽管大部分IO软件都在操作系统内部,仍然有一小部分在用户空间

总结:

这一章中,主要学习的是IO软件设计部分的理念,在其后有对于硬盘,时钟,界面等介绍,就未仔细去阅读了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值