07 2015 档案
摘要:一 section是什么?好吧,我们需要解释一下平时编译链接生成的二进制可执行程序(比如说ELF,EXE也行),so或者dll,内核(非压缩的,参加本系列第一节内容、vmlinux),或者ko是怎么组织的。其实,大家或多或少都知道这些二进制中包括有什么text/bss/data节(也叫section...
阅读全文
摘要:1、MTRR的概念内存类型范围寄存器(MTRRs,翻译过来真别扭,后面都以MTRR直接来说了)提供了一种机制,这种机制其实就是确定在系统内存中物理一段内存的类型。这个类型其实是正对CPU来说的,见图1图1 内存的类型这些类型,其实是告訴CPU在解析或者说操作内存的时候应该用什么手段。就这么简单。为什...
阅读全文
摘要:0x100,000 = 1MB0x10,000 = 64K0x1000 = 4K0x100 = 256B0x400 = 1K0x40,000,000 = 1GB131072 = 128K = 2* 0x10,000
阅读全文
摘要:预处理器(Preprocessor)1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60*24*365)UL我在这想看到几件事情:1)#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得...
阅读全文
摘要:gyroscopes 陀螺仪accelerometers 加速度计magnetometers 磁力计barometric pressure 气压remote pressure sensing 远程压力传感internal temperature 内部温度
阅读全文
摘要:数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该...
阅读全文
摘要:1. 错误提示: It seems that I cannot create a rebase-apply directory, and I wonder if you are in the middle of patch application or another rebase. 2. git
阅读全文
摘要:链表不限定元素的长度,可以动态分配元素并添加,另外经常的增删是链表优于其他数据结构的特点.今天我们用链表来实现一个队列.linkList.h#include #include #include #include #include #include #define new(type) (type *)...
阅读全文
摘要:请看下面的代码:#include#include#include#include#include#includevoid destroy(int * p){ if(p != NULL) { free(p); p = NULL; }}int main(){...
阅读全文
摘要:基于上一节生产者消费者问题--进阶再结合顺序循环队列来实现生产者消费者问题主要变化就是把需要操作的资源变成操作循环队列,代码如下:circularQueue.h#include #include #include #include #include #define FREE(p) \ if (...
阅读全文
摘要:一 顺序表循环队列1.1 顺序循环队列定义 队列是一种运算受限的先进先出线性表,仅允许在队尾插入(入队),在队首删除(出队)。新元素入队后成为新的队尾元素,元素出队后其后继元素就成为队首元素。 队列的顺序存储结构使用一个数组和两个整型变量实现,其结构如下:1 struct Queue{2 ...
阅读全文
摘要:生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作...
阅读全文
摘要:互斥量和信号量的区别1. 互斥量用于线程的互斥,信号量用于线程的同步。这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况),通过其...
阅读全文
摘要:http://blog.csdn.net/zjf280441589/article/details/43883055
阅读全文
摘要:在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生...
阅读全文
摘要:通过linux下文件互 斥地打开,实现线程/进程互斥的访问资源,以此实现多线程编程。值得注意的是,文件互斥的方式不但适用于多线程编程,还能实现多进程之间的交互。lock.h#include #include #include #include #include void initlock (cons...
阅读全文
摘要:每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。 当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。 通常open一个已存在的文件不会影响文件的链接数。open的作用只是...
阅读全文
摘要:条件变量与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一...
阅读全文
摘要:问题描述一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭,如图2-10所示。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿的时候,才试图拿起左、 右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿到...
阅读全文
摘要:读写锁读写锁适合于对数据结构的读次数比写次数多得多的情况.因为,读模式锁定时可以共享,以写 模式锁住时意味着独占,所以读写锁又叫共享-独占锁.初始化和销毁:#include int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, cons...
阅读全文
摘要:见源码:/********* 说明:********* 1.要让读者与写者之间、以及写者与写者之问要互斥地访同数据集;********* 2.在无写进程到来时各读者可同时访问数据集;********* 3.在读者和写者都等待时访问时写者优先.*********/#includ...
阅读全文
摘要:互斥量(mutex)互斥锁创建有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁,方法如下:pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;在LinuxThreads实...
阅读全文
摘要:转载自:http://mingxinglai.com/cn/2013/06/mutil-threads/对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。这个说法不准确,但是可以指出期间的差别;进程是具有一定独立功能的程序关于某个数据集合上的...
阅读全文
摘要:sudo apt-get update sudo apt-get upgrade搭建C/C++编译环境:sudo apt-get install build-essential安装关联库:sudo apt-get install cmake git libgtk2.0-dev pkg-config ...
阅读全文
该文被密码保护。
摘要:转载自:本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值在学习原码, 反码和补码之前, 需要先...
阅读全文