发布时间:2013-01-03 13:06:26
Q:lock_buffer(bh)被调用时,是否意味着PageLocked(bh->page)=1?A:NO.__bread(),ll_rw_block()函数对buffer做同步IO,可以在不锁page的情况下直接lock_buffer().只有在要对buffer_head做异步IO的情况下,才需要先锁pageQ:buffers和cached的区别?A:buffers和cached至少会在3个地方出现:top,free,/proc/meminfobuffers = nr_blockdev_pages() struct block_device *bd......【阅读全文】
发布时间:2013-01-03 12:30:55
1.dentry与inode是多对一的,可以通过inode->i_dentry找到指向inode的所有dentry.2.打开一个文件,如果文件不存在,dentry仍然会被创建,但是dentry指向的inode为空,系统调用完毕后dentry被释放.3.dentry有自己所属的文件系统,因此dentry建立的树状层次结构只在dentry所属的文件系统中生效.4.引用计数为0的dentry仍然会保留在dentry缓存(即dentry哈希表)中,但是同时也会被加入到super_block的LRU未使用链表中,当需要释放内存时,压缩dentry的slab回调函数shrink_dcache_mem......【阅读全文】
发布时间:2013-01-03 12:29:25
Q:ext2的磁盘inode结构体为什么不存放文件inode号?A:用户态程序查找文件都是通过文件路径来完成的,文件的inode号都是存
储在父目录的数据块中,在查找过程中,根据文件名,可以很快的从目录的数据块中找到inode号,拿到inode号后,从inode表就可以很快的找到磁盘inode结构.换言之,磁盘inode即使存储inode号也没什么用.函数调用过程:do_sys_open() fd = get_unused_fd_flags(flags); struct file *f = do_filp_open(df......【阅读全文】