11 2022 档案

摘要:对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中 阅读全文
posted @ 2022-11-28 16:16 晚安z 阅读(274) 评论(0) 推荐(0) 编辑
摘要:一、阻塞和非阻塞简介 当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。 二、阻塞访问(等待队列) 阻塞访问最大 阅读全文
posted @ 2022-11-28 11:34 晚安z 阅读(108) 评论(0) 推荐(0) 编辑
摘要:一、并发与竞争简介 并发:多个“用户”同时访问一个共享的内存。 竞争:多个“用户”同时访问一段共享的内存并对其修改,就会造成数据混乱,甚至程序崩溃,这就是竞争。 二、造成并发与竞争的原因 1、多线程并发访问, Linux 是多任务(线程)的系统,所以多线程访问是最基本的原因。 2、抢占式并发访问, 阅读全文
posted @ 2022-11-27 21:25 晚安z 阅读(129) 评论(0) 推荐(0) 编辑
摘要:大小端的原理 对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端字节序;另一种方法是将高序字节存储在起始地址,这称为大端字节序。即 大端是高字节存放到内存的低地址 小端是高字节存放到内存的高地址 假如现有一32位int型数0x123456 阅读全文
posted @ 2022-11-26 20:49 晚安z 阅读(369) 评论(0) 推荐(0) 编辑
摘要:一段代码想要最终被计算机执行,首先需要被翻译成机器可识别和执行的指令,代码编译的过程往往包含几个步骤: 代码 -> 词法语法分析 -> 语义分析 -> 中间代码生成 -> 目标代码生成 在中间代码生成这个阶段,编译器会尝试对中间代码进行优化,通过减少无效或冗余的代码、计算强度优化等手段,以助于减少最 阅读全文
posted @ 2022-11-25 21:51 晚安z 阅读(161) 评论(0) 推荐(0) 编辑
摘要:字符设备是按照字节流进行读写操作的设备,读写数据是分先后顺序的。常见的点灯、按键、 IIC、 SPI和LCD 等都是字符设备 。 字符设备驱动开发步骤: 总体思路: 定义并初始化一个字符设备 -1、定义一个字符设备—>struct cdev 2、定义并初始化字符设备的文件操作集—>struct fi 阅读全文
posted @ 2022-11-25 08:02 晚安z 阅读(236) 评论(0) 推荐(0) 编辑
摘要:1、const修饰变量 被const修饰过的变量相当于常量,它的值不能被赋值改变,在整个作用域内保持固定。所以说它定义的是只读变量,在定义的时候需要给它赋初值。 1 const int a = 1; 2 a = 2; /*错误,常量的值不能改变*/ 3 const int a; /*错误,常量定义时 阅读全文
posted @ 2022-11-23 17:34 晚安z 阅读(176) 评论(0) 推荐(1) 编辑
摘要:1、static修饰局部变量 在函数体内,只初始化一次,被static声明过的局部变量在调用过程中值不变。原因:在任意函数内定义局部变量,存储在线程中的栈区,出函数时自动摧毁,所以在每次调用这个函数时,局部变量的初始值都为定义的值在进行运算。static在修饰局部变量时,存储在静态区,函数返回时值保 阅读全文
posted @ 2022-11-22 22:01 晚安z 阅读(194) 评论(0) 推荐(1) 编辑
摘要:sizeof和strlen在C语言中常用来计算字符大小和长度,在应用中却有着本质的区别。 sizeof是C语言中的关键字,其作用是返回一个对象或类型所占的内存字节数。使用方式为: int i; sizeof(int); *//值为4*` sizeof(i); *//值为4,等价于sizeof(int 阅读全文
posted @ 2022-11-10 22:06 晚安z 阅读(544) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示