nux操作系统的内核及初始化.doc_第1页
nux操作系统的内核及初始化.doc_第2页
nux操作系统的内核及初始化.doc_第3页
nux操作系统的内核及初始化.doc_第4页
nux操作系统的内核及初始化.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux操作系统的内核及初始化摘要:Linux操作系统现今得到越来越多的用户使用,在此对Linux操作系统的形成背景以及主要应用领域作了简单的探讨,重点论述了关于Linux操作系统的内核及其初始化。关键词:Linux操作系统,内核,初始化。.绪论1.1 Linux的背景和特色Linux最早是由一位名叫Linus Torvalds的计算机业余爱好者编写,当时他是芬兰赫尔辛基大学的学生。最初他想设计一个代替Minix(Andrew Tannebaum教授编写的一个操作系统教学程序)的操作系统,他把自己开发的代码放到网络上,供爱好者使用和修改,从而形成了Linux的雏形。许多黑客成了这个程序的发烧友,努力修改Linux,多年来,成千上万的编程爱好者给Linux找漏洞,修改程序,编写各种应用和驱动程序,使得Linux变得越来越稳定、安全、可靠。现今,使用Linux的人越来越多,越来越多的机构使用Linux来做基本平台。据不完全统计,在全世界已经有近800万Linux用户,其中,中国用户大约有近10万人。据IDC统计:2003年,Linux服务器的销售已经超过Unix服务器,市场占有率达到16,在2004年第一季度达到17,成为服务器领域第二大操作系统。IDC还预测,Linux在未来几年内将以每年25的速度增长,中国的Linux市场更将保持40的增长。用户对Linux的热情空前高涨,能够获得广大用户及Oracle、Informix、HP、Sybase、Corel、Intel、网景、Dell等众多重要软硬件厂商的欢迎。Linux是一种“自由(Free)软件”:所谓自由,是指用户可以自由地获取程序及其源代码,并能自由地使用他们,包括修改或拷贝等。它是网络时代的产物,众多的技术人员通过Internet共同完成它的研究和开发,无数用户参与了测试和除错,并可方便地加上用户自己编制的扩充功能。作为自由软件中最为出色的一个,Linux具有如下的特点:(1)完全遵循POSLX标准,并扩展支持所有AT&T和BSDUnix特性的网络操作系统。由于继承了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、MIPS等处理器,对各种新型外围硬件,也可以从分布于全球的众多程序员那里得到迅速地支持。(4)对硬件要求较低,可在较低档的机器上获得很好的性能,特别值得一提的是Linux出色的稳定性,其运行时间往往可以以“年”计。(5)有广泛的应用程序支持。已经有越来越多的应用程序移植到Linux上,包括一些大型厂商的关键应用。(6)具有庞大且素质较高的用户群,其中不乏优秀的编程人员和发烧级的“hacker”,他们提供商业支持之外的广泛的技术支持。正是因为以上这些特点,Linux在个人和商业应用领域中的应用都获得了飞速的发展,据国际数据公司(IDC)的调查显示,Linux操作系统的市场份额在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拥有出色的联网能力,因此它可用于大型分布式计算,如动画制作、科学计算、数据库及文件服务器等。(3)桌面和办公应用。目前这方面的应用人数还远不如微软的Windows,其原因不仅在于Linux桌面应用软件的数量远不如Windows应用,同时也因为自由软件的特性使得其几乎没有广告支持。如今,通常可以通过两个途径获得Linux的发行版:直接从Internet下载;购买Linux发行商推出的CD-ROM,这样不仅可以节省下载的时间和费用,还可以使用CD-ROM直接启动快速安装,并且CD-ROM上往往还包括非常庞大的应用软件集(多达数百兆),包括各种服务器软件、X-Window、桌面应用、数据库、编程语言、文档等,安装和使用都非常方便。2.Linux内核2.1 Linux的内核源代码Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件一般也都位于linux目录下。对于阅读Linux内核这样大而复杂的系统代码,为避免阅读困难,需要用正确的方法加以指导。对于源代码的阅读,事先最好对源代码的知识背景有一定的了解,而对于linux内核源代码来讲,基本要求是:(1)操作系统的基本知识;(2)对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。对于现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网格等组成,Linux内核源代码的组成如下(假设相对于linux目录):arch这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。include这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。init此目录包含核心启动代码。mm此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c。drivers系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。ipc此目录包含了核心的进程间通讯代码。modules此目录包含已建好可动态加载的模块。fsLinux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。Kernel为主要核心代码,同时与处理器结构相关代码都放在arch/*/kernel目录下。net核心的网络部分代码。里面的每个子目录对应于网络的一个方面。lib此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。scripts此目录包含用于配置核心的脚本文件。Documentation 此目录是一些文档,起参考作用。清楚了源代码的结构组成后就可以着手阅读。对于阅读方法或者说顺序,有所谓的纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是分模块进行。这不是绝对的,而是经常结合在一起进行。对于Linux源代码来讲,启动的代码就可以顺着linux的启动顺序一步一步来。开始最好按顺序阅读启动代码,然后进行专题阅读,如进程部分,内存管理部分等。在每个功能函数内部应该一步步来,实际上这是一个反复的过程,不可能读一遍就理解。阅读像Linux核心代码及核心的某个部分经常要用到好几个其他的相关文件,由于大部分人对于Window平台比较熟悉,并且还是常用Window系列平台,在此平台下有一个工具软件:Source Insight,是一个阅读源代码的工具,通过它可以使提高阅读源代码的效率。2.2 Linux内核初始化操作系统内核是大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。它的一些核心功能有:事件的调度和同步;进程间的通信(消息传递);存储器管理;进程管理;输入输出例程的管理等。kernel初始化过程:(1)内核自检(2)载入内核模块(3)读内核配置文件(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();vfs_caches_init(num_physpages);rest_init();2.3 init详细论述Init是Initialization的缩写,也是就是初始化的意思,对Linux而言,则是要进入实体Linux操作系统的第一步,是针对用户当初所安装的系统软件的。Linux要进入操作系统,主要是由init程序把所有的功能串在一起的,是进入操作系统后第一个执行的程序,因此在操作系统中,可以看到init的PID是1,代表一个起头程序,其他所有执行中的daemon则都是由init所带起来的程序。因此,当一个Linux的init挂掉时,代表这个操作系统绝对无法使用,只有强迫以电源重新开机来解决(关机也要通过init程序)。Init虽然只是一个开头的程序,但其中所含的步骤及过程却是非常得复杂且重要。只要可以清楚其中第一个过程,对主体Linux操作系统的激活过程就已经相当了解了,但是init并不是一个绝对、唯一的激活程序,用户也可以自定义所需要的激活方式,这也是Linux弹性之大的证明,要如何改掉执行的方式,只需要在系统激活时加入一个参数就可以做到,而激活的程序是要自行搞定的。2.3.1 init的基本结构Linux的弹性很大,init虽然是一个方便用户进入系统的工具,但用户依旧有权利决定要不要由init来完成所有的工作,如果认为init执行的顺序或方式有问题,或是有更好的方法或顺序来进入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在一开始会先判断所要进入的runlevel为0至6的哪一种模式,跟随着就直接进入rc.sysinit文件设置大部分和系统相关的环境,这其实和进入runlevel的阶段没有关第,因为不论是哪一个runlevel,都要执行rc.sysinit,其执行流程非常复杂,里面包含非常多额外的scrip file,从主机名称一直到文件系统信息都有关联,它是linux在开机时的第一个script文件,是通过init找到inittab后,就直接将rc.sysinit从头执行到最后了。2.3.3 /etc/rc.d/rcX.d在inittab中,继rc.sysinit之后所要执行的,就是rcX.d的目录,是当初开机设置的initdefault值,若将initdefault设置为3,则会转而执行/etc/rc.d/rc3.d/下的所有文件。在rcX.d目录中其实都是link,以link方式的做法弹性比较大,其中绝大部分的文件都有是连接到/etc/rc.d/init.d/下的实体执行程序,除S99local文件,该文件是最后一个要执行的程序,因此,才会将数字部分以99来命名,等所有服务执行完之后才会轮到它。该文件连接到的是/etc/rc.d/rc.local,若把该文件打开会发现什么都没有,里面只有一行指到/var/lock/subsys下(其中存放的是代表正在执行的daemon文件,都是空文件,只是为了记录是否有哪一个服务被无预警地突然中止)。rc.local最主要的目的是帮助用户建立自行准备的scrip file或是个性化的设置,其个性化设置是以一个系统为单位,或是指root的设置,若要设置其他user,则必须从user目录下的文件来着手。2.3.4 通过登陆程序进入shell待服务都激活完毕后,就进入inittab文件的最后一个阶段登录操作系统。登录前必须要有让用户看到登录所需的相关信息的画面,如登录帐号及密码字段,其依靠的是mingetty程序。Shell是用户在console下登录后的接口,任何用户要和kernel做交互都必须经过shell,比如说在输入指令“ls*”后,shell就会帮

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论