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 测试实例 概述 [注意] 通知链只在内核子系统之间 ... 
随机推荐
- 提高CSS开发能力的技巧集
			1. 使用:not()给导航条添加间隔线 我们通常使用如下代码给导航条增加间隔线 /* add border */ .nav li { border-right: 1px solid #666; } ... 
- 【LeetCode】217 & 219 - Contains Duplicate & Contains Duplicate II
			217 - Contains Duplicate Given an array of integers, find if the array contains any duplicates. You ... 
- 【Python学习笔记】with语句与上下文管理器
			with语句 上下文管理器 contextlib模块 参考引用 with语句 with语句时在Python2.6中出现的新语句.在Python2.6以前,要正确的处理涉及到异常的资源管理时,需要使用t ... 
- JS获得月最后一天和js得到一个月最大天数
			<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页</title ... 
- Azure中的分布式1——多实例
			Azure中的WebRole和WorkerRole天然支持负载均衡,只需要简单配置一下即可,下面我以一个WebRole为例说明这一点. 创建一个项目类型为MVC4的WebRole 项目结构如下: 右键 ... 
- Chapter 3 Start Caffe with MNIST Demo
			先从一个具体的例子来开始Caffe,以MNIST手写数据为例. 1.下载数据 下载mnist到caffe-master\data\mnist文件夹. THE MNIST DATABASE:Yann L ... 
- SQL时间第二期_时间格式化
			0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ... 
- 轻松学习Linux之自动执行任务
			在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行,系统管理员可使用自动化的任务来执行定期备份.监控系统.运行定制脚本等,往往初学者都是win用户,习 ... 
- 闲置的eSATA接口,会影响Windows 7的启动速度
			为方便用户连接外置硬盘等设备,很多中高 端主板上都有至少一个eSATA接口.事实上,很多人可能根本就不用eSATA接口,你想过没有,正是这个无所事事的eSATA接口,可能无意中就拖慢了 你的Win ... 
- Educational Codeforces Round 5 E. Sum of Remainders (思维题)
			题目链接:http://codeforces.com/problemset/problem/616/E 题意很简单就不说了. 因为n % x = n - n / x * x 所以答案就等于 n * m ... 
