Linux 内核的技术特点
2010-11-08 20:33
204 查看
Linux是一种是实用性很强的现代操作系统。开发它的中坚力量是经验丰富的软件工程师,他们 多以实用性和效率为出发点,很多地方还考虑了工业规范和兼容性等因素,因此不同于教学性操作系统单纯追求理论上的先进性,Linux系统内核的实用性和高效率都让人叹为观止。
下面我们简要归纳一下Linux内核的特色。
第一,Linux内核被设计成单巨内核(monolithic)结构(相对微内核而言。微内核是一种功能更贴近硬件的核心软件,它一般仅仅包括基本的内存管理、同步原语、进程间通讯机制、I/O操作和中断管理,这样做有利于提高可扩展性和可移植性。但是微内核与诸如文件管理、设备驱动、虚拟内存管理、进程管理等其它上层模块之间需要有较高的通讯开销,所以目前多集中在理论教学领域,对工业应用来说,效率难以保证 ),因此效率高,紧凑性强。
第二, 2.6版本前的Linux内核是单线程结构――所谓单线程结构是说同一时间只允许有一个执行线程(内核中的执行程序)在内核中运行 ,不会被调度程序打断而运行其它任务,这种内核成为非抢占式的,它的好处在于内核中没有并发任务(单处理器而言),因此避免了许多复杂的同步问题,但其不利影响是非抢占特性延迟了系统响应速度,新任务必须等待当前任务在内核执行完毕并自动退出后才能获得运行机会。然而,工业控制领域需要高响应速度,由于Robert love等人的贡献,2.6版本将抢占技术引入了Linux内核,使其变为可以进行内核抢占的操作系统 ――当然,付出的代价是同步变得更复杂了。
第三,为了保证能方便地支持新设备、新功能,又不会无限地扩大内核规模,Linux系统对设备驱动或新文件系统等采用了模块化的方式,用户在需要时可以现场动态加载,使用完毕可以动态卸载。同时对内核,用户也可以定制,选择适合自己的功能,将不需要的部分剔除出内核。这些都保证了内核的紧凑、可扩展性好。
第四,Linux内核纯粹是被动地提供服务。所谓被动是因为它为用户服务的唯一方式是用户通过系统调用来请求在内核空间执行某种任务。内核本身是一种函数和数据结构的集合,不存在运行的内核进程为用户服务 (虽然Linux的确存在一种被称为内核线程的进程,但它并不是用来服务于用户的,仅仅服务于内核自身)。
第五, Linux内核采用了虚拟内存技术,使得内存空间达到4GB 。其中0-3G属于用户空间,称为用户段,3G-4G属于内核空间,称为内核段。这样,应用程序就可以使用远远大于实际物理内存的存储空间了。
第六, Linux的文件系统实现了一种抽象文件模型――VFS(虚拟文件系统),该文件系统属于Unix风格。VFS是Linux的特色之一。通过使用虚拟文件系统,内核屏蔽了各种不同文件系统的内在差别,使得用户可以通过统一的界面访问各种不同格式的文件系统,并且可以毫无区别地在不同介质、不同格式的文件系统之间通过VFS提供的统一接口进行数据交换。这种抽象给Linux带来了很大的弹性。
第七, Linux提供了一套很有效的延迟执行机制――下半部分、软中断、tasklet和2.6新引入的工作队列等,这些技术保证了系统可以针对任务的轻重缓急,更细粒度地选择执行时机。保证了系统运行时尽量处于安全时间(不关中断)。
下面我们简要归纳一下Linux内核的特色。
第一,Linux内核被设计成单巨内核(monolithic)结构(相对微内核而言。微内核是一种功能更贴近硬件的核心软件,它一般仅仅包括基本的内存管理、同步原语、进程间通讯机制、I/O操作和中断管理,这样做有利于提高可扩展性和可移植性。但是微内核与诸如文件管理、设备驱动、虚拟内存管理、进程管理等其它上层模块之间需要有较高的通讯开销,所以目前多集中在理论教学领域,对工业应用来说,效率难以保证 ),因此效率高,紧凑性强。
第二, 2.6版本前的Linux内核是单线程结构――所谓单线程结构是说同一时间只允许有一个执行线程(内核中的执行程序)在内核中运行 ,不会被调度程序打断而运行其它任务,这种内核成为非抢占式的,它的好处在于内核中没有并发任务(单处理器而言),因此避免了许多复杂的同步问题,但其不利影响是非抢占特性延迟了系统响应速度,新任务必须等待当前任务在内核执行完毕并自动退出后才能获得运行机会。然而,工业控制领域需要高响应速度,由于Robert love等人的贡献,2.6版本将抢占技术引入了Linux内核,使其变为可以进行内核抢占的操作系统 ――当然,付出的代价是同步变得更复杂了。
第三,为了保证能方便地支持新设备、新功能,又不会无限地扩大内核规模,Linux系统对设备驱动或新文件系统等采用了模块化的方式,用户在需要时可以现场动态加载,使用完毕可以动态卸载。同时对内核,用户也可以定制,选择适合自己的功能,将不需要的部分剔除出内核。这些都保证了内核的紧凑、可扩展性好。
第四,Linux内核纯粹是被动地提供服务。所谓被动是因为它为用户服务的唯一方式是用户通过系统调用来请求在内核空间执行某种任务。内核本身是一种函数和数据结构的集合,不存在运行的内核进程为用户服务 (虽然Linux的确存在一种被称为内核线程的进程,但它并不是用来服务于用户的,仅仅服务于内核自身)。
第五, Linux内核采用了虚拟内存技术,使得内存空间达到4GB 。其中0-3G属于用户空间,称为用户段,3G-4G属于内核空间,称为内核段。这样,应用程序就可以使用远远大于实际物理内存的存储空间了。
第六, Linux的文件系统实现了一种抽象文件模型――VFS(虚拟文件系统),该文件系统属于Unix风格。VFS是Linux的特色之一。通过使用虚拟文件系统,内核屏蔽了各种不同文件系统的内在差别,使得用户可以通过统一的界面访问各种不同格式的文件系统,并且可以毫无区别地在不同介质、不同格式的文件系统之间通过VFS提供的统一接口进行数据交换。这种抽象给Linux带来了很大的弹性。
第七, Linux提供了一套很有效的延迟执行机制――下半部分、软中断、tasklet和2.6新引入的工作队列等,这些技术保证了系统可以针对任务的轻重缓急,更细粒度地选择执行时机。保证了系统运行时尽量处于安全时间(不关中断)。
相关文章推荐
- Linux 2.6 内核中的最新电源管理技术综述,第 1 部分
- 【Linux技术】嵌入式linux内核的五个子系统
- Linux 2.6 内核中的最新电源管理技术综述
- linux用户空间与内核空间的通信技术总结
- 深入理解Linux网络技术内幕——Notification内核通知表链
- 虚拟化–操作系统级 LXC Linux Containers内核轻量级虚拟化技术
- Linux内核分析:页回收导致的cpu load瞬间飙高的问题分析与思考--------------蘑菇街技术博客
- 开源技术分享:Linux 内核参数 swappiness细解
- Linux下安装和部署LXC(内核虚拟化技术)的方法
- linux 内核路由技术
- Cgroup maintainer李泽帆:解剖Linux内核容器技术
- linux 内核调试技术
- Linux内核开发技术今日推荐:
- Linux内核调试技术——kprobe使用与实现
- 转载_kdump的出现(基于嵌入式Linux的内核错误跟踪技术)
- Linux虚拟化技术Xen和KVM的优势特点对比
- 《Linux内核设计与实现》读书笔记(1)--- Linux内核开发的特点
- 深入理解linux网络技术内幕:用户空间与内核的接口
- Linux驱动技术(七) _内核定时器与延迟工作
- linux 内核oops调试技术