摘要:
一、简介LVM是 Logical Volume Manager(逻辑卷管理)的简写。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。 与传统的磁盘与分... 阅读全文
摘要:
线程间的内存可视性当线程调用怕thread——create时, 它所能看到的内存值也是它建立的线程能够看到的。任何在调用怕thread_create之后写入的数据,可能不会被建立的线程看到,即使写操作发生在启动新线程之前。当线程解锁互斥量时候看到的内存数据,同样也能被后来直接锁住(或通过等待条件变量... 阅读全文
摘要:
概述等待条件变量总是返回锁住的互斥量。条件变量的作用是发送信号,而不是互斥。与条件变量相关的共享数据是“谓词”,如队列满或队列空条件。一个条件变量应该与一个谓词相关。如果一个条件变量与多个谓词相关,或者多个条件变量与一个谓词相关,有可能死锁。主线程(Main Thread) 声明和初始化需要同步的全... 阅读全文
摘要:
互斥量互斥量(Mutex)是“mutual exclusion”的缩写。互斥量是实现线程同步,和保护同时写共享数据的主要方法。使用互斥量的典型顺序如下:1. 创建和初始一个互斥量 2. 多个线程尝试去锁定该互斥量 3. 仅有一个线程可以成功锁定改互斥量 4. 锁定成功的线程做一些处理 5. ... 阅读全文
摘要:
1. pthread线程通过调用你提供的某些函数开始。这个“线程函数”应该只有一个void*型参数,并返回系统的类型。2. 通过向pthread_create函数传递线程函数的地址和线程函数调用的参数来参加线程。3. 线程可以通过pthread_self获取自己的ID。4. 除非线程的创建者或者线程... 阅读全文
摘要:
一个简单的alarm实例errors.h头文件 1 #ifndef __ERRORS_H 2 #define __ERORRS_H 3 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 #ifdef DEBUG11 #defin... 阅读全文
摘要:
1. 基本概念一个Unix进程可以理解为一个线程加上地址空间、文件描述符和其他数据。异步表明事情相互独立发生, 除非有强加的依赖性。并发指实际可能是穿行发生的事情好像同时发生一样。并行指并发序列同时执行。线程安全是指代码能够被多个线程调用而不会产生灾难性后果。2. 共享数据——同步对象——互斥量——... 阅读全文
摘要:
关键术语: 超级快(super block)对象: 一个超级块对应一个具体的文件系统(已经安装的文件系统类型如 ext2,此处是实际的文件系统,不是 VFS)。 iNode 对象: inode是内核文件对象的元数据,inode 仅仅只是保存了文件对象的属性信息,包括:权限、属组、数据块的位置、时间戳 阅读全文
摘要:
1 #include 2 3 int main(void) 4 { 5 int a[]={1,2,3,4,5}; 6 int *p = (int*)(&a + 1); 7 printf("%d,%d\n",*a+1,*(p-1)); 8 9 // int (*p... 阅读全文
摘要:
1 #include 2 #include 3 4 /* #是"字符串化"的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串 */ 5 #define LOG_ERROR(err) fprintf(stderr, #err) 6 7 /* "##"是一种分隔连接方式,它的作用是先分隔... 阅读全文