
操作系统
mdlyyh
Stay hungry,stay foolish
展开
-
Fedora运行级别及其虚拟文件系统/proc
在现有的Linux系统中添加新硬件时,你希望知道当前系统的资源配置状态,那么应该如何查看呢?很方便,/proc文件系统中包含了内核关于资源分配的一些信息。原创 2014-01-16 20:55:26 · 1186 阅读 · 0 评论 -
Linux文件系统-3个重要数据结构及相互间的关系
每个open调用都导致在用户描述表和内核文件表中分配一个唯一表项。但在内核的索引节点表中,对每个文件只有一个表项。文件项的引用数由于系统调用dup或fork的结果会大于1管道分为两种,无名管道和有名管道,其区别如下:1)无名管道调用pipe创建,有名管道调用open创建;2)只有相关进程,即发出pipe调用的进程的后代才能共享对无名管道的存取,而所有的进程都能按通常的文件许可权,存原创 2014-01-14 18:07:47 · 2348 阅读 · 2 评论 -
linux-v0.11中管道的实现之-ring buffer
之前分析了pipe调用后,内核返回的几个数据结构,原创 2014-01-14 23:52:34 · 1924 阅读 · 2 评论 -
fedora17下用gdb和bochs调试linux-0.11内核
买了本赵炯博士>,开始学习内核源代码,首先就是动手搭建实验环境,所用操作系统为fedora17,首先下载安装bochs,root下用yum search bochs查看一下是否有bochs相关的安装包,发现有,则执行yum install bochs.i686,安装完毕。然后 根据www.oldlinux.org/oldlinux/viewthread.php?tid=3878中的步骤测试了htt原创 2014-01-10 14:41:58 · 1718 阅读 · 0 评论 -
linux高速缓冲管理中的哈希队列、空闲链表以及延迟写和提前读策略
数据缓冲区高速缓冲在内核启动初始化是被划分成1024、2048块大小的双向链表形式而被内核管理的。同时还有一组哈希队列使得内核可以快速找到所需数据的缓冲块是否在高速缓冲中。一个哑节点free_list标记了空闲链表的头,虽然名字是空闲链表,并不代表链表中的节点都是空闲没有有效数据的节点。当内核需要读取磁盘数据时,首先通过哈希队列查找该磁盘块是否已经在缓冲区中,若在可直接返回,否则从空闲链表头部开始原创 2014-01-12 16:44:34 · 2793 阅读 · 0 评论 -
linux内核注释v0.11-超级块、inode索引节点和磁盘块(逻辑块)
linux中所有的设备都被看作是文件,每个文件都关联着一个称作索引节点的数据结构,索引节点以静态形式存在于磁盘上,其形式为struct d_inode ,当内核需要操作索引节点时,会把其对到内存的索引节点struct m_inode 数据结构中。文件的内容改变时需要将内容写到磁盘上,而改变文件内容、改变文件所有者、文件存取权限等时都要将内存中索引节点的内容更新到磁盘上。磁盘索引节点以数组的形式存储原创 2014-01-12 18:23:18 · 5181 阅读 · 0 评论 -
GNU C中的零长度数组(应用于伙伴系统算法)
在库壳上读了一篇关于Linux内存管理伙伴系统算法实现的文章,coolshell.cn/articles/10427.html,里面有个结构体很让我好奇,struct buddy2 { unsigned size; unsigned longest[1]; };(注:在GCC环境下你可以写成longest[0],不占用空间,这里是出于可移植性考虑)第一次看到长度为零的数组:long原创 2014-01-13 17:34:14 · 1296 阅读 · 0 评论 -
linux-v0.11中块数据延迟写磁盘分析
在block_dev.c程序中,主要包括块设备的读写操作,原创 2014-01-14 19:43:40 · 1701 阅读 · 0 评论 -
fork()调用中关于缓存区继承而引起的思考
题目:请问下面的程序一共输出多少个“-”? 1 #include 2 #include 3 #include 4 int main(void) 5 { 6 int i; 7 for(i=0; i 8 fork(); 9原创 2014-01-18 00:11:48 · 1500 阅读 · 4 评论 -
Fedora17硬盘安装
人就是折腾,上午研究动态库时,执行了一个命令,mv /lib/libc-12.5.so . ,这个命令会让我记很长时间了,执行过之后发现我再执行任何命令都不行,而且用鼠标把这个动态库拷贝回原目录也不行,同学催着吃饭原创 2014-02-27 22:28:29 · 981 阅读 · 0 评论 -
linux进程切换,进程上下文,thread_union数据结构(task_union V0.11)
进程是操作系统中很重要的一个抽象,是对程序的一次执行实例的抽象。每个进程运行在自己的上下中,其上下文包括被进程正文所定义的进程状态、进程的全局用户变量和数据结构、它使用的寄存器的值、存储在它的进程表项的值以及它的用户栈和核心栈的内容。当出现执行中进程发生中断或异常内核会执行中断或异常处理函数,此时若进程运行在用户态下,会发生执行态切换,但内核并不产生或调度其他进程来处理中断或异常。进程切换会发原创 2014-01-10 22:24:00 · 3527 阅读 · 0 评论