操作系统 | 输入输出管理

文章目录

I/O设备的基本概念和分类

在这里插入图片描述

什么是I/O设备

在这里插入图片描述

在这里插入图片描述

I/O设备的分类

按使用特性

在这里插入图片描述

按传输速率分类

在这里插入图片描述

按信息交换的单位分类

在这里插入图片描述
在这里插入图片描述

I/O控制器

在这里插入图片描述

I/O设备的机械部件

在这里插入图片描述

I/O设备的电子部件(I/O控制器)

在这里插入图片描述

I/O控制器的组成

在这里插入图片描述
在这里插入图片描述

内存映像I/O v.s. 寄存器独立编址

在这里插入图片描述
在这里插入图片描述

I/O控制方式

在这里插入图片描述

程序直接控制方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中断驱动方式

在这里插入图片描述
在这里插入图片描述

DMA方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通道控制方式

  • 一个通道可以控制多个I/O控制器,而一个I/O控制器又可以控制多个I/O设备

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

I/O软件层次结构

在这里插入图片描述

用户层软件

在这里插入图片描述

设备独立性软件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设备驱动程序

在这里插入图片描述

中断处理程序

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

输入输出应用程序接口&驱动程序接口

在这里插入图片描述

输入/输出应用程序接口

在这里插入图片描述

字符设备接口&块设备接口

在这里插入图片描述

网络设备接口/网络套接字接口/socket接口

在这里插入图片描述
在这里插入图片描述

  • socket 网络套接字不太好理解,我们可以简单地把其理解称为一片内核空间里面的内核存储空间,这片空间会用于接收或者发送数据
  • socket系统调用会给用户返回一个描述符fd,我们可以把其理解为指向这个套接字的一个指针
  • 同时,我们在套接字创建之后需要使用bind 系统调用把这个套接字绑定到本地的某个端口上面

在这里插入图片描述

  • 现在两个主机都有了各自的套接字之后可以让主机1的这个p1进程使用connect 系统调用把本机的套接字连接到另一台机器的套接字上,比如可以把主机1的fd所指向的p1进程的套接字连接到具体ip地址的具体的端口上
  • connect 系统调用就会使得这两个套接字之间建立起一个连接(应用层),然后它们可以规定在传输层要使用的协议TCP/UDP

在这里插入图片描述

  • 现在p1想给p3发送一个数据包,那么p1首先会在自己的用户区准备好这个数据,然后使用write 系统调用指明我们现在要往fd所指向的这个套接字当中写入黄色的数据
  • 设备独立性软件接收到write系统调用之后,它就会把用户进程准备好的这块数据给复制到内核区,也就是套接字所对应的这片缓冲区当中

在这里插入图片描述

  • 接下来设备独立性软件这一层,它会调用网络控制器的驱动程序来处理这片数据,那这个驱动程序会负责把准备好的这一坨数据给它输出到网络设备上,接下来网络控制器就可以把这些数据包发到网络上面了

在这里插入图片描述

  • 数据包在网络上的传送就需要计网中所涉及的TCP/UDP协议,这里使用的是TCP/IP协议

在这里插入图片描述

  • 接下来数据包传送到对应目的设备的网络控制器上面之后,主机2会向主机发出一个中断信号,此时中断处理程序发现中断信号是来自于网络控制器,因此接下来会调用网络控制器的驱动程序,让驱动程序来把网络控制器里边收到的这些数据给它搬到内核的缓冲区里边
  • 所以此时接收到的数据会被放到指定的端口所对应的那一片内核缓冲区中,接下来p3这个进程它要接受一个网络数据包,只需要使用read系统调用指明我要从fd所对应的这个套接字对象当中读出一个数据包,然后设备独立性软件会从缓冲区里边把对应的数据复制到用户进程的用户区当中,这样用户进程就可以使用其收到的这一块数据了

在这里插入图片描述

阻塞I/O v.s. 非阻塞I/O

在这里插入图片描述

设备驱动程序接口

在这里插入图片描述
在这里插入图片描述

统一标准的设备驱动程序接口

在这里插入图片描述

I/O核心子系统

在这里插入图片描述

要在哪个层次实现这些功能?

在这里插入图片描述

I/O调度

在这里插入图片描述

设备保护

在这里插入图片描述
在这里插入图片描述

假脱机技术(SPOOLing技术)

  • 用软件方式实现的脱机技术

在这里插入图片描述

什么是脱机技术?

在这里插入图片描述
在这里插入图片描述

假脱机技术——输入井和输出井

  • 类比磁带

在这里插入图片描述
在这里插入图片描述

假脱机技术——输入进程和输出进程

  • 类比外围控制机

在这里插入图片描述
在这里插入图片描述

假脱机技术——输入/输出缓冲区

在这里插入图片描述

共享打印机原理分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备

在这里插入图片描述

设备的分配和回收

在这里插入图片描述

设备分配时应该考虑的因素

在这里插入图片描述

设备的固有属性

在这里插入图片描述

设备的分配算法

在这里插入图片描述

设备分配中的安全性

在这里插入图片描述

静态分配和动态分配

在这里插入图片描述

设备分配管理中的数据结构

在这里插入图片描述

设备控制表DCT

在这里插入图片描述

控制器控制表COCT

在这里插入图片描述

通道控制表CHCT

在这里插入图片描述

系统设备表SDT

在这里插入图片描述

设备分配的步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设备分配步骤的改进

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缓冲区管理

在这里插入图片描述

什么是缓冲区?

在这里插入图片描述

缓冲区有什么作用?

在这里插入图片描述

单缓冲

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

双缓冲

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用单缓冲/双缓冲在通信时的区别

在这里插入图片描述
在这里插入图片描述

循环缓冲区

在这里插入图片描述

缓冲池

  • 放满了各种各样的缓冲区的一个池子

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErizJ

觉得好的话给小弟一点鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值