邯郸信息港人才招聘/seo网络推广公司排名
I/O系统的功能、模型和接口
-
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设备的无关性
- 提高处理机和I/O设备的利用率
- 对1/0 设备进行控制
- 确保对设备的正确共享
- 独占设备,进程应互斥地访问这些设备
- 共享设备,在一段时间内允许多个进程同时访问的设备
- 错误处理
-
I/O系统的层次结构和模型
-
I/O 软件的层次结构
-
I/O系统中各种模块之间的层次视图
-
-
I/O系统接口
在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为:- 块设备接口
- 流设备接口(字符设备接口)
- 网络通信接口
I/O设备和设备控制器
-
I/O设备
- I/O设备的类型
- 按使用特性分类
I/O设备按照使用特性分为存储设备和I/O设备,其中I/O设备又可分为输入设备、输出设备和交互式设备 - 按传输速率分类
从设备的传输速率上I/O设备又分为低速设备、中速设备和高速设备 - 信息交换的单位
I/O设备按照信息交换的单位分为块设备和字符设备
- 按使用特性分类
- 设备与控制器之间的接口
设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在I/O设备中应含有与设备控制器间的接口,在该接口中有三种类型的信号,各对应一条信号线。三种信号线中只有数据线是双向的
- I/O设备的类型
-
设备控制器
- 设备控制器的基本功能
- 接收和识别命令
- 数据交换
- 标识和报告设备的状态
- 地址识别
- 数据缓冲区
- 差错控制
- 设备控制器的组成
- 设备控制器与处理机的接口
- 设备控制器与设备的接口
- I/O逻辑
- 设备控制器的基本功能
-
I/O通道
- I/O通道设备的引入
- 定义
I/O通道是专门负责输入/输出的处理机 - 与一般处理机的差别
- 其指令类型单一
- 通道没有自己的内存,通道程序是放在主机的内存中的,即通道与CPU共享内存
- 定义
- 通道类型
根据信息交换方式的不同,可把通道分成以下三种类型:- 字节多路通道
- 数组选择通道
- 数组多路通道
- I/O通道设备的引入
中断机构和中断处理程序
中断在操作系统中有重要的地位,没有中断,就不可能实现多道程序,进程之间的切换是通过总段来实现的
为了提高处理机的利用率和实现CPU和I/O设备并行执行,必须有中断支持
中断处理程序是I/O系统中最低的一层,是整个I/O系统的基础
- 中断简介
- 中断和陷入
- 中断
中断是指CPU对I/O设备发来的中断信号的一种响应。中断是由外部设备引起的,故又称外中断 - 陷入
- 定义
陷入是指一种由CPU内部事件所引起的中断,也称为内中断。 - 与中断的区别:
中断和陷入的主要区别是信号的来源,即是来自CPU外部,还是CPU内部
- 定义
- 中断
- 对多中断源的处理方式
- 屏蔽(禁止)中断
- 嵌套中断
- 中断和陷入
- 中断处理程序
中断处理程序的处理过程可分成以下几个步骤:- 测定是否有未响应的中断信号
- 保护被中断进程的 CPU 环境
- 转入相应的设备处理程序
- 中断处理
- 恢复CPU的现场并退出中断
设备驱动程序
- 设备驱动程序概述
- 设备驱动程序的功能
- 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列
- 检査用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式
- 发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待
- 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理
- 设备驱动程序的特点
- 驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序
- 不同类型的设备应配置不同的驱动程序
- 驱动程序与I/O设备所采用的I/O控制方式紧密相关
- 有很多驱动程序的基本部分已经固化在ROM中
- 驱动程序应允许可重入
- 设备处理方式
- 为每一类设备设置一个进程
- 在整个系统中设置一个I/O进程
- 不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序,供用户或系统进程调用
- 设备驱动程序的功能
- 设备驱动程序的处理过程
- 将抽象要求转换为具体要求
- 对服务请求进行校验
- 检查设备的状态
- 传送必要的参数
- 启动I/O设备
- 对I/O设备的控制方式
-
程序I/O方式
此时CPU和I/O设备只能串行工作
-
使用中断的可编程I/O方式
此时,CPU与I/O设备并行操作 -
直接存储器访问方式(DMA)
-
DMA方式的特点
- 数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块
- 所传送的数据是从设备直接送入内存的,或者相反
- 仅在传送一个或多个数据块的开始和结束时才需CPU干预,整块数据的传送是在控制器的控制下完成的
-
DMA控制器的组成
DMA控制器由主机与DMA控制器的接口;DMA 控制器与块设备的接口;I/O控制逻辑三部分组成。
-
DMA工作过程
DMA方式在内存和I/O设备之间开辟直接数据通道
-
-
I/O通道控制方式
- I/O通道控制方式的特点
- 数据传输的基本单位是一组数据块
- 实现了CPU、通道和I/O设备三者的并行操作
- 通道程序
通道程序是由一系列通道指令(或称为通道命令)所构成的
- I/O通道控制方式的特点
-
与设备无关的I/O软件
- 基本概念
- I/O重定向
所谓I/O重定向,是指用于I/操作的设备可以更换(即重定向),而不必改变应用程序 - 设备无关性
即应用程序独立于具体使用的物理设备
- I/O重定向
- 与设备无关的软件
- 设备驱动程序的统一接口
- 缓冲管理
- 差错控制
- 对独立设备的分配与回收
- 独立于设备的逻辑数据块
- 设备分配
-
设备分配中的数据结构
-
设备控制表DCT
系统为每一个设备都配置了一张设备控制表,用于记录设备的情况
-
控制器控制表、通道控制表和系统设备表
- 控制器控制表(COCT)
系统为每一个控制器都设置了用于记录控制器情况的控制器控制表 - 通道控制表(CHCT)
每个通道都有一张通道控制表 - 系统设备表(SDT)
记录了系统中全部设备的情况,每个设备占一个表目
- 控制器控制表(COCT)
-
-
设备分配时应考虑的因素
- 设备的固有属性
- 独占设备的分配策略
- 共享设备的分配策略
- 虚拟设备的分配策略
- 设备分配算法
- 先来先服务
- 优先级高者优先
- 设备分配中的安全性
- 安全分配方式
- 不安全分配方式
- 设备的固有属性
-
独占设备的分配程序
首先分配设备,其次分配控制器,最后分配通道
-
- 逻辑设备名到物理设备名映射的实现
- 逻辑设备表LUT
在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址 - 逻辑设备表的设置问题
- 在整个系统中只设置一张LUT
- 为每个用户设置一张LUT
- 逻辑设备表LUT
用户层的I/O软件
- 系统调用与库函数
-
系统调用
系统调用将CPU的状态从用户态转换到核心态
-
库函数
内核提供了OS的基本功能,而库函数扩展了OS内核,使用户能方便取得操作系统的服务
-
- 假脱机(SPOOLing)系统
-
假脱机技术(Simultaneaus Periphemal Operating OnLine,SPOOLing技术)
把在联机情况下外围操作与CPU对数据的处理同时进行的技术称为SPOOLing技术或称为假脱机技术 -
SPOOLing的组成
SPOOLing系统主要由以下四部分构成:
- 输入井和输出井
输入井和输出并是在磁盘上开辟出来的两个存储区域 - 输入缓冲区和输出缓冲区
这是在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾 - 输入进程(预输入进程)和输出进程(缓输出进程)。
- 井管理程序
用于控制作业与磁盘井之间信息的交换
- 输入井和输出井
-
SPOOLing系统的特点
- 提高了I/O的速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
-
缓冲区管理
-
缓冲的引入
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决数据粒度不匹配的问题
- 提高CPU和I/O设备之间的并行性
-
单缓冲区和双缓冲区
-
单缓冲区
假定从磁盘把一块数据输入到缓冲区的时间为T,OS将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理(计算)的时间为C。T和C是可以并行的。
单缓冲区处理每块数据的用时为 max(C,T)+M
-
双缓冲区
双缓冲区处理一块数据的用时为max(C+M,T)
-
-
环形缓冲区
在环形缓冲中包括多个缓冲区,其每个缓冲区的大小相同。作为输入的多缓冲区可分为三种类型:- 用于装输入数据的空缓冲区R
- 已装满数据的缓冲区G
- 计算进程正在使用的现行工作缓冲区C
-
缓冲池
- 缓冲池的组成
- 缓冲区的组成
缓冲池管理多个缓冲区,每个缓冲区由用于标识和管理的缓冲首部以及用于存放数据的缓冲体两部分组成 - 三个队列
- 空白缓冲队列emq
- 输入队列inq
- 输出队列outq
- 四种工作缓冲区
- 用于收容输入数据的工作缓冲区
- 用于提取输入数据的工作缓冲区
- 用于收容输出数据的工作缓冲区
- 以及用于提取输出数据的工作缓冲区
- 缓冲区的组成
- 缓冲区的工作方式
缓冲区可以工作在如下四种工作方式
- 缓冲池的组成
磁盘存储器的性能和调度
- 磁盘性能简述
- 数据的组织和格式
-
磁盘的结构和布局
-
磁盘格式化
为了在磁盘上存储数据,必须先将磁盘低级格式化
-
- 磁盘的类型
- 固定头磁盘
- 移动头磁盘
- 磁盘访问时间
可把对磁盘的访问时间分成以下三部分- 寻道时间 T s T_{s} Ts
假设s为启动磁臂的时间;m是与磁盘驱动器速度有关的常数;n为磁头移动的磁道数
T s = m × n + s T_{s}=m \times n + s Ts=m×n+s - 旋转延迟时间 L t L_{t} Lt
假设磁盘的旋转速度为r
L t = 1 2 r L_{t} = \frac{1}{2r} Lt=2r1 - 传输时间 T t T_{t} Tt
假设每次所读/写的字节数为b,一条磁道上的字节数为N
T t = b r N T_{t} = \frac{b}{r N} Tt=rNb - 因此,总的平均访问时间 T a T_{a} Ta
T a = T s + 1 2 r + b r N T_{a}=T_{s} + \frac{1}{2r}+ \frac{b}{rN} Ta=Ts+2r1+rNb
- 寻道时间 T s T_{s} Ts
- 数据的组织和格式
- 早期的磁盘调度算法
- 先来先服务(FCFS)算法
FCFS算法根据进程请求访问磁盘的先后次序进行调度 - 最短寻道时间优先(SSTF)算法
- SSTF算法每次选择与当前磁头所在的磁道距离最近的磁道,以使每次的寻道时间最短
- SSTF算法不能保证平均寻道时间最短,可能导致优先级低的进程发生“饥饿”现象
- 基于扫描的磁盘调度算法
- 扫描((SCAN)算法
扫描算法在磁头当前移动方向上选择与当前磁头所在磁道距离最短的磁道 - 循环扫描(CSCAN)算法
为了减少 SCAN 的延迟,CSCAN算法规定磁头单向移动,到尽头后直接返回到另一端的开始位置。
- 扫描((SCAN)算法
- LOOK和CLOOK调度算法
- LOOK 算法
LOOK算法是对SCAN算法的一种改进,由于SCAN算法的磁头要走到磁盘尽头才会转换方向,而实际上并不需要走到尽头,只需要走到该方向上最后一个请求即可。- 优点:
相比 SCAN,LOOK 可以减少磁头的无效移动,从而提高效率。 - 缺点:
尽管 LOOK 比 SCAN 更有效,但它仍然可能遇到请求的分布不均匀的问题,导致某些区域的请求可能被延迟很长时间。
- 优点:
- CLOOK算法
CLOOK同理是一种对CSCAN算法的改进。
CSCAN(Circular SCAN)算法与 SCAN 类似,但是它在到达磁盘的一个端点后,并不反向扫描,而是回到磁盘的另一端继续扫描。CLOOK 算法对 CSCAN 进行了优化,避免了磁头的无效移动。- 原理
CLOOK算法会扫描请求列出的柱面,直到没有更多的请求,接着磁头会跳到最远的请求位置,而不是回到最初的位置。
磁头从当前的位置向一个方向移动,直到扫描到最远的请求柱面。
然后,磁头跳跃到请求队列中的最小请求柱面,并重新开始扫描。 - 优点
CLOOK只跳转到请求的最小位置,而不是回到磁盘的最远端,减少了磁头的无效移动,因此在磁头的移动距离上比 CSCAN 更有效。 - 缺点:
虽然CLOOK通过避免回到最远端来减少了无效移动,但它仍然依赖于请求的分布情况,可能导致某些区域的请求处理延迟
- 原理
- LOOK 算法
- 先来先服务(FCFS)算法
相关文章:

操作系统输入输出系统知识点
I/O系统的功能、模型和接口 I/O系统的基本功能 隐藏物理设备的细节与设备的无关性提高处理机和I/O设备的利用率对1/0 设备进行控制确保对设备的正确共享 独占设备,进程应互斥地访问这些设备共享设备,在一段时间内允许多个进程同时访问的设备 错误处理 I…...

C语言控制语句与案例
控制语句与案例 1. 选择结构 1.1 if 语句 if 语句用于根据条件执行不同的代码块。最基本的语法形式如下: // 单分支 if (条件) {// 条件为真时执行的代码 }// 双分支 if (条件) {// 条件为真时执行的代码 } else {// 条件为假时执行的代码 }// 多分支 if (条件1…...

JVM的内存布局
Java虚拟机(JVM)的内存布局可以分为几个主要部分,每个部分都有特定的用途。以下是JVM内存布局的基本组成: 方法区(Method Area): 方法区是所有线程共享的内存区域,用于存储已被虚拟机…...

aws codepipeline + github + sonarqube + jenkins实践CI/CD
https://blog.csdn.net/u011564831/article/details/144007981文章浏览阅读1.2k次,点赞31次,收藏21次。本文使用 Jenkins 结合 CodeBuild, CodeDeploy 实现 Serverless 的 CI/CD 工作流,用于自动化发布已经部署 lambda 函数。在 AWS 海外区&a…...

mistralai 部署笔记
目录 mistralai 部署笔记 mistralai 部署笔记 #! /usr/bin/env python3 import os import sys import torch os.chdir(os.path.dirname(os.path.abspath(__file__)))current_dir = os.path.dirname(os.path.abspath(__file__))paths = [os.path.abspath(__file__).split(scri…...

Java——异常机制(上)
1 异常机制本质 (异常在Java里面是对象) (抛出异常:执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE) 工作中,程序遇到的情况不可能完美。比如…...
坐标系,向量_batch及向量点乘部分知识
坐标系 Unity所采用的是左手坐标系。 对于Vector3.forward ,其坐标值为(0,0,1),为定值 而transform.forward 该值不固定,本地坐标正方向所在世界坐标系中的方向 向量 向量是终点位置减去起始点位置得…...

【计算机网络】期末速成(2)
部分内容来源于网络,侵删~ 第五章 传输层 概述 传输层提供进程和进程之间的逻辑通信,靠**套接字Socket(主机IP地址,端口号)**找到应用进程。 传输层会对收到的报文进行差错检测。 比特流(物理层)-> 数据帧(数据链路层) -> 分组 / I…...

【设计模式】结构型设计模式总结之代理模式、装饰模式、外观模式、享元模式
文章目录 代理模式示例结构分类动态代理 装饰模式示例结构使用场景与代理模式区别Context 外观模式结构示例使用场景Context 享元模式结构示例使用场景Message 代理模式 代理模式(Proxy Pattern) 是一种结构型设计模式,它提供了一个代理对象…...

11进阶篇:专业课论文阅读方向指南(2025版)
文章目录 第一个检索式:图情档核心期刊(北大 + CSSCI)发文情况研究方法类关键词研究主题类关键词论文阅读建议第二个检索式:川大公共管理学院在核心期刊(北大 + CSSCI)的发文情况研究方法类关键词研究主题类关键词特点关键词与2024年972(现815)两道题目的映射情况815信…...

watch里可以写异步吗
在Vue的 watch 中可以写异步,但通常不推荐。 原因 - 可维护性差: watch 的主要用途是响应式地监听数据变化。如果在里面写复杂的异步操作,会让代码逻辑变得难以理解和维护。例如,同时监听多个数据变化并触发不同异步操作时&am…...

基于 Spring Boot + Vue 的宠物领养系统设计与实现
引言 近年来,随着人们生活水平的提高,宠物逐渐成为许多家庭的重要成员。然而,宠物的流浪和弃养问题日益严重,这促使社会对宠物领养的需求不断增长。为解决宠物领养中信息不对称、领养流程复杂等问题,设计并实现一个基…...

leetcode399:除法求值
给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 queries[j]…...

【10】MySQL中的加密功能:如何使用MD5加密算法进行数据加密
文章目录 1. MySQL加密功能概述2. MD5加密算法3. 在MySQL中使用MD5加密4. 使用更安全的加密方法总结 在现代的数据库应用中,数据的安全性和隐私性变得尤为重要。无论是存储用户的个人信息,还是保护敏感的业务数据,确保这些数据不会被未授权访…...

CSS的2D和3D动画效果
CSS的2D和3D动画效果:网页动态设计的魔法 在现代网页设计中,动画已经成为提升用户体验的重要元素。通过引入动态效果,我们不仅可以使交互更加流畅和直观,还能吸引用户的注意力,增强品牌认知度。CSS提供了强大的工具&a…...

30天学会Go--第9天 GO语言 Mysql 学习与实践
30天学会Go–第9天 GO语言 MySQL学习与实践 文章目录 30天学会Go--第9天 GO语言 MySQL学习与实践前言一、MySQL 基础知识1.1 MySQL 的核心特征1.2 MySQL 的常见使用情景 二、安装 MySQL2.1 Windows 安装2.2 macOS 安装2.3 Linux 安装 三、MySQL 常用命令3.1 数据库操作3.2 表操…...

跟李笑来学美式俚语(Most Common American Idioms): Part 54
Most Common American Idioms: Part 54 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…...

Angular由一个bug说起之十一:排序之后无法展开 Row
问题现象 在使用 Material Table 时,排序功能触发了一个奇怪的 Bug:表格的 Row 无法展开。最终排查发现,问题的根源在于 trackBy 的错误使用。trackBy 方法接受两个参数:index(数据索引)和 row(…...

使用 Flutter 进行移动应用开发:深入探索
文章目录 前言一、介绍二、安装 Flutter 环境三、Flutter 应用结构与基础组件四、状态管理策略五、高级主题结语 前言 随着移动技术的迅猛发展,跨平台开发的需求日益增长。开发者们一直在寻找一种既能保证应用性能又能减少开发成本和时间的技术方案。Flutter 应运而…...

2024年天津市职业院校技能大赛高职组 “信息安全管理与评估”样题第三阶段
(四)第三阶段竞小组(赛项)目(300分) 第三阶段竞赛内容是:网络安全渗透(夺旗挑战赛CTF) 本模块要求参赛者作为攻击方,运用所学的信息收集、漏洞发现、漏洞利用等渗透测试技…...

docker批量创建cloudstack虚拟主机脚本
批量创建cloudstack脚本 #!/bin/bash # 配置变量 container_prefix"cloudworker-" base_ip"192.168.1." start_ip2 #开始ip start_container2 #上同 end_container4 #结束ip 包括 network_name"my_macvlan_network" image_name"dockedahi:…...

npm发布插件到私有仓库保姆级教程
在开发项目的过程中,我们经常需要安装插件依赖,那么怎么把自己开发的组件封装成一个插件,并发布到npm 插件市场或者上传到私有仓库里面呢?今天总结下自己发布插件到私有仓库的记录: 一、创建组件 执行命令创建一个空…...

WinRAR V7.10纯净体验
前言 很多同学在安装了WinRAR之后,每次用这个软件解压文件时,都会先跳出一个广。这个广就像打开了一个新窗口,很打扰人。从WinRAR的5.40版本开始,哪怕是简体中文版的,都会这样弹广告。不管你有没有注册账号࿰…...

scss文件内引入其他scss文件报错
1、今天在编译一些老项目的时候,老是提示下面信息 2、而且有很多Sass import rules are deprecated and will be removed in Dart Sass 3.0.0.警告 3、用npm view sass versions看,其中sass的最新版本是1.82.0 4、经过测试"sass": "1.75…...

1-12 GD32基于定时器输入捕获
前言: 基于本人对相关知识回顾与思考,仅供学习参考 目录 前言: 1.0 输入捕获 2.0 信号周期 3.0 定时器配置 4.0 定时器配置 5.0 定时器中断 后记: 1.0 输入捕获 2.0 信号周期 获取信号周期的方法,在第一次捕获与…...

前端基础的讲解-JS(22)
什么是JSON? 1.json 是一种轻量级的数据交换格式 简单来说:json 就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。 类似于: 国际通用语言 - 英语 中国 56 个民族不同地区的通用语言 - 普通话 …...

Minecraft-Datapack数据包开发3-进度与成就
目录 简介成就与进度根进度叶子进度更多的检测方式 简介 代码已经上传: gitee github 成就与进度 工欲善其事必先利其器,别死记硬背,多使用自动生成网站 进度数据包生成器:https://misode.github.io/advancement/指令生成器&…...

泷羽sec-shell编程(3)
shell(3) 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他…...

如何解决压测过程中JMeter堆内存溢出问题
如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出?二、解决堆内存溢出措施三、堆内存参数应该怎么调整?四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后,JMeter日志窗口报错“java.lang.OutOfMe…...

爬虫项目基础知识详解
文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…...