操作系统基础:IO管理概述【上】

在这里插入图片描述

在这里插入图片描述

个人主页:godspeed_lucip
系列专栏:OS从基础到进阶

本文完整PDF源文件请翻阅至文章底部下载。


  • 1 I/O设备的基本概念与分类
    • 1.1 总览
    • 1.2 什么是IO设备
    • 1.3 IO设备的分类
      • 1.3.1 按使用特性
      • 1.3.2 按传输速率
      • 1.3.3 按信息交换的单位
    • 1.4 总结
  • 2 I/O软件基本层次结构
    • 2.1 基本架构
    • 2.2 用户层软件
      • 2.2.1 主要的功能
      • 2.2.2 例子
    • 2.3 设备独立性软件
      • 2.3.1 解释
      • 2.3.2 主要的功能
    • 2.4 设备驱动程序
      • 2.4.1 什么是驱动程序?
      • 2.4.2 为什么要有驱动程序?
      • 2.4.3 驱动程序的功能
      • 2.4.4 注意
    • 2.5 中断处理程序
      • 2.5.1 解释
      • 2.5.2 处理流程
    • 2.6 总结
  • 3 输入输出应用接口与设备驱动接口
    • ️3.1 总览
    • ️3.2 输入输出应用程序接口
      • ️3.2.1 为什么要有应用程序接口?
      • ️3.2.2 字符设备接口
      • ️3.2.3 块设备接口
      • ️3.2.4 网络设备接口
    • ️3.3 阻塞与非阻塞I/O
      • ️3.3.1 阻塞I/O
      • ️3.3.2 非阻塞I/O
    • ️3.4 设备驱动程序接口
      • ️3.4.1 解释
  • 4 总结


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

1.1 总览

操作系统基础:IO管理概述【上】_第1张图片

1.2 什么是IO设备

操作系统基础:IO管理概述【上】_第2张图片
注意:
UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用文件操作相同的方式对外部设备进行操作

1.3 IO设备的分类

1.3.1 按使用特性

操作系统基础:IO管理概述【上】_第3张图片

1.3.2 按传输速率

操作系统基础:IO管理概述【上】_第4张图片

1.3.3 按信息交换的单位

操作系统基础:IO管理概述【上】_第5张图片

1.4 总结

操作系统基础:IO管理概述【上】_第6张图片

2 I/O软件基本层次结构

2.1 基本架构

操作系统基础:IO管理概述【上】_第7张图片

2.2 用户层软件

2.2.1 主要的功能

(1) 实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。
(2)用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务

2.2.2 例子

例如C语言中的"printf(“Hello\n”)",printf就是方便用户使用的库函数,而它会被翻译成write系统调用。
对于一些需要参数的系统调用,用户在使用库函数时显然也应该填入相应的参数。

2.3 设备独立性软件

2.3.1 解释

操作系统基础:IO管理概述【上】_第8张图片
这一层会向用户层提供系统调用的接口,所以有时候也被成为系统调用层。

2.3.2 主要的功能

(1)向上层(用户层)提供统一的调用接口
比如read、write系统调用

(2)设备的保护
原理类似于文件保护。设备被看做是一种特殊的文件(UNIX系统中),不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。

(3)差错处理
设备可能会出错,因此设备独立性软件需要对一些设备的错误进行处理

(4)设备的分配与回收
设备属于一种临界资源,对临界资源的分配和回收是相当重要的。

(5)数据缓冲区管理
通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异

(6)建立逻辑设备名到物理设备名的映射关系
①解释
操作系统基础:IO管理概述【上】_第9张图片
②逻辑设备表的基本结构
操作系统基础:IO管理概述【上】_第10张图片
③管理逻辑设备表的方法

image5根据设备类型选择调用相应的驱动程序

驱动程序的说明见下第四大点

2.4 设备驱动程序

2.4.1 什么是驱动程序?

简单来说,就是驱动计算机里软件的程序

2.4.2 为什么要有驱动程序?

不同设备的内部结构也不同,其内部硬件特性也不同。而这些特性、结构只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作,程序才可以正常运行。

2.4.3 驱动程序的功能

image6

2.4.4 注意

驱动程序一般会以一个独立进程的方式存在。

2.5 中断处理程序

2.5.1 解释

image7

2.5.2 处理流程

操作系统基础:IO管理概述【上】_第11张图片

2.6 总结

操作系统基础:IO管理概述【上】_第12张图片

3 输入输出应用接口与设备驱动接口

️3.1 总览

操作系统基础:IO管理概述【上】_第13张图片

️3.2 输入输出应用程序接口

️3.2.1 为什么要有应用程序接口?

不同类型设备的I/O操作的细节是不同的,因此无法使用一个统一的接口对所有的设备进行调用。
我们之前已经学习过I/O软件的层次结构,设备独立软件层的任务之一就是给用户层提供标准的接口。

️3.2.2 字符设备接口

比如:键盘
操作系统基础:IO管理概述【上】_第14张图片

️3.2.3 块设备接口

操作系统基础:IO管理概述【上】_第15张图片

️3.2.4 网络设备接口

(1)解释
操作系统基础:IO管理概述【上】_第16张图片
(2)主机之间通信过程描述
①主机1、主机2中的一个进程使用socket系统调用,创建一个网络套接字(可以理解为在内核区申请一片空间)。套接字会绑定主机的一个端口(bind系统调用)。

②发送方主机1中使用write系统调用向内存中写入一些数据。并将数据移入网卡进行发送,这个过程需要 “设备无关性软件” 调用 “网络控制器驱动程序”

③主机1在发送之前显然已经知道主机2的socket套接字绑定的端口(可以通过一些协议实现)。结合IP地址及端口,主机1的数据就可以精确发送到主机2中。

④主机2收到数据后通过网卡将其存在内存中,这个过程需要“中断处理程序”调用“网络控制器驱动程序”。进程使用read系统调用进行读取。

(3)示意图
操作系统基础:IO管理概述【上】_第17张图片

️3.3 阻塞与非阻塞I/O

️3.3.1 阻塞I/O

应用程序发出I/O系统调用,进程需转为阻塞态等待。比如说:C语言中的scanf函数,只要键盘没有输入字符,那么程序就不会往下继续执行,也就是被阻塞了。

️3.3.2 非阻塞I/O

应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。比如说:在块设备接口往磁盘写数据的过程中,只要块设备将数据复制到内核中去了,那么就可以交给内核执行,而自己就可以进行其他的工作。

️3.4 设备驱动程序接口

️3.4.1 解释

不同厂商生产的I/O设备的结构不同,其驱动程序也不同。可能相同的系统调用但是其参数又不一致。这样,设备独立层软件在享受驱动程序提供的服务时就会出现问题。
操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备驱动程序。

4 总结

本文PDF文件下载链接:提取码:ikun

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。

操作系统基础:IO管理概述【上】_第18张图片

在这里插入图片描述

你可能感兴趣的:(microsoft)