OS复习笔记ch11-1
外围设备的管理和磁盘调度
外围设备
从CPU的角度来看,外设有几个比较重要的I/O接口(interfaces)
- 状态reg:向CPU报告设备的状态(忙碌/空闲)
- 命令reg:接收CPU命令,存储 CPU 需要执行的指令
- 数据reg:存储了 CPU 传输给设备,或设备传入到设备控制器的数据
在设备的视角上(internals)来看,自身有微处理器、内存、特定的硬件芯片。
e.g.,磁盘阵列有磁盘自身的处理器来管理。
PPT中的问题:
While (STATUS == BUSY) ; // wait until device is not busy
Write data to DATA register
Write command to COMMAND register(starts the device and executes the command)
While (STATUS == BUSY); // wait until device is done with your request
代码部分是轮询的过程,属于程序查询的外设交互
I/O系统
I/O系统:I/O设备及其接口线路、控制部件、通道和管理软件的总称。
I/O操作:计算机的主存和外围设备的介质之间的信息传送操作
- 木桶效应:最慢的决定了系统性能,CPU性能过高,性能越高,差距确实越大
- I/O控制设备的复杂多样
- I/O系统和系统功能紧密联系,比如文件系统
- I/O系统是系统的重要组成部分
设备的分类
根据功能分为三大类:
- Human readable用户可读:终端、打印机、投影仪等
- Machine readable机器可读:磁盘、磁带;传感器、控制器等
- Communications通信:数字线路驱动器、调制解调器(光猫)
其他的分类:
一般输入输出型的设备,比如键盘和串口都是字符设备,往往都是字符流的形式传输
存储型设备比如磁带、磁盘、光盘等都是块设备,一般可以顺序或者随机访问。
这里需要强调一下字符设备和块设备。
- 字符设备的驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。该类设备不可寻址,往往由中断驱动,速度较慢。
- 块设备上能够容纳文件系统,如:u盘,SD卡,磁盘等。该类设备可寻址,随机存取,读写速度快。
设备的差异
- 数据速率:通常意义上像键鼠就是低速设备,激光打印机是中速,而电脑的固态硬盘就是高速设备。
- 应用方面:由于不用的I/O设备支持不同的功能,所以相关的应用有很大区别。比如键鼠主要用来支持用户输入,而显示器是输出,磁盘则是存储,各司其职。(ppt中举例是磁盘和OS的存储管理挂钩,终端管理员的优先级应该更高)
- 控制复杂性:这一点好理解,比如键盘只需要考虑按键映射和字符传输就行,而磁盘需要有DMA控制器和通道来负责文件的读写和传输。
- 传输单位:字符设备一般都是字符流的形式,而存储型设备往往是块设备。
- 数据表示:主要是数据编码和传输格式上的区别
- 出错条件:不同设备出错的后果,报告方式,以及响应范围都不同
e.g., 不同的设备速度差异比较明显
这里我们可以看到:最快的是千兆以太网,然后是显示器、硬盘、百兆以太网、光盘、扫描仪、激光打印机、软盘、调制解调器(光猫)、鼠标,而最慢的是键盘。
e.g., 数据表示
不同设备采用不同的数据编码,如图所示异步串行通信(uart)传输格式,以下是一些常见设备的数据表示方式。
- 存储设备:例如硬盘和固态硬盘可能使用不同的编码技术来优化存储密度和读写速度,如NRZ(非归零编码)、RLL(跑长限制编码)等。
- 网络设备:例如调制解调器或网络卡可能使用QAM(正交幅度调制)、PSK(相位偏移键控)等复杂的编码方案来在有限的带宽中传输尽可能多的数据。
- 显示设备:例如显示器可能使用不同的颜色编码系统(如RGB、YCbCr等)来表示图像数据。
e.g., 出错条件
- 错误的报告方式(报告方式):
- 存储设备(如硬盘、SSD)通常通过设备的自检程序(如SMART技术)来报告错误,这可能包括扇区错误或硬件故障。
- 网络设备(如路由器、交换机)则可能通过网络管理软件或日志文件来报告丢包、连接超时等网络问题。
- 人机输入设备(如键盘、鼠标)错误可能直接体现在设备响应上,如按键无响应或指针移动不正常,通常通过操作系统的设备管理器来报告错误状态。
- 错误的后果(错误的后果):
- 对于存储设备,错误可能导致数据丢失或文件系统损坏,影响数据的完整性和可用性。
- 在网络设备中,错误通常导致数据传输中断或性能下降,影响网络的稳定性和效率。
- 对于人机输入设备,错误可能导致用户输入被错误解读或完全无法输入,影响用户的操作体验。
相关文章:

OS复习笔记ch11-1
外围设备的管理和磁盘调度 外围设备 从CPU的角度来看,外设有几个比较重要的I/O接口(interfaces) 状态reg:向CPU报告设备的状态(忙碌/空闲)命令reg:接收CPU命令,存储 CPU 需要执行的…...
Docker Compose 使用
一、简介 Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用程序。它允许用户使用 YAML 文件来配置应用程序需要的所有服务,然后使用一个命令来从 YAML 文件配置中创建并启动所有服务。其主要目的是为了简化了多容器 Docker 应用程序的部署和…...

KEIL5.39 5.40 fromelf 不能生成HEX bug
使用AC6 编译,只要勾选了生成HEX。 结果报如下错误 暂时没有好的解决办法 1.替换法 2.在编译完后用命令生成HEX...
mongosh 和mongo 命令行连接MongoDB
Mongoshell MongoDB的Shell工具mongosh是一个全功能的JavaScript和Node.js的14.x REPL与MongoDB的部署交互环境。我们通过它可以直接对数据库进行查询和操作。这个工具是需要在安装玩MongoDB后单独安装的。 与传统的mongo方式连接MongoDB更加丰富。 官网 https://www.mongodb.…...
DOM 改变节点
DOM 改变节点 文档对象模型(DOM)是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化表示,并定义了一种方式,允许程序和脚本动态地访问和更新文档的内容、结构和样式。在网页开发中,DOM 操作是核心技能之一&#…...

【面试题分享】重现 string.h 库常用的函数
文章目录 【面试题分享】重现 string.h 库常用的函数一、字符串复制1. strcpy(复制字符串直到遇到 null 终止符)2. strncpy(复制固定长度的字符串) 二、字符串连接1. strcat(将一个字符串连接到另一个字符串的末尾&…...

6.21 移动语义与智能指针
//先构造,再拷贝构造//利用"hello"这个字符串创建了一个临时对象//并复制给了s3//这一步实际上new了两次String s3 "hello"; 背景需求: 这个隐式创建的字符串出了该行就直接销毁掉,效率比较低 可以让_pstr指向这个空间…...

Kimi还能对学术论文进行润色?我来教你!
学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 一、引言 在学术界,论文的质量往往决定了研究的可信度和影响力。Kimi作为一款人工智能助手,可以为学术论文的润色提供有效的帮助。本文将详细介绍如何利用Kimi进…...

智汇云舟成为中煤集团中煤智能创新联盟成员单位
6月21日,第八届世界智能产业博览会平行会议暨中煤智能创新联盟交流会在天津水游城丽筠酒店顺利举行。智汇云舟受邀参与,并由中国中煤能源集团授予荣誉证书,正式成为中煤智能创新联盟成员单位。会议上,清华大学、中国矿业大学&…...

【文心智能体大赛】迎接属于你的休闲娱乐导师!
迎接属于你的休闲娱乐导师! 前言创建智能体发布智能体最后结语 前言 文心智能体平台AgentBuilder 是百度推出的基于文心大模型的智能体(Agent)平台,支持广大开发者根据自身行业领域、应用场景,选取不同类型的开发方式&…...
AI:音乐创作的未来还是毁灭的序曲?
AI:音乐创作的未来还是毁灭的序曲? 随着人工智能(AI)技术的飞速发展,它已经渗透到了我们生活的方方面面,包括音乐领域。然而,AI在音乐创作中的角色引发了广泛的讨论和争议。一些人认为AI为音乐…...
如何通过AI进行智能日志异常检测
智能日志异常检测是一种利用人工智能(AI)技术来自动识别日志数据中异常模式或行为的方法。传统日志监控依赖于预定义规则,而智能日志异常检测可以适应不同的日志模式和异常类型,提高检测准确性和效率。下面是一个完整的步骤指南&a…...

C++ GPU编程(英伟达CUDA)
安装编译环境 https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.85_windows.exe CMakeLists.txt cmake_minimum_required(VERSION 3.10)set(CMAKE_CXX_STANDARD 17) set(CMAKE_BUILD_TYPE Release) #set(CMAKE_CUDA_ARCHITECTUR…...

肾虚学习实验第T1周:实现mnist手写数字识别
>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 作为一名研究牲࿰…...

Python | Leetcode Python题解之第162题寻找峰值
题目: 题解: class Solution:def findPeakElement(self, nums: List[int]) -> int:n len(nums)# 辅助函数,输入下标 i,返回 nums[i] 的值# 方便处理 nums[-1] 以及 nums[n] 的边界情况def get(i: int) -> int:if i -1 or…...

定个小目标之刷LeetCode热题(26)
这道题属于一道简单题,可以使用辅助栈法,代码如下所示 class Solution {public boolean isValid(String s) {if (s.isEmpty())return false;// 创建字符栈Stack<Character> stack new Stack<Character>();// 遍历字符串数组for (char c : …...

网络爬虫设置代理服务器
目录 1.获取代理 IP 2.设置代理 IP 3. 检测代理 IP 的有效性 4. 处理异常 如果希望在网络爬虫程序中使用代理服务器,就需要为网络爬虫程序设置代理服务器。 设置代理服务器一般分为获取代理 IP 、设置代理 IP 两步。接下来,分…...

3、matlab单目相机标定原理、流程及实验
1、单目相机标定流程及步骤 单目相机标定是通过确定相机的内部和外部参数,以便准确地在图像空间和物体空间之间建立映射关系。下面是单目相机标定的流程及步骤: 搜集标定图像:使用不同角度、距离和姿态拍摄一组标定图像,并确保标…...
【gdb 如何生成并查看core dump】
生成core dump 使用ulimit命令来设置core dump文件的大小。 ulimit -c unlimitedcore dump位置 如果程序崩溃,系统会生成一个名为core的文件。可以通过以下命令查看core文件位置, cat /proc/sys/kernel/core_pattern查看core dump gdb /path/to/you…...
极简短视频查看、删除应用
本地短视频服务器 背景:我的NAS中存放了很多短视频,多到很多没看过,于是写了这个程序来随机查看并删除短视频 运行: 安装依赖后运行main.py 直接使用docker: docker pull realwang/short_video docker run -d -p 3000:…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...