操作系统
文章平均质量分 88
fristkey2
这个作者很懒,什么都没留下…
展开
-
proc源码解析(一)--proc文件系统的内容
在linux系统中,伪文件系统是系统中重要的组成部分,它与普通文件的最大差别在于它的易失性。普通文件都有固定的存储介质,而伪文件系统则存储在内存中,这也使得伪文件系统在系统掉电后,它保存的内容就会挥发掉。 Linux系统中存在以下几类伪文件系统: 1.procfs:proc提供内核和用户交互的平台,由于其文件格式是ASCII,所以用户可以使用cat,vim,echo等命令查看或修改文件,当然必转载 2012-09-18 18:02:51 · 558 阅读 · 0 评论 -
proc源码解析(四)--挂载proc文件系统
挂载proc文件系统和挂载普通文件系统如ext2没有区别,其挂载过程会在VFS文件系统时详细描述,此处就不在多费唇舌了。 proc的挂载命令是: root@xuhengyang # mount -t proc proc /proc转载 2012-09-18 18:05:14 · 1043 阅读 · 0 评论 -
关于进程创建三,完结篇
在连续写了2个自己的实验笔记之后,貌似这个问题有点头绪了,在二中我们发现了出现了0-》1-》0的现象,且在多次运行之后, 结果证实了这个规律是稳定的,当然也发现存在缓存区的现象,这里需要感谢一下 我的一位大学同学,是他为我找到了下面的这篇文章, 讲的是同样的问题,不同的是这哥们是专家,在上述的2篇文章中出现了分析错误,所以请一定抱着怀疑的态度看我写的文章,再我看完这篇文章后, 可能会推翻之前原创 2012-10-13 20:31:22 · 720 阅读 · 0 评论 -
proc源码解析(七)--查找目录项
前边几节讲了proc的实现和管理,还有一个重要的功能没有提到,那就是proc目录项的查找。 在查找的过程中,用户程序把proc看作是普通文件系统里的文件;也就是说当查找目录项时,do_lookup会调用real_lookup函数执行与文件系统相关的查找,real_lookup则会调用proc根节点inode的 proc_root_inode_operations中的proc_root_l转载 2012-09-18 18:07:26 · 735 阅读 · 0 评论 -
proc源码解析(六)--proc文件读写函数
前边说过目录项创建时一般都使用默认的读写函数,本节就来看看默认的文件操作函数的定义。前边已经引用过该定义,此处再次引用: static const struct file_operations proc_file_operations = { .llseek = proc_file_lseek, .read = proc_file_read,转载 2012-09-18 18:06:39 · 1200 阅读 · 0 评论 -
proc源码解析(五)--proc的管理函数
proc目录是系统模拟出来的一个文件系统,本身并不存在于磁盘上,其中的文件都表示内核参数的信息,这些信息分两类,一类是可都可写的,这 类参数都在“/proc/sys”目录下,另一类是只读的,就是“/proc/sys”目录之外的其他目录和文件,当然这只是一种惯例,实际在其他目录下建立可读写的/proc文件也是可以的。 Linux内核在2.4以后/proc目录文件的建立已经变得很容易,以前版转载 2012-09-18 18:06:00 · 494 阅读 · 0 评论 -
关于进程创建二
接着上面的实验部分,在实验一里面打印了8次“-”,且不太明白为什么,8成和我猜测的缓冲区和引用计数,信号处理没有关系,还是来实验一把, 同样把执行他们时的pid和ppid打印出来 实验4 在实验1的基础上增加id的输出信息 接下来编译运行一下,这里偷懒写了下makefile,内容是最基本的,就不贴这里了 输出的结果没有回车换行,看起来比较乱,这里手动排版一下: -pid原创 2012-10-12 16:23:14 · 838 阅读 · 2 评论 -
proc源码解析(三)--proc初始化
在使用proc之前,我们必须首先初始化并挂载proc,并在内核内存中创建数据结构来描述文件系统。但是,不同的体系结构拥有不同的proc内容,所以,在初始化阶段并不完全创建子目录的内容,有些文件要等到系统运行时动态创建。Proc文件系统初始化的流程图如下: proc_root_init的定义定义如下: void __init proc_root_init(void) {转载 2012-09-18 18:04:32 · 617 阅读 · 0 评论 -
proc源码解析(二)--proc数据结构
上节主要说明了proc下的内容,从本节开始解析proc的实现。与普通文件系统一样,proc当然需要虚拟文件系统的支持,所以它必须具备文件系统的几个主要的数据结构。 1.proc_dir_entry 在proc文件系统中,每个entry的实例是由proc_dir_entry来描述的,其结构如下: struct proc_dir_entry { unsigned转载 2012-09-18 18:03:42 · 471 阅读 · 0 评论 -
关于进程创建
最近看《Unix环境高级编程》,其中有讲到创建子线程用fork的函数调用,这个函数特别之处是调用一次,返回两次,分别为0和pid,这里假定每次创建都是成功的。 为啥返回两次呢,而且值不一样呢? 返回两次是系统调用的实现,需要查看fork是如何实现的,这里面就比较复杂了,鄙人现在不懂。 返回值不同,创建进程返回新生进程的id值,新生进程返回0,每一个进程的父进程是确原创 2012-10-11 17:02:33 · 922 阅读 · 4 评论