《深入理解Linux内核》学习笔记——第一章
第一章 绪论
本章内容涉及整本书,大致介绍了整本书的编排情况。主要知识点有以下几点:
1.Linux是单块结构内核(Monolithic kernel)因此也引入了模块(module)这个强大的东西,内核可以按需装载或卸载模块。引申开来,在进行Linux移植时会需要自己定制代码,通常采用MenuConfig的方法,选择需要编译进内核的模块,这种设计方法为移植带了方便。
2.抢占式内核,这样就可以满足实时性,通常实时性操作系统都是抢占式内核。
3.“操作系统”是“内核”的同义词。操作系统最基本的两个目标是:一是与硬件部分交互,为包含在硬件平台上的所有底层可编程部件提供服务,二是为运行在计算机系统上的应用程序提供执行环境。用四个字来概括就是:承上启下!
4.Linux的“两态”,即用户程序的非特权模式和内核的特权模式。把他叫做用户态(User Mode)和内核态(Kernel Mode)
这个概念很重要,将会涉及两种状态之间的切换,内存的管理,等等一系列的问题。
5.进程!!!!!超级重要的概念啊!!!有木有??进程的理解方式有很多,但我觉得最好的理解是:“程序执行时的一个实例”或者说运行程序的“执行上下文(上下文这个概念很烦是不是,记得小学语文就有题目根据上下文意思理解这个词语,,但是在程序里面上下文可以理解为两个字:环境!)”,程序和进程的概率很容易混淆(这也是常规面试题啊!),要知道程序是静止的,进程是运动的!对于单处理器来说,只有一个进程能占用CPU,这就要引申另一个很重要的概念就是:宏观并行,微观串行!!而实现这个的就是一个伟大的产物:中断(interrupt)!!进程是个很自私的人,他妄图霸占所有资源(每个进程都认为是系统中唯一的进程,可以独占操作系统所提供的服务),为了公平,就出现了中断,他按照规则让很多进程一个个运行。这个时候就要解释下什么叫做霸占资源了。通常32位的操作系统只能访问4G的内存空间,3G给用户,1G给内核(见上一条两态),进程认为这4g空间都是他的,
进程在哪个空间运行,就是说他在什么状态。当进程发出系统调用时,这是就会从用户态到内核态,请求满足后就会又回到用户态。
6.Linu
x的四大天王:
进程管理,内存管理,文件操作(设备属于文件),网络。先说说文件,文件我觉得是Linux设计最巧妙的地方之一,有句话说的好”思从深,行从简“我觉得这是对Linux文件一个很好的描述,文件很复杂,但用一些公共的操作就能让一个复杂的东西简化。文件的种类有以下几种:普通文件,目录,符号链接,字符设备文件,块设备文件,管道(FIFO)和套接字。所有的所有归结为文件操作既是:
增,删,读、写、改,查!!
7.继续说这个文件,文件怎么描述?他的信息放在一个索引节点(Inode)的数据结构里。里面包含了一系列重要的内容:如文件类型,文件大小,设备标示符,索引节点号,文件拥有者,时间戳,访问权限等。这里再引申下,由于设备本身就是文件,所以,在进行设备文件操作时就格外要注意其他两样东西Device和Driver,这个当看到设备驱动的时候会详细说一下。
8.回到进程上来,说说内核和进程的关系吧。刚刚说到进程其实就是运行着的程序。有人会说内核的本质也是程序,那可不可以说是进程,其实内核本身并不是进程,而是进程的管理者。千万不要把内核和内核线程混淆,内核线程运行在内核地址空间且不与用户直接交互,在系统启动时创建关闭时销毁。现在详细说下”两态“之间的转化,可以这样理解(套用当年吴老师的话),内核是皇宫,而用户是平民,平民怎么能随便拜见皇帝呢,你信访也得有个信访局从中间代劳吧,所以系统调用就是那个信访局,当然还有一条路就是中断(可以包括外部和内部中断,内部中断如定时器中断,外部如设备中断等等),这个中断也是有风险的要是有更高优先级的中断来,你的请求可不一定会被授予啊。。就像市长在你面前一挡,你的请求时没办法递到党中央的。当然最后还要一种情况会从用户态到内核,就是产生一个异常(exception),像除法异常之类的。
9.既然进程那么重要,那就不能让他出乱子,为了能让内核管理这些进程,每个进程都会由一个进程描述符(process descriptor)表示,这个描述符包含了有关进程当前的状态信息。现在来回顾下进程的三个状态:运行、就绪、阻塞