Linux、Unix和Windows NT体系结构的比较

 1. Linux系统结构

    与Unix系统相似,Linux系统大致可分为三层:靠近硬件的底层是内核,即Linux操作系统常驻内存部分;中间层是内核之外的Shell层,亦即操作系统的系统程序部分;最高层是应用层,即用户程序部分,包括各种正文处理程序、语言编译程序以及游戏程序等。如图1所示。

 


图1 Linux系统结构


    内核是Linux操作系统的主要部分,它实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,从而为核外的所有程序提供运行环境。

    从结构上看,Linux操作系统是采用单块结构的操作系统。就是说,所有的内核系统功能都包含在一个大型的内核软件之中。当然,Linux系统也支持可动态装载和卸载的模块。利用这些模块,可以方便地在内核中添加新的组件或卸载不再需要的内核组件。Linux内核结构的框图如图2所示。


图2 Linux系统核心框图


    图2展示出三个层次:用户层、核心层和硬件层。一般说来,可以将操作系统划分为内核和系统程序两部分。系统程序及其它所有的程序都在内核之上运行,它们和内核之间的接口由操作系统提供的一组“抽象指令”定义,这些抽象指令称为“系统调用”。系统调用看起来像C程序中的普通函数调用。所有运行在内核之上的程序可分为系统程序和用户程序两大类,但它们统统运行在“用户模式”之下。内核之外的所有程序必须通过系统调用才能进入操作系统的内核。

    内核程序在系统启动时被加载,然后它会初始化计算机硬件资源,并开始Linux的启动过程。

    进程是程序的一次执行过程。进程控制系统用于进程管理、进程同步、进程通信、进程调度和内存管理等。程序以文件(源文件、可执行文件等)形式存放。可执行文件装入内存准备执行时,进程控制系统与文件系统相互作用,用可执行文件更换子进程的映像。

    进程是系统中的动态实体。控制进程的系统调用包括进程的创建、终止、执行、等待、空间扩充及信号传送等。进程调度模块为进程(线程)分配CPU 。Linux系统的进程调度算法采用抢占式优先级法,将进程划分为实时进程和非实时进程,实时进程的优先级高于非实时进程。Linux系统支持多种进程通信机制,其中最常用的是信号、管道及Unix系统支持的System V IPC机制等。

    内存管理控制内存分配与回收。系统采用两种策略管理内存:交换和请求分页。根据系统中物理内存空间的使用情况进程映像在内存和辅存(磁盘)之间换入/换出,利用请求分页技术提供虚拟存储器。

    文件系统来管理文件、分配文件空间、管理空闲空间、控制对文件的访问,并为用户检索数据。进程通过一组特定的系统调用(如open、close、read、write、chmod等)与文件系统交互作用。

    Linux系统中使用了虚拟文件系统VFS,从而允许Linux支持多种不同的文件系统,每个文件系统都要提供给VFS一个相同的接口。

    文件系统利用缓冲机制访问文件数据。缓冲机制与块设备驱动程序相互作用,以启动从核心向块设备写数据,或者从块设备向核心传送(读)数据。

    Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备。Linux系统和设备驱动程序之间使用标准的交互接口。这样,内核可以用同样的方法来使用完全不同的各种设备。

    核心底层的硬件控制负责处理中断及与机器通信。外部设备(如磁盘或终端等)在完成某个工作或遇到某种事件时会中断CPU执行,由中断处理系统进行相应分析、处理。处理之后将恢复被中断进程的执行。

2. Unix系统结构

    由于Linux是Unix发展的一个分支,所以,二者的体系结构有很多相似之处。为便于读者了解相关情况,下面给出Unix System V内核的结构框图,见图3。


图3 Unix System V系统核心框图


    从图3中看出,Unix核心可视为左、右两大部分:左边是文件系统部分,右边是进程控制系统部分。文件系统部分涉及操作系统中各种信息的保存,通常都是以文件形式存放的,它相当于核心的“静态”部分。进程控制系统部分涉及操作系统中各种活动的调度和管理,通常以进程形式展现其生命活力,相当于核心的“动态”部分。“静态”和“动态”两部分存在密切联系。

    图3展示出了Unix的用户层、核心层和硬件层三个层次。库函数和系统调用的接口代表用户程序和核心之间的界线。库函数通过系统调用才能进入操作系统。

3.Windows NT体系结构

    Windows NT的体系结构是分层的模块系统,如图4所示。主要的层次有硬件抽象层HAL、内核、执行体和大量的子系统集合。前面三个都运行在保护模式下,而各子系统都在用户模式下运行。子系统又可分为环境子系统和保护子系统两类,其中环境子系统仿真不同的操作系统,保护子系统提供安全功能。


图4 Windows NT结构框图


    上面列出了Linux、Unix和Windows的体系结构。从图中可以看出,Linux与Unix的体系结构基本相同。这也不奇怪,因为Linux本来就是Unix大家族的一个新成员。这种层次结构使得核心执行的效率高,结构关系清晰,易于移植、开发和维护,在设计实现上也带来方便。

    Windows NT采用客户/服务器模型,在核心中应用微内核技术,采用对象管理方式统一处理内部所有事务,这些是新一代操作系统的设计技术。然而,商业化运作的特性使得新技术的普及应用受到影响,代码的保密、安全漏洞的不断出现,也影响了Windows NT在政府的采购和重要部门的应用。

    金无足赤。事物在发展中前进。谁代表着未来发展的方向,谁就能在竞争中取胜。

你可能感兴趣的:(c/c++学习,Linux学习,linux,unix,windows,linux内核,system,磁盘)