浅谈Linux操作系统_第1页
浅谈Linux操作系统_第2页
浅谈Linux操作系统_第3页
浅谈Linux操作系统_第4页
浅谈Linux操作系统_第5页
全文预览已结束

下载本文档

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

文档简介

1、浅谈linux操作系统 摘要:电子计算机诞生以来, 计算机操作系统的研究取得了长足进展。现在, 操作系统进入了社会生活的各个方面, 涉及大型计算机、个人计算机、移动便携设备、其他自动化设备等各个层次的应用领域。应用最广泛的系统之一linux无论从硬件还是从软件来讲,都已经是一个成熟的操作系统。免费与开源的特性使得linux对windows的威胁也越来越大。在服务器和嵌入式系统市场上, linux已经是主流的操作系统之一。linux现正稳步拓展桌面操作系统市场。随着linux的流行, 越来越多的厂商开始在其销售的计算机上预装linux。关键词: 操作系统 linux 开源 免费 服务器一、lin

2、ux的简介linux是一类unix计算机操作系统的统称。linux操作系统的内核的名字也是“linux”。linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,linux这个词本身只表示linux内核,但在实际上人们已经习惯了用linux来形容整个基于linux内核,并且使用gnu 工程各种工具和数据库的操作系统。简单地说,linux是一套免费使用和自由传播的类unix操作系统,它主要用于基于x86系列cpu的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界人人都能自由使用的unix兼容产品。二、linux的特色

3、开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(osi)国际标准。多用户:是挃系统资源可以被丌同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互丌影响。多任务:它是挃计算机同时执行多个程序,而丏各个程序的运行互相独立。良好的用户界面:linux向用户提供了两种界面:用户界面和系统调用。linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。设备独立性:是挃操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱劢程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而丌必知道它们的具体存

4、在形式。linux是具有设备独立性的操作系统,它的内核具有高度适应能力。提供了丰富的网络功能:完善的内置网络是linux一大特点。可靠的安全系统:linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。良好的可移植性:是挃将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行三、linux内存管理工作原理及其工作流程1.物理地址管理很多小型操作系统,例如ecos,vxworks等嵌入式系统,程序中所采用的

5、地址就是实际的物理地址。这里所说的物理地址是cpu所能见到的地址,至于这个地址如何映射到cpu的物理空间的,映射到哪里的,这取决于cpu的种类(例如mips或arm),一般是由硬件完成的。对于软件来说,启动时cpu就能看到一片物理地址。但是一般比嵌入式大一点的系统,刚启动时看到的已经映射到cpu空间的地址并不是全部的可用地址,需要用软件去想办法映射可用的物理存储资源到cpu地址空间。通常cpu可见的地址是有限制的,32位的cpu最多看见4g的物理空间,64位的就更大了。所以目前的应用64位可能不需要考虑物理内存cpu可见物理空间的问题,然而32位的基本都是要考虑的。这就诞生了一个需求:动态映射

6、。在linux系统中,例如x86架构,由于cpu可见的3g的空间给了用户程序,内核仅留下了1g,而存储的映射都要映射到这1g的,所以大于1g的内存不实用动态映射都无法访问。简单的说,就是当需要一个空白内存页的时候动态的将某个物理内存映射到一个地址,再需要就换下已经使用过的重新映射新的到这个地址。2.应用程序地址空间隔离另外一个需求是现代的系统通常不止跑一两个程序,而每个程序又都可以看见和操作完整的地址,如此安装别人发布的进程就是一个危险性很高的操作。嵌入式系统的容易处理,但pc机就难以处理这个问题。因此每个程序在程序可见的地址空间隔离是非常必要的。于是有了虚拟的程序地址空间。每个进程见到的地址

7、范围都是一样的,然而其访问同一个地址返回的数据却是不一样的。3.高端内存3.1临时映射空间固定映射空间是内核线性空间中的一组保留虚拟页面空间,位于内核线性地址的末尾即最高地址部分。其地址编译时确定,用于特定用途(如vsyscall系统调用,mips的cache着色)。由枚举类型 fixed_addresses决定,内核在fixaddr_start 到 fixaddr_top 之间在这个空间中,有一部分用于高端内存的临时映射。这块空间具有如下特点:每个 cpu 占用一块空间;可以用在中断处理函数和可延迟函数的内部,从不阻塞,禁止内核抢占;在每个 cpu 占用的那块空间中,又分为多个小空间,每个小

8、空间大小是 1 个 page,每个小空间用于一个目的,这些目的定义在 kmap_types.h 中的 km_type 中。当要进行一次临时映射的时候,需要指定映射的目的,根据映射目的,可以找到对应的小空间,然后把这个空间的地址作为映射地址。这意味着一次临时映射会导致以前的映射被覆盖。接口函数:kmap_atomic/kunmap_atomic。使用从fix_kmap_begin到fix_kmap_end之间的物理页3.2长久映射空间长久映射地址空间是预留的线性地址空间。访问高内存的一种手段。使用方式是先通过alloc_page() 获得了高端内存对应的 page,然后内核从专门为此留出的线性空

9、间分配一个虚拟地址,在 pkmap_base 到 fixaddr_start 之间。接口函数:void*kmap(struct*page)、 void kumap(struct*page)该接口函数在高/低内存都能使用,可以睡眠,数量有限。对于不使用的的 page,及应该时从这个空间释放掉(也就是解除映射关系)。3.3非连续映射地址空间非连续映射地址空间适用于为不频繁申请释放内存的情况,这样不会频繁的修改内核页表。总的来说,内核主要在以下情况使用非连续映射地址空间:映射设备的i/o空间;为内核模块分配空间;为交换分区分配空间每个非连续内存区都对应一个类型为vm_struct 的描述符,通过ne

10、xt字段,这些描述符被插入到一个vmlist链表中。这种方式下高端内存使用简单,因为通过vmalloc() ,在”内核动态映射空间“申请内存的时候,就可能从高端内存获得页面(参看 vmalloc 的实现),因此说高端内存有可能映射到”内核动态映射空间“中。接口函数:vmalloc(vfree):物理内存(调用alloc_page)和线性地址同时申请,物理内存是_gfp_highmem类型(分配顺序是high, normal ,dma )(可见vmalloc不仅仅可以映射highmem页框,它的主要目的是为了将零散的,不连续的页框拼凑成连续的内核逻辑地址空间. );4.申请和释放内存无论是用户程

11、序还是内核程序,都需要使用内存,所以如何高效的分配和回收内存就是一个很重要的话题。实际的需求中,用户可以申请内存,但申请的内存不一定会使用,因此内核也可以不真实的为其预留内存,只是在其真正使用的时候才分配。这种内核机制叫做over_commit,就是内核可以为应用程序分配大于实际拥有的内存量。linux内核会使用大量的空间缓存磁盘中的文件,这部分内存会用掉几乎所有的可用内存。当用户程序对内存有需求的时候,linux就会回收这部分内存的一部分,用来满足用户需要。所以,在linux程序的眼里,linux系统的可用内存几乎永远为0,然而申请内存又通常可以成功。这一些内存针对各个功能的需求而设计的机制

12、共同组成了linux的内存管理机制。离开具体功能的内存管理机制是没有意义的。如此,内存管理主要有三个需求:动态的物理内存的管理、隔离的用户地址空间的管理和分配和回收内存。5.启动时内存的申请和释放:bootmemlinux启动时的各个模块也有申请和释放内存的需求,但是此时内核的内存模型还没建立好。于是linux就提供了一个专门用在此时的内存接口bootmem,这个接口很简单,以页为单位,简单的搜索满足需求的连续页空间分配,并且可以应对物理上不连续的存储体。这个内存机制还有个最广泛使用的技巧,就是分配超大额的连续内存。因为在系统启动前,这个需求是容易满足的,但是启动后,由于模块众多,内存使用频繁

13、换手,物理连续的内存很难得到,在启动时直接通过bootmem接口预留连续的物理内存后续使用是不二的选择。内核完全启动后,bootmem机制不再有效。6.伙伴算法内存在底层是以页为单位分配的,上层一些的分配器如内核的slab,用户控件的malloc等都是在后台先申请了足够的页之后再对用户就行分配。如此后台关于如何申请页就有很多种思路,这些思路的最主要的评价标准有两个:如何最快,如何碎片最少。伙伴算法最被广泛使用的,该算法的核心思想是把内存提前分为大小不同的一系列内存块,当申请内存的时候返回最贴近需求内存大小的内存块,没有的合适大小的时候就可能拆分更大的。通过提前的安排,在牺牲内存利用率的前提下,

14、尽可能的实现非碎片化。这个思想也不是一直有效,后来人们还加入了内存页的回收类型属性:可回收、可移动、不可回收。相当于定期的对磁盘进行磁盘整理来让不连续的空闲内存块重新连续起来。由于用户程序使用的内存页都是动态映射来的,所以后台只需要替换一下映射就能实现对用户程序透明的页面置换,所以这种做法的效率也是不错的。 除了在分配上注意不产生碎片,内核也会定期的回收已经分发出去的页面。合理的分发加上有效的回收构成了linux内核管理的核心。四、操作系统未来发展趋势随着计算机技术和网络技术的普及,在通用主流操作系统仍然占据比较大的市场份额的基础上,未来一些操作系统将逐步向专用化和小型化等方面发展,并具备如下新特点:

温馨提示

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

评论

0/150

提交评论