摘要:
一、堆栈扩展在进程创建的时候,内核并没有为进程分配太多的堆栈,即使是逻辑地址空间也没有,这样做的好处就是如果说用户态的程序堆栈向下溢出(对386来说,就是访问了更低地址的内存空间),这样内核可以比较容易的检测出这种错误,尽管这种错误出现的可能性要比向上溢出的概率小的多。记得在之前使用VS编译器的时候 阅读全文
摘要:
一、多进程select这个是一个不太常见的场景,但是作为探讨性话题,大家可以在这里尽情YY一下,就像YY我们达到共产主义一样,想想会是什么情景,当然,还是这里讨论的问题更靠谱一些。根据select的语义,就是进程来同时等待若干个文件可读/可写/错误状态,直到指定时间结束,这个我想大家都是明白的。现在 阅读全文
摘要:
一、资源这些是一个系统级的行为特征,并且可能没啥直接关系,只是比较琐碎,所以放在一起做个总结,以后查询也方便一些。二、fd/pid回收问题这两个是系统中一个重要的handle,区别在于fd是进程内相关,而pid是系统级(据说加入namespace之后系统也可以有相同pid的进程),这些大家都知道,所 阅读全文
摘要:
一、两个测试程序[tsecer@Harry ArgLayout]$ cat ArgLayout.c/**简单测试程序,创建命令行参数中指定的进程,但是将execve的第二个参数(也就是子进程的argv数组)修改成随机无意义值*/#include <unistd.h>#include <stdio.h 阅读全文
摘要:
一、内核tty实现这个模块在内核的实现中占有浓重的一笔,我甚至经常觉得,经常搞的是串口还是网口是嵌入式工程师和网络工程师的一重要区别标志。所以作为一个嵌入式工程师,对这个tty设备接触的比较多,所以感情也比较深一些。在2011年11月份(伟大的圣光棍节月份),我在博客里对tty设备做了一个简单的总结 阅读全文
摘要:
一、文件的重要性文件在Unix系统中绝对是一个说之不尽的话题,也是一个非常重要的概念。对于文件,默认是子进程会继承父进程的文件描述符,而内核则负责init进程的三个文件描述符(标准输入、标准输出、标准错误,下同)。我们知道,对于同一个文件描述符,在不同的进程中可能代表不同的内容,但是如果是从init 阅读全文
摘要:
一、打开权限这里其实比较感兴趣的是文件夹的权限,假设对于root用户的一个文件夹,或者另一个不允许其它用户访问的文件夹,如果用户访问这个路径是否可以访问文件夹下的文件?简单的模型是这样的[root@Harry ~]# ll /drwxr-x--x. 2 root root 4096 2012-02- 阅读全文
摘要:
一、高端内存这个是Linux中的一个实现机制,当物理内存大于1G的时候,高于896M之上的内存就属于高端内存。这里的问题是:物理内存大于1G,但是内核可以使用的逻辑地址空间只有1G,所以内存物理地址空间多于内核可以使用的逻辑地址空间,这就相当于有些人钱多的花不完,也苦恼(请让我尽情的苦恼把),或者说 阅读全文
摘要:
一、uclibc中posix thread实现在早期Linux内核对象线程支持不是那么贴心的时候,用户态的posix线程实现也很蹩脚,通俗的说,就是上梁不正下梁歪。对于Unix下重要的posix线程库,libc的实现是通过所谓的LinuxThread模型来实现的,这个是试图在内核不支持线程的基础上模 阅读全文
摘要:
一、glibc中powerpc的backtrace实现这个函数是C库提供的堆栈回溯功能,实现原理也不复杂,就是从堆栈中寻找函数返回地址,只是powerpc里使用了内联汇编。int__backtrace (void **array, int size){ struct layout *current; 阅读全文