Linux网络编程第二版
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.5 Linux的系统架构
Linux系统从应用角度来看,分为内核空间和用户 空间两个部分。内核空间是Linux操作系统的主要部分 ,但是仅有内核的操作系统是不能完成用户任务的。丰 富并且功能强大的应用程序包是一个操作系统成功的必 要条件。
1.5.1 Linux内核的主要模块
Linux的内核主要由5个子系统组成:进程调度、内存 管理、虚拟文件系统、网络接口、进程间通信。下面依次讲 解这五个子系统。 1.进程调度SCHED 2.内存管理MMU 3.虚拟文件系统VFS 4.网络接口 5.进程间通讯
1.2.2 MINIX操作系统 Minix操作系统也是UNIX操作系统的一种克隆系统, 它由荷兰Amsterdam的Vrije大学著名教授Andrew S.Tanenbaum于1987年开发完成。Minux操作系统目的 主要用于学生学习操作系统原理时教学使用。在当时 Minix操作系统在大学中使用是免费的,但是其他用途则 需要收费。目前Minix操作系统已经都是免费的,可以从 许多FTP上下载,目前主要有1.5版本和2.0版本在使用。 由于Minix操作系统提供源代码,并且与操作系统相 结合,有一本高质量的书籍介绍其实现原理,在当时全 世界的大学中形成了学习Minix操作系统的风气,Linus 刚开始就是参照此系统在1991年开始开发Linux的。
1.2 Linux的发展要素 Linux操作系统是UNIX的一种典型的克隆系统。在Linux 诞生之后,借助于Internet网络,在全世界计算机爱好者的共 同努力下,成为目前世界上使用者最多的一种类UNIX操作系 统。在Linux操作系统的诞生、成长和发展过程中,如下五个 方面起了重要的作用:UNIX操作系统、Minix操作系统、 GNU计划、POSIX标准和Internet网络。
Linux的发行版本众多,曾有人收集过超过300种的发行版本。 当然,不能在本书中介绍众多的发行版特点,这超出了本书的范围。 版本名称
Debian Linux Fedora Core CentOS
网址
级
特点
开放的开发模式,并且易于进行软件包升 拥有数量庞大的用户,优秀的社区技术支 持,并且有许多创新 CentOS是一种对RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux是开发源代码的操作系统并不排斥基于源 代码的再分发,CentOS就是将商业的Linux操 作系统RHEL进行源代码在编译后分发,并在 RHEL的基础上修正了不少已知的Bug 专业的操作系统,易用的YaST软件包管 理系统开放。 操作界面友好,使用图形配置工具,有庞 大的社区进行技术支持,支持NTFS分区的大小 变更
1.6.1 GPL许可证的历史
GPL的“版本1‖,在1989年1月诞生。在1990年时 ,因为一些共享库的使用而出现了对GPL许可证制度更 为宽松的需求,在GPL―版本2‖在1991年6月发布时,另 一许可证——库通用许可证(Library General Public License,简称LGPL)也随之发布,并记作“版本2‖以 示对GPL的补充。在LGPL版本2.1发布时与GPL版本不 再对应,而LGPL也被重命名为GNU宽通用公共许可证 (Lesser General Public License)。 相对于GPLv2,主要有四个不同的方面: 数字版权问题。 专利扩散许可。 衍生产品的定义。 GPLv3协议于其他协议的兼容问题。
1.3 Linux与UNIX异同
Linux是UNIX操作系统的一个克隆系统,没有UNIX就没有Linux 。但是,Linux和传统的UNIX有很大的不同,两者之间的最大区别 是关于版权方面的:Linux是开放源代码的自由软件,而UNIX是对 源代统大多数是与硬件配套的,操作系统与硬件进行了 绑定;而Linux则可运行在多种硬件平台上。 UNIX操作系统是一种商业软件(授权费大约为5万美元);而 Linux操作提供则是一种自由软件,是免费的,并且公开源代码。 UNIX的历史要比Linux悠久,但是Linux操作系统由于吸取了其 他操作系统的经验,其设计思想虽然源于UNIX但是要优于UNIX。
dev home etc rc.d mnt / root sbin
tmp usr lib var
1.6 GNU通用公共许可证
GNU通用公共许可证(简称为GPL)是由自由软 件基金会发行的用于计算机软件的一种许可证制度。 GPL最初是由Richard Stallman为GNU计划而撰写。 目前,GNU通行证被决大多数的GNU程序和超过半数 的自由软件采用。此许可证最新版本为“版本3‖,于 2007年发布。GNU宽通用公共许可证(简称LGPL) 是由GPL衍生出的许可证,被用于一些GNU程序库。
1.2.1 UNIX操作系统
UNIX操作系统于1969年在Bell实验室诞生,它是美国贝尔 实验室的Ken.Thompson和Dennis Ritchie在DEC PDP-7小型 计算机系统上开发的一种分时操作系统。 Ken Thompson开发UNIX操作系统的初衷是为了能在一台 闲置的PDP-7计算机上运行星际旅行游戏,他在1969年夏天花费 一个月的时间开发出了UNIX操作系统的原型。最开始,开发 UNIX操作系统使用的是BCPL语言(即通常所说的B语言),后 来Dennis Ritchie于1972年使用C语言对UNIX操作系统进行了改 写。同时UNIX操作系统在大学中得到广泛的推广,并将UNIX的 授权分发给多个商业公司。 Linux是一种UNIX的克隆系统,采用了几乎一致的系统API 接口。特别是网络方面,二者的接口的应用程序几乎完全一致。
1.1 Linux发展历史
Linux操作系统于1991年诞生,目前已经 成为主流的操作系统之一。其版本从开始的 0.01版本到目前的2.6.28.4版本经历了20多年 的发展,从最初的蹒跚学步的婴儿成长为目前 在服务器、嵌入式系统和个人计算机等多个方 面得到广泛应用的操作系统。
1.1.1 Linux的诞生和发展 Linux的诞生和发展与个人计算机的发展历程是紧密相关的, 特别是随着Intel的i386个人计算机的发展而逐步成熟。在1981年 之前没有个人计算机,计算机是大型企业和政府部门才能使用的 昂贵设备。IBM公司在1981年推出了个人计算机IBM PC,从而造 成个人计算机的发展和普及。刚开始的时候,微软帮助IBM公司开 发的MS-DOS操作系统在个人计算机中占有统治地位。随着IT行 业的发展,个人计算机的硬件价格虽然逐年在下降,但是软件特 别是操作系统的价格一直居高不下。 与个人计算机对应,在大型机上的主流操作系统是UNIX,而 UNIX操作系统对操作系统的发展有诸多障碍: UNIX的经销商为了寻求高利率,将价格抬得很高,个人计算 机的用户就根本不能靠近它,不利于操作系统的普及。
第1章 Linux操作系统概述
Linux操作系统是目前上升最快的操作系统,从1991年诞 生到现在的二十多年间,Linux逐步完善和发展。Linux操作 系统在服务器、嵌入式等方向获得了长足的发展,并在个人操 作系统方面有着大范围的应用,这主要得益于其开放性。本章 对Linux的发展进行介绍,主要包含如下几个方面: Linux发展的历史,以时间为主线对Linux的诞生进行介 绍; 分析Linux和UNIX操作系统的异同; 介绍常用的几种Linux发行版本的特点; 对Linux操作系统的系统架构进行简单的介绍; 介绍了GNU通用公共许可证及其特点。
1.4 操作系统类型选择和内核版本的选择
要在Linux环境下进行程序设计,首先要选择合适的 Linux发行版本和Linux的内核,选择一款适合自己的 Linux操作系统。本节对常用的发行版本和Linux内核的 选择进行了介绍,并简要讲解了如何定制自己的Linux操 作系统。
1.4.1 常见不同公司发行的Linux的异同
软件包管理器
apt up2date(rpm), yum(rpm) rpm
SUSE Linux
YaST(rpm), 第三方apt(rpm)软件 库(repository) rpm
Mandriva
1.4.2 内核版本的选择 内核是Linux操作系统的最重要的部分,从最初的0.95 版本到目前的2.6.28.4版本,Linux内核开发经过了近20年 的时间,其架构已经十分稳定。Linux内核的编号采用如下 编号形式: 主版本号.次版本号.主补丁号.次补丁号 Linux内核版本的开发源代码树目前比较通用的是 2.6.xx的版本,当然,有部分2.4的版本仍在使用。与2.4版 本的内核相比较,2.6版本内核具有如下的优势: 支持绝大多数的嵌入式系统,加入了之前嵌入式系统经 常使用的μClinux的大部分代码,并且子系统的支持更加细 化,可以支持硬件体系结构的多样性,可抢占内核的调度 方式支持实时系统,可定制内核。
1.2.3 POSIX 标准 POSIX(Portable Operating System Interface for Computing Systems)是由IEEE和ISO/IEC开发 的一套标准。POSIX标准是对UNIX操作系统的经验和 实践的总结,对操作系统系统调用的服务接口进行了 标准化,保证所编制的应用程序在源代码一级可以在 多种操作系统上进行移植。 在90年代初,POSIX标准的制定处于最后确定的投 票阶段,而Linux正处于开始的诞生时期。作为一个指 导性的纲领性标准,Linux的接口与POSIX相兼容。
1.6.2 GPL的自由理念
软件的版权保护机制在保护发明人权益的同时,对 软件的技术进步造成了影响。版权所有软件的最终用户 几乎不能从所购买的软件中得到任何软件设计相关的权 利(除了使用的权利),甚至可能限制像逆向工程等法 律允许范围内的行为。与此对应,GPL授予程序的接受 方下述的权利,即GPL所倡导的“自由”: 可以以任何目的运行所购买的程序; 在得到程序代码的前提下,可以以学习为目的,对 源程序进行修改; 可以对复制件进行再发行; 对所购买的程序进行改进,并进行公开发布;
1.1.2 Linux名称的由来
Linux操作系统的名称最初并没有被称作Linux。Linus给他的操 作系统取的名字是Freax,这个单词的含义是怪诞的、怪物、异想天 开的意思。当Torvalds将他的操作系统上传到服务器ftp.funet.fi上的 时候,这个服务器的管理员Ari Lemke对Freax这个名称很不赞成, 所以将操作系统的名称改为了Linus的谐音Linux,于是这个操作系 统的名称就以Linux流传下来。 在Linus的自传《Just for Fun》一书中,Linus解释说:“Ari Lemke,他十分不喜欢Freax这个名字。倒喜欢我当时正在使用的另 一个名字Linux,并把我的邮件路径命名为pub OS/Linux。我承认 我并没有太坚持。但这一切都是他搞的。所以我既可以不惭愧地说自 己不是那么以个人为中心,但是也有一点个人的荣誉感。而且个人认 为,Linux是个不错的名字。”实际上,在早期的源文件中仍然使用 Freax作为操作系统的名字,可以从Makefile文件中看出此名称的一 些蛛丝马迹。
bin
1.5.2 Linux的文件结构
与Windows下的文件组织结构不同,Linux不使用 磁盘分区符号来访问文件系统,而是将整个文件系统表 示成树状的结构,Linux系统每增加一个文件系统都会 将其加入到这个树中。 操作系统文件结构的开始,只有一个单独的顶级目 录结构,叫做根目录。所有一切都从“根”开始,用 “/‖代表,并且延伸到子目录。DOS/Windows下文件 系统按照磁盘分区的概念分类,目录都存于分区上。 Linux则通过“挂接”的方式把所有分区都放置在“根 ”下各个目录里。