nu操作系统的内核及初始化

上传人:re****.1 文档编号:507377910 上传时间:2023-11-19 格式:DOCX 页数:5 大小:20.34KB
返回 下载 相关 举报
nu操作系统的内核及初始化_第1页
第1页 / 共5页
nu操作系统的内核及初始化_第2页
第2页 / 共5页
nu操作系统的内核及初始化_第3页
第3页 / 共5页
nu操作系统的内核及初始化_第4页
第4页 / 共5页
nu操作系统的内核及初始化_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《nu操作系统的内核及初始化》由会员分享,可在线阅读,更多相关《nu操作系统的内核及初始化(5页珍藏版)》请在金锄头文库上搜索。

1、Linux 操作系统的内核及初始化摘要:Linux操作系统现今得到越来越多的用户使用,在此对Linux操作系统的形成背 景以及主要应用领域作了简单的探讨,重点论述了关于Linux操作系统的内核及其初始化。关键词: Linux 操作系统,内核,初始化。1 绪论1.1 Linux 的背景和特色Linux 最早是由一位名叫 Linus Torvalds 的计算机业余爱好者编写,当时他是芬兰赫 尔辛基大学的学生。最初他想设计一个代替Minix ( Andrew Tannebaum教授编写的一个操作 系统教学程序)的操作系统,他把自己开发的代码放到网络上,供爱好者使用和修改,从而 形成了 Linux的雏

2、形。许多黑客成了这个程序的发烧友,努力修改Linux,多年来,成千上 万的编程爱好者给Linux找漏洞,修改程序,编写各种应用和驱动程序,使得Linux变得越 来越稳定、安全、可靠。现今,使用Linux的人越来越多,越来越多的机构使用Linux来做基本平台。据不完全 统计,在全世界已经有近800万Linux用户,其中,中国用户大约有近10万人。据IDC统 计:2003年,Linux服务器的销售已经超过Unix服务器,市场占有率达到16%,在2004 年第一季度达到17%,成为服务器领域第二大操作系统。IDC还预测,Linux在未来几年内 将以每年25%的速度增长,中国的Linux市场更将保持4

3、0%的增长。用户对Linux的热情 空前高涨,能够获得广大用户及Oracle、Informix、HP、Sybase、Corel、Intel、网景、 Dell 等众多重要软硬件厂商的欢迎。Linux是一种“自由(Free)软件”:所谓自由,是指用户可以自由地获取程序及其源代 码,并能自由地使用他们,包括修改或拷贝等。它是网络时代的产物,众多的技术人员通过 Internet 共同完成它的研究和开发,无数用户参与了测试和除错,并可方便地加上用户自 己编制的扩充功能。作为自由软件中最为出色的一个,Linux具有如下的特点:(1) 完全遵循POSLX标准,并扩展支持所有AT&T和BSDUnix特性的网络

4、操作系统。由于 继承了 Unix优秀的设计思想,且拥有干净、健壮、高效且稳定的内核,其所有核心代码都 是由LinusTorvalds以及其他优秀的程序员们完成,没有AT&T或伯克利的任何Unix代码, 所以Linux不是Unix,但Linux与Unix完全兼容。(2) 真正的多任务、多用户系统,内置网络支持,能与 NetWare、 WindowsNT、 OS/2、 Unix 等无缝连接。网络效能在各种Unix测试评比中速度最快。同时支持FAT16、FAT32、NTFS、 Ext2FS、ISO9600等多种文件系统。(3) 可运行于多种硬件平台,包括Alpha、SunSparc、PowerPC、

5、MIPS等处理器,对各种 新型外围硬件,也可以从分布于全球的众多程序员那里得到迅速地支持。(4) 对硬件要求较低,可在较低档的机器上获得很好的性能,特别值得一提的是 Linux 出色的稳定性,其运行时间往往可以以“年”计。(5) 有广泛的应用程序支持。已经有越来越多的应用程序移植到Linux上,包括一些大 型厂商的关键应用。(6) 具有庞大且素质较高的用户群,其中不乏优秀的编程人员和发烧级的“hacker”, 他们提供商业支持之外的广泛的技术支持。正是因为以上这些特点,Linux在个人和商业应用领域中的应用都获得了飞速的发展, 据国际数据公司(IDC)的调查显示,Linux操作系统的市场份额在

6、1998年激增了 212%,其增 长速度远远超过了 WindowsNT、NetWare、Unix和其他所有的服务器软件。1.2 Linux 的主要应用领域目前, Linux 的应用主要包括:(1) Internet/Intranet:这是目前Linux用得最多的一项,它可提供包括Web服务器、 Ftp服务器、Gopher服务器、SMTP/POP3邮件服务器、Proxy/Cache服务器、DNS服务器等 全部Internet服务。Linux内核支持IPalias、PPP和IPtunneling,这些功能可用于建立虚 拟主机、虚拟服务、VPN(虚拟专用网)等。(2) 由于Linux拥有出色的联网能

7、力,因此它可用于大型分布式计算,如动画制作、科 学计算、数据库及文件服务器等。(3) 桌面和办公应用。目前这方面的应用人数还远不如微软的Windows,其原因不仅在 于Linux桌面应用软件的数量远不如Windows应用,同时也因为自由软件的特性使得其几乎 没有广告支持。如今,通常可以通过两个途径获得Linux的发行版:直接从Internet下载;购买 Linux发行商推出的CD-ROM,这样不仅可以节省下载的时间和费用,还可以使用CD-ROM直 接启动快速安装,并且CD-ROM上往往还包括非常庞大的应用软件集(多达数百兆),包括各 种服务器软件、X-Window、桌面应用、数据库、编程语言、

8、文档等,安装和使用都非常方便。 2.Linux 内核2.1 Linux 的内核源代码Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下, /usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件 一般也都位于linux目录下。对于阅读Linux内核这样大而复杂的系统代码,为避免阅读困 难,需要用正确的方法加以指导。对于源代码的阅读,事先最好对源代码的知识背景有一定的了解,而对于linux内核源 代码来讲,基本要求是:(1)操作系统的基本知识;(2 )对C语言比较熟悉,最好要有汇编语 言的知识和GNUC对标准C的扩展的知识的了解。另

9、外在阅读之前,还应该知道Linux内核 源代码的整体分布情况。对于现代的操作系统一般由进程管理、内存管理、文件系统、驱动 程序、网格等组成,Linux内核源代码的组成如下(假设相对于linux目录):arch这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于 X86 平台就是 i386。include这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分 别有一个子目录。init 此目录包含核心启动代码。mm此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于 arch/*/mm 目录下,如对应于 X86 的就是 arch/i386/

10、mm/fault.c。drivers系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每 一种也有对应的子目录,如声卡的驱动对应于drivers/sound。ipc 此目录包含了核心的进程间通讯代码。modules 此目录包含已建好可动态加载的模块。fsLinux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系 统对应的就是ext2子目录。Kernel为主要核心代码,同时与处理器结构相关代码都放在 arch/*/kernel 目录下。net核心的网络部分代码。里面的每个子目录对应于网络的一个方面。lib此目录包含了核心的库代码。与处理器结构相关库代码被放在

11、arch/*/lib/目录下。 scripts 此目录包含用于配置核心的脚本文件。Documentation 此目录是一些文档,起参考作用。清楚了源代码的结构组成后就可以着手阅读。对于阅读方法或者说顺序,有所谓的纵向 与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是分模块进行。这 不是绝对的,而是经常结合在一起进行。对于Linux源代码来讲,启动的代码就可以顺着 linux的启动顺序一步一步来。开始最好按顺序阅读启动代码,然后进行专题阅读,如进程 部分,内存管理部分等。在每个功能函数内部应该一步步来,实际上这是一个反复的过程, 不可能读一遍就理解。阅读像Linux核心代码及核

12、心的某个部分经常要用到好几个其他的相关文件,由于大部 分人对于Window平台比较熟悉,并且还是常用Window系列平台,在此平台下有一个工具软 件:Source Insight,是一个阅读源代码的工具,通过它可以使提高阅读源代码的效率。2.2 Linux 内核初始化操作系统内核是大多数操作系统的核心部分。它由操作系统中用于管理存储器、 文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间 的通信。它的一些核心功能有:事件的调度和同步;进程间的通信(消息传递 );存储器管理;进程管理;输入输出例程的管理等。kernel 初始化过程:(1)内核自检(2)载入内核模块(3 )

13、读内核配置文件(4 )运行/sbin/init进程。bootblk是用于装载第二个 引导程序ufsboot的主引导程序,是被PROM的boot设备的引导扇区装载的,ufsboot程序 是用了装载两部分核心genunix和unix的,installboot是用来在磁盘分区上安装bootblk 的。通过在start_kernel中调用大量的init函数,来完成内核的各种初始化。如: page_address_init();sched_init();page_alloc_init();init_IRQ();softirq_init();console_init(); calibrate_delay(

14、);vfs_caches_init(num_physpages);rest_init();2.3 init 详细论述Init是Initialization的缩写,也是就是初始化的意思,对Linux而言,则是要进入 实体Linux操作系统的第一步,是针对用户当初所安装的系统软件的。Linux要进入操作系 统,主要是由init程序把所有的功能串在一起的,是进入操作系统后第一个执行的程序, 因此在操作系统中,可以看到init的PID是1,代表一个起头程序,其他所有执行中的daemon 则都是由init所带起来的程序。因此,当一个Linux的init挂掉时,代表这个操作系统绝 对无法使用,只有强迫以电

15、源重新开机来解决(关机也要通过init程序)。Init 虽然只是一个开头的程序,但其中所含的步骤及过程却是非常得复杂且重要。只 要可以清楚其中第一个过程,对主体 Linux 操作系统的激活过程就已经相当了解了,但是 init并不是一个绝对、唯一的激活程序,用户也可以自定义所需要的激活方式,这也是Linux 弹性之大的证明,要如何改掉执行的方式,只需要在系统激活时加入一个参数就可以做到 而激活的程序是要自行搞定的。2.3.1 init 的基本结构Linux的弹性很大,init虽然是一个方便用户进入系统的工具,但用户依旧有权利决定 要不要由init来完成所有的工作,如果认为init执行的顺序或方式

16、有问题,或是有更好的 方法或顺序来进入Linux,可以手动将执行init的阶段关掉。做法是要通过在GRUB中开机 时的kernel参数设置字段做修正,在原本的参数后面加入“init=所要执行的程序”,如: init=/bin/bash,这样当initrd加载要交接给操作系统时,就会直接由/bin/bash完成所 有的开机工作,而不会执行原本的init程序。Init最主要的任务就是指挥每一个待执行的程序依序执行,而第一个被init所参考的 是在/etc目录下的inittab文件,里面记录着执行的脚本,其开机流程主要有下列四个部 分:(a)以 initdefault 值判断要进入哪一个 runlevel; ( b )执行/etc/rc.d/rc.sysinit;(c)执行rcX.d下的程序;(d)通过登录程序进入shell。2.3.2 /etc/rc.d/rc.sysinitInit

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号