码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 操作系统 | 输入输出管理


    文章目录

      • 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软件层次结构
        • 用户层软件
        • 设备独立性软件
        • 设备驱动程序
        • 中断处理程序
      • 输入输出应用程序接口&驱动程序接口
        • 输入/输出应用程序接口
          • 字符设备接口&块设备接口
          • 网络设备接口/网络套接字接口/socket接口
        • 阻塞I/O v.s. 非阻塞I/O
        • 设备驱动程序接口
        • 统一标准的设备驱动程序接口
      • I/O核心子系统
        • 要在哪个层次实现这些功能?
        • I/O调度
        • 设备保护
      • 假脱机技术(SPOOLing技术)
        • 什么是脱机技术?
        • 假脱机技术——输入井和输出井
        • 假脱机技术——输入进程和输出进程
        • 假脱机技术——输入/输出缓冲区
        • 共享打印机原理分析
      • 设备的分配和回收
        • 设备分配时应该考虑的因素
          • 设备的固有属性
          • 设备的分配算法
          • 设备分配中的安全性
        • 静态分配和动态分配
        • 设备分配管理中的数据结构
          • 设备控制表DCT
          • 控制器控制表COCT
          • 通道控制表CHCT
          • 系统设备表SDT
        • 设备分配的步骤
        • 设备分配步骤的改进
      • 缓冲区管理
        • 什么是缓冲区?
        • 缓冲区有什么作用?
        • 单缓冲
        • 双缓冲
        • 使用单缓冲/双缓冲在通信时的区别
        • 循环缓冲区
        • 缓冲池

    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

    在这里插入图片描述

    设备分配的步骤

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

    设备分配步骤的改进

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

    缓冲区管理

    在这里插入图片描述

    什么是缓冲区?

    在这里插入图片描述

    缓冲区有什么作用?

    在这里插入图片描述

    单缓冲

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

    双缓冲

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

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

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

    循环缓冲区

    在这里插入图片描述

    缓冲池

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

    在这里插入图片描述

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

  • 相关阅读:
    二十三、【五种图层】
    Android系统编译
    媒介盒子:品牌宣传的内容输出逻辑是什么
    Spring5完整版详解
    高防服务器给企业带来的优势有哪些?
    Python:为何成为当下最热门的编程语言?
    每日一问:Java中接口和抽象类的区别
    1.4_5 Axure RP 9 for mac 高保真原型图 - 案例4 【旋转的唱片2】计时器
    C#类与类库调用注意事项
    Day14-商品列表-上拉加载更多商品
  • 原文地址:https://blog.csdn.net/weixin_44043952/article/details/126553110
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号