第10章 系统内核的裁剪与编译

第10章 系统内核的裁剪与编译

ID:5656759

大小:463.00 KB

页数:49页

时间:2017-11-13

第10章 系统内核的裁剪与编译_第1页
第10章 系统内核的裁剪与编译_第2页
第10章 系统内核的裁剪与编译_第3页
第10章 系统内核的裁剪与编译_第4页
第10章 系统内核的裁剪与编译_第5页
资源描述:

《第10章 系统内核的裁剪与编译》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章系统内核的裁剪与编译Linux作为一个免费、自由软件,内核版本不断升级。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新裁剪、编译内核。10.1系统内核的工作机制如果说Linux的shell是用户或用户应用程序与计算机系统的接口(作业级),则Linux内核可以看成是shell与硬件的接口,它们之间的关系如图10-1所示。图10-1系统层次关系硬件系统内核shell应用程序用户通过shell与计算机硬件打交道,但

2、硬件识别的是二进制,因此由系统内核来充当翻译与解释工作,以便于用户与硬件通信。 系统内核的一些核心函数文件在/usr/src/linux-2.4.20-8/kernel目录下。其中有:acct.c、capability.c、context.c、cpufreq.c、dma.c、exec_domain.c、exit.c、fork.c、futex.c、info.c、itimer.c、kallsyms.c、kksymoops.c、kmod.c、ksyms.c、lowlat.c、Makefilemodule.c、pan

3、ic.c、pid.c、pm.c、printk.c、profile.c、ptrace.c、resource.c、sched.c、signal.c、softirq.c、sys.c、sysctl.c、time.c、timer.c、uid16.c、user.cLinux是开放的操作系统,其源代码是免费的。通过学习这些源代码可以学到许多东西;因为在/kernel目录下的关键文件解释了系统内核是如何工作的。例如、了解系统内核的panic、fork和其他一些系统函数,会使你对内核如何与硬件和用户环境交互有更好的理解。当然、

4、要读懂它不但要有C的基础还要查阅大量的文献资料。info.c例程执行sysinfo()系统调用,提供Linux系统的信息,如可用的内存、交换空间和文件系统信息等。内存信息包括物理内存的总量、可用内存的大小和正在使用的缓存;交换空间信息包括总的交换分区的大小和未使用的交换分区的大小。sysinfo()也向程序提供当前的进程号。具体程序如下:/**linux/kernel/info.c**Copyright(C)1992DarrenSenn*/ /*Thisimplementsthesysinfo()system

5、call*/ #include #include #include #include #includeasmlinkagelongsys_sysinfo(structsysinfo*info) {structsysinfoval;memset((char*)&val,0,sizeof(structsysinfo));cli();val.uptime=jiffie

6、s/HZ; val.loads[0]=avenrun[0]<<(SI_LOAD_SHIFT-FSHIFT); val.loads[1]=avenrun[1]<<(SI_LOAD_SHIFT-FSHIFT); val.loads[2]=avenrun[2]<<(SI_LOAD_SHIFT-FSHIFT);val.procs=nr_threads-1;sti();si_meminfo(&val)si_swapinfo(&val); { unsignedlongmem_total,sav_total; unsign

7、edintmem_unit,bitcount; /*Ifthesumofalltheavailablememory(i.e.ram+swap) *islessthancanbestoredina32bitunsignedlongthen *wecanbebinarycompatiblewith2.2.xkernels.Ifnot, *well,inthatcase2.2.xwasbrokenanyways...* *-ErikAndersen*/ mem_total=

8、val.totalram+val.totalswap;if(mem_total

9、

10、mem_total1) {bitcount++;mem_unit>>=1;sav_total=mem_total;mem_total<<=1; if(m

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。