操作系统基础:IO核心子系统【下】

🌈个人主页:godspeed_lucip

🔥 系列专栏:OS从基础到进阶

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


  • [⚕️1 I/O核心子系统------概述](#⚕️1 I/O核心子系统——概述)
    • [🔱1.1 核心子系统要完成的功能](#🔱1.1 核心子系统要完成的功能)
      • [📽️1.1.1 假脱机技术](#📽️1.1.1 假脱机技术)
      • [📽️1.1.2 I/O调度](#📽️1.1.2 I/O调度)
      • [📽️1.1.3 设备保护](#📽️1.1.3 设备保护)
      • [📽️1.1.4 设备分配与回收](#📽️1.1.4 设备分配与回收)
      • [📽️1.1.5 缓冲区管理(缓冲与高速管理)](#📽️1.1.5 缓冲区管理(缓冲与高速管理))
    • [🔱1.2 注意](#🔱1.2 注意)
  • [⚕️2 缓冲区管理](#⚕️2 缓冲区管理)
    • [⚜️2.1 总览](#⚜️2.1 总览)
    • [⚜️2.2 缓冲区的定义与作用](#⚜️2.2 缓冲区的定义与作用)
      • [⚖️2.2.1 什么是缓冲区](#⚖️2.2.1 什么是缓冲区)
      • [⚖️2.2.2 缓冲区的作用](#⚖️2.2.2 缓冲区的作用)
    • [⚜️2.3 单缓冲管理方法](#⚜️2.3 单缓冲管理方法)
      • [⚖️2.3.1 什么是单缓冲策略](#⚖️2.3.1 什么是单缓冲策略)
      • [⚖️2.3.2 注意](#⚖️2.3.2 注意)
      • [⚖️2.3.3 CPU处理一块数据的平均时间](#⚖️2.3.3 CPU处理一块数据的平均时间)
    • [⚜️2.4 双缓冲管理方法](#⚜️2.4 双缓冲管理方法)
      • [⚖️2.4.1 什么是双缓冲](#⚖️2.4.1 什么是双缓冲)
      • [⚖️2.4.2 CPU处理一块数据的平均时间](#⚖️2.4.2 CPU处理一块数据的平均时间)
    • [⚜️2.5 使用单/双缓冲在通信时的区别](#⚜️2.5 使用单/双缓冲在通信时的区别)
      • [2.5.1 使用单缓冲](#2.5.1 使用单缓冲)
      • [💣2.5.2 使用双缓冲](#💣2.5.2 使用双缓冲)
    • [⚜️2.6 循环缓冲区](#⚜️2.6 循环缓冲区)
      • [💣2.6.1 解释](#💣2.6.1 解释)
      • [💣2.6.2 示意图](#💣2.6.2 示意图)
    • [⚜️2.7 缓冲池](#⚜️2.7 缓冲池)
      • [💣2.7.1 解释](#💣2.7.1 解释)
      • [💣2.7.2 工作流程](#💣2.7.2 工作流程)
    • [⚜️2.8 总结](#⚜️2.8 总结)
  • [⚕️3 总结](#⚕️3 总结)

⚕️1 I/O核心子系统------概述

🔱1.1 核心子系统要完成的功能

📽️1.1.1 假脱机技术

📽️1.1.2 I/O调度

即各种调度算法。

📽️1.1.3 设备保护

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。

在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问 某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现"设备保护"的功能

📽️1.1.4 设备分配与回收

📽️1.1.5 缓冲区管理(缓冲与高速管理)

🔱1.2 注意

2、3在之前的笔记中已经介绍过,后面的笔记主要介绍1、4、5

⚕️2 缓冲区管理

⚜️2.1 总览

⚜️2.2 缓冲区的定义与作用

⚖️2.2.1 什么是缓冲区

⚖️2.2.2 缓冲区的作用

解释

①CPU是高速的,I/O设备一般而言是低速的。

进行写操作时,CPU快速的将数据放入缓冲区就可以去做其他的事情了,在这个时间内I/O设备可以慢慢的读取缓冲区的内容。

相反的,进行读操作时,I/O设备可以先将数据放入缓冲区内,之后再让CPU快速的读取

②联系I/O控制方式中的直接控制

③输出进程可以一次生成一块数据,而I/O设备每次只可以输入一个字符

④CPU无须一直等待I/O设备的输入输出

⚜️2.3 单缓冲管理方法

⚖️2.3.1 什么是单缓冲策略

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。

⚖️2.3.2 注意

(1)当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时, 可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

(2)用户进程的内存空间中,会分出一片工作区来接受输入/输出数据(一般也默认工作区大小与缓冲区相同)。

⚖️2.3.3 CPU处理一块数据的平均时间

在"单缓冲"题型中,可以假设初始状态为工作区满,缓冲区空。则下一次状态又回到工作区满,缓冲区空的过程中所耗费的时间就是CPU处理一块数据的平均时间。

(1)假设I/O设备将数据输入到缓冲区中所耗费的时间为T,用户进程将数据从缓冲区读入到工作区所耗费的时间为M,CPU处理数据的时间为C。如图所示。注意同一时刻只可以有一个进程操作缓冲区。

(2)当T>C时,整个过程如下图所示。则总耗时为T+M

(3)当T<C时,整个过程如下图所示。则总耗时为C+M

(4)因此总结可得:

采用单缓冲策略,处理一块数据平均耗时 Max(C, T)+M

⚜️2.4 双缓冲管理方法

⚖️2.4.1 什么是双缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)

⚖️2.4.2 CPU处理一块数据的平均时间

(1)假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空。则示意图如下所示。

(2)当T>C+M时,整个工作流程如图所示。处理一块数据的平均用时= T

(3)当T<C+M时,整个工作流程如图所示。

可以看到,在T时刻,缓冲区2已经被充满,但是工作区中的数据还没有被完全处理完。假如2T<2M+C,则当工作区中的数据被处理完之后,缓冲区1又被I/O设备冲入了数据。可以看出,此时我们很难找到一个时刻,可以恢复到初始状态------工作区空,其中一个缓冲区满,另一个缓冲区空。

但是总而言之:

(4)此时我们可以得到结论:

采用双缓冲策略,处理一个数据块的平均耗时为 Max (T, C+M)

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

2.5.1 使用单缓冲

示意图如图所示。很显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输。

💣2.5.2 使用双缓冲

示意图如图所示。若两个相互通信的机器设置双缓冲区,一个缓冲区用来存储发送的数据,另一个缓冲区用来存储接收的数据。则同一时刻可以实现双向的数据传输

⚜️2.6 循环缓冲区

💣2.6.1 解释

将多个大小相等的缓冲区链接成一个循环队列。系统维护一个in指针和一个out指针。in指针指向的缓冲区可以向其中填入数据,out指针指向的缓冲区可以从里面取出数据。

💣2.6.2 示意图

⚜️2.7 缓冲池

💣2.7.1 解释

缓冲队列的示意图如图所示

缓冲池的示意图如图所示

💣2.7.2 工作流程

(1)输入进程请求输入数据

系统从空缓冲队列中取下一块缓冲区放入收容输入区(hin),进程可以向其中输入数据,待进程输入完成后,系统再将该充满数据的缓冲区挂到输出队列的队尾(输入数据的目的肯定是将数据输出)。

(2)计算进程想要取得一块输入数据

系统从输入队列中取得一块冲满输入数据的缓冲区作为"提取输入数据的工作缓冲区(sin)"。待进程将缓冲区读空后,系统再将空缓冲区挂到空缓冲区队列队尾。

(3)计算进程想要将准备好的数据冲入缓冲区。

系统从空缓冲队列中取出一块作为"收容输出数据的工作缓冲区(hout)"。待进程将数据冲满后,再将缓冲区挂到输出队列队尾,准备输出。

(4)输出进程请求输出数据

系统从输出队列中取得一块冲满输出数据的缓冲区作为"提取输出数据的工作缓 冲区(sout)"。待进程将缓冲区读空后,再将空缓冲区挂到空缓冲区队列的队尾。

⚜️2.8 总结

⚕️3 总结

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

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

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

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

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

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

相关推荐
ftswsfb1 天前
【系统架构设计师(第2版)】七、系统架构设计基础知识
系统架构
找了一圈尾巴2 天前
架构师备考-架构基本概念
架构·系统架构
白总Server2 天前
OpenHarmony
后端·spring cloud·华为·微服务·ribbon·架构·系统架构
ftswsfb3 天前
【系统架构设计师】六、UML建模与架构文档化
系统架构·uml
程序猿进阶3 天前
系统上云-流量分析和链路分析
java·后端·阿里云·面试·性能优化·系统架构·云计算
ccino .3 天前
企业级邮件系统架构
系统架构
小云小白4 天前
springboot 传统应用程序,适配云原生改造
云原生·系统架构·k8s·springboot
2401_857617626 天前
Spring Boot框架下的信息学科平台系统架构设计
spring boot·后端·系统架构
0_1_bits6 天前
【系统架构】如何演变系统架构:从单体到微服务
微服务·架构·系统架构
后端从入门到精通6 天前
RUP生命周期架构-系统架构师(八十七)
架构·系统架构