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 测试实例 概述 [注意] 通知链只在内核子系统之间 ...
随机推荐
- php 在线 mysql 大数据导入程序
1 <?php header("content-type:text/html;charset=utf-8"); error_reporting(E_ALL); set_tim ...
- PHP.ini 配置文件解析
[PHP] ;;;;;;;;;;;;;;;;;;;; About php.ini ;;;;;;;;;;;;;;;;;;;;; PHP's initialization file, generall ...
- 【Java多线程】互斥
Java多线程学习2——互斥 一.前言 在上一节 (http://www.cnblogs.com/lzhen/p/3917966.html) 中,通过实现Runnable接口,可以实现多线程中的资源的 ...
- ASP.NET MVC3细嚼慢咽---(1)网站创建与发布
这一节我们演示下怎样使用VS2010创建与发布MVC3建立的网站.使用VS2010创建MVC3.0网站,需要下载MVC3.0的安装包,这个大家可以去网络上下载. 1.项目创建 ...
- 【数据结构与算法分析——C语言描述】第一章总结 引论
这一章主要复习了一些数学知识,像指数.对数.模运算.级数公式:还有2种证明方法,归纳假设法和反证法.所幸以前学过,重新拾捡起来也比较轻松. 简要地复习了递归,提出了编写递归例程的四条基本法则: 基准情 ...
- labview 中的一些简写全称
MAX:Measurement & Automation Explorer 测量自动化管理器 :可用于配置DAQ通道名称,VISA资源名称和IVI逻辑名称. DAQ: Device Data ...
- hdu 4815 Little Tiger vs. Deep Monkey(01背包)
http://acm.hdu.edu.cn/showproblem.php?pid=4815 Description A crowd of little animals is visiting a m ...
- 摄影初学者挑选相机的常见问题 FAQ
数码相机一次次降价,越来越多的人加入摄影的行列,照相器材还是一个比较专业的领域,并非简单的参数比一下高低就可以知道好坏,很多朋友往往了解了好久还没弄清孰优孰劣,在购机前踌躇半天拿不定主意,我收集了被问 ...
- Java抽象类和内部类
类(class) 类是相似对象中共同属性和方法的集合体 在面向对象中定义类,就是在描述事物,就是在定义属性(变量)和行为(方法).属性和行为共同成为类中的成员(成员变量和成员方法). 封装.继承和多态 ...
- 用 Python 脚本实现对 Linux 服务器的监控
目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...