Linux内核分析:输入输出,字符与块设备 31-35

news2024/11/27 10:52:26

CPU 并不直接和设备打交道,它们中间有一个叫作设备控制器(Device Control Unit)的组件,例如硬盘有磁盘控制器、USB 有 USB 控制器、显示器有视频控制器等。这些控制器就像代理商一样,它们知道如何应对硬盘、鼠标、键盘、显示器的行为。

输入输出设备我们大致可以分为两类:块设备(Block Device)和字符设备(Character Device)。

块设备将信息存储在固定大小的块中,每个块都有自己的地址。硬盘就是常见的块设备。

字符设备发送或接收的是字节流。而不用考虑任何块结构,没有办法寻址。鼠标就是常见的字符设备。

CPU 如何同控制器的寄存器和数据缓冲区进行通信呢?

每个控制寄存器被分配一个 I/O 端口,我们可以通过特殊的汇编指令(例如 in/out 类似的指令)操作这些寄存器。

数据缓冲区,可内存映射 I/O,可以分配一段内存空间给它,就像读写内存一样读写数据缓冲区。如果你去看内存空间的话,有一个原来我们没有讲过的区域 ioremap,就是做这个的。

对于 CPU 来讲,这些外部设备都有自己的大脑,可以自行处理一些事情,但是有个问题是,当你给设备发了一个指令,让它读取一些数据,它读完的时候,怎么通知你呢?

控制器的寄存器一般会有状态标志位,可以通过检测状态标志位,来确定输入或者输出操作是否完成。第一种方式就是轮询等待,就是一直查,一直查,直到完成。当然这种方式很不好,于是我们有了第二种方式,就是可以通过中断的方式,通知操作系统输入输出操作已经完成。

为了响应中断,我们一般会有一个硬件的中断控制器,当设备完成任务后触发中断到中断控制器,中断控制器就通知 CPU,一个中断产生了,CPU 需要停下当前手里的事情来处理中断。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1023082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“深入理解事件处理器、表单综合案例和组件通信“

目录 引言1. Vue的事件处理器2. Vue的表单综合案例3. Vue的组件通信总结 引言 Vue.js是一款流行的JavaScript框架,广泛应用于现代Web开发中。在Vue的世界里,事件处理器、表单综合案例和组件通信是三个重要的主题。本文将深入探讨这些主题,并…

二十二、MySQL联合查询

1、基础概念 (1)语法: select …… from …… union [all] select …… from …… (2)理解: 所谓的联合查询,就是对多个条件查询结果进行联合处理,取其并集。 2、实际操作 &…

AI写作生成器-人工智能技术的工具

众所周知,写作是一项需要时间、思考和创造力的工作。传统的写作过程可能需要作者长时间的积累、思考和修改,才能产生一篇优质的文章。随着AI写作生成器的出现,这一传统写作模式正经历着巨大的改变。 AI写作生成器是一类基于人工智能技术的工…

SpringBoot对Filter过滤器中的异常进行全局处理

前言 今天处理拦截器中的异常时,遇到这样一个问题,我们希望在过滤器中对用户的请求进行判断,如果不符合要求直接抛出异常并在前端展示。但是如果我们直接在过滤器中throw一个异常时,尽管我们使用ControllerAdvice和 ExceptionHan…

一对多映射处理

8.3.1 、collection /** * 根据部门id查新部门以及部门中的员工信息 * param did * return */ Dept getDeptEmpByDid(Param("did") int did);<resultMap id"deptEmpMap" type"Dept"> <id property"did" column"did&quo…

Java21 LTS版本

一、前言 除了众所周知的 JEP 之外&#xff0c;Java 21 还有更多内容。首先请确认 java 版本&#xff1a; $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment (build 2135-2513) OpenJDK 64-Bit Server VM (build 2135-2513, mixed mo…

Shiro 整合 Web

文章目录 Shiro的Web流程Shiro整合SSMShiro整合SpringBootShiro授权方式过滤器链自定义过滤器注解记住我 Shiro的Web流程 Shiro整合SSM 准备SSM的配置准备经典五张表&#xff08;见Shiro基本使用&#xff09;&#xff0c;完成测试准备Shiro的配置 核心过滤器 <!-- 配置S…

Git学习笔记4

GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库&#xff0c;提供公有仓库和私有仓库&#xff0c;但私有仓库是需要付费的。 到Github上找类似的项目软件。 GitLab可以创建免费的私有仓库。 GitLab是利用 Ruby开发的一个开源的版本管理系统&#xff0c;实现一个…

ResFields: 一种即插即用的MLP增容工具

ResFields: 一种即插即用的MLP增容工具 目录 概述 RESFIELDS 理论简介 实验(部分) 2D VIDEO APPROXIMATION1 TEMPORAL NEURAL RADIANCE FIELDS (NERF) 消融实验 环境配置 概述 论文名称: RESFIELDS: RESIDUAL NEURAL FIELDS FOR SPATIOTEMPORAL SIGNALS 作者单位…

基于Yolov8的野外烟雾检测(2):多维协作注意模块MCA,效果秒杀ECA、SRM、CBAM等 | 2023.9最新发布

目录 1.Yolov8介绍 2.野外火灾烟雾数据集介绍 3.MCA介绍 4.训练结果分析 5.系列篇 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它建立在先前…

Docker 应用部署

Docker 应用部署 一、部署MySQL 搜索MySQL镜像 拉取MySQL镜像 docker pull mysql:8.0创建容器&#xff0c;设置端口映射&#xff0c;目录映射 # 在root/home/mysql目录下创建MySQL目录用于存储MySQL数据信息 mkdir /root/home/mysql cd /root/home/mysql创建并运行 # 330…

video属性练习,手写controls

<video src"../xxx.mp4"></video><div class"controls"><button id"btnPlay">播放/暂停</button></div><div class"controls" id"progress">进度&#xff1a;<input type&quo…

编译chromium总结

文章目录 一、官方文档二、DEPOT_TOOLS_UPDATE三、少修改subprocess.py里的编码四、运行截图 之前在ubuntu18编译过&#xff0c;这次换win11试一试&#xff0c;成功后我又删了一次&#xff0c;再次编译发现了之前没注意到的点。下面是一些重点和我的实践。 一、官方文档 https…

【MT7628AN】IOT | MT7628AN OpenWRT开发与学习

IOT | MT7628AN OpenWRT开发与学习 时间:2023-06-21 文章目录 `IOT` | `MT7628AN` `OpenWRT`[开发与学习](https://blog.csdn.net/I_feige/article/details/132911634?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132911634…

Python练习之选择与循环

目录 1、编写程序&#xff0c;运行后用户输入4位整数作为年份&#xff0c;判断其是否为闰年。提示&#xff1a;如果年份能被400整除&#xff0c;则为闰年&#xff1b;如果年份能被4整除但不能被100整除也为闰年。2、编写程序&#xff0c;用户从键盘输入小于 1000 的整数&#x…

链表oj题1(Leetcode)——移除链表元素,反转链表,链表的中间节点,

链表OJ 一&#xff0c;移除链表元素1.1分析1.2代码 二&#xff0c;找到链表的中间节点2.1分析2.2代码 三&#xff0c;反转链表3.1分析3.2代码 四&#xff0c;找到链表中倒数第k个节点4.1分析4.2代码 一&#xff0c;移除链表元素 移除链表元素 1.1分析 这里的删除要分成两种…

视频监控系统/视频汇聚平台EasyCVR平台页面展示优化

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

代码随想录算法训练营day55|392.判断子序列 |115.不同的子序列

392.判断子序列 力扣题目链接 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"…

基于Xml方式Bean的配置-Bean的依赖注入以及·自动装配

Bean的依赖注入配置 Bean的依赖注入方式 注入方式配置方式通过Bean的set方法注入 <property name"userDAO" ref"userDAO"/> <property name"userDAO" value"userDAO"/> 通过构造Bean的方法进行注入 <constructor-arg n…

AB试验(三)一次试验的规范流程

AB试验&#xff08;三&#xff09;一次试验的规范流程 一次完整且规范的A/B试验可参考下图&#xff1a; 确定目标和假设 核心&#xff1a;A/B测试是因果推断&#xff0c;所以我们首先要确定原因和结果。目标决定了结果&#xff0c;而假设又决定了原因。 如何确定 分析问题&am…