【linux内核分析与应用-陈莉君】IO空间管理

深入分析Linux内核源码 陈莉君.pdf 深入分析Linux内核源码 陈莉君.pdf 人民邮电出版社出版 立即下载

目录

 

1.设备控制器

2.I/O空间的管理

3.I/O端口及I/O内存和I/O端口的访问

4.I/O内存资源的访问

5.I/O端口的访问

6.查看机器上的I/O端口

7.I/O资源管理

8.管理I/O区域资源

9.管理I/O内存资源

10.小结,参考书与思考问题


1.设备控制器

什么是设备控制器呢?
它是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和处理器之间的数据交换.
它是CPU与I/O设备之间的接口,它通过控制总线接收从CPU发来的命令并去控制I/O设备工作.控制器相当于
CPU与外设打交道的一个助理,让处理器从繁杂的设备控制事务中解放出来.

2.I/O空间的管理

设备通常会提供一组寄存器来控制设备,读写设备以及获取设备的状态,这些寄存器就是
控制寄存器,数据寄存器和状态进村器,它们位于控制器中.
从编址方式来说:
如果IO空间与内存在一起编址,对应的内存空间被称为IO内存,如图左边所示;
如果IO空间单独编址,就位于IO空间,通常被称为IO端口,如图右边所示.

3.I/O端口及I/O内存和I/O端口的访问

什么是I/O端口?
设备驱动程序要直接访问外设或者其接口卡上的物理电路,通常以寄存器的形式出现访问.
外设寄存器也称为I/O端口,通常包括控制寄存器,状态寄存器和数据寄存器.

如何访问I/O内存和I/O端口?
访问I/O内存的方式一般是通过访问一般内存的指令就可以访问I/O内存;
访问I/O端口的方式一般是通过外设寄存器的读写专门设置的指令来进行访问.

4.I/O内存资源的访问

用于I/O指令的地址空间相对来说是很小的,自从P3(??)总线出现后,无论是CPU的设计是采用
I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上就是采用
了虚拟内存的手段,这样的映射是通过为ioremap()这个专门的函数来建立的,该函数如图所示,
其中的参数含义也如图.

5.I/O端口的访问

在读写I/O端口的时候需要注意的一点就是大多数平台区分8位,16位和32位端口,
其中port参数指定端口空间中的端口地址,在大多数平台上,它都是无符号的短整型,
其他的平台上是无符号的整型,显然端口地址的类型是由端口空间的大小来决定的.

6.查看机器上的I/O端口

7.I/O资源管理

8.管理I/O区域资源

9.管理I/O内存资源

10.小结,参考书与思考问题

【CV论文精读】【协同感知综述】Collaborative Perception for Autonomous Driving :Current Status and Future Trend 感知是自动驾驶系统的关键模块之一,近年来取得了很大进展。然而,单个车辆的有限能力导致感知性能提高的瓶颈。为了突破个体感知的局限,协作感知被提出,它使车辆能够共享信息来感知视线和视野之外的环境。本文综述了有前途的协作感知技术的相关工作,包括介绍了基本概念,概括了协作模式,总结了协作感知的关键要素和应用。最后,我们讨论了这一研究领域面临的挑战和问题,并给出了一些潜在的进一步方向。 阅读详情

相关推荐

iOS反编译-hook微信之艾特所有人

all。

2501_90243249的博客 759

陈莉君教授: 回望踏入Linux内核之旅

初次踏入Linux       几多耕耘,几多收获,不小心在Linux这个自由王国畅游了多年。依稀记得刚进入这个世界时的那份恐慌和无知,更庆幸那时的无知无畏。在那个20世纪的最后一年,贸然带着几个弟子踏入一无所知的Linux世界。 1999年的那个春天,也是在讲授操作系统,只不过是鼓励大家参加我的兴趣小组。居然有10个人报名了(惊喜)。最初也无非是希望在课堂之外,让大家能够多接触一些东西

Linux阅码场 3383

FPGA驱动OV5640:从SCCB协议到图像数据采集的实战解析

本文详细解析了使用FPGA驱动OV5640摄像头模组的完整流程,从SCCB协议通信、寄存器配置到图像数据采集。重点阐述了SCCB(与I2C类似)协议的实现细节、关键的上电复位时序,以及如何通过状态机解析视频流时序并捕获图像数据,为嵌入式视觉开发提供了实战指南。

weixin_29191761的博客 187

【linux内核分析与应用-陈莉君】系统调用机制

1.系统调用 系统调用是内核的出口,说的是操作系统提供给用户程序调用的一组特殊接口,从逻辑上来说, 系统调用可以被看做是内核与用户空间交互的接口,好比一个中间人,将用户的请求传达给内核, 当内核处理完了以后再将处理的结果返回给用户,下图是open系统调用与内核交互的一个过程. 2.跟踪进程所调用的系统调用 strace可以看所有的程序的系统调用,不同子系统的系统调用可以用不同的命令查看. 3.中断异常和系统调用的比较 ...

Edidaughter的博客 463

DeepSeek-OCR 本地部署使用教程(附完整环境配置与推理示例)

DeepSeek-OCR是由DeepSeek AI推出的开源OCR模型,支持高精度文档识别与结构化输出(如Markdown转换)。本文提供了详细的本地部署指南,包括系统要求(推荐Linux+A100 GPU)、环境配置(Python 3.12.9+PyTorch 2.6.0+CUDA 11.8)、模型下载及两种推理方式:高性能的vLLM(适合批量处理)和灵活的Transformers(适合调试)。支持多种分辨率模式和提示词模板,适用于合同识别、PDF转换等场景。常见问题包括显存优化和性能调优建议。

qq_58607032的博客 6721

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 285

陈莉君 linux内核,Linux内核分析与应用 西安邮电大学(陈莉君)

陈莉君 西安邮电大学 计算机学院 教授陈莉君,教授,任教于西安邮电大学,自1999年以来致力于推动Linux在中国的发展,深入研究Linux内核相关理论以及技术,跟踪Linux内核发展动向,针对Linux内核版本的不断演化,连续编写和翻译了十多部相关专著、译著及教材。其中专著《Linux操作系统内核分析》曾被指定为中科院考博参考书。翻译的《深入理解Linux内核》和《Linux内核设计与实现》(各...

weixin_36158990的博客 980

汇川AM系列ethercat控制伺服的使用说明(含转矩模式)

本文以一个实际例子,介绍ethercat伺服驱动器的工作原理,以及在汇川AM系列PLC中,如何点动、定位、速度、转矩控制ethercat伺服。

qq_34047402的博客 5111

陈莉君:重温10年前的Linux内核开发者大会见闻

前记:又到一年Linux内核开发者大会时,今年是第十三届,在南京大学举办。  在网上搜索资料时,偶然看到2009年Linux内核大会后写的见闻,有份亲切和熟悉,10年似乎...

Linux阅码场 944

YOLOv8剪枝 稀疏训练+slim剪枝测试精度仅掉1.6个点,速度提高10.3fps!

摘要 本文介绍了YOLOv8剪枝方法Slim(Network Slimming),通过L1正则化作用于BN层的缩放因子(γ),自动识别并剪除冗余通道,实现模型轻量化。核心步骤包括:稀疏训练(引入L1正则化)、通道剪枝(按γ阈值裁剪)、微调恢复精度。实验表明,该方法能有效压缩模型大小、减少计算量,且支持通过调整speed_up等超参数控制剪枝强度。移植代码需修改C2F模块以适配剪枝,并配置稀疏训练参数(如reg、sl_epochs)。最终剪枝模型需移除优化器以减小体积,但不支持多卡训练。

FJN110的博客 861

【LIN总线测试】——LIN主节点物理层测试

LIN总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。本章节主要介绍LIN主节点物理层如何测试?

测试领域技术分享 5530

【linux内核分析与应用-陈莉君】内核同步概述

1.内核同步机制的引入 如果把内核看做不断地对各种请求进行响应的服务器的话,那么正在CPU上执行的进程发出中断请求 的外部设备等相当于客户,正如服务器一直要响应客户的请求一样,内核 ...

Edidaughter的博客 553

LeRobot 机器人学习(Robot Learning)入门教程(一)

本文介绍了现代机器人学习领域的发展现状与关键技术。随着机器学习进步和大规模机器人数据的普及,机器人技术正从传统基于模型的方法转向数据驱动的学习范式。HuggingFace开发的开源库lerobot实现了端到端集成,支持多种机器人平台和先进算法(强化学习、行为克隆等)。核心创新包括LeRobotDataset标准化格式,统一处理多模态时间序列数据,并支持高效批处理和流式访问。教程涵盖经典机器人学基础、强化学习原理、模仿学习技术和通用模型开发,结合代码示例展示如何构建适应多样化任务的机器人系统。该资源旨在为研究

2506_90492529的博客 1991

【Linux内核分析与应用-陈莉君老师】课程相关索引

1.【Linux内核分析与应用-陈莉君老师】动手实践-把虚拟内存转换成物理地址 2.【Linux内核分析与应用-陈莉君老师】从程序到进程 3.【linux内核分析与应用-陈莉君老师】进程的一生 4.【Linux内核分析与应用-陈莉君老师】进程的调度 ...

Edidaughter的博客 840

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux内核分析与应用9-设备驱动

Linux支持世界上几乎所有不同功能的硬件设备,导致Linux内核中有一半的代码是设备驱动,且随着硬件的快速升级迭代,设备驱动的代码量也快速增长..为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热插拔处理,电源管理等,Linux提出了设备模型(Driver Model)只能一个字节一个字节进行读写操作的设备,不能随机读取设备中的某个设备,必须按照先后次序来进行, 字符设备是面向流的设备.常见的字符设备有鼠标,键盘等。一般一个扇区的大小是512字节,但如果是SSD,则为4096个字节.

techdashen的博客 124

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【linux内核分析与应用-陈莉君】进程的一生

1.进程与线程 2.TASK_STRUCT结构的统一性与多样性 3.进程API的实现

Edidaughter的博客 430

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【linux内核分析与应用-陈莉君】进程用户空间管理机制

1.创建进程用户空间 用户空间如何被创建? 实际上是通过拷贝或者共享父进程的用户空间来实现的. 也就是说内核调用copy_mm函数来实现的. 这样就为新进程建立了所有的页表和mm_struct结构. 通常来说每个进程都有自己的用户空间,但是如果调用的clone函数 创建的内核线程它是共享父进程的用户空间, ...

Edidaughter的博客 459

【linux内核分析与应用-陈莉君】设备驱动概述

1.为什么要引入设备驱动程序 计算机中三个最基础的物质基础是: CPU 内存 输入输出设备. 与I/O设备相比,文件系统是一种逻辑意义上的存在,它只不过使得对设备的操作更方便,更有组织,更接近人类的 思维方式,可以说文件操作是对设备操作地组织与抽象,而设备操作时对文件操作的最终实现. 如何让机器般冰冷的硬件设备拥有灵性,从而使得控制设备像操作文件一样方便有效,这个是本章需要讨论的设备驱动问题. 2.设备驱动程序的作用 ...

Edidaughter的博客 518

【linux内核分析与应用-陈莉君】动手实践--内核多任务并发实例

1.内核多任务并发示意图 本节我们会用一个实例来看看在linux中是如何使用这些

Edidaughter的博客 847

【linux内核分析与应用-陈莉君】Linux内存管理机制

1.内存层次

Edidaughter的博客 885

【Linux内核分析与应用-陈莉君】进程的调度

1.基本调度模型 进程的调度实际上就是从就绪队列中选择一个进程投入CPU运行,从图中可以看出: 调度的主战场就是就绪队列, 核心就是调度算法, 实质性的动作是进程的切换, 对于以

Edidaughter的博客 530

【Linux内核分析与应用-陈莉君老师】动手实践-把虚拟内存转换成物理地址

1.地址转换 进程中不直接对物理地址直接操作,CPU在运行时指定的地址需要经过内存管理单元MMU 转换后才能访问到真正的物理内存,地址转换的过程分为两块:分段和分页. 分段机制简单地来说就是讲进程的代码,数据,栈分在不同的虚拟地址段上,从而避免 进程间的互相影响,分段之前的地址我们称之为逻辑地址,由两部分组成:高位的段选择 符和低位的段内偏移,在分段时,我们先用段选择符在响应的段描述符表中找到段描述符-- 也就是某个段的基地址,再加上段内偏移量就得到对应的线性地址,线性地址也称之为 虚拟地址,在实际应用

Edidaughter的博客 922

Linux操作系统原理与应用(陈莉君)——学习笔记

《Linux操作系统原理与应用》作者陈莉君是翻译《深入理解Linux内核》的作者。虽然我不觉得《深入理解Linux内核》翻译得很好,但是从作者这种为推广Linux内核而努力的精神还是挺佩服的,因此,这里无私分享出学习《Linux操作系统原理与应用》的学习笔记。书中给出了许多代码实例,很适合结合边学习边实践。该教材还提供实践学习网站:Linux内核之旅网站中有许多关于Linux初学者的有用学...

系统运维 1033

设备管理 IO组成 IO软件

I/O系统的组成 包括: 需要用于输入、输出和存储信息的设备; 需要相应的设备控制器; 控制器与CPU连接的高速总线; 有的大中型计算机系统,配置I/O通道; I/O软件的层次结构及层功能 管理对象: I/O设备和相应的设备控制器(I/O系统组成) 基本任务: 完成用户提出的I/O请求, 提高I/O速率、改善I/O设备的利用率。 为更高层进程方便使用设备提供手段 设备管理 I/O系统的功能、模...

无书清书的博客 2578

【linux内核分析与应用-陈莉君】虚拟文件系统的主要数据结构

1.虚拟文件系统中对象的引入 虚拟文件系统这几个字中第一个词是虚拟,这就意味着这样的文件系统在磁盘或者其他 存储介质上并没有对应的存储信息,那么一个虚无的文件系统到底是怎样形成的呢? 尽管linux支持多达几十种文件系统,但是这些真实的文件系统并不是一下就都挂在 系统中,它们实际上是被按需被挂载的. 老子说:有无相生.这个虚的VFS的信息都来源于实的文件系统,所以VFS必须承载各种 文件系统的共有属性 2. ...

Edidaughter的博客 447

Linux 内核分析及应用

编辑推荐 本书分模块介绍了 Linux 操作系统的内核设计和实现,针对关键概念、算法和数据结构做了重点的讲解。同时,对诸多经典应用程序进行了剖析,如 Nginx、Memcached、Redis、LVS 等,讲解如何利用操作系统提供的底层支持进行合理的应用设计和实现。 内容简介 本书由架构师亲力打造,分享了他十多年后端开发经验,特别是围绕 Linux 系统进行的服务开发经验。 本书共8章,主要内容包...

GitChat 5745
上一篇: 【linux内核分析与应用-陈莉君】设备驱动概述
下一篇: 【linux内核分析与应用-陈莉君】设备驱动模型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值