自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Linux内存管理

Linux内存管理文章目录Linux内存管理前言一、Linux内存映射原理二、内核空间内存存取1.kmalloc()2.__get_free_pages ()3.vmalloc()4.slab 与内存池前言上一篇简单介绍了MMU,本篇主要介绍对包含MMU的处理器而言,Linux如何进行内存管理。一、Linux内存映射原理对于包含 MMU 的处理器而言,Linux 系统提供了复杂的存储管理系统,使得进程所能访问的内存达到 4GB。在 Linux系统中,进程的 4GB内存空间被分为两

2021-01-02 22:35:03 127 1

原创 内存管理单元MMU

内存管理单元MMU文章目录内存管理单元MMU一、MMU是什么?二、MMU原理1.基本概念2.处理器访问内存过程一、MMU是什么?高性能处理器一般会提供一个内存管理单元(MMU),该单元辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和 Cache 缓存控制等硬件支持。操作系统内核借助 MMU,可以让用户感觉到好像程序可以使用非常大的内存空间,从而使得编程人员在写程序时不用考虑计算机中的物理内存的实际容量。二、MMU原理1.基本概念为了理解基本的 MMU 操作原理

2021-01-01 18:47:36 171

原创 Linux驱动异步通知实现

前言前几篇讲解了Linux驱动的阻塞与非阻塞访问机制,本篇讲解另一种Linux驱动的访问机制——异步通知机制。一、异步通知的概念与作用以下借用《Linux设备驱动开发详解》中的描述来向大家介绍异步通知:异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一

2020-12-25 23:23:51 207

原创 Linux轮询操作

Linux设备之非阻塞I/O操作文章目录Linux设备之非阻塞I/O操作前言一、select二、poll1.引入库2.读入数据总结前言上一篇讲解了Linux设备的阻塞I/O操作,其原理是利用了把进程挂到等待队列中,等条件满足时再唤醒此进程。本片所讲解的是轮询操作,也就是非阻塞的I/O操作。弄清轮询操作主要要弄清select、poll、epoll这三个接口的作用与差别,下面就是对它们的介绍提示:以下是本篇文章正文内容,下面案例可供参考一、select1、select==>时间

2020-12-19 20:59:58 1155

原创 Linux设备驱动之阻塞I/O操作

系列文章目录阻塞与非阻塞I/O操作系列文章目录阻塞与非阻塞一、阻塞I/O操作机制二、使用步骤1.引入库2.读入数据总结阻塞与非阻塞什么是阻塞与非阻塞的IO操作呢?当我们在对Linux设备进行I/O操作时,可能碰到暂时无法获取设备(例如设备被占用)的情况,接下来的操作如果是挂起进程直到满足可操作的条件后再进行操作,那就称为阻塞的I/O操作;如果是进程不挂起,而是不停地轮询等待设备被释放,或者干脆放弃设备的调用,这种操作就被称为非阻塞的I/O操作。一、阻塞I/O操作机制由于阻塞机制要求

2020-12-14 22:41:29 202

原创 并发与竞态(自旋锁&信号量)

并发与竞态提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档并发与竞态并发与竞态前言举一个例子一、竞态发生的情形1、对称多处理器(SMP)的多个CPU2、单CPU内进程间的抢占3、中断二、解决竞态的方法1.引入库2.读入数据总结前言前几篇博客主要讲解了Linux驱动的基础概念以及字符型设备驱动的模板,并且编写了一个实例证明了该模板的可用性。那么这里引

2020-12-07 23:06:35 154

原创 Linux字符设备驱动

系列文章目录提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档Linux字符设备驱动系列文章目录前言一、必要的驱动结构体及接口含义1、cdev结构体2、分配与释放设备号接口二、使用步骤1.引入库2.读入数据总结前言今天主要描述下Linux字符设备驱动的模板,主要目的是缕清字符设备驱动的基本逻辑而忽略具体设备的寄存器赋值操作。一、必要的驱动结构体及接口含义1、cdev结构体struct cdev {struct kobject kobj; // 每个 cde

2020-12-02 22:58:47 107

原创 Linux内核模块简介

Linux内核模块简介要想使编写的驱动程序生效,就需要把写好的代码编入到内核中。那怎么把自己写的代码放入内核进行编译呢?总共有两种方法:1)把所有需要的功能编入内核即可实现。但是这么做会产生两个问题:第一个问题是如果所编写的代码中有错误,需要调试,那么每一次都需要重新编译整个内核,这会非常消耗时间。这么说有的小伙伴就会问了,这又能消耗多长时间呢?以笔者亲身经历的一个嵌入式项目来看,重编依次内核大约2小时左右。假设你调试代码需要3次才能调试通过(实际工程中三次调试好一个功能都属于大神级别的人物了,除

2020-11-17 23:40:23 161

原创 linux设备驱动开发

linux设备驱动开发大家好。今天闲暇时翻了下大学时代留下来的书籍。看见linux设备驱动相关的书后,由于毕业后一直搞得是偏业务层的开发,现在发现驱动方面的知识有点生疏了。不过问题不大,现在我决定把它们再捡起来,有些知识由于时间久远造成书写错误,还请各位看官老爷们批评指正。废话不多说,直接开搞!## 设备类型同志们,要想搞设备驱动,首先就是要区分想要驱动的设备共分为多少不同种类,然后才能根据不同种类的设备进行不同操作。linux系统将存储器和外设分为三个基础大类,分别是:1)字符设备。2)块设备

2020-11-15 19:48:42 110

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除