博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  OS

Operating System
摘要:Disk Cache是一种将磁盘上的一些数据保留着RAM中的软件机制,这使得对这部分数据的访问可以得到更快的性能。 Disk Cache在Linux中有三种类型:1.Dentry cache 2. Page cache 3. Buffer cache Dentry cache是目录项的cache,这... 阅读全文

posted @ 2010-06-11 09:50 xuczhang 阅读(4097) 评论(0) 推荐(0)

摘要:block && sector block是块设备驱动程序中一次单独操作中所传送的一大块相邻字节,是硬件设备请求一次I/O操作所涉及的一组相邻字节。块的大小是2的幂,是扇区的倍数,但不能超过一个页框。 sector是硬件设备传送数据的基本单位,也就是不能传送少于一个扇区的数据。 扇区的大小在内核的... 阅读全文

posted @ 2010-04-09 18:16 xuczhang 阅读(536) 评论(0) 推荐(0)

摘要:进程的静态特征 1. task_struct 2. task state进程状态 3. PID 与tgid tgid是线程组的id,pid是当前进程id,而需要注意的是getpid()得到的是tgid。线程组就是轻量级进程的集合。tgid就是组中第一个轻量级进程的pid 4. current宏... 阅读全文

posted @ 2010-04-02 18:05 xuczhang 阅读(660) 评论(0) 推荐(0)

摘要:本文将介绍Linux的slab层,首先我们要解决一个问题就是什么是slab,slab是做什么用的。 在linux内核中会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry。这么这些对象如果每次构建的时候就向内存要一个页,而其实际大小可能只有几个字节,这样就非常浪费,为了解决这个问... 阅读全文

posted @ 2010-04-02 18:02 xuczhang 阅读(2577) 评论(0) 推荐(0)

摘要:memory 1. what happens in malloc() 2. what’s kalloc, vmalloc and their difference. brk()?? 3. kernel stack?? 4. copy on write 3. Linux segmentation... 阅读全文

posted @ 2010-04-02 18:01 xuczhang 阅读(215) 评论(0) 推荐(0)

摘要:memory descriptor(内存描述符) 与进程地址空间相关的全部信息都包含在内存描述符中。其类型是mm_struct,记录在task_struct的mm成员中。 1. 有一个mmlist的链表链接所有的mm_struct。表头是init_mm(进程0的mm)。 2. mm_users和m... 阅读全文

posted @ 2010-04-02 17:58 xuczhang 阅读(732) 评论(0) 推荐(0)

摘要:页描述符 页描述符由struct page表示,它是用来管理物理内存的页框的。而所有的page存放在mem_map数组中: 。因为每个struct page小于64Byte,所以每MB的RAM,大约需要4个页框。 其中count表示页的引用计数器,当count=0时表示页框空闲。 Memor... 阅读全文

posted @ 2010-03-30 21:43 xuczhang 阅读(1227) 评论(0) 推荐(0)

摘要:保留的页框 linux内核从第二个MB开始,第一个MB通常留给BIOS或者某些设备。下图是Linux2.6的前3MB,而在Linux2.4中只用了2MB,问题是2.6的代码多了。 内核页表 进程的线性地址空间分为0x00000000-0xbfffffff和0xc0000000-0xffffff... 阅读全文

posted @ 2010-03-30 14:28 xuczhang 阅读(425) 评论(0) 推荐(0)

摘要:AT&T与Intel汇编的区别 在Linux内核中使用了AT&T格式的汇编指令而非Intel的格式,它们之间的区别 1. common (1)Intel一般用大小字母,而AT&T一般用小写 (2)寄存器:AT&T的寄存器要加%前缀,而Intel不需要。 (3)立即数:AT&T的立即数要加前缀$,而... 阅读全文

posted @ 2010-03-26 18:16 xuczhang 阅读(202) 评论(0) 推荐(0)

摘要:1. key word from c++ inline –> __inline__ asm –> __asm__ 这里在关键字前后加上"__"的原因是inline等c++的关键字不是c的关键字,为了避免冲突。 2. attribute属性描述 struct foo { char a; ... 阅读全文

posted @ 2010-03-26 15:32 xuczhang 阅读(230) 评论(0) 推荐(1)

摘要:Here is a good discussion about this topic: http://geekswithblogs.net/shahed/archive/2006/06/09/81268.aspx The toilet example here. 阅读全文

posted @ 2010-03-24 14:23 xuczhang 阅读(143) 评论(0) 推荐(0)

摘要:今天看了一下csapp的第11章系统级I/O,目的是希望从程序员的角度了解一下I/O部分。结果发现收获不是很大,一方面之前一直在看Understanding Kernel,里面写的非常详细,一些细节部... 阅读全文

posted @ 2010-03-10 21:24 xuczhang 阅读(256) 评论(0) 推荐(0)

摘要:本文将介绍Ext3文件系统的磁盘存储组织与实现,这里的表述将不涉及file system在内核中的内存表示和使用方法。 Ext3 Disk Layout: 首先我们来看一下在一个磁盘上面的结构: 这张图说明了一整块磁盘的组织结构,整个磁盘可以分为MBR,Partition table和Disk... 阅读全文

posted @ 2010-02-26 11:22 xuczhang 阅读(2442) 评论(0) 推荐(0)

摘要:本文将介绍怎样读取一个分区的superblock: 1. 首先我们查看一下在磁盘上有哪些分区,通过fdisk -l 这里有三个分区,我们下面查看/dev/sda3(这是一个device file) 2. 从/dev/sda3拷贝1024B-2048B(这就是superblock的位置)到一个叫... 阅读全文

posted @ 2010-02-24 12:28 xuczhang 阅读(3293) 评论(1) 推荐(1)