⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;yeung&nbsp;(流星雨),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;【中文版】LINUX&nbsp;2.4的美妙世界&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Jul&nbsp;29&nbsp;22:06:41&nbsp;2000)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>LINUX&nbsp;2.4的美妙世界&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>原文:<A HREF="http://linuxtoday.com/story.php3?sn=10698">http://linuxtoday.com/story.php3?sn=10698</A>&nbsp;<BR>作者:Joe&nbsp;Pranevich&nbsp;<BR>译者:Axis*&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>LINUX2.2相对于2.0是一个巨大的进步。它支持了许多新的文件系统类型,使用了&nbsp;<BR>全新的文件名缓存机制,而且大幅度提高了在多CPU系统上的伸缩性。LINUX2.4会&nbsp;<BR>百尺竿头更进一步,成为更加适合桌面应用、服务器应用和嵌入式应用的平台。目&nbsp;<BR>前,LINUX内核开发者希望能尽快地将2.4送到最终用户手中,因此可以理解,2.4&nbsp;<BR>与2.2之间的差别不会向2.2与2。0之间那样大。不过,读完了本文之后,我相信你&nbsp;<BR>会同意,2.4的进步同样引人注目。(否则我还写这文章干什么呢?)&nbsp;&nbsp;<BR>&nbsp;<BR>2.4是指LINUX内核的版本。内核是LINUX(或GNU/LINUX)操作系统的核心,但内核&nbsp;<BR>本身也可以划分成核心部分和非核心部分。任何操作系统都必须包括一组相关的设&nbsp;<BR>备驱动程序,但LI&nbsp;NUX远不止于此。调度器、资源分配器、虚拟文件系统层、内存&nbsp;<BR>管理还有一些其他的无名战士,它们是LINUX世界的真正英雄。是这些东西定义了&nbsp;<BR>LINUX之所以成为LINUX。在任何LINUX&nbsp;支持的硬件平台上,从i386(Intel兼容PC&nbsp;<BR>),到ARM(嵌入设备),到Sparc64(高端服务器)这些代码都是一致的。从许多&nbsp;<BR>方面看,LINUX2.4的“心脏”与LINUX2.2还是有所不同的,而上文列举的一些子系&nbsp;<BR>统也有或多或少的改变。&nbsp;&nbsp;<BR>&nbsp;<BR>LINUX2.2与更早的版本使用一种比较粗糙的基本资源管理系统,以分配和跟踪IO端&nbsp;<BR>口,IRQ以及其他计算机中的稀有资源。不幸,在一些重要的方面--对当今的桌&nbsp;<BR>面操作系统来说至关重要--这一系统力不从心。LINUX2.4下,新的系统使用了一&nbsp;<BR>种高度概括,适应性很强的实现方式。它允许将资源分级分组,摆脱了以前对预定&nbsp;<BR>义资源类型的依赖,同时也使驱动模块开发所需的大多数工作得到了简化。此外,&nbsp;<BR>它也是ISA即插即用支持的基础,下文将会详述。这个Linus&nbsp;灵机一动的结果,也&nbsp;<BR>许是2.4内核中影响最深远的一个变化。(译注:也许我是多此一举,但如果你还&nbsp;<BR>不清楚的话,Linus是Linux的创始人。Linux=Linus的&nbsp;UNIX。)&nbsp;&nbsp;<BR>&nbsp;<BR>虚拟文件系统层(VFS)也有重大改变。在LINUX2.2时,VFS曾有很大的进步,使缓&nbsp;<BR>存更佳,整体效率大增。然而,LINUX2.2中的虚拟文件系统层依然遗留着一些重要&nbsp;<BR>的限制,有待2.4的解决。其中一个限制是,2.2保留了两个用于文件缓存的缓冲区&nbsp;<BR>,一个读一个写(page&nbsp;cache和buffer&nbsp;cache)。你可以想象,这使内核开发者们&nbsp;<BR>的工作十分复杂,每次编程都得保证&nbsp;两个缓存之间的同步时,就象在手术室里带&nbsp;<BR>无菌消毒手套一样。LINUX2.4完全超越了这一障碍,把两个缓存合而为一。这项改&nbsp;<BR>变,使LINUX2.4效率更高,使代码更容易理解,而且用于缓存的内存可以大致减半&nbsp;<BR>。在重写代码的过程中&nbsp;,还消除了许多竞争状况(race&nbsp;condition,多个进程/线&nbsp;<BR>程修改同一个未经保护的变量,形成竞争。),精简了代码,从而能在高端系统上&nbsp;<BR>获取更好的伸缩性,而且在牵涉多个文件系统时加速了磁盘写操作。&nbsp;&nbsp;<BR>&nbsp;<BR>LINUX2.2在高端系统上的一个普遍问题是对进程/线程数的限制。(译注,LINUX中&nbsp;<BR>用户线程与内核线程是一一对应的,和大多数商业UNIX不同。&nbsp;&nbsp;<BR>&nbsp;<BR>详见:&nbsp;<A HREF="http://pauillac.inria.fr/~xleroy/Linuxthreads)">http://pauillac.inria.fr/~xleroy/Linuxthreads)</A>&nbsp;&nbsp;<BR>LINUX2.2缺省只允许1024个进程/线程同时运行(译注:修改源代码,可达4096个&nbsp;<BR>)。高端系统同时要服务上千的用户,所以这显然是一个问题--它一度是阻碍&nbsp;<BR>LINUX进入企业级市场的一大因素。LINUX2.4消除了这个限制,并且允许在系统运&nbsp;<BR>行中动态调整进程数上限。因此,进程数现在只受制于物理内存的多少。在高端服&nbsp;<BR>务器上,即使只安装了512M内存,现在也能轻而易举地同时支持1万6千个进程。有&nbsp;<BR>其他用户报告,说在他们的系统上运行的进程/线程数更加多。&nbsp;&nbsp;<BR>&nbsp;<BR>在内存消耗方面,LINUX2.4增加了一些新的子系统,精简了一些旧的子系统,删除&nbsp;<BR>了一些过时的代码,总的结果是和2.2的内存消耗基本相同。在某些情况下甚至比&nbsp;<BR>2.2消耗更少的内存!值得注意的是,LINUX2.4能够支持更大的内存。在Intel体系&nbsp;<BR>的系统上,LINUX2.4最多能支持到到4&nbsp;G。&nbsp;&nbsp;<BR>&nbsp;<BR>二进制文件类型&nbsp;&nbsp;<BR>&nbsp;<BR>LINUX内核中一个经常被忽视的部分是程序加载器,它负责定位可执行程序,把程&nbsp;<BR>序正确地加载到内存,然后运行之。许多人不知道LINUX还支持一种“misc.”二进&nbsp;<BR>制加载器。它是一个灵活的模块,使你能象在Windows中那样,把二进制文件和“&nbsp;<BR>HELPER”应用关联起来。例如,它可以让你把所有Windows程序和WINE(Windows模&nbsp;<BR>拟器)关联起来,然后只要一打“./notepa&nbsp;d.exe”就行。(不过,一般来说,把&nbsp;<BR>所有的事情都交给内核也太走极端了,未必是个好主意。&nbsp;比如,一打“&nbsp;<BR>/etc/passwd”就弹出个编辑器,就不怎么妙。Windows提供的许多关联功能交给文&nbsp;<BR>件管理器就行。)许多人认为这项功能是一大进步,允许WINE和DOSEMU(DOS模拟&nbsp;<BR>器)的运行更为透明。&nbsp;&nbsp;<BR>&nbsp;<BR>通过按需起动JAVA解释器/编译器,LINUX2.2和2.0支持直接运行JAVA程序。Linux&nbsp;<BR>是第一种在内核层提供这种支持的操作系统。运行JAVA应用时,JAVA二进制加载器&nbsp;<BR>会运行JAVA解释器/&nbsp;编译器,并提供恰当的参数。自然,使用新的“misc.”加载&nbsp;<BR>器实现这个功能会更简单,LINUX&nbsp;2.2已经提供了有关的说明。2.4中会取消对旧加&nbsp;<BR>载模块的支持。&nbsp;&nbsp;<BR>&nbsp;<BR>尽管2.2是要求内核必须编译成ELF格式的第一个LINUX版本,但LINUX2.4会更加依&nbsp;<BR>赖于ELF执行程序格式。(ELF是一种先进的执行程序格式,支持多个代码段和数据&nbsp;<BR>段,更方便的动态链接库调用和其他特性。大致上与WIN32格式相当,但设计更完&nbsp;<BR>善。)利用ELF格式的优势,内核开发者们可以使一些代码更加模块化,更加易于&nbsp;<BR>维护。许多种的驱动模块会更加“即插即用&nbsp;”,因为不需要在核心代码中显式初&nbsp;<BR>始化它们,内核连接的方式就可以决定初始化的方式。&nbsp;&nbsp;<BR>&nbsp;<BR>此外,LINUX2.4中还有别的重大改进,有必要在深入到各个子系统之前先作说明。&nbsp;<BR>LINUX2.4&nbsp;引入了POSIX的时钟和定时器,允许用非实时时钟的设备同步系统时间,&nbsp;<BR>因此在一定程度上更加遵循标准。网络文件系统(NFS),是大多数UNIX上的标准&nbsp;<BR>网络文件共享方式。2.4已经支持了NFS版本3的绝大多数特性(下面有关文件系统&nbsp;<BR>的部分会展开讨论)。此外,线程模式也作了小范围调整,以提高兼容性。&nbsp;&nbsp;<BR>&nbsp;<BR>千面LINUX&nbsp;&nbsp;<BR>&nbsp;<BR>尽管LINUX操作系统的心脏是上述的基础架构,但最终用户最关心的,还是与具体&nbsp;<BR>系统相关的那些部分。LINUX的“手足”包括所有与处理器相关或无关的的驱动代&nbsp;<BR>码,它们控制处理器、磁盘驱动器、端口以提供计算机功能的其他一切硬件。本文&nbsp;<BR>主要集中讨论i386上的Linux,因为这是作者最熟悉的平台。自LINUX2.2发行以来&nbsp;<BR>,所有平台上的移植版都取得了长足的进步,可惜我对它们大多没有个人经验。从&nbsp;<BR>目前来说,2.4比2.2只多一种平台(SuperH),不过2.4发行时可能还有增加。&nbsp;&nbsp;<BR>&nbsp;<BR>在Intel兼容的硬件上,LINUX2.4会对2.2已经支持的处理器提供同样优秀的支持,&nbsp;<BR>包括针对386&nbsp;,486,586(奔腾)和686(奔腾PRO/奔腾II/奔腾III/赛扬)和&nbsp;<BR>AMD/Cyrix兼容处理器的优化。但2.4会包括对新芯片硬件的额外支持。LINUX2.2支&nbsp;<BR>持Intel的内存类型范围寄存器(Memory&nbsp;Type&nbsp;Range&nbsp;Register,MTRR)以提升高&nbsp;<BR>带宽设备的性能(如AGP显示卡);但2.4会进而同时&nbsp;支持AMD&nbsp;K7和Cyrix的MCR提&nbsp;<BR>供的同类功能。LINUX2.2支持IO-APIC(高级可编程中断控&nbsp;制器),允许中断处理&nbsp;<BR>由多个处理器分担;2.4会更上一层楼,支持内置多个IO-APIC的高端系统,进一&nbsp;<BR>步提高伸缩性。&nbsp;&nbsp;<BR>&nbsp;<BR>Linux&nbsp;2.4与Merced(IA64)&nbsp;&nbsp;<BR>&nbsp;<BR>尽管大家翘首以待的IA64处理器尚未面世,但Intel的准备工作早已紧锣密鼓了。&nbsp;<BR>因为芯片还没有上市,LINUX2.4现在不直接支持Merced芯片。但有好几个小组在工&nbsp;<BR>作,以保证芯片面世后,&nbsp;LINUX立刻就可以在上面运行。毫无疑问,目前LINUX本&nbsp;<BR>身对64位芯片的支持,(Alpha和UltraSparc&nbsp;支持是源代码的一部分)大大简化了&nbsp;<BR>移植工作。这意味着,保证64位LINUX能在Merced&nbsp;上运行的许多工作,如保证内核&nbsp;<BR>的核心部分和模块不依赖于32位的字长和存储方式,都已经完成了相当一段时间了&nbsp;<BR>。&nbsp;&nbsp;<BR>&nbsp;<BR>我不希望暗示大家,LINUX在64位系统上运行已经不存在任何问题,那不是事实。&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -