Linux
文章平均质量分 78
mg0832058
这个作者很懒,什么都没留下…
展开
-
abort()函数不是多线程安全的,但它是异步信号安全的。
今天遇到了工作以来最深入的问题,就是关于abort函数的多线程安全性问题,应该写一篇文章,纪念一下,希望自己以后能够学到更多关于Linux内核的知识,祝愿自己以后工作越来越顺利。首先,需要说明一下,什么是多线程安全以及异步信号安全。所谓多线程安全,我们称为MT-Safe,就是指同一个函数,同时被多个线程并行调用时,不会出现问题,也就是说,其执行结果就和该函数被串行执行多次的结果一样。打个比方,如果一个函数在不加锁的情况下使用了全局变量或静态变量,那么,当它被多个线程同时调用时,有可能出现结果不一致的情况,这原创 2010-07-26 21:56:00 · 3085 阅读 · 0 评论 -
内存映射文件原理探索
首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应,如图1中过程1所示。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存在的。在内存映射的过程中,并没有实际的数据拷贝,文件没有被载入内存,只是逻辑上被放入了内存,具体到代码,就是建立并初始化了相关的数据结构(struct address_space),这个过程有系统调用mmap()实现,所以建立内存映射原创 2010-09-17 13:49:00 · 55783 阅读 · 45 评论