Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。现在Unix系统的用户日益增多,应用范围也日益扩大。Unix系统在计算机操作系统的发展史上占有重要的地位,对已有技术不断作了精细、谨慎而有选择的继承和改造,并且,在操作系统的总体设计构想等方面有所发展,才使它获得如此大的成功。本文对Unix操作系统的原理、优点与缺点做了简单的分析。

Unix系统在计算机操作系统的发展史上占有重要的地位,对我们学习嵌入式操作系统有重大的意义。本文主要分析了Unix操作系统的原理、优点和缺点。其中原理部分包括Unix系统的基本结构、Unix文件系统、Unix存储管理。

<>一. Unix操作系统的原理

Unix是一种多用户、多任务管理操作系统。Unix系统由硬件部分、内核、Shell和应用程序构成,用户通过Shell发送用户命令到内核。Unix文件系统采用树形结构。Unix支持多种处理器架构,按照操作系统的分类,属于分时操作系统。苹果系统就是基于Unix的。

<>1.Unix系统的基本结构

(1)内核层

Unix系统内核的作用是与硬件交互并控制硬件向用户程序提供抽象服务。负责计算机系统中的资源管理和进程调度分配,其中包括中断处理、存储器管理、进程管理和I/O文件管理等。这些功能由Unix内核中的各个模块实现。其中包括直接控制硬件的各模块。Unix的内核是计算机硬件的第一次延伸,向用户提供接口进行服务,而用户不能够直接访问内核。

(2)Shell及专用程序层

Shell是Unix的用户接口,是Unix系统的重要组成部分。它负责完成用户命令的解释执行,完成Unix系统用户工作环境的设定等,但它不是内核的组成部分。在Unix系统中,一些命令通过应用程序的命令接口来实现。其中编译部件也在Shell及专用程序层上。

(3)用户程序层
用户程序层在Shell和专用程序的外部,与编译器同处最外层的是用户的实际应用程序。编译器主要完成将用户程序编译成系统可识别和处理的形式,也在用户程序层上。

<>2.Unix文件系统

Unix文件系统采用树形文件结构、内核与外核结合、设备与文件一样的管理机制和使用方法。Unix文件系统通过“磁盘索引i节点”和“目录项”来进行管理的,在文件被打开或被引用后还需要“内存索引i节点”、“用户文件描述表”、“文件表”。

文件系统在磁盘中大致分为以下三个区域:

(1)超级块
作用是存放文件系统本身的结构信息,比如每个区域的大小以及有哪些空余的磁盘块信息。超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、i结点信息等等。

(2)i-节点表

存储文件的属性,大小以及所有者等。每个i-节点结构的大小一致,而且访问的方式就和数组类似,比如要访问i-节点号为9的i-节点结构,就对应i-节点表中的第10个位置。i结点是Unix操作系统中文件的核心,也是操作系统与硬盘中存储的数据间的中介,如果这个结点信息出现错误的话,那么硬盘中存储的数据块将无法被用户所采用。

(3)数据区

文件的内容就保存在这个区域,磁盘上的所有块的大小都是相同的,如果该文件的内容存储下来不止需要一个块,那就使用多个块进行存储。如果文件很大的话,就需要很多个磁盘块才能存储下来。

<>3.Unix存储管理

存储管理是对作业从进入就绪状态起到运行结束之间所使用的存储器进行管理。可以将存储管理模块的任务分为存储分配、地址映射和存储保护。

(1)存储分配

一个程序在编译和链接后,得到一个称为内存映像的文件。该文件描述了这个程序在运行时所需要的内存大小,其中包括代码和数据区的地址。这些地址称为逻辑地址,并且以首地址0为参考地址。每当一个作业调入内存,进入就绪状态,存储管理模块就要根据可利用的内存空间与作业所需要的内存两者进行计算,给该作业分配相应的内存空间。

(2)地址映射

将一个作业装入内存,意味着一个进程将被创建。存储管理模块会把该作业的映像文件首地址(为零)对准内存中进程的首地址。这个进程的首地址或起始地址是内存中的物理地址,称为偏移量。映像文件的逻辑地址加上偏移量,得到内存中的地址值均为物理地址。计算逻辑地址到物理地址的转换工作称为地址映射。映像中所有的逻辑地址都可转换为物理地址。

(3)存保护

内存空间总是被若干个进程分享,其中包括操作系统本身要常驻在内存中的那一部分。内存保护的任务是对内存空间中已划分出的区域,知道它们各属于哪些进程,并且知道每个进程有权访问的区域。每当一个进程执行过程中需要访问某个地址时,存储管理模块就要检查一下这个进程是否有权访问这个物理地址。通常,每个进程在内存中的区域是该进程可以访问的合法地址。如果访问的地址落在该进程的区域之外,即产生了非法访问。一旦遇到非法访问,内存保护就要拒绝访问,并进行出错处理。

<>二. Unix操作系统的优点

Unix系统是最早出现的操作系统之一,现在Unix系统的技术已经变得成熟,它具有以下优点:

<>1.可靠性高

Unix操作系统具有较高的可靠性,Unix主机和服务器可以保持24小时不间断运行,使用Unix系统的主机/服务器更加稳定可靠。现在的Unix操作系统采用64位技术,多路I/O提高系统可靠性和性能,支持控制器热插拔、硬盘跨接和镜像等,满足了复杂的应用要求。

<>2.良好的用户界面

Unix系统提供了良好的用户界面,具有使用方便、功能齐全、清晰而灵活、易于扩充和修改等特点。Unix系统的使用有两种形式:一种是操作命令,即Shell语言,是用户可以通过终端与系统发生交互作用的界面;另一种是面向用户程序的界面,它不仅在汇编语言,而且在C语言中向用户提供服务。并且Unix有3种主流的Shell,同时为用户提供数千条系统命令,大大方便了系统操作、系统管理。系统的可操作性强,可以用非常简易的输出设备代替显示器,来操作计算机和完成复杂的系统开发和管理工作。

<>3.良好的文件系统

Unix系统的文件系统是树形结构。它由基本文件系统和若干个可装卸的子文件系统组成,既能扩大文件存储空间,又有利于安全和保密。Unix系统把文件、文件目录和设备统一处理。它把文件作为不分任何记录的字符流进行顺序或随机存取,并使得文件、文件目录和设备具有相同的语法语义和相同的保护机制,这样既简化了系统设计,又便于用户使用。其中跨平台的文件系统和网络文件系统都为用户提供了很大便利。

<>4.可移植性强

Unix系统包含有非常丰富的语言处理程序、实用程序和开发软件用的工具性软件,向用户提供了相当完备的软件开发环境。Unix系统的绝大部分程序是用C语言编程的,只有约占5%的程序用汇编语言编程。C语言是一种高级程序设计语言,它使得Unix系统易于理解、修改和扩充,并且具有非常好的移植性。

<>5.强大的网络功能

这是Unix系统的一大重要特色。作为Internet网络技术和异构系统互连重要手段的TCP/IP协议就是在Unix上开发和发展起来的,而且他也成为Unix系统的一个不可分割的部分。Unix几乎所有系统都包括对TCP/IP的支持。同时,在Internet网络服务器中,Unix服务器占80%以上,占绝对优势。还支持所有常用的网络通讯协议,能方便的与其他主机系统、各种广域网和局域网相连接。

<>6.开放性

这也是Unix系统的一大重要特色。一些Unix是部分开源的,也有一些分支是开源的。例如macOS就是基于Unix的bsd分支。任何人都可以一起发现漏洞,改进、增加新功能,提高安全性能,提高了知识的利用率,也促进了生态的发展。

<>三. Unix操作系统的缺点

虽然Unix系统具有很多优点,但也存在一些缺点。

<>1.不适合普通用户

Unix操作系统的使用需要使用者掌握晦涩难懂的计算机语言,而且操作复杂,没有智能修正,命令行易产生歧义,造成使用上的一些问题。因此,Unix系统具有一定的入门门槛,不适合普通用户使用。

<>2.文本流作为接口不够方便可靠

Unix系统从标准输入得到文本流,处理,向标准输出打印文本流。程序之间用管道进行通信,让文本流可以在程序间传递。在程序向标准输出打印时,数据被转换成文本,这是一个编码过程,而程序之间用管道进行通信,程序从文本中提取信息是一个解码过程。由于鼓励使用文本流,很多程序员很随意的设计他们的编码方式而不经过严密思考。这就造成了
Unix 的几乎每个程序都有各自不同的输出格式,使得解码成为非常头痛的问题,经常出现歧义和混淆。

<>3.传统Unix内核可扩展性差

Unix用一种极简的方法构建工具,大型和复杂的工具都可以通过小型简单的工具组合创建出来,而同样的方法没有在内核上继续应用。传统Unix内核只有少量的基础功能用于代码重用,可扩展性差。随着Unix的发展,开发者直接将代码添加到内核中,会使内核变得臃肿复杂、反模块化。

技术
©2019-2020 Toolsou All rights reserved,
[数据结构]八大排序算法(C语言)总结G1垃圾收集器面试题Android中使用微信H5支付时支付结果刷新问题32-jdbc工具类大学里要参加竞赛吗?都有哪些竞赛可以参加?震惊!!C++居然可以发出声音!C语言之链表入门(超详解)Java实现一个疫情人数管理系统如何用python实现斐波那契数列的前100个MyBatis循环Map(高级用法)