Linux
文章平均质量分 75
DenzilXu
这个作者很懒,什么都没留下…
展开
-
文件权限与进程ID
1 stat、fstat、lstat#includeint stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int fd, struct stat *buf);int lstat(const char *restrict pathname, struct stat *restric原创 2013-04-01 11:26:45 · 1111 阅读 · 0 评论 -
文件IO与标准IO库
1不带缓冲IO所谓不带缓存指的是每个read和write都调用内核中的一个系统调用。这些不带缓存的I/O函数不是ANSI C的组成部分,但是是POSIX.1和XPG3的组成部分。(这unbuffered I/O,是与后面说明的标准I/O函数相对)。2 文件描述符、open(creat、lseek)对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存原创 2013-04-09 10:10:54 · 1168 阅读 · 0 评论 -
rcu_assign_pointer、rcu_dereference、ACCESS_ONCE
题记:看代码不要死死的一条一条往后看,要适当的联系上下文,看出整体逻辑性,流程性。事实上,编译器和处理器也不是呆板的一条一条往后执行的,它也会有预取和逻辑判断。 由内存屏障到RCU的发布订阅内存屏障主要解决的问题是编译器的优化和CPU的乱序执行。 编译器在优化的时候,生成的汇编指令可能和c语言程序的执行顺序不一样,在需要程序严格按照c语言顺序执行时,需要显式的告诉编译不需要优化转载 2012-11-05 11:49:25 · 9958 阅读 · 0 评论 -
进程环境
1 main、exit、atexitC程序总是从main函数开始执行。main函数的原型是:int main(int argc, char *argv[] );其中,argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。当内核起动C程序时(使用一个exec函数),在调用main前先调用一个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始地址——这是由连接编辑程原创 2013-04-22 19:59:31 · 827 阅读 · 0 评论 -
进程控制与进程关系
1进程IDfd分配是对一个进程内部而言的,每个进程内的fd是相互独立的。而进程的ID确实整个系统统一分配的。每个进程都有一个非负整型的唯一进程ID。因为进程ID标识符总是唯一的,常将其用做其他标识符的一部分以保证其唯一性。有某些专用的进程:进程ID 0是调度进程,常常被称为交换进程( swapper )。该进程并不执行任何磁盘上的程序—它是内核的一部分,因此也被称为系统进程。进程I原创 2013-04-22 20:01:51 · 1154 阅读 · 0 评论 -
信号
1信号信号是软件中断。很多比较重要的应用程序都需处理信号。信号提供了一种处理异步事件的方法,例如终端用户键入中断键,则会通过信号机构停止一个程序。首先,每个信号都有一个名字。这些名字都以三个字符SIG开头。例如,SIGABRT是夭折信号,当进程调用abort函数时产生这种信号。SIGALR M是闹钟信号,当由alarm函数设置的时间已经超过后产生此信号。在头文件中,这些信号都被定义为正原创 2013-04-22 20:03:48 · 792 阅读 · 0 评论 -
高级IO
1非阻塞IO前面将IO分成了带缓冲的IO和不带缓冲的IO,这是站在不同的系统调用的角度,针对系统调用是否使用了流缓冲而言的。而阻塞IO和非阻塞IO则是站在更高的、文件打开属性的角度,无论对于哪种系统调用,而看打开的文件是否阻塞而言的。非阻塞I/O使我们可以调用不会永远阻塞的I/O操作,例如open,read和write。如果这种操作不能完成,则立即出错返回,表示该操作如继续执行将继续阻原创 2013-05-07 14:59:43 · 739 阅读 · 0 评论 -
线程
1线程1.1 概念典型的UNIX进程可以看成只有一个线程:一个进程在同一时刻只做一件事情。有了多个线程以后,进程可以在同一时刻做多个事情,每个线程处理各自独立的任务。线程包含了表示进程执行环境必须的信息,其中包括进程中表示线程的线程ID、一组寄存器值,栈、信号屏蔽字、errno变量以及线程私有数据。进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序副本、程序的全局内存和堆原创 2013-05-07 14:51:51 · 665 阅读 · 0 评论 -
进程间通信
前面说明了进程控制原语并且观察了如何调用多个进程。但是这些进程之间交换信息的唯一方法是经由fork或exec传送打开文件,或通过文件系统。本章将说明进程之间相互通信的其他技术—IPC(InterProcess Communication)。1 管道管道是UNIX IPC的最老形式,并且所有UNIX系统都提供此种通信机制,管道有两种限制;(1) 它们是半双工的。数据只能在一个方向上流动。原创 2013-05-07 15:07:54 · 833 阅读 · 0 评论