Understanding Linux Kernel version 3 读书笔记
- P30, preemptive kernel 、kernel threading 和Multithreaded application support没太好理解,我想如果设计个多线程的程序来运行运行,恐怕就好理解了。搞清楚了!
- 在source code里面, arch和include是和硬件相关的代码,arch下面是architecture-specific的文件, include下面放的是内核的所有头文件,其中带有asm前缀的子目录里面是particular architecture的头文件。
- 从2.6版本开始,版本命名方式发生了变化,比如2.6.10和2.6.11看似很接近,但实则相差可能很大,甚至内部的关键部分甚至算法都会有很大不同。
- microkernel 和 monolithic kernel 目前体会不深。
- 关于hard link和soft link: 由于hard link有两个限制:(1)建立link的两个文件必须处于同一个文件系统里面;(2)还有就是不能对目录进行hard link。所以,就出现了soft link
- Unix的文件类型有:regular、symblic、directory、block-orient、character-orient、pipe and named pipe和socket。
- Each file has its own inode, which the filesystem uses to identify the file.
- 到1.5.5
- 文件系统存放在磁盘上。磁盘划分为若干个分区,每个分区中有个独立的文件系统。磁盘的0号扇区前446byte称为Msater Boot Record,该地区存放的是boot loader程序,用来引导计算机,后面64byte描述了该磁盘的分区信息,即每个分区表的开始和结束cylinder号,并且会标注其中某个分区是active分区。最后2byte是魔数0XAA55。对于每个分区,无论是否是active的,都从一个boot block开始。计算机在被引导时,BIOS读入MBR。MBR做的第一件事就是确定active分区,进而读入active分区的第一个块,也称boot block,并执行之。引导块中的程序将装载该分区中的操作系统。
- 认识磁盘:一个硬盘是有很多处于同心圆的圆形的磁片组成,每个磁片的正反两面(side)都可以记录信息。按不同半径画出的一个圆环称为磁道(track),每个track又划分为若干扇区(sector),每个扇区固定地只有512byte,磁头对磁盘的读写,就是以sector为最小单位的,值得注意的是,sector号在物理上并不是连续的,而是由所谓的“交叉因子”,目的是是磁盘的读取速度和磁头的旋转速度匹配。所有处于不同磁片但位于同一个半径的同心圆环称为柱面(cylinder),cylinder是每个分区(partition)的最小单位,连续的一组cylinder组成了一个分区。block是文件系统存取的最小单位,可以认为设定,一般是4K。因为一个block最多仅能容纳一个文件,所以block的大小涉及到磁盘空间的使用效率。block选得过大,存储取小文件时,容易浪费空间,block选取过小,容易造成磁盘的数目大增,从而造成inode在指向block时搜寻时间的增多。
- inode是记录文件的属性及其放置在哪些Block之内的信息。所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜索inode table找到这个文件的属性及数据存放地点,然后再查找数据存放的Block进而将数据取出。inode数量在一开始已被设定好,其设定方式通常是"硬盘大小/一个容量",这个容量比Block大一些较佳,例如刚才将Block设为4K,那么这个容量可以设为8K左右。所以,一块1GB的硬盘如果以8K 大小划分它的inode数,则会有131072个inode。一个inode的大小为128Byte,这样,我们就可以清楚地知道,一个分区被格式化为一个文件系统之后,基本上它一定会有inode table与数据区域两大块,一个用来记录文件的属性信息与该文件存放的Block块,一个用来记录文件的内容。
创建一个文件后,会同时创建一个inode和一个block,inode存放的是文件的属性信息,但是不包括文件名,并存放所对应数据所在的block块的地址的指针;block存放文件的数据。
linux里文件的文件名、文件属性、文件内容是分别存储的:文件名存放在目录项(即dentry)中,文件属性存放在inode中,一般情况下,每个inode占用128Bity磁盘空间,文件内容存放在数据块中。
block块可以用mkfs.ext3 -b来制定快的大小。
block越大,inode越少,适合存储大文件的文件系统;block越小,inode越多,适合存储文件多而小的文件系统。
系统运行时,inode和block会在修改后内存与磁盘做一个同步,我们用ls -li列出来的内容这是内存中的暂存,所以有时候系统非正常的关机会导致block和inode的不同步问题。
Understanding Linux Kernel version 3 读书笔记的更多相关文章
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
- 《The Linux Command Line》 读书笔记02 关于命令的命令
<The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- Linux Kernel Version Numbering
Because there are numerous revisions and releases of the Linux kernel and new ones are developed at ...
- 各个安卓版本 使用的 Linux Kernel Version
Android Version |API Level |Linux Kernel in AOSP --------------------------------------------------- ...
- Linux Shell Scripting Cookbook 读书笔记 1
本系列文章为<Linux Shell Scripting Cookbook>的读书笔记,只记录了我觉得工作中有用,而我还不是很熟练的命令 书是很好的书,有许多命令由于我比较熟悉,可能就没有 ...
- Linux kernel version dirty
在我们使用git来管理Linux Kernel的时候,在编译的时候会在你的kernel version加上git commit number 有时候还会出现dirty字样,字面意思是内核被污染的意思. ...
- 《鸟哥的Linux私房菜》读书笔记二
1.Unix的前身是由贝尔实验室(Bell lab.)的Ken Thompson利用汇编语言写成的, 后来在1971-1973年间由Dennis Ritchie以C程序语言进行改写,才称为Unix. ...
- 深入理解linux网络技术内幕读书笔记(四)--通知链
Table of Contents 1 概述 2 定义链 3 链注册 4 链上的通知事件 5 网络子系统的通知链 5.1 包裹函数 5.2 范例 6 测试实例 概述 [注意] 通知链只在内核子系统之间 ...
随机推荐
- 一致性Hash算法在Memcached中的应用
前言 大家应该都知道Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现.常规的方法是将server的hash值与server的总台数进行求余,即hash% ...
- javascript --- 面向对象 --- 封装
javascript中有原型对象和实例对象 如有疑问请参考:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_enca ...
- bzoj1833 digit
这道题其实挺水,只是写的时候需要想清楚.我的方法是: 1.将[a,b]转化为[0,b+1)-[0,a) 2.预处理出非0的v在区间[0,10^p)出现次数以及0在区间[0,10^p)出现数 3.将一个 ...
- js动画框架设计
当你不再依赖JQuery时,当你已经厌倦了引入js类库实现一些动画效果的方式,当你想实现一个简单而实用的动画框架......下面介绍下愚人设计的动画框架:支持动画缓动算法函数,如Linear.Cubi ...
- Chapter9:顺序容器
现代C++程序应该使用标准库容器,而不是更原始的数据结构,例如内置数组. 新标准库容器的性能几乎肯定与最精心优化过的同类数据结构一样好. 当我们用一个对象来初始化容器时,或将一个对象插入到容器中时,实 ...
- C#入门基础
那么由 = 连接起来的这个式子 就叫赋值表达式 解决异常的 办法 for循环 常量 常量在程序中 怎么定义: const 类型 常量名= 值; 在程序中可以改变常量的值吗 不可以 一旦改变 ...
- MVC同一页面循环显示数据库记录(答题/投票系统)
) { //int id = 1; list newlist = db.lists.Find(id); //var q = from p in db.lists where p.id==1 selec ...
- TintTo和TintBy
//创建标签 ); //设置位置 helloLabel.setPosition(cc.p(,)); //添加到layer ); //改变颜色,不可reverse ,,); //移动并同时改变颜色 he ...
- EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)
有点与在原有数据库中使用 CodeFirst 远了,不过是总复习吗,总得全面点. 一.在用户表(Users)中插入两个用户 二.生成发帖界面 MVC生成的界面很多,也没使用Ajax,实际开发中很少会使 ...
- 关于Ext.NET Demo程序在IIS7.5部署出现"Ext未定义"的解决方案
有以下三点 1.应用程序池请用ASP.NET4.0经典模式 2.安装ASP.NET 控制面板-->程序和功能-->打开或关闭WIndows功能-->Internet信息服务--& ...