您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 浅谈Linux操作系统
浅谈Linux操作系统摘要:电子计算机诞生以来,计算机操作系统的研究取得了长足进展。现在,操作系统进入了社会生活的各个方面,涉及大型计算机、个人计算机、移动便携设备、其他自动化设备等各个层次的应用领域。应用最广泛的系统之一Linux无论从硬件还是从软件来讲,都已经是一个成熟的操作系统。免费与开源的特性使得Linux对Windows的威胁也越来越大。在服务器和嵌入式系统市场上,Linux已经是主流的操作系统之一。Linux现正稳步拓展桌面操作系统市场。随着Linux的流行,越来越多的厂商开始在其销售的计算机上预装Linux。关键词:操作系统Linux开源免费服务器一、Linux的简介Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界人人都能自由使用的Unix兼容产品。二、Linux的特色开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(OSI)国际标准。多用户:是挃系统资源可以被丌同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互丌影响。多任务:它是挃计算机同时执行多个程序,而丏各个程序的运行互相独立。良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。设备独立性:是挃操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱劢程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而丌必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力。提供了丰富的网络功能:完善的内置网络是Linux一大特点。可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。良好的可移植性:是挃将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行三、Linux内存管理工作原理及其工作流程1.物理地址管理很多小型操作系统,例如eCos,vxworks等嵌入式系统,程序中所采用的地址就是实际的物理地址。这里所说的物理地址是CPU所能见到的地址,至于这个地址如何映射到CPU的物理空间的,映射到哪里的,这取决于CPU的种类(例如mips或arm),一般是由硬件完成的。对于软件来说,启动时CPU就能看到一片物理地址。但是一般比嵌入式大一点的系统,刚启动时看到的已经映射到CPU空间的地址并不是全部的可用地址,需要用软件去想办法映射可用的物理存储资源到CPU地址空间。通常CPU可见的地址是有限制的,32位的CPU最多看见4G的物理空间,64位的就更大了。所以目前的应用64位可能不需要考虑物理内存CPU可见物理空间的问题,然而32位的基本都是要考虑的。这就诞生了一个需求:动态映射。在linux系统中,例如x86架构,由于CPU可见的3G的空间给了用户程序,内核仅留下了1G,而存储的映射都要映射到这1G的,所以大于1G的内存不实用动态映射都无法访问。简单的说,就是当需要一个空白内存页的时候动态的将某个物理内存映射到一个地址,再需要就换下已经使用过的重新映射新的到这个地址。2.应用程序地址空间隔离另外一个需求是现代的系统通常不止跑一两个程序,而每个程序又都可以看见和操作完整的地址,如此安装别人发布的进程就是一个危险性很高的操作。嵌入式系统的容易处理,但PC机就难以处理这个问题。因此每个程序在程序可见的地址空间隔离是非常必要的。于是有了虚拟的程序地址空间。每个进程见到的地址范围都是一样的,然而其访问同一个地址返回的数据却是不一样的。3.高端内存3.1临时映射空间固定映射空间是内核线性空间中的一组保留虚拟页面空间,位于内核线性地址的末尾即最高地址部分。其地址编译时确定,用于特定用途(如VSYSCALL系统调用,MIPS的cache着色)。由枚举类型fixed_addresses决定,内核在FIXADDR_START到FIXADDR_TOP之间在这个空间中,有一部分用于高端内存的临时映射。这块空间具有如下特点:每个CPU占用一块空间;可以用在中断处理函数和可延迟函数的内部,从不阻塞,禁止内核抢占;在每个CPU占用的那块空间中,又分为多个小空间,每个小空间大小是1个page,每个小空间用于一个目的,这些目的定义在kmap_types.h中的km_type中。当要进行一次临时映射的时候,需要指定映射的目的,根据映射目的,可以找到对应的小空间,然后把这个空间的地址作为映射地址。这意味着一次临时映射会导致以前的映射被覆盖。接口函数:kmap_atomic/kunmap_atomic。使用从FIX_KMAP_BEGIN到FIX_KMAP_END之间的物理页3.2长久映射空间长久映射地址空间是预留的线性地址空间。访问高内存的一种手段。使用方式是先通过alloc_page()获得了高端内存对应的page,然后内核从专门为此留出的线性空间分配一个虚拟地址,在PKMAP_BASE到FIXADDR_START之间。接口函数:void*kmap(struct*page)、voidkumap(struct*page)该接口函数在高/低内存都能使用,可以睡眠,数量有限。对于不使用的的page,及应该时从这个空间释放掉(也就是解除映射关系)。3.3非连续映射地址空间非连续映射地址空间适用于为不频繁申请释放内存的情况,这样不会频繁的修改内核页表。总的来说,内核主要在以下情况使用非连续映射地址空间:映射设备的I/O空间;为内核模块分配空间;为交换分区分配空间每个非连续内存区都对应一个类型为vm_struct的描述符,通过next字段,这些描述符被插入到一个vmlist链表中。这种方式下高端内存使用简单,因为通过vmalloc(),在”内核动态映射空间“申请内存的时候,就可能从高端内存获得页面(参看vmalloc的实现),因此说高端内存有可能映射到”内核动态映射空间“中。接口函数:vmalloc(vfree):物理内存(调用alloc_page)和线性地址同时申请,物理内存是__GFP_HIGHMEM类型(分配顺序是HIGH,NORMAL,DMA)(可见vmalloc不仅仅可以映射HIGHMEM页框,它的主要目的是为了将零散的,不连续的页框拼凑成连续的内核逻辑地址空间...);4.申请和释放内存无论是用户程序还是内核程序,都需要使用内存,所以如何高效的分配和回收内存就是一个很重要的话题。实际的需求中,用户可以申请内存,但申请的内存不一定会使用,因此内核也可以不真实的为其预留内存,只是在其真正使用的时候才分配。这种内核机制叫做over_commit,就是内核可以为应用程序分配大于实际拥有的内存量。Linux内核会使用大量的空间缓存磁盘中的文件,这部分内存会用掉几乎所有的可用内存。当用户程序对内存有需求的时候,linux就会回收这部分内存的一部分,用来满足用户需要。所以,在linux程序的眼里,linux系统的可用内存几乎永远为0,然而申请内存又通常可以成功。这一些内存针对各个功能的需求而设计的机制共同组成了linux的内存管理机制。离开具体功能的内存管理机制是没有意义的。如此,内存管理主要有三个需求:动态的物理内存的管理、隔离的用户地址空间的管理和分配和回收内存。5.启动时内存的申请和释放:bootmemLinux启动时的各个模块也有申请和释放内存的需求,但是此时内核的内存模型还没建立好。于是linux就提供了一个专门用在此时的内存接口bootmem,这个接口很简单,以页为单位,简单的搜索满足需求的连续页空间分配,并且可以应对物理上不连续的存储体。这个内存机制还有个最广泛使用的技巧,就是分配超大额的连续内存。因为在系统启动前,这个需求是容易满足的,但是启动后,由于模块众多,内存使用频繁换手,物理连续的内存很难得到,在启动时直接通过bootmem接口预留连续的物理内存后续使用是不二的选择。内核完全启动后,bootmem机制不再有效。6.伙伴算法内存在底层是以页为单位分配的,上层一些的分配器如内核的slab,用户控件的malloc等都是在后台先申请了足够的页之后再对用户就行分配。如此后台关于如何申请页就有很多种思路,这些思路的最主要的评价标准有两个:如何最快,如何碎片最少。伙伴算法最被广泛使用的,该算法的核心思想是把内存提前分为大小不同的一系列内存块,当申请内存的时候返回最贴近需求内存大小的内存块,没有的合适大小的时候就可能拆分更大的。通过提前的安排,在牺牲内存利用率的前提下,尽可能的实现非碎片化。这个思想也不是一直有效,后来人们还加入了内存页的回收类型属性:可回收、可移动、不可回收。相当于定期的对磁盘进行磁盘整理来让不连续的空闲内存块重新连续起来。由于用户程序使用的内存页都是动态映射来的,所以后台只需要替换一下映射就能实现对用户程序透明的页面置换,所以这种做法的效率也是不错的。除了在分配上注意不产生碎片,内核也会定期的回收已经分发出去的页面。合理的分发加上有效的回收构成了linux内核管理的核心。四、操作系统未来发展趋势随着计算机技术和网络技术的普及,在通用主流操作系统仍然占据比较大的市场份额的基础上,未来一些操作系统将逐步向专用化和小型化等方面发展,并具备如下新特点:开源化、专用化、小型化或专用化、便携化、网络化、安全化和可信化。五、附录参考文献[1]张顺香.《操作系统》[M].武汉大学出版社,2009.[2]王波.个人计算机操作系统的发展与展望[J].电脑知识与技术,2011(12).[3]潘爱民,戴夫·普罗伯特.Windows操作系统的发展[Z].[4]韩乃平,刘文清.UNIX类操作系统的发展[Z].[5]韩东儒.张波。《Linux宝典》。北京:人民邮电出版社,2007[6]岑岗。《LinuxShell编程》.中国铁道出版社.2000
本文标题:浅谈Linux操作系统
链接地址:https://www.777doc.com/doc-5046639 .html