已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux是能够自由传播并继承了UNIX内核的操作系统,是对UNIX的简化和改进,它既保留了UNIX系统的高安全性,同时也使其操作更加简单方便,从而使单机用户也可以使用。UNIX内核指的是操作系统底层的核心程序代码。因为 Linux本身脱胎于UNIX系统,所以Linux程序与UNIX程序是十分相似的。事实上,UNIX下编写的各种程序基本上都可以在 Linux下编译和运行。此外,许多在UNIX操作系统下创建的一些商业化应用软件,其二进制形式几乎可以在不作任何修改的情况下直接运行在 Linux系统上。Linux是由芬兰的赫尔辛基大学 (Helsinki)学生Linus Torvalds把Minix 系统向x86移植的结果。当时 Linus 手边有个 Minix 系统(UNIX 的一个分支),他对这个操作系统相当有兴趣,由于当时他正好有一台个人计算机,他想把这个系统移植到该计算机(x86 架构)上来使用。由于受益于Stallman提倡的开放源代码(Open Source)思想,他得以接触到UNIX操作系统的一些源代码,并仔细研读了UNIX 的核心,然后去除较为繁复的核心程序,将它改写成能够适用于一般个人计算机的一种操作系统,即Linux系统的雏形。1992年1月,大概只有100人开始使用Linux,但他们为Linux的发展壮大作出了巨大贡献。他们对一些不合理的代码进行了改进,修补了代码错误并上传补丁。Linux的腾飞最关键的因素是获得了自由软件基金(FSF)的支持,他们制定了一个GNU计划,该计划的目标就是要编写一个完全免费的 UNIX版本 包括内核及所有相关的组件,可以让用户自由共享并且改写软件,而Linux正好符合他们的意愿。他们将Linux与其现有的GNU应用软件很好地结合起来,使Linux拥有了图形用户界面。提示:Linux 实际上只是提供了操作系统的内核;它实现了多任务和多用户功能,管理硬件,分配内存,激活应用程序的运行。对初学者来说,最重要的是要明白奇数的内核版本(比如 2.3、2.5、2.7)是实验用的、正在开发的内核。 稳定的、正式发行的内核版本号则是偶数的(比如 2.2、2.4、2.6)。1994年3月, Linux 1.0正式版发布,它的出现无异于网络的“自由宣言”。从此Linux用户迅速增加,Linux的核心开发小组也日渐强大。在Linux所包含的数千个文件中,有一个名为Credits的文件,里面列出了100多名对Linux有过重要贡献的黑客,包括他们的名字、地址以及所做的工作。其中的软件都是经过“优胜劣汰”的达尔文式的选择方式保存下来的。Linux的发展方法看起来很简单:所有黑客都可为其添加额外功能并完善其性能。所谓的测试也不仅是修补漏洞,而是进行集成并进行更多的改进、创新。Linux发展过程中的这种随意性,造成了发展过程中出现了各种各样的Linux版本。提示:测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。这些用户是与公司签定了支持产品预发行合同的外部客户,他们要求使用该产品,并愿意返回有关错误信息给开发者。开发者通常不在测试现场,因而,测试是在开发者无法控制的环境下进行的软件现场应用。在测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告,开发者在综合用户的报告之后,作出修改,最终将软件产品交付给全体用户使用。由于它处在整个测试的最后阶段,因此不能指望这时发现主要问题。同时,产品的所有手册文本也应该在此阶段完全定稿。Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux几乎包含了UNIX的全部功能和特性,同时又有自己的一些特点。概括地讲,Linux具有以下主要特性: 开放性 开放性是指系统遵循世界标准规范,特别是遵循开放系统互联(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互联。 多用户 多用户是指系统资源可以被不同用户各自拥有和使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux继承了UNIX的多用户特性。 多任务多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程,平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。 良好的用户界面 Linux向用户提供了3种界面:传统操作界面、系统调用界面和图形用户界面。Linux的传统操作界面是基于文本的命令行界面,即Shell,它既可以联机使用,又可在文件上脱机使用。Shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。 系统调用界面是为用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。 设备独立性 Linux是具有设备独立性的操作系统,它的内核具有高度的适应能力。随着越来越多的程序员开发Linux系统,将会有更多的硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以根据需要修改内核源代码,以便适应新增加的外部设备。设备独立性是指操作系统把所有外部设备统一当作文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。 具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时,系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)能保证每次调用设备提供的服务时,内核能以相同的方式来处理它们。当新的或更好的外设被开发并交付给用户时,系统允许在这些设备连接到内核后,能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统却能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接进行独立访问的。 提供了丰富的网络功能完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,通过Internet,用户能用Linux与世界上各个地区的人方便地通信。它内建了http、ftp、dns等功能,支持所有常见的网络服务,包括ftp、telnet、NFS、TCP、IP等,加上超强的稳定性,因此很多ISP(Internet Service Providers)都是采用Linux来架设邮件服务器、FTP服务器及Web 服务器等各种服务器的。Linux在最新发展的内核中还包含了一些通用的网络协议,比如IPv4、IPv6、AX.25、X.25、IPX、DDP(Appletalk)、NetBEUI、Netrom 等。用户能通过一些Linux命令完成内部信息或文件的传输。 Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的接口。另外,还可以进行远程访问。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。稳定的核心中目前包含的网络协议有TCP、IPv4、IPX、DDP、AX等。另外还提供Netware的客户机和服务器,以及现在最热门的Samba(让用户共享Mircosoft Network资源)。 可靠的系统安全 Linux采取了许多安全技术措施,包括对读/写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。 良好的可移植性 可移植性是指将操作系统从一个平台转移到另一个平台上,并使它仍然能按其自身的方式运行的能力。 Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中运行。可移植性为运行Linux的不同计算机平台与其他任何计算机进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。1.2 C语言的简介和特点C语言是贝尔实验室的Dennis Ritchie在B语言的基础上开发出来的,1972年在一台DEC PDP-11计算机上实现了最初的C语言。C语言是与硬件无关的,用C语言编写的程序能移植到大多数计算机上。C语言在各种计算机上的快速推广导致了许多C语言版本。这些版本虽然是类似的,但通常是不兼容的。为了明确定义与机器无关的C语言,1989年美国国家标准协会制定了C语言的标准(ANSI C)。在ANSI标准化后,C语言的标准在相当长的一段时间内都基本保持不变,尽管C+进行了改进(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本,但是这个版本很少为人所知)。ANSI标准在20世纪90年代又经历了一次比较大的改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年2月采用。C 语言之所以发展迅速,而且成为最受欢迎的语言之一,主要是因为它具有强大的功能。许多著名的系统软件,如UNIX/Linux、Windows、DBASE PLUS、DBASE 都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势,像PC- DOS 、WORDSTAR等就是用这种方法编写的。归纳起来,C 语言具有下列特点: 中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 结构式语言。结构式语言的显著特点是代码及数据的模块化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便地调用,并采用多种循环、条件语句控制程序流向,从而使程序完全结构化。 功能齐全。C 语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外,C 语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。 可与Linux无缝结合。Linux本身是使用C语言开发的,在Linux上用C语言作开发,效率很高。1.3 Linux程序设计基础知识对一个Linux开发人员来说,在使用一种编程语言编写程序以前,对操作系统中程序的保存位置有一个透彻的了解是很重要的。比如,应知道软件工具和开发资源保存在什么位置是很重要的。下面首先简单介绍Linux的几个重要的子目录和文件。这部分内容虽然是针对 Linux的,但同样也适用于其他类UNIX系统。1.3.1 程序安装目录Linux下的程序通常都保存在专门的目录里。系统软件可以在/usr/bin子目录里找到。系统管理员为某个特定的主机系统或本地网络添加的程序可以在/usr/local/bin子目录里找到。系统管理员一般都喜欢使用/usr/local子目录,因为它可以把供应商提供的文件和后来添加的程序以及系统本身提供的程序隔离开来。/usr子目录的这种布局方法在需要对操作系统进行升级的时候非常有用,因为只有/usr/local子目录里的东西需要保留。我们建议读者编译自己的程序时,按照/usr/local子目录的树状结构来安装和访问相应的文件。某些随后安装的软件都有它们自己的子目录结构,其执行程序也保存在特定的子目录里,最明显的例子就是 X窗口系统,它通常安装在一个名为/usr/X11R6的子目录里,XFree论坛组织发行的用于英特尔处理器芯片的各种XFree 86窗口系统变体也安装在这里。GNU的C语言编译器gcc(后面的程序设计示例中使用的就是它)通常安装在/usr/bin或者/usr/local/bin子目录里,但通过它运行的各种编译器支持程序一般都保存在另一个位置。这个位置是在用户使用自己的编译器时指定的,随主机类型的不同而不同。对 Linux系统来说,这个位置通常是/usr/lib/gcc-lib/目录下以其版本号确定的某个下级子目录。GN的C/C+编译器的各种编译程序以及GNU专用的头文件都保存在这里。1.3.2 头文件在使用C语言和其他语言进行程序设计的时候,我们需要头文件来提供对常数的定义和对系统及库函数调用的声明。对C语言来说,这些头文件几乎永远保存在/usr/include及其下级子目录里。那些赖于所运行的 UNIX或Linux操作系统特定版本的头文件一般可以在/usr/include/sys或/usr/include/linux子目录里找到。其他的程序设计软件也可以有一些预先定义好的声明文件,它们的保存位置可以被相应的编译器自动查找到。比如,X窗口系统的/usr/include/X1R6子目录和GNU C+编译器的/usr/include/g+ -2子目录等。在调用C语言编译器的时候,可以通过给出“ -I”编译命令标志来引用保存在下级子目录或者非标准位置的头文件,类似命令如下:davidlocalhost linux$ gcc -I /usr/openwin/include hello.c该命令会使编译器在/usr/openwin/include子目录和标准安装目录两个位置查找fred.c程序里包含的头文件。具体情况可以参考第3章。用grep命令来查找含有某些特定定义与函数声明的头文件是很方便的。假设想知道用来返回程序退出状态的文件的名字,可以使用如下方法:先进入/usr/include子目录,然后在grep命令里给出该名字的几个字母,如下所示:davidlocalhost linux$ grep KEYSPAN *.hpci_ids.h:#define PCI_SUBVENDOR_ID_KEYSPAN 0x11a9pci_ids.h:#define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x5334grep命令会在该子目录里所有名字以.h结尾的文件里查找字符串“KEYSPAN”。在上面的例子里,(从其他文件中间)可以查找到文件pci_ids.h。1.3.3 库文件库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成。比如用来处理屏幕显示情况的函数(curses库)等。我们将在后续章节讲述这些函数库文件。标准的系统库文件一般保存在/lib或者/usr/lib子目录里。编译时要告诉 C语言编译器(更确切地说是链接程序)应去查找哪些库文件。默认情况下,它只会查找 C语言的标准库文件。这是从计算机速度还很慢、CPU价格还很昂贵的年代遗留下来的问题。在当时,把一个库文件放到标准化子目录里然后寄希望于编译器自己找到它是不实际的。库文件必须遵守一定的命名规则,还必须在命令行上明确地给出来。库文件的名字永远以lib这几个字母打头,随后是说明函数库情况的部分(比如用c表示这是一个 C语言库;而m表示这是一个数学运算库等)。文件名的最后部分以一个句点(.)开始,然后给出这个库文件的类型,如下所示: .a 传统的静态型函数库。 .so和. sa 共享型函数库(见下面的解释)。函数库一般分为静态和共享两种格式,用ls /usr/lib命
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷链物联网实时监控-洞察与解读
- 情境感知界面-洞察与解读
- 碳足迹核算-第9篇-洞察与解读
- 智慧医疗:患者流量预测与成本优化路径
- 日间手术标准化管理实践总结
- 预防新型冠状病毒肺炎培训课件
- 胰腺炎护理:家庭护理与自我管理阅读
- 电复律在心血管危重症中的护理配合技巧
- 成本精细化管理在门诊中的应用
- 2025 三年级数学上册长方形和正方形互动教学课件设计课件
- 注意缺陷多动障碍儿童社交技能培养方案
- 小学高级数学教师评审答辩资料范本
- 市政管道高压水射流清淤施工方案
- 江苏省苏州市阳光调研2025-2026学年高一上学期期中考试化学试题(含答案)
- 国防安全主题课件
- 2025-2026学年第一学期浙江省宁波市余姚市六校期中联考七年级语文试卷(含答案)
- 2025广东广州市越秀区流花街招聘党建工作指导员1人笔试考试参考题库及答案解析
- 2025年国家开放大学(电大)《教育科学研究方法》期末考试复习题库及答案解析
- 二十届四中全会测试题及参考答案(第二套)
- T/CNCA 033-2022矿用链臂切顶机通用技术条件
- 清华大学出版社机械制图习题集参考答案(课堂PPT)
评论
0/150
提交评论