随笔分类 -  Linux内核分析及编程

摘要:在用户应用程序在经常用到C库的进程间通信函数,实际上,这些进程间通信函数在内核中是通过系统调用好文件系统的机制实现的。1 管道管道是只用于连接读进程和写进程,以实现它们之间通信的共享文件。因而它又称共享文件。向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道。而接受管... 阅读全文
posted @ 2015-05-09 23:35 Jessica程序猿 阅读(529) 评论(0) 推荐(0)
摘要:Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。系统调用实际上是内核中的一些C函数,它们都以sys开头的,如sys_mkdir()。它们通过一个指令int 0x80(软中断)把控制权交给内核,即进入特权级执行。int 0x80指令会使“执行”跳转到系统调用在内核中定义的入口地址... 阅读全文
posted @ 2015-05-09 16:34 Jessica程序猿 阅读(1441) 评论(0) 推荐(1)
摘要:模块是内核的一部分(通常是设备驱动程序),按需动态装入模块可以保证内核达到最小并且使内核非常灵活。一旦装入一个Linux内核模块,那么它就像任何标准的内核代码一样成为内核的一部分,具有相同的权限和职责。一方面凡是由内核“移出”的所有符号都可以在模块中引用;另一方面,除了这个特意移出的符号及系统调用外... 阅读全文
posted @ 2015-05-09 15:53 Jessica程序猿 阅读(548) 评论(0) 推荐(0)
摘要:ramfs内存文件系统ramfs是一个利用VFS自身结构而形成的内存文件系统。ranfs没有自己的文件存储结构,它的文件存储于page cache中,目录结构由dentry链表本身描述,文件则由VFS的inode结构本身描述。/proc文件系统/proc文件系统是个虚拟文件系统,它通过文件系统接口实... 阅读全文
posted @ 2015-05-08 23:35 Jessica程序猿 阅读(345) 评论(0) 推荐(0)
摘要:对文件系统而言,文件仅是一系列可读写的数据块。文件系统并不需要了解数据块应该放到物理介质上什么位置。这些都是设备驱动的任务。无论何时,只要文件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取一个基本块大小整数倍的数据块。EXT2文件系统将它所使用的逻辑分区划分成数据块组。每个数... 阅读全文
posted @ 2015-05-08 23:23 Jessica程序猿 阅读(966) 评论(0) 推荐(0)
摘要:Linux内核中的虚拟文件系统用来管理挂接各种具体文件系统。具体的文件系统可设计成可加载模块,在系统需要时进行加载。挂载具体文件系统时,VFS读取它的超级块,得到具体文件系统的拓扑结构,并将这些信息映射到VFS超级块结构中。当进程或shell命令访问目录和文件时,shell命令及应用程序分解成系统调... 阅读全文
posted @ 2015-05-08 17:13 Jessica程序猿 阅读(538) 评论(0) 推荐(0)
摘要:其中介绍了虚拟内存的机制以及mmap系统调用的实现。mmap允许直接将设备内存映射到用户进程的地址空间中。物理内存的管理,包括缓存的分配及回收,请页机制,交换空间等。1)交换模块(swap)这个模块负责控制内存内容的换入换出,它通过替换机制,使得物理内存的页框(RAM页)中保留有效的逻辑页,即从主存... 阅读全文
posted @ 2015-04-29 11:19 Jessica程序猿 阅读(1305) 评论(0) 推荐(0)
摘要:内核中用于临界区保护下的互斥机制,它包括自旋锁、原子操作和信号量,三者保证了对临界资源访问的互斥型。1.1 内核中的互斥机制1.1.1 自旋锁自旋锁用在多个CPU系统中。当一个线程在一个CPU上正使用资源,而另一个线程在另一个CPU上正忙等待这个资源的时候,就会用到自旋锁来保护临界资源。在单处理器系... 阅读全文
posted @ 2015-04-28 23:26 Jessica程序猿 阅读(1875) 评论(0) 推荐(0)
摘要:1 .1 进程结构每个进程都具有自己的属性,用一个task_struct数据结构来表示,它包含了进程的详细信息,主要有进程标识符(PID)、进程所占的内存区域、相关文件描述符、安全信息、进程环境、信号处理、资源安排、同步处理状态几个方面。数组task包含指向系统中所有task_struct结构的指针... 阅读全文
posted @ 2015-04-28 20:17 Jessica程序猿 阅读(936) 评论(0) 推荐(0)