Linux内核的特征

Linux是个人计算机和工作站上的Unix类操作系统。但是,它绝不是简化的Unix。相反,Linux是强有力和具有创新意义的Unix类操作系统。它不仅继承了Unix的特征,而且在许多方面超过了Unix。作为Unix类操作系统,Linux内核具有下列基本特征:

1. Linux内核的组织形式为整体式结构。也就是说整个Linux内 核由很多过程组成,每个过程可以独立编译,然后用连接程序将其连接在一起成为一个单独的目标程序。从信息隐藏的观点看,她没有任何程度的隐藏—每个过程都 对其它过程可见。这种结构的最大特点是内部结构简单,子系统间易于访问,因此内核的工作效率较高。另外,基于过程的结构也有助于不同的人参与不同过程的开发,从这个角度来说,Linux内核又是开放式的结构,她允许任何人对其进行修正、改进和完善。

2. Linux的进程调度方式简单而有效。可以说Linux在追求效率方面孜孜不倦,体现在调度方式上也是别具一格。对于用户进程,Linux采用简单的动态优先级调度方式;对于内核中的例程(如设备驱动程序、中断服务程序等)则采用了一种独特的机制—软中断机制,这种机制保证了内核例程的高效运行。

3.  Linux支持内核线程(或称守护进程)。内核线程是在后台运行而又无终端或登录shell和它结合在一起的进程。有许多标准的内核线程,其中有一些周期地运行来完成特定的任务(如swapd),而其余一些则连续地运行,等待处理某些特定的事件(如inetd和lpd)。内核线程可以说是用户进程,但和一般的用户进程又有不同,它象内核一样不被换出,因此运行效率较高。

4. Linux支持多种平台的虚拟内存管理。内存管理是和硬件平台密切相关的部分,为了支持不同的硬件平台而又保证虚拟存储管理技术的通用性,Linux的虚拟内存管理为不同的硬件平台提供了统一的接口,因此把Linux内核移植到一个新的硬件平台并不是一件很困难的事。

5. Linux内核另一个独具特色的部分是虚拟文件系统(VFS)。虚拟文件系统不仅为多种逻辑文件系统(如ext2,fat等)提供了统一的接口,而且为各种硬件设备(作为一种特殊文件)也提供了统一接口。

6.  Linux的模块机制使得内核保持独立而又易于扩充。模块机制可以使内核很容易地增加一个新的模块(如一个新的设备驱动程序),而无需重新编译内核;同时,模块机制还可以把一个模块按需添加到内核或从内核中卸下,这使得我们可以按需要定制自己的内核。

7. 增加系统调用以满足你特殊的需求。一般来说,系统调用是操作系统的设计者提供给用户使用内核功能的接口,但Linux开放的源代码也允许你设计自己的系统调用,然后把它加入到内核。

8. 网络部分面向对象的设计思想使得Linux内核支持多种协议、多种网卡驱动程序变得容易。

时间: 2024-11-03 09:05:55

Linux内核的特征的相关文章

深入分析Linux内核源码oss.org.cn/kernel-book/

本html页面地址:http://oss.org.cn/kernel-book/ 深入分析Linux内核源码 前言         第一章 走进linux 1.1 GNU与Linux的成长 1.2 Linux的开发模式和运作机制 1.3走进Linux内核            1.3.1 Linux内核的特征 1.3.2 Linux内核版本的变化 1.4 分析Linux内核的意义         1.4.1 开发适合自己的操作系统 1.4.2 开发高水平软件 1.4.3 有助于计算机科学的教学和

《Linux内核设计与实现》学习总结 Chap4

第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行,这些进程在等待运行,在一组处于可运行状态的进程中,选择―个来执

《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE(2.29——3.6)构造一个简单的Linux系统MenuOS SECTION 1 Linux内核源代码简介 1.操作系统的两把宝剑(回顾上一讲) 中断上下文的切换——保存现场&恢复现场 进程上下文的切换 2.Linux内核源代码简介 打开内核源代码页面 arch/目录:支持不同CPU的源代码:其中的

Linux内核源码学习之 数据结构

本篇记录在学习Linux内核源码过程中对一些知道但不熟悉不会用的数据结构进行记录. union 是在学习进程复制函数do_fork中遇到的: <sched.h> union thread_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE/sizeof(long)]; }; struct  thread_info和stack被声明为union 共享空间 "联合"是一种特殊的类,也是一

从Linux内核升级的必要性说开去

Linux内核更新超级频繁,但是有必要时刻升级吗?个人感觉没有必要,但是你要时刻关注新特性列表,然后把自己的内核升级到离最新版本差一两个月发布的版本而不是最新版本,以保证稳定性,因为一两个月的时间足够多的慧眼会发现足够多的问题,既然自己不是Alan Cox那个梯队的大牛,最好不要在自己的生产版本上使用最新内核,当然,做试验或者Just play例外.       为什么要升级内核?是的,很多人并不同意这种观点,可能他们认为使用内核提供的最持久最稳定的接口就已经足够,多数的定制特性需要自己在用户空

《Linux内核设计与实现》第四章学习笔记

第四章 进程调度 [学习时间:1小时45分 撰写博客时间:2小时10分钟] [学习内容:Linux的进程调度实现.抢占和上下文切换.与调度相关的系统调用] 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉

linux内核系统调用和标准C库函数的关系分析

今天研究了一下系统调用和标准库函数的区别和联系,从网上搜集的资料如下: 1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说就是一个库函数. 2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数. 3.read就是系统调用,而fread就是C标准库函数. 4.很多c函数库中的函数名与系统调用的名称一样是因为该函数本身其实就是调用的系统调用,放到c函数库就是为了用户态的使用 5.写程序直接使用的

《Linux内核设计与实现》第八周学习总结——第四章 进程调度

<Linux内核设计与实现>第八周学习总结——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不

Linux内核中的list用法和实现分析

这些天在思考知识体系的完整性,发现总是对消息队列的实现不满意,索性看看内核里面的链表实现形式,这篇文章就当做是学习的i笔记吧.. 内核代码中有很多的地方使用了list,而这个list的用法又跟我们平时在教科书中常见的用法有很大的不同,所以有必要详细了解下这里面的门道. 内核里面的list(如没有特殊说明,下文说的list都是指内核里面的list)可称之为侵入式链表.这种list最突出的特征就是其节点中不含有任何数据,相反,list节点是嵌入到特定的数据结构中的.大家自然就会问了,这样实现有什么好