- 博客(6)
- 收藏
- 关注
转载 mmap的分析
阅读目录mmap基础概念 mmap内存映射原理 mmap和常规文件操作的区别 mmap优点总结 mmap相关函数 mmap使用细节回到顶部mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间
2021-10-09 10:09:07
160
转载 C宏定义中的连接符“##“和字符串化操作符“# “及变参宏“...“
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。1、宏定义中字符串化操作符#:#的功能是将其后面的宏参数进行字符串化操作,意思就是对它所应用的宏变量通过替换后在其左右各加上一个双引号。例如:#define WARN_IF(EXPR)\do {\ if (EXPR)\ fprintf(stderr, "Warning: " #EXPR "\n");\} while(0)上面代码中的反斜线\主要用来.
2021-09-29 14:40:00
1504
1
转载 信号量、互斥锁,读写锁和条件变量的区别
http://blog.chinaunix.net/uid-20671208-id-4935154.html信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线...
2019-04-09 15:38:54
459
转载 C数组&结构体&联合体快速初始化
背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。 C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组下标或结构体成员名。GNU C将其作为C89模式的扩展。 借助指定初始化特性,可实现数组或结构体元...
2019-04-01 15:46:09
1380
转载 GDT,LDT,GDTR,LDTR
一、引入保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引段寄存器PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS,GS)80位的段寄存器。由选择器CS对应表示的段仍为代码段,选择器SS对应表示的段仍为堆栈段
2017-12-28 20:48:49
210
转载 段表和页表
一、概述处理器(CPU)1.1 处理器位数在intel处理器的X86系列中,包含8086和8088的16位处理器,以及从80386(即i386)开始的32位处理器,而如今又有X86-64架构的64位处理器。那这些16位,32位和64位又有什么意义了?位数越高,处理器的寻址能力越强,则可以支持越大的物理内存。具体如下表(可见对于64位处理器的寻址范围已经是非常之大
2017-12-28 20:18:22
8178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人