《Linux内核编程指南》心得之一

来源:互联网 发布:sql的三大范式 编辑:程序博客网 时间:2024/04/28 14:33

1.Linux是多任务,多用户,多进程的操作系统.

2.当fork()一个新进程时,并不立即请求数据内存,而是两个进程共用原数据内存.假如新进程要对这段内存进行写操作,再复制一部分包括该内存在内的内存段,这个过程被称为写前复制.写前复制能有效地节约内存资源,以及为了复制内存造成的一系列开销.

3.分页(paging),页面大小为4KB,不知道是不是还可以有其他大小.

4.共享程序库技术能够大大缩小执行文件的大小.需要注意的是,共享程序库文件只载入内存一次,在内存中供各进程共享.这些程序库只有当程序运行时才被装入,亦称动态链接库(dll).

5.Linux支持的文件系统:Ext2,ISO,NFS,HPFS,Amiga Fast File(AFF),UPS,Sys V,Samba等.

6.为了支持嵌入式Linux,在2.4版本内核中作了一些修改,比如:控制台可以被切断,支持商业的闪存硬件(芯片内磁盘).

7.内核源代码在/usr/src/Linux目录下,依赖体系结构的代码位于arch/的子目录下如arch/arm/

8.start_kernel()函数是linux系统的入口函数,保存在arch/i386/init/目录下.

9.在调用第一个函数start_kernel()前,有一些准备工作要完成,这些工作的汇编代码保存在arch/i386/boot下,它们配置硬件,高度地因机器而异.

10.目录kernel和arch/i386/kernel包括内核的中央部分,内容包括:重要的系统调用,所有系统调用用来转换到系统模式的机制,系统时间,定时器,调度程序,DMA,中断请求管理以及信号处理.

11.内存管理代码在mm/及arch/i386/mm/目录中.

12.虚拟文件系统接口在fs/目录中.Proc与Ext2是重要的文件系统,Proc用作系统管理,Ext2是linux的标准文件系统.

13.编译内核的三个步骤:a.用#make config配置内核b.用#make depend来计算源代码的相关性c.最后就用简单的#make来实现编译.

14.在makefile文件中,最起码需要修改变量ARCH:=arm,如果是为了另一个目标体系结构编译一个Linux内核,可以使用变量CROSS_COMPILE来设置相应编译器路径.

15.微内核结构:实际的内核只提供必需的最小功能(进程通信与内存管理),因此可以以一种小的和简洁的形式实现.以这个微内核为基础,操作系统的其余功能被重新配置为独立的进程.

16.微内核优点:a.组件独立,不会彼此间影响b.易于替换,新组件开发简化c.更少的故障需要处理.

17.微内核的缺点:a.有更多的进程,进程间通信甚至比函数调用更多,使得系统比传统的整体式内核要慢b.微内核结构强制定义单独的组件之间要维护的接口,并且阻止了高级的优化(不太明白)

18.微系统机构轻微的速度损失是可以接收的,原因在于现在的硬件足够快,并且因为简单的系统维护的优点降低了开发成本.

19.Linux是整体式的内核结构.

20.Linux内核的大多数代码属于设备驱动程序,而进程和内存(微内核定义下的实际内核)相当小并且容易理解,各自有约13000行C代码.

21.大多数的设备驱动程序同"微内核"分开是可能的,它们可以在运行时需要时以独立的模块被载入.所以,Linux成功地设法利用了微内核结构的优点而没有放弃它最初的整体式的设计.

原创粉丝点击