




已阅读5页,还剩885页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux基础教程 1 操作系统基础 清华大学计算机基础教育课程系列教材汤荷美董渊李莉程志锐编著 总目录 第1部分Linux操作系统第1章操作系统概述第2章处理机管理第3章存储管理第4章调度第5章设备第6章文件系统 第2部分操作系统命令及shell编程第7章Linux基本命令第8章使用vi编辑文件第9章shell编程第3部分系统管理第10章Linux系统软件的获取和安装第11章账号管理第12章文件系统管理第13章TCP IP网络管理第14章备份与恢复第15章XWindow及Genie应用程序 第1部分Linux操作系统第1章操作系统概述 1 1操作系统简介1 2操作系统接口1 3操作系统功能1 4操作系统结构1 5Linux操作系统介绍1 6Linux的内核特征1 7Linux的发展及展望1 8小结习题 操作系统是计算机系统的基本系统软件 软件系统中操作系统是所有软件的核心 操作系统负责控制 管理计算机的所有软件 硬件资源 是惟一直接和硬件系统打交道的软件 是整个软件系统的基础部分 同时还为计算机用户提供良好的界面 因此 操作系统直接面对所有硬件 软件和用户 它是协调计算机各组成部分之间 人机之间关系的重要软件系统 Linux是在日益普及的Internet上迅速形成和不断完善的操作系统 Linux操作系统高效 稳定 适应多种硬件平台 而最具有魅力的是它遵循GPL GNUGeneralPublicLicense GNU通用公共许可证 见附录 整个系统的源代码可以自由获取 并且在GPL许可的范围内自由修改 传播 这就为学习 应用 开发操作系统及其他软件提供了良好的基础和较高的起点 本章首先介绍操作系统的概念 功能及其结构 接着介绍Linux系统的基本特征 发展现状 并以此为基础 讨论现代操作系统的一般特点和发展趋势 1 1操作系统简介1 1 1操作系统概念一种非形式的定义如下 操作系统是计算机系统中的一个系统软件 它是这样一些程序模块的集合 它们管理和控制计算机系统中的硬件和软件资源 合理地组织计算机工作流程 以便有效地利用这些资源为用户提供一个功能强大 使用方便和可扩展的工作环境 从而在计算机与用户之间起到接口作用 普通用户使用操作系统 是把操作系统当作一个资源管理者 通过系统提供的系统命令和界面操作等工具 以某种易于理解的方式完成系统管理功能 有效地控制各种硬件资源 组织自己的数据 完成自己的工作并和其他人共享资源 对于程序员来讲 操作系统提供了一个与计算机硬件等价的扩展或虚拟的计算平台 操作系统提供给程序员的工具除了系统命令 界面操作之外 还有系统调用 系统调用抽象了许多硬件细节 程序可以以某种统一的方式进行数据处理 程序员可以避开许多具体的硬件细节 提高程序开发效率 改善程序移植特性 整个计算机系统可以认为是按照一定规则分层构建的 我们可以使用图1 1来示意性地描述这种层次结构 图1 1计算机系统层次结构示意图 1 1 2操作系统发展简介操作系统是随着计算机硬件的发展 围绕着如何提高计算机系统资源的利用率和改善用户界面的友好性而形成 发展和不断成熟完善的 随着计算机硬件的发展 计算机的计算速度越来越快 其高速的数据处理与低速的手工操作之间的矛盾日益突出 传统的手工操作是系统的最大制约因素 昂贵的计算机硬件资源得不到有效的利用 一个重要的技术是批处理 专门的操作人员把用户提交的任务按照一定的类别 顺序组织起来 形成作业序列 这些作业成批地在专门的监督程序控制之下自动执行 这里的监督程序就是操作系统的雏形 最初的批处理系统中 计算机内存中仍然只有一个程序在运行 总体系统的效率仍然没有发挥出来 解决这个问题的措施称为多道技术 多道程序设计技术使得在内存中有多个程序 保证系统的处理器总是处于工作状态 极大地提高了系统的利用率 多道技术开始使用在批处理系统中 称为多道批处理系统 这样的系统效率高 但是 在脱机批处理情况下 高效带来的问题是用户对自己作业的控制程度降低 针对这个问题的方案是分时技术 分时系统把处理机的运行时间分成时间片 按照时间片轮流把处理机分配给每一个联机用户 由于每一个时间片很短 宏观上来看 所有用户同时操作计算机 各自独立控制自己的作业 与分时系统相对应 还有一种实时 realtime 操作系统 控制计算机对外来信息进行快速处理 要求系统在允许的时间范围之内做出响应 同时具有多道批处理 分时 实时处理功能 或者其中两种以上功能的系统 称为通用操作系统 Linux操作系统就是具有内嵌网络功能的多用户分时系统 它兼有多道批处理和分时处理功能 是一个典型的通用处理系统 一方面强调分布式计算和处理 另一方面强调物理上跨越不同的主机系统 逻辑上紧密耦合构成统一完整的操作系统平台 这样的系统就是分布式操作系统 distributedoperatingsystem 这是当前操作系统发展的一个方向 当前 计算机微型化和专业化趋势已成事实 这两种发展趋势都产生了一个共同的需求 即嵌入式软件 嵌入式软件也需要操作系统平台的支持 这样的操作系统就是嵌入式操作系统 嵌入式软件系统的规模小 相应地 其操作系统的规模也小 嵌入式软件的应用平台之一是各种电器 这样的系统面向普通家庭和个人用户 由于快速发展的网络市场 使得家用电器的市场比传统的计算机市场大很多 因此 嵌入式软件可能成为21世纪信息产业的支柱之一 嵌入式操作系统也必将成为软件厂商争夺的焦点 成为操作系统发展的另一个热门方向 1 2操作系统接口操作系统在整个软件系统中处于中心地位 负责控制 管理计算机的所有软件 硬件资源 它屏蔽了很多具体的硬件细节 对计算机用户提供统一 良好的界面 或称为接口 interface 本节介绍操作系统的接口界面 下一节主要介绍操作系统的管理功能 在计算机层次结构中 操作系统通过接口向上层用户提供各种服务 而上层用户通过操作系统接口来访问硬件 操作系统提供的接口可以根据服务对象的不同而划分为两类 一是程序级的接口 提供给程序员使用 即系统调用 二是作业级的接口 提供给用户使用 即操作命令 1 2 1程序员级接口系统调用是一组由操作系统提供的广义指令 应用程序通过系统调用来操纵系统内核中特定的函数 当应用程序需要进行文件访问 网络传输等操作时 必须通过系统调用来完成 程序员在设计应用程序时 涉及到系统资源 都必须使用系统调用来实现 可以说 系统调用是操作系统提供给程序员的惟一接口 系统调用可以根据功能划分为不同的类型 熟悉系统调用是一个优秀程序员必备的条件 1 2 2用户级接口操作系统提供给用户使用的接口是操作命令 用户可以使用这些操作命令来组织和控制作业的执行或者管理整个计算机系统 实际上 计算机的操作命令界面是在系统调用的基础上开发而成的 操作系统发展的主要方向除了提高系统资源利用率之外 就是改善用户界面友好性 图形用户界面是操纵命令界面发展的一个里程碑 图形用户界面 降低了计算机操作的门槛 千万个家庭成为计算机普及的对象 现在流行的操作系统一般都同时提供图形和文本用户界面 Linux系统就是如此 文本界面是shell接口 图形界面是XWindow系统 1 3操作系统功能多用户分时系统 按照其功能划分为处理机管理 存储管理 设备管理 信息管理 文件系统管理 对于现代流行的操作系统 还具有完整的网络管理功能 这些管理功能都是由操作系统内核实现的 1 3 1处理机管理作业 进程需要适当的分配 调度 以便协调相互关系 共享有限的处理机资源 这是处理机管理的主要内容 处理机管理是操作系统管理功能的关键 操作系统功能的一个主要指标即是提高处理机的使用率 让处理机尽可能处于工作状态 1 3 2存储管理存储管理的目标是让有限的物理内存尽可能满足应用程序对内存的需求 存储管理的内容包括内存的扩充 分配 保护等 操作系统多采用了称为 虚拟内存 的内存管理方式 内存一般采用部分分配的办法 通常 内存中总是同时存放了多个正在运行的程序实体 即进程 在运行的过程中 他们之间可能会使用到相同内存位置的内容 这种技术称为内存共享 这样 可以提高内存的利用率 但是 必须要确保各进程所占据的内存的独立和完整性 1 3 3设备管理除了CPU和内存之外 计算机的其他部件都统称为外部设备 这些设备在操作系统的控制下协调工作 共同完成信息的输入 存储和输出任务 操作系统要对所有的设备进行管理 一方面 让每一个设备尽可能发挥自己的特长 实现与CPU和内存的数据交换 提高外部设备的利用率 另一方面 隐蔽设备操作的具体细节 对用户提供一个统一 友好的设备使用界面 和处理机及内存相比 外部设备的速度要慢得多 而且性能差别大 类型品种多 因此 设备管理是一项复杂而又重要的工作 1 3 4文件系统操作系统在控制 管理硬件的同时 也必须管理好软件资源 操作系统的文件系统就是针对计算机的软件资源而进行的 文件系统主要提供以下服务 文件存取 使每个用户能够对自己的文件进行快速的访问 修改和存储 文件共享 指提供某种手段 使存储空间只保存一个副本 而所有授权用户能够共同访问这些文件 文件保护 指提供保护系统资源防止非法使用的手段 1 3 5网络管理计算机的发展已经进入了互联网时代 现在流行的操作系统一般都具有内嵌的网络功能 能够在内核级别控制 管理网络 操作系统一般都提供网络通信和网络服务等基本功能 内核中网络部分 主要实现网络设备控制和网络协议 因此 网络管理也就集中在通信这部分 1 4操作系统结构本节简单介绍操作系统的逻辑结构 然后介绍操作系统发展过程中使用过的几种主要的体系结构 1 4 1操作系统的逻辑结构计算机系统可以理解为是分层构造的 从逻辑关系来理解 操作系统本身也可以用层次结构来描述 可以认为至少有4层 从上到下依次为 面对用户的外部接口 硬件无关的内核部分 与硬件相关的内核部分 面对硬件的外部接口 可以简单地用图1 2来描述 这种层次结构可以看作是操作系统纵向的结构 图1 2操作系统逻辑层次示意图操作系统也可根据不同的管理功能划分为功能模块 一种简单的理解是 操作系统本身划分为功能模块 而每个模块分层构造 形成一个纵横交错的结构 1 4 2操作系统的体系结构软件的体系结构描述系统各部分软件以及它们相互之间的关系 是软件内部结构配置的一种抽象描述 软件体系结构定义各部分软件系统的应用界面规范及相互操作和数据通信的协议和限制 体系结构相对稳定 满足应用需求 同时具有适当的可适应性和可扩充性 1 模块结构模块结构是将操作系统内核按照功能划分为一个个单独的模块 模块之间相对独立 只能通过预先规定好的接口方式来调用 它们共享数据 模块是系统设计和实现的基本单位 每一个模块实现一个完整单独的功能 所有模块之间相互调用 共同构成一个完整的系统内核 模块结构最大的优点是效率高 模块式结构中 操作系统的逻辑层次关系具体由调用层次关系来体现 这种结构的主要问题一是全局函数使用多 造成访问控制困难 二是结构不够清晰 系统的可理解性 可维护性和可移植性都比较差 2 层次结构层次结构的方法把操作系统内核按照一定的规则划分为一系列相互依赖的层次 每个层次也可以分解为一系列更小的模块 模块负责完成一部分特定的功能 只能与相邻的层次发生直接的联系 所有这些层次的组合 就实现了整个系统 实际上 层次结构可以理解为一种特殊的模块式结构 层次结构可以大大方便系统的移植和扩充 把系统内核划分为严格的层次结构 为了满足有序的层次调用关系 必然要牺牲部分灵活性和系统效率 3 对象结构对象也可以理解为一种特殊的模块 它是由一组数据集以及定义在其上的操作集封装而成 对象结构方法中 操作系统内核按照内核对象实体组织 每个内核对象实体都有自己的数据和操作 对象之间通过消息传递来协调工作 对象模块具有很强的独立性 因此也具有很好的复用性能 对象模块可以方便有效地控制内部数据的访问属性 充分地隐藏信息 达到资源保护的目的 采用对象结构 系统的开发难度降低 具有良好的扩展性和移植性 同时有较好的安全功能 对象结构操作系统内核的一个严重问题是效率低 Linux内核基本属于模块结构 而MS DOS系统内核采用的是层次结构 WindowsNT 2000及Solaris则是典型的对象结构 操作系统内核按照其运行的情况可以分为 宏内核与微内核 前者也称为单内核 Linux系统属于单内核类型 对象结构的系统内核通常是微内核 例如 WindowsNT 2000系统就是微内核 1 5Linux操作系统介绍Linux系统有两种不同的含义 从技术角度 Linux指的是由LinusTorvalds维护的开放源代码UNIX类操作系统的内核 然而 目前大多数人用它来表示以Linux内核为基础的整个操作系统 从这种意义讲 Linux指的是开放源代码的 包含内核 系统工具 完整的开发环境和应用的UNIX类操作系统 1 5 1Linux 自由操作系统Linux是一个UNIX操作系统的克隆 可以免费使用 遵循GPL声明 可以自由修改和传播 Linux包含了人们希望操作系统拥有的所有功能特性 这些功能包括真正的多任务 虚拟内存 世界上最快的TCP IP驱动程序 共享库和多用户支持 Linux现在是个人计算机和工作站上的UNIX类操作系统 它不仅继承了UNIX的特征 而且在许多方面超过了UNIX 作为UNIX类操作系统 它具有下列基本特征 是真正的多用户 多任务操作系统 是符合POSIX标准的系统 提供具有内置安全措施的分层的文件系统 提供shell命令解释程序和编程语言 提供强大的管理功能 包括远程管理功能 具有内核的编程接口 具有图形用户接口 具有大量有用的实用程序和通信 联网工具 具有面向屏幕的编缉软件 大量的高级程序设计语言已移植到Linux系统上 因而它是理想的应用软件开发平台 而且 在Linux系统下开发的应用程序具有很好的可移植性 同时 Linux还有许多独到之处 1 它的源代码几乎全部都是开放的 2 它可以运行在许多硬件平台上 3 它不仅可以运行许多自由发布的应用软件 还可以运行许多商品化的应用软件 4 强大的网络功能 Linux系统的另一特征是它能充分发挥硬件的功能 因而它比其他操作系统的运行效率更高 因此 Linux将有广泛的应用前景 1 5 2UNIX GNU与LinuxLinux是一种类UNIX系统 二者有相当的渊源 同时 Linux遵循GNU的GPL许可证 是自由软件家族中的一员 因此 要了解Linux 就必须先了解他们三者之间的关系 1 Linux与UNIX系统Linux的源头要追溯到最早的UNIX UNIX系统正式发表于1974年 到1975年的第6版中 引入了多道技术 1980年 Bell实验室公布了VAX11 780系统平台的32位操作系统UNIX32V 一个可以运行UNIX程序的系统就是UNIX 经过多年发展 UNIX从实验室走出来并成为了操作系统的主流 直到今天 UNIX系统以其稳定 高效的性能在服务器高端市场中依然占有绝对优势 很多公司也开发了用于PC的UNIX UNIX是一个简单却非常优秀的操作系统模型 Linux系统最初以UNIX为原型 以实现POSIX标准作为其目标 到2000年为止 Linux核心从0 01版发展为2 4版 Linux具有稳定高效的处理性能 拥有稳定庞大的用户群体 得到众多厂商有力的支持 成为操作系统发展的热点 Linux在低端服务器市场上已经对WindowsNT 2000造成了极大的压力 2 自由软件运动与LinuxLinux只是自由软件家族中的一员 是其中最具影响的成员之一 在计算机工业发展的初期 软件只是硬件的附属品 但是 公司很快认识到软件的价值 对软件实施了版权控制 并限制源代码的发布 RichardStallman在其他人的协作下创作了通用公共许可证 GeneralPublicLicense GPL GPL保证任何人有共享和修改自由软件的自由 任何人有权取得 修改和重新发布自由软件的源代码 并且规定在不增加附加费用的条件下得到源代码 3 Linux的历史Linux可以说完全是一个互联网时代的产物 它是在互联网上产生 发展和不断壮大起来的 Linus在自己的PC上 利用Tanenbaum教授自行设计的微型UNIX操作系统MINIX为开发平台 开发了属于他自己的第一个程序 Linus说刚开始的时候他根本没有想到要编写一个操作系统内核 于是我又不得不写一个磁盘驱动程序 然后是一个文件系统 而一旦当你有了任务切换器 文件系统和设备驱动程序之后 你当然就拥有了一个UNIX 或者至少是它的一个内核 Linux就以这样一种极其古怪但也极其自然的方式问世了 Linus并没有在MINIX新闻组中公布它 他只是在赫尔辛基技术大学的一台FTP服务器上发了一则消息 说用户可以下载Linux的公开版本 到1992年1月止 全世界大约只有100个左右的人在使用Linux 1993年 Linus的第一个 产品 版Linux1 0问世的时候 是按完全自由发行版权进行发行的 Linux与GPL的结合 使许多软件开发人员相信这是一个有前途的项目 开始参与内核的开发工作 并将GNU项目的C库 gcc Emacs bash等很快移植到Linux内核上来 商业软件公司的加盟也使大多数Linux的普通用户吃了定心丸 Linux从一开始就主要是在一些软件行业中的高手之间流行的 并且很快就在全球范围内集结了一大批职业的和业余的技术专家 形成了一个数量庞大而且非常热心的支持者群体 他们能够通过网络很快地响应使用者所遇到的任何问题 1997年 Linux支持者群体在众多的软件公司中一举胜出 荣获了美国 InfoWorld 杂志的最佳技术支持奖 而这一奖项原本只是为商业公司而设立的 Linux核心的版本发展情况见表1 1 该表摘自参考文献 2 表中最后一项 程序行数 LinesofCode LOC 包含了Linux可应用于如x86 PPC SPARC等所有平台的程序代码 表1 1Linux核心发展情况 截止1998年 当Linux走向成熟时 一些人开始建立软件包来简化新用户安装和使用Linux的方法 这些软件包称为Linux发布或Linux发行版本 在早期众多的Linux发行版本中 最有影响的要数Slackware发布 Linux文档项目 LDP 是围绕Slackware发布写成的 目前 RedHat发行版本的安装更容易 应用软件更多 已成为最流行的Linux发行版本 2000年秋天已经发行了7 0版本 而Caldera则致力于Linux的商业应用 它的发展速度也很快 中文化的Linux发行版本也有很多 国内自主建立的如BluePointLinux FlagLinux XtermLinux以及美国的XLinux TurboLinux等 每种发行版本都有各自的优点和弱点 但它们都提供相对完整的应用软件及帮助文档 都使用相同的内核和开发工具 大家都使用同一个名称 Linux系统 1 6Linux的内核特征Linux操作系统的核心稳定而高效 以独占的方式执行最底层任务 保证其他程序的正常运行 它是整个系统的核心 具有独特的性质 本节试图从操作系统接口 功能及内核结构等几个方面来展示Linux核心的特征 1 6 1接口特色按照POSIX标准 一个可以运行UNIX程序的系统就是UNIX Linux系统提供和一般UNIX系统相同的标准界面 包括程序级的和用户级的 因此也是一个UNIX系统 一般 大家称之为类UNIX系统 以区别于其他传统意义上的UNIX系统 在程序级 Linux系统提供标准的UNIX函数库 一个在Linux下开发的应用程序 可以几乎不经过任何改动就可以在其他UNIX系统下编译执行 完成同样的功能 Linux系统对用户同时提供图形和文本用户界面 文本界面是shell接口 图形界面是XWindow系统 UNIX下的基本命令 在Linux下功能和使用方式都完全相同 而最早在UNIX平台开发的图形用户界面XWindow系统 在Linux系统下运行良好并可以展示与其他版本UNIX系统下相同甚至更好的效果 更为可喜的是 在XWindow系统基础上 自由软件开发者们为Linux开发了不少种类的桌面系统 在这样的环境下 用户几乎可以不再需要传统的文本用户界面 所有的操作都可以通过鼠标点击来完成 这样的系统有方便快捷的KDE KDesktopEnvironment 基于CORBA组件技术 具有图形功能的GNOME GNU sNetworkObjectModelEnvironment 等等 它们都遵循GPL 都处在高速发展阶段 相信他们的功能会更加完善 桌面系统的发展 基于桌面系统的办公 家用软件的发展 将会使Linux操作系统的用户界面更加友好 Linux系统针对办公用户及普通家庭的普及工作也将具有更明显的竞争力和更美好的前景 1 6 2功能特色Linux核心最早运行在Intel80386系列PC机上 现在 它也可以运行在Apple系列 DECAlpha系列 MIPS和Motorola68000系列的计算机上 同时 一些改进的嵌入式Linux核心还可以运行于手机 家电等设备上 从Linux2 0开始 它不仅支持单处理器的机器 还能支持对称多处理器 SMP 的机器 实现真正的多任务工作 Linux系统可以支持多种硬件设备 Linux系统下的驱动程序开发和Windows系统相比要简单得多 最初的硬件设备驱动程序 都是由自由软件开发者们提供的 随着Linux系统的普及 越来越多的硬件 厂商也开始提供设备驱动 这对于广大使用者无疑是又一个好消息 Linux采用多级分页的存储管理模式 具体的技术特征将在后面介绍 Linux自身使用的专用的文件系统为Ext2 可以提供方便有效的文件共享及保护机制 同时 它可以通过虚拟文件系统的技术 支持包括微软系列操作系统所使用的Fat16 Fat32和NTFS等文件系统在内的几十种现有的文件系统 Linux系统具有内置的TCP IP协议栈 可以提供各种高效的网络功能 包括基本的进程间通讯 网络文件服务等 1 6 3结构特征Linux内核基本采用模块结构 单内核模式 这使得系统具有很高的运行效率 但系统的可扩展性及可移植性受到一定的影响 为了解决这个问题 Linux使用了附加模块技术 利用模块技术 可以方便地在内核中添加新的组件或卸载不再需要的内核组件 而且这种装载和卸载可以动态进行 内核模块的引入也带来了对系统性能 内存利用和系统稳定性的一些影响 可动态装卸的模块需要系统增加额外的资源来记录 管理 而装入的内核模块和其他内核部分一样 具有相同的访问权限 差的内核模块会导致系统不稳定甚至崩溃 一些恶意的内核模块可能对系统安全造成极大的威胁 总的来讲 Linux内核基本采用模块式结构构造 同时加入动态的模块技术 在追求系统整体效率的同时 实现了内核的动态可伸缩性 这样的结构 给系统移植带来一定的负面影响 但是 在广大自由软件爱好者们不懈的努力下 Linux系统仍然不断地推出支持新硬件平台的版本 Linux可以运行的硬件平台超过任何一种商业系统 具有较好的平台适应性 1 7Linux的发展及展望1 7 1开发模式自由软件的开发模式不同于以往任何一种软件开发模式 软件工程的发展 实现了软件的工程化生产 在经过详细的需求分析之后 进入设计阶段 然后是实现 测试等等 整个过程有严格的工作流程 时间限制和质量控制 程序员在整个生产过程中的作用 相当于传统工厂里流水线上的工人 只是按照 图纸 完成某个零部件加工而已 这样的开发模式强调的是统一规划 集中管理 一大批分布于世界各地的软件爱好者 以互联网为纽带 通过BBS 新闻组及电子邮件等现代通讯方式 同时参与一个软件开发项目 一个初步工作的软件雏形首先发布出来 然后大家同时开始工作 分别结合自己的实际经验和需要 寻找软件中的漏洞 提出改进意见 发布在互联网上 很快 另外的人也发现了漏洞 接着 有人又提出了改进方案 给出了补丁 经过这些人分头修整 这个软件好像滚雪球一样 以很快的速度不断完善 在这样的开发模式中 程序员是独立的实体 他们大多是用业余时间来为自由软件服务的 没有工作任务的压力 他们创作性工作带来的成就感是他们最大的动力 这样的开发模式称为 巴扎 Bazaar 模式 自由软件的出现 改变了传统的以公司为主体的封闭的软件开发模式 采用了开放和协作的开发模式 无偿提供源代码 容许任何人取得 修改和重新发布自由软件的源代码 这种开发模式激发了世界各地的软件开发人员的积极性和创造热情 大量软件开发人员投入到了自由软件的开发中 软件开发人员的集体智慧得到充分发挥 大大减少了不必要的重复劳动 并使自由软件的漏洞能得到及时发现和克服 任何一家公司都不可能投入如此强大的人力去开发和检验商品化软件 这种开发模式使自由软件具有强大的生命力 1 7 2内核版本为了确保看似无序的市集开发过程能够有序地进行 自由软件一般都必须采取强有力的版本控制措施 Linux内核采用的是双树系统 一棵树是稳定树 主要用于发行 另一棵树是非稳定树或者开发树 用于产品开发 改进 一些新特性 实验性改进等首先在开发树中进行 如果在开发树中所做的改进也可以应用于稳定树 那么在开发树中经过测试以后 就在稳定树中进行相同的改进 按照Linus的观点 一旦开发树经过了足够的发展 开发树就会成为新的稳定树 如此周而复始地进行下去 源代码版本序号的形式为x y z 对于稳定树来说 y是偶数 对于开发树来说 y是比相应稳定树大一的奇数 截止到2000年10月 最新的稳定内核版本号是2 4 test9 这种开发会比常规惯例要快 因为每一版本所包含的改变比以前更少了 内核开发人员只需花很短的时间就能够完成一个实验开发周期 当今 Linus率领分布在世界各地的Linux内核开发队伍正在完善他们的作品 Linux内核2 x版本充分显示了Linux开发队伍的非凡的创造力和市集开发模式的价值 Linux核心开发者的名单记录在文件 usr src linux CREDITS中 事实上 UNIX开始发展时 也采用了类似的开发模式 这种开发模式使得UNIX的安全漏洞比其他操作系统解决得更彻底 从充分发挥开发人员的集体智慧这一点看 采用这种开发模式无疑是一大进步 1 7 3国内应用状况随着Linux核心的不断成熟 各种性能稳定 安装方便 支持多语种的发行版本被广泛地使用 Linux得到广大硬件 整机厂商和应用程序厂商的大力支持 这一切 都使得Linux这个年轻的系统充满了希望 由于多种原因 Linux在国内的推广比国外晚了几年 近年来有更多的软件爱好者开始了Linux的学习 应用和研究开发 同时 许多大学还把它作为操作系统课程实验的内容 这些都为Linux在中国的推广使用奠定了基础 Linux的使用开始于国内的高校和科研单位 最初大家在各地的电子公告牌上研论问题 随着讨论的深入 他们开始成立各种民间组织 建立自己的主服务器 爱好者们在这些地方 下载软件 自由地讨论Linux方面的问题 寻找志同道合者切磋 方便而高效地交流信息 这为Linux的进一步推广和本地化创造了良好的环境 目前国内较有影响的推广项目是1997年6月17日在国家经济信息中心网上建立的自由软件协会站点 图1 3 其网址是 总的来讲 国内Linux发展还处于一个比较低的层次 初级入门用户很多 实际应用用户少 而从事自由软件开发的人就更少了 1 7 4发展方向Linux内核本身的发展方向主要是硬件支持 嵌入系统和分布式系统这三个方面 提供更多高性能的硬件驱动程序 让更新 更好的硬件迅速在Linux系统下工作 是Linux普及和广泛应用的基础 随着以计算技术 通信技术为主体的信息技术的快速发展和Internet的广泛应用 嵌入式软件成为软件业的新热点 面对如此巨大的电子产品市场和潜在用户群 嵌入式软件的应用前景十分广阔 而Linux系统本身的开放特性以及稳定的性能 都比较适合作为开发嵌入系统的原型 国内外都有这样的研究项目 也有相当成功的事例 分布系统是当前操作系统发展的另一个重要领域 以Linux内核为基础 按照自由软件开发模式 发展高性能的自由分布操作系统 是操作系统发展的必然趋势 此外 Linux上的桌面系统 应用软件 尤其是软件开发工具也是Linux发展的重要方面 桌面系统直接关系到Linux界面的友好性 易用性 应用软件关系到系统的可用性 而在自由软件开发模式当中引入软件工程新技术和成功经验 有助于快速开发Linux平台上的应用软件 1 8小结本章首先介绍了操作系统的一般概念及发展历史 接着介绍了操作系统的外部接口 管理功能及其内部结构 特别强调了计算机系统层次结构的概念 以此为基础 详细剖析了Linux系统的接口 功能和结构 包括Linux的发展及其开发模式 操作系统是计算机系统的基本系统软件 在整个计算机系统中处于核心地位 它是这样一些程序模块的集合 它们管理和控制计算机系统中的硬件和软件资源 合理地组织计算机工作流程 以便有效地利用这些资源为用户提供一个功能强大 使用方便和可扩展的工作环境 从而在计算机与用户之间起到接口作用 Linux是在日益普及的Internet上迅速形成和不断完善的操作系统 Linux操作系统高效 稳定 适应多种硬件平台 支持多种文件系统 它遵循GPL协议 整个系统的源代码可以自由获取 并且在GPL许可的范围内自由修改 传播 这就为学习 应用 开发操作系统及其他软件提供了良好的基础和较高的起点 学习操作系统一般概念和原理 对于理解 使用和管理Linux系统 开发应用软件以及系统软件 都具有相当重要的意义 习题1 1操作系统的基本功能有哪些 1 2从技术的角度讲 Linux是一个什么样的操作系统 你认为它有哪些不足 如何改进 1 3阅读通用许可证协议和参考文献 1 2 深入了解自由软件的 巴扎 开发模式 你愿意让大家共享你的软件吗 为什么 你认为 巴扎 模式有哪些优点 哪些缺点 缺点如何改进 1 4访问Linux核心代码站点 了解Linux核心发展的最新进展及新增功能 1 5访问Internet 了解一个国内的自由软件项目 向大家介绍这个项目的管理及进展情况 给出你对该项目的评价及改进意见 第2章处理机管理 2 1作业2 2进程2 3线程2 4小结习题 提高处理机 CPU 的使用率 使它尽可能处于工作状态 是操作系统管理功能的主要目标之一 在Linux系统中 提高处理机使用率的技术措施主要是多道和分时 处理机在进程之间切换 按照一定的规则轮流执行每个进程 对于单个处理机的系统 这些进程宏观上看似并行执行 而微观上来看仍然是串行执行的 这种执行方式被称为并发执行 操作系统通过并发控制机制 对处理机进行分配 调度 在保证每个进程都得到公平合理执行的同时 使系统中的各种资源得到充分的使用 本章主要围绕处理机管理展开 着重介绍进程的概念 同时也包括相关的两个基本概念 作业和线程 2 1作业作业是用户向计算机系统提交一项工作的基本单位 是用户在一次事务处理或计算过程中要求计算机所做工作的总和 作业和程序是两个相互联系而又不同的概念 如果一次业务处理可以由某一个程序完成 就是说这个业务处理只要提交这一个程序就够了 这种情况下 这个程序就是一个作业 通常 完成一次业务需要由多个程序协同完成 这时 多个程序 这些程序需要的数据以及必要的作业说明一起构成一个作业 系统通过作业说明书或者作业控制语句 JCL 控制程序和相应的数据执行 完成整个业务处理 按照对作业的处理方式 可以分为联机 批处理等作业 Linux系统中的shell提供了操作系统和用户之间的联机命令接口 Linux的shell同时提供了程序级接口 用户通过提交一个命令或一个命令序列以批处理方式执行特定的操作 详见本书第2部分 在Linux分时批处理系统中 也可以根据对作业执行时的响应特征分为前台作业和后台作业 在多用户系统中 多个用户 不同类型的作业可能同时请求执行 控制和管理这些作业 协调它们之间的关系 就是作业调度 作业调度是处理机调度的一部分 2 2进程计算机内存中同时存放多个相互独立的已经开始运行的程序实体 大家按照某种规则轮流使用处理器 这是现代多道操作系统实现资源共享 提高系统资源利用率的主要方式 描述这些程序实体的概念就是进程 在多道情况下 每个进程独立地拥有各种必要的资源 占有处理机 独立地运行 在多道系统中 同时存在多个进程 所以当某个进程进入等待状态时 操作系统将把处理机控制权拿过来并交给其他可以运行的进程 进程之间存在着相互制约 相互依赖的约束关系 一种最糟糕的情况是所有进程都拥有部分资源 同时在等待其他进程拥有的资源 这样 大家都无法运行 进入一种永久等待的状态 这种情况称为死锁 死锁是对系统资源极大的浪费 必须设法避免 本节着重讨论现代多道操作系统中的核心概念 进程 这是理解操作系统工作原理的基础和关键 首先介绍单个进程的状态 状态转换的条件和控制原语 进程在系统中的静态描述等 接着介绍多个进程之间的约束关系 由此引出进程间通信的概念 通信是协调 解决进程间约束关系的惟一手段 这种约束关系处理不当造成的最严重的后果就是死锁 2 2 1进程的概念进程 process 的概念最早出现在60年代中期 用于多道系统 在Linux系统中 进程也称为任务 task 简单地讲 进程就是正在运行的程序 更为严谨的表达是 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动 进程的概念对于理解操作系统有决定性的意义 而真正理解进程 必须了解它的基本性质 进程是操作系统分配资源和进行调度的独立单位 具有独立性 同时 具有动态性 多道系统中同时存在多个进程 这些进程拥有各自的资源 各自独立地执行 对于单处理机系统 进程宏观上同时运行而微观上是依次执行 这种情况称为并发执行 1 进程和程序进程和程序是一对相互联系的概念 程序是指令的有序集合 是一个静态的概念 描述完成某个功能的一个具体操作过程 而进程是程序针对某一组数据的一次执行过程 更强调动态特征 一个完整的进程 包括程序 执行程序所需要的数据 同时还必须包括记录进程状态的数据资料 在多道分时操作系统中 按照时间片轮流在各个进程间切换 对于单处理器系统 每一个时刻只能有一个进程在执行 当分配给该进程的时间片用完之后 不管该进程运行到什么程度 都必须立即停止 然后让出处理器资源 下一个进程进入执行状态 让出处理器的进程必须记录好正在运行的状态 包括寄存器 堆栈等各种信息 这些信息保证当处理器下次切换到这个进程的时候 进程能够正确地从上次执行到的位置继续往下执行 一个程序在处理相同或不同的操作数据时可以同时对应于多个进程 一个进程也可以包含多个程序 某个程序在运行过程中 可能同时会调用到多个其他程序 这些具有调用关系的多个程序共同构成一次完整的运行活动 即一个完整的进程 举一个直观的例子 我们在Linux系统下使用编辑器vi进行编辑 同时打开多个窗口 编辑多个不同名称的文件 vi编辑器是一个可执行程序 不同的文件就是不同的操作数据 而对应于这些文件同时打开的每一个编辑窗口就对应着一个进程 每一个进程都处于不同的状态 如果说程序是提供计算机操作的一组工作流程的话 进程就是具体的工作过程 按照同样的工作流程 针对不同的原料 可以同时开始多个工作过程 得到多种不同的成品 这种工作流程和工作过程的关系就可以类比为程序和进程的关系 2 进程和作业作业是用户向计算机系统提交一项工作的基本单位 是用户在一次事务处理或计算过程中要求计算机所做工作的总和 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动 是操作系统分配资源和进行调度的基本单位 作业是描述用户向系统提交工作任务的实体单位 而进程是系统完成工作任务时程序执行的实体单位 从这个角度讲 他们处于不同的层次 作业描述用户和操作系统之间的任务委托关系 而进程描述操作系统内部任务的具体执行过程 一个用户的任务 即作业 由用户提交给系统 必须以进程的形式具体完成 对于批处理系统 通常 作业放在外存中专门的作业队列中等待进入内存执行 要经过一次宏观调度 由外存进入内存 以进程的形式运行 而对于UNIX Linux这样的分时系统 没有宏观调度 作业不经过调度 直接进入内存 以进程的形式开始运行 任何一个进程 都存在于内存中 并且是已经开始运行的动态实体 2 2 2进程描述我们知道 进程是一个动态的概念 描述程序的一次运行活动 它存在于系统的内存中 是操作系统可感知 可控制的动态实体 是系统分配各种资源 进行调度的基本单位 1 进程控制块现在我们来讨论进程在内存中的静态存在方式 在多道系统中 处理机在多个进程之间来回切换 每个进程都会在暂停 运行这两种状态之间来回转换 当一个进程在处理机切换过来重新进入运行状态时 它必须严格精确地接着上次运行的位置继续进行 进程的静态描述可以保持切换现场 确保准确衔接 保证进程调度的实现 顺利完成程序所规定任务 进程切换现场称为进程上下文 context 包含了一个进程所具有的全部信息 一般包括 进程控制块 ProcessControlBlock PCB 有关程序段和相应的数据集 具体组成见图2 1 程序段是某个进程执行的相关指令集合 和静态的程序段有明确的对应关系 相应数据集是这个程序段正在操作的那部分数据 PCB是记录进程各种状态的数据体 PCB是操作系统管理感知 控制进程的数据实体 通过它 就可以找到进程的程序段和数据集 系统正是通过PCB来控制进程的 一般来讲 PCB记录着进程的所有资料 是全部或部分常驻内存的 PCB记录着程序段和数据集的地址指针 通过这些指针 就可以得到具体的指令和数据 PCB记录了进程的全部控制信息 一般较庞大而复杂 它可以按照功能大概分成四个组成部分 进程描述信息 进程控制信息 进程相关的资源信息和CPU现场保护结构 如图2 1 图2 1进程描述数据关系示意图 进程上下文 2 Linux的PCBLinux系统的进程控制块PCB用一个称为task struct的结构体来描述 1 进程描述信息通过进程描述信息 Linux系统可以惟一地确定某一个进程的基本情况 可以了解该进程所属的用户及用户组等信息 同时还能确定这个进程与所有其他进程之间的关系 这些描述信息包括 进程号 用户和组标识以及描述进程家族关系的连接信息 进程号 pid processidentifier Linux系统为每一个进程分配一个标识号 通过这个标识号识别 控制 调度这个进程 别的进程也通过这个标识号来识别这个进程并与之通信 用户也可以使用操作命令或系统调用通过标识号来控制该进程 用户和组标识 userandgroupidentifier Linux系统中有四类不同的用户和组标识 主要用来控制进程对系统文件的访问权限 实现系统资源的安全访问 Linux使用组将文件和目录的访问特权授予一组用户 一个进程可以同时属于多个组 这些组都被放在进程的task struct中的group数组中 连接信息 Links Linux系统中的进程之间形成树状的家族关系 连接信息记录某个进程的父进程 兄弟进程 具有相同父进程的进程 以及子进程的信息 描述一个进程在整个家族系统中的具体位置 2 进程控制信息进程控制信息记录了进程的当前状态 调度信息 记时和时间信息以及进程间通信信息 是系统确定进程的状态 了解进程之间的关系 进行进程调度的主要依据 进程当前状态进程的生命周期中 总是不停地在各种状态之间转换 有关进程的状态及转换规则 在下一小节讨论 调度信息系统的调度程序利用这部分信息决定哪一个进程应该运行 包括优先级 实时优先级 计数器和调度策略 记时信息包括时间和定时器 给出进程占有和利用CPU的情况 是调度的依据 也是进行统计 分析以及记费的依据 通信信息多个进程之间通信的各种信息也记录在PCB中 Linux支持典型的UNIX进程间通信机制 信号 管道 也支持System 通信机制 共享内存 信号量和消息队列 3 进程资源信息Linux的PCB中包含大量的系统资源信息 这些信息记录了与该进程有关的存储器的各种地址和资料 文件系统以及打开文件的信息等等 通过这些资料 进程就可以得到运行需要的相关程序段以及必要的数据 4 CPU现场信息进程的静态描述必须保证一个进程在获得处理机并重新进入运行状态时 能够精确地接着上次运行的位置继续进行 相关程序段和数据集以及处理机现场 或处理机状态 都必须保存 处理机 CPU 现场信息一般包括处理机的内部寄存器和堆栈等基本数据 task struct是Linux系统的进程控制块 PCB 通过对PCB的操作 系统为进程分配资源并进行调度 最终完成进程的创建和撤销 系统利用PCB中的描述信息来标识一个进程 根据PCB中的调度信息决定该进程是否应该运行 如果这个进程要进入运行 首先根据其中的CPU现场信息来恢复运行现场 然后根据资源信息获取对应的程序段和数据集 接着上次的位置开始执行 同时通过PCB中的通信信息和其他进程协同工作 2 2 3进程状态及转换系统通过PCB对进程进行控制 进程不断地在不同的状态之间转换 1 进程的基本状态在分时系统中 一个进程拥有了所需要的全部资源 就可以开始执行 当分配的时间片结束 让出CPU资源 这种只要能够占有CPU就能进入执行的状态称为就绪状态 有时 多个进程之间互相制约 某个进程必须等到某个事件发生 才能够竞争CPU资源 这是等待状态 当等待的事件发生之后 这个进程被唤醒 由等待状态进入就绪状态 直到获得CPU才开始执行 等待状态 就绪状态和执行状态是一个进程所具有的最基本的三种状态 见图2 2 图2 2进程基本状态及转换示意图 2 Linux系统进程状态Linux系统的2 2 16版本进程共有六种状态 包括运行状态 可中断等待状态 不可中断等待状态 僵死状态 暂停状态和交换状态 而在2 4 0版本中取消了交换状态 加入独占状态 表2 1Linux系统 2 2 X 2 4 X版本 进程状态表 1 运行状态 running Linux系统中的运行状态实际包含了上述基本状态中的执行和就绪两种状态 进程到底是正在运行还是处于就绪状态准备运行 要靠当前是否占有CPU资源来区分 2 等待状态Linux系统把基本的等待状态进一步细化为可中断的等待态和不可中断的等待态两种 处于这种状态的进程都在等待某个事件或某个资源 可中断等待状态的进程可以被信号唤醒而进入就绪状态等待调度 而不可中断等待状态的进程是因为硬件资源无法满足 不能被信号唤醒 必须等到所等待的资源得到之后由特定的方式唤醒 3 僵死状态 zombie 由于某些原因进程被终止 这个进程所拥有的内存 文件等资源全部释放之后 还保存着PCB信息 这种占有PCB但已经无法运行的进程就处于僵死状态 4 暂停状态处于暂停状态的进程 一般都是由运行状态转换而来 等待某种特殊处理 比如处于调试跟踪的程序 每执行到一个断点 就转入暂停状态 等待新的输入信号 5 交换状态处于交换状态的进程正在执行内存 外存的交换工作 这个状态在2 2 X版本的内核中基本已经不使用 在2 4 X版本中没有这种状态 6 独占状态它应该是等待状态的一种 处于独占状态的进程位于等待队列中 当等待的事件发生时 只有处于这种状态的进程被唤醒 其他处于可中断和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑设计单位项目管理流程优化
- 职场新员工入职培训大纲
- 小学教师备课、授课及作业评改技巧
- 零基础英语语法学习指导手册
- 七年级数学方程组教学设计
- 工业机器人维护故障排查及安全操作手册
- 外企工程安全培训考试题及答案解析
- 铝合金模板设计详细施工方案
- 文本情感分析预测-洞察及研究
- 材料基因组学与人工智能融合-洞察及研究
- 充电站运营管理制度(参考模板)
- 体育与健康教学设计《手倒立前滚翻》
- NISP一级考前模拟训练题库200题(含答案)
- JJG 20-2001标准玻璃量器
- 2024外研版初中英语单词表汇总(七-九年级)中考复习必背
- 《大数据平台部署与运维》课程标准(含课程思政)
- 英语中的时间表达(示范课例)
- 脊柱外科进修汇报
- 《史记》上册注音版
- 苏州大学文学院语言学纲要课程笔记
- 危重症患者护理文书书写规范-课件
评论
0/150
提交评论