Linux与其它类Unix内核的比较

单块结构的内核:由几个逻辑上独立的成分构成,单块结构,大多数据商用Unix变体也是单块结构;

编译并静态连接的传统Unix内核:Linux能自动按需动态地装载和卸载部分内核代码(模块),而传统Unix内核仅支持静态连接;

内核线程:Linux以一种十分有限的方式使用内核线程来周期性地执行几个内核函数,而一些Unix内核则本身被组织成一组内核线程;

多线程应用程序支持:Linux定义了自己的轻量级进程版本,并以此来实现对多线程应用程序的支持,而商用Unix则都是基于内核线程来作为多线程应用程序的执行环境;

抢占式内核:Linux2.6提供了“可抢占的内核”的编译选项,当采用这种编译方式来编译内核时,Linux2.6可以随意交错执行处于特权模式的执行流,而一些传统的、通用的Unix,如Solaris则是完全的抢占式内核;

多处理器支持:一些Unix内核变体都利用了多处理器系统,Linux2.6支持不同存储模式的对称多处理,不仅可以使用多处理器,同时每个处理器可以毫无区别地处理任何一个任务;

注:"对称多处理"(Symmetrical Multi-Processing)又叫SMP,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。

文件系统:Linux标准文件系统支持多种不同类型的文件系统,由于采用了面向对象虚拟文件系统技术,外部文件系统可以很容易移植到Linux内核上;

注:虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以 及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建 立,在系统关闭时消亡。

STREAMS:大部分Unix内核均包含STREAMS I/O子系统,作为编写设备驱动程序、终端驱动程序及网络协议的首选接口,但Linux无类似的子系统;

二、硬件依赖性:

Linux试图在硬件无关的源代码与硬件相关的源代码之间保持清晰的界限,为此,Linux为不同的硬件平台作了不同的支持,目前共对23种不同的硬件平台类型作了专门的支持。

三、操作系统基本概念:

当操作系统启动时,内核被装入到RAM中,内核中包含了系统运行所必须的很多核心过程。内核为系统中所有事情提供了主要功能,并决定高层软件的许多特性。

操作系统的两个主要目标:与硬件交互以及为运行在其上的应用程序提供执行环境。

多用户系统:

能并发和独立执行分别属于两个或多个用户的若干应用程序的计算机。

“并发”意味着几个应用程序能同时处于活动状态并竞争各种资源;

“独立”意味着每个应用程序能执行自己的任务,而无需考虑其他用户的应用程序在干些什么;

多用户操作系统必须包含的特点:

  • 核实用户身份的认证机制;
  • 防止有错误的应用程序妨碍到其它应用程序在系统中运行的保护机制;
  • 防止有恶意用户程序干涉或窥视其它用户的活动的保护机制;
  • 限制分配给每个用户的资源数的记账机制;

以上保护机制依赖与CPU特权模式相关的硬件保护机制。

用户和组:

所有的用户由一个唯一的用户标识符来标识。

为了实现资料的共享,引入用户组,组由唯一的用户组标识符来标识。

任何类Unix操作系统都有一个特殊的root用户,即超级用户,操作系统不对她使用通常的保护机制,可以访问系统中的任何一个文件,并干涉任何一个正在执行的用户程序活动。

进程:

程序执行的一个实例,一个运行程序的“执行上下文”。

Unix是具有抢占式进程的多处理器操作系统。

类Unix操作系统采用进程/内核模式,每个进程都自以为它是系统中唯一的进程,可以独占操作系统所提供的服务。只要进程发出系统调用,硬件就会把特权模式由用户态变成内核态,然后进程以非常有限的目的开始一个内核过程的执行。

内核体系结构:

大部分Unix内核是单块结构:每一个内核层都被集成到整个内核程序中,并代表当前进程在内核态下运行。

微内核操作系统只需要内核有一个很小的函数集,通常包括几个同步原语、一个简单的调度程序和进程间的通信机制。

微内核操作系统一般比单块内核的效率低,因此操作系统不同层次之间显式的消息传递要花费一定的代价。

微内核操作系统迫使系统程序员采用模块化方法,因为任何操作系统层都是一个相对独立的程序,这种程序必须通过定义明确而清晰的软件接口,以实现与其他层的交互,同时时方便移植。

微内核操作系统比单块内核更充分的利用了RAM。

Linux内核提供了模块。模块是一个目标文件,其代码可以在运行时链接到内核,或从内核上解除链接。这种目标代码通常由一组函数组成,用来实现文件系统、驱动程序或其它内核上层功能。

四、Unix文件系统概述:

文件:

Unix文件是以字节序列组成的信息载体,内核不解释文件的内容。

文件或目录名由除了“/”和“\0”之外的任意ASCII字符序列组成,通常不能超过255个字符。

当标识文件名时,“.”和“..”分别用来标识当前工作目录和父目录。

硬链接和软链接:

包含在目录中的文件名就是一个文件的硬链接,或简称链接。

软链接又称为符号链接,是短文件,这些文件包含有另一个文件的任意一个路径名。

文件类型:

Unix文件可以是下列类型之一:

  • 普通文件
  • 目录
  • 符号链接
  • 面向块的设备文件
  • 面向字符的设备文件
  • 管道和命令管道
  • 套接字(Socket)

文件描述符与索引节点:

文件内容不包含任何控制信息。

文件系统处理文件需要的所有信息包含在一个名为索引节点的数据结构中。

索引节点至少提供以下属性:

  • 文件类型
  • 与文件相关的硬链接个数
  • 以字节为单位的文件长度
  • 设备标识符(包含文件的设备的标识符)
  • 在文件系统中识别文件的索引节点号
  • 文件拥有者的UID
  • 文件的用户组ID
  • 几个时间戳,表示索引节点状态改变的时间、最后访问时间及最后修改时间
  • 访问权限和文件模式

文件操作的系统调用:

当用户访问一个变通文件或目录文件的内容时,实际是访问硬件设备上的一些数据,因此,文件系统是硬盘分区物理组织的用户级视图。而由于处于用户态的进程不能直接与低层硬件交互,因此,所有实际的文件操作都必须在内核态下进行。

当几个进程同时打开一个文件时,文件系统给每个文件分配一个单独的打开文件对象以及单独的文件描述符。在这种情况下,Unix文件系统对进程在同一文件上发出的I/O操作之间不提供任何形式的同步机制。

对普通Unix文件,可以顺序访问,也可随机访问,而对设备文件和命名管道文件,通常只能顺序访问。

时间: 2024-10-12 03:14:31

Linux与其它类Unix内核的比较的相关文章

Linux 和类 Unix 系统上5个最佳开源备份工具

转载:http://linux.cn/article-4623-weixin.html#rd?sukey=cbbc36a2500a2e6cb7678c4d38b691a9fa7403b259f898ef85fa4620177de89e521da2071ebd494c71482c97449337f9 一个好的备份最基本的目的就是为了能够从一些错误中恢复: 人为的失误 磁盘阵列或是硬盘故障 文件系统崩溃 数据中心被破坏等等. 所以,我为大家罗列了一些开源的软件备份工具. 当为一个企业选择备份工具的时

Linux和类Unix系统上5个惊艳的开源备份软件(转)

一个好的备份计划是非常必要的,这样可以有能力恢复被下面几种情形顺坏的数据: 人为损坏 RAID或者磁盘损坏 文件系统损坏 数据中心损毁以及其它 在这篇文章里我会给你列举一些惊艳的开源备份软件. 当给企业选择备份软件的时候应该注意什么? 确保你部署的备份软件支持以下特性: 1.开源软件:你必须使用那些源代码可以被自由修改的软件.这样即使项目停止了或者没有补丁更新也可以确保你能恢复数据. 2.跨平台支持:确保备份软件可以在各种桌面和服务器操作系统上工作. 3.数据格式:开放的数据格式可以确保你能在项

【Linux】类Unix 操作系统进程监控控制工具 Supervisor

Supervisor 是一个客户端服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数. 官网 http://supervisord.org 安装1. easy_install supervisor2.setuptools (latest) from http://pypi.python.org/pypi/setuptools.meld3 (latest) from http://www.plope.com/software/meld3/.elementtree (latest) fr

Linux就是一个与Unix相似的锅炉

Unix系列的操作系统是繁殖衍生出来的,而不是诞生出来的!然而其一开始则是诞生出来的——-该观点来自斯宾格勒所著的<西方的没落> Unix一开始,其小巧易用的特点迅速将自身传播开来,就像蒲公英一样.一个偶然的突变造就了Unix,然后就落地生根了,其后再也没有其它的类 Unix系统诞生,而只是在最初的Unix上衍生出很多的系统,比如BSD,Linux...这到底是达尔文主义在起作用还是斯宾格勒的理论在起作用?不得而知!不过可以看看UNIX进程间通信课程. Linux就是一个大锅炉,保持着Unix

pkzd(一个类Unix操作系统的实现)

pkzd: 一个类unix操作系统的简单实现, 由unix v6改写而成 注: 系统的名字取自游戏pokemon和zelda(注意是pkzd不是pmzd哦) 系统简介: pkzd是一个根据unix v6改写的简单的请求调页的类unix操作系统, 系统的设计力求简洁, 所以很多设计非常简陋.模拟机: 系统镜像pkzd.img可以在bochs, qemu和virtualbox中运行(virtualbox中的格式为hdd并口硬盘, 只要把pkzd.img改成pkzd.hdd就行了)硬件支持: x86架

[转载][献给想深入学习Linux开发的网友] Linux 应用程序开发到内核开发的简明指南

[献给想深入学习Linux开发的网友] Linux 应用程序开发到内核开发的简明指南. 前言,Linux/Unix 社区的版块不热闹,新手太多,高手太忙,偶把自己这几年的Linux学习的过程讲讲,希望能给大家有点帮助, 引导初学者学习的方向,少走弯路,事半功倍,同时也是抛砖引玉,请过来人热烈发言. 1. 首先熟悉 Linux  建议在 Windows 上安装 VMware Workstation 6.5.0(以下简称VM), 下载种子在 http://www.verycd.com上找. 安装好 

Linux基础(四)——内核

Linux内核简介 Linux内核(kernel)是芬兰赫尔辛基大学的学生Linus Torvalds于1991年创建的.随着程序员从其他自由软件项目中调整源代码以扩展内核的功能,它很快获得了广泛的应用.由于Linux内核越来越受欢迎,GNU自己的内核GNU Hurd不可用且不完整,而且Berkeley Software Distribution (BSD) OS仍然受到法律问题的阻碍.因此,在开发者社区的帮助下,Linux kernel 0.01于1991年9月17日发布. Linux内核是一

Unix内核中打开文件的表示

Unix内核中已经打开文件,通过三种数据结构表示: 每个进程的进程表中的记录项,包含打开的文件的文件描述符表,与之关联的是: 文件描述符标识 指向一个文件表项的指针 内核为所有打开文件维持一张文件表,每个文件表项代表一个打开文件,包含: 文件状态标识(读.写.添加.同步.非阻塞等 当前文件偏移量 指向该文件v节点表项的指针 3. 每个打开文件都有且只有一个V节点(v-node)结构 文件类型 对此文件进行各种操作的函数的指针 (大多数文件)该文件的i节点(i-node,索引节点) 一个打开的文件

一个Unix内核级别漏洞(一)

翻译原创稿件,prison整理翻译,首发ichunqiu,原地址:http://lsd-pl.net/kernelvuln.pdf 这是一篇关于Unix内核级别漏洞的paper,由某团队发布在一次黑客挑战上,内容很有深度,但有条理,翔实的为读者说明了该漏洞可能造成的影响,以及漏洞利用的过程.另外因为是paper形式,所以比较严谨,值得研究.难度系数:四颗星,本文较长,耐心看完的额都学到了本事! 1.引言 2.ldt x86 bug 2.1  问题描述 2.2  Solaris2.7 2.8 x8