谁能介绍下UNIX的开发环境?
你是,集成开发环境就是常说的IDE,具体是什么,举个例子:
1、比如你学C语言,写代码要用Turbo C这个软件,Turbo C就是一个集成开发环境。
2、为什么说是集成开发环境,因为Turbo C软件包含了代码、调试、编译、运行这些所有的功能,你可以在Turbo C这个开发环境中就完成你的程序从设计、调试到发布所有的过程。
3、其实记事本也可以写C程序,但是你必须同时安装C编译器才能运行C程序。而集成开发环境,比如上面说的Turbo C,就包含了编译器等工具,所以说叫集成开发环境。
4、类似的集成开发环境有:
C++、VB、C#等都可以使用Visual Studio;Java一般用Eclipse等等
5、学习编程是需要学习使用集成开发环境的,就想你学习文字处理要学会用Word一样,放心,集成开发环境的使用很简单,真正有些难度是语言的学习。
注:请不要把语言和集成开发环境搞混淆了,语言是灵魂,集成开发工具就是一种达到目的的手段!有问题可以Hi我!
Cygwin 是 Redhat 公司的产品,它提供了在 Windows 操作系统下的一个 UNIX 环境,它可以帮助程序开发人员把应用程序从 UNIX/Linux 移植到 Windows 平台(当然也是合在Windows平台开发方便移植的UNIX Linux代码),是一个功能强大的工具集。
附:一、概述
标准 UNIX 操作系统是一个交互式的分时系统,提供了一个支持程序开发全过程的基础和环境,可以支持40个终端用户。UNIX系统是由美国电报电话公司(AT&T)下属的Bell实验室的两名程序员K.汤普逊(Ken Thompson)和D.里奇(Dennis Ritchie)于1969~1970年研制出来的。UNIX问世以来十分流行,它运行在从高档微机到大型机各种具有不同处理能力的机器上。目前,UNIX除了可在PDP-11 、DEC公司的VAX-11系统的各种机型上运行之外,还可以在IBM的370、3300系列机和Amdahi公司、Data General公司、Hp公司的系列机上。近年来,几乎所有的16位机、32位微型计算机都竞相移植UNIX。这种情况在操作系统发展的历史上是极为罕见的。随着UNIX的普及,书写系统的C语言也成为引人注目的语言,得到广泛使用。
UNIX系统获得了巨大的成功,这有着内在的原因和客观的因素。客观条件之一是,UNIX问世之前己有许多操作系统研制成功,其中有成功的经验,也有失败的教训,而UNIX的设计者正是经过认真考虑,作了适当的取舍,使UNIX站在前人肩头上获得成功(MULTICS用了200人年未达到原定目标,UNIX只用了2个人年);其二是,由于当时人们需要一个使用方便、能提供良好开发环境、大小适中的系统,UNIX恰是生逄其时;其三是,UNIX是在PDP-11系列机上开发出来的,这种机器在世界上己得到广泛应用,这为UNIX广泛配置创造了条件。当然,UNIX成功的关键是在于自身的性能和特点。
UNIX的主要特点是:短小精悍、简易有效、并具有易理解、易扩充、易移植性。
UNIX的核心程序由约10000行C语言代码和1000行汇编语言代码构成,被分成能独立编译和汇编的44个文件,每个文件又分若干过程。这些文件可分以下三类:
⑴汇编语言文件:系统只有2个文件用汇编语言编程,包含33个汇编子程序,与机器硬件直接相关的部分,如中断处理、系统启动等,为了提高效率,有些频繁使用的基本过程,也用汇编语言编写。
⑵C语言文件:共有28个,其中包括进程管理的主要过程,它们又可分成190个子程序 。文件可以独立编译,经装配程序连接装配后就可执行。
⑶C语言全局变量文件:共14个,其中含有结构的重要说明。这类文件不能独立编译,而必须和某个C语言文件一起编译。
二、UNIX操作系统的主要特点
1.精巧的核心与丰富的实用层
UNIX系统在结构上分成内核层和实用层。核心层小巧,而实用层丰富。核心层包括进程管理、存储管理、设备管理、文件系统几个部分。UNIX核心层设计得非常精干简洁,其主要算法经过反复推敲,对其中包含的数据结构和程序进行了精心设计。因此,核心层只需占用很小的存储空间,并能常驻内存,以保证系统以较高的效率工作。
实用层是那些能从核心层分离出来的部分,它们以核外程序形式出现并在用户环境下运行 。这些核 外程序包含有丰富的语言处理程序。UNIX支持十几种常用程序设计语言的编译和解释程序,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68等语言及其编译程序。还包括其他操作系统常见的实用程序,如编辑程序、调试程序、有关系统状态监控和文件管理的实用程序等。UNIX还有一组强有力的软件工具,用户能比较容易地使用它们来开发新的软件。这些软件工具包括:用于处理正文文件的实用程序troff,源代码控制程序SCC
S(Source Code Control System),命令语言的词法分析程序和语法分析程序的生成程序LEX(Generator of Lexical Analyzers)和YACC(Ye
t Another Compiler Compiler)等。另外,UNIX的命令解释程序Shel
l也属于核外程序 。正是这些核外程序给用户提供了相当完备的程序设计环境。
UNIX的核心层向核外程序提供充分而强有力的支持。核外程序则以内核为基础,最终都使用由核心层提供的低层服务,它们逐渐都成了“UNIX系统”的一部分。核心层和实用层两者结合起来作为一个整体,向用户提供各种良好的服务。
2.使用灵活的命令程序设计语言Shell
Shell首先是一种命令语言。UNIX 的200多条命令对应着200个实用程序。Shell 也是一种程序设计语言。它具有许多高级语言所拥有的控制流能力,如if、for、while、until、case语句,以及对字符串变量的赋值、替换、传替参数、命令替换等能力。用户可以利用这些功能用Shell语言写出“Shell”程序存入文件。以后用户只要打入相应的文件名就能执行它。这种方法易于系统的扩充。
3.层次式文件系统
UNIX系统采用树型目录结构来组织各种文件及文件目录。这样的组织方式有利于辅助存储器空间分配及快速查找文件,也可以为不同用户的文件提供文件共享和存取控制的能力,且保证用户之间安全有效的合作。
4.文件和设备统一看待
UNIX系统中的文件是无结构的字节序列。在缺省情况下,文件都是顺序存取的,但用户如果需要的话,也可为文件建立自己需要的结构,用户也可以通过改变读/写指针对文件进行随机存取。
UNIX将外围设备与文件一样看待,外围设备如同磁盘上的普通文件一样被访问、共享和保护。用户不必区分文件和设备,也不需要知道设备的物理特性就能访问它。例如系统中行式打印机对应的文件名是/dev/lp 。用户只要用文件的操作(write)就能把它的数据从打印机上输出。这样在用户面前,文件的概念简单了,使用也方便了。
5.良好的移植性
UNIX的所有实用程序和核心的90%代码是用C语言写成的,这使得UNIX成为一个可移植的操作系统。操作系统的可移植性带来了应用程序的可移植性,因而用户的应用程序即可用于小型机,又可用于其他的微型机或大型机。从而大大提高了用户的工作效率。
虽然UNIX系统取得了巨大的成功,但它也不是没有缺点的。概括起来,对UNIX的批评有如下几点:
1.UNIX系统的版本太多,造成应用程序的可移植性不能完全实现
UNIX是用C语言写成的,因而容易修改和移植。UNIX也鼓励用户用UNIX的工具开发适合自己需要的环境,这样造成了UNIX版本太多而不统一。为了解决这一问题,目前 AT&T己与四家重要的微机厂家(Inte
r,Motorola ,Zilog和National Semiconductor)合作制订统一的UNIX
system V版本,这将会给UNIX的标准化以重大影响。
2.UNIX系统缺少诸如实时控制、分布式处理、网络处理能力
这一缺点也在不断改进中,以UNIX为基础的分布式系统和具有实时处理能力的系统己在研制中,有的已研制成功。
3.UNIX系统的核心是无序模块结构
UNIX系统的核心有90%是用C语言写成的,但其结构不是层次的,故显得十分复杂,不易修改和扩充。
UNIX系统的这些缺点比起它的成就而言是十分次要的,它的成功是辉煌的。
三、UNIX系统结构
UNIX操作系统采用以全局变量为中心的模块结构,因而系统结构较为复杂,这主要表现在:模块间的循环调用和文件之间的全局变量问题。
从结构上看,UNIX可以分为核心层和外壳层,核心层又分成与硬件接口的设备驱动、物理存储块管理的最低层及实现存储管理、文件管理、设备管理、进程管理等功能的低层。核心的外层是系统调用,它是UNIX核心的对外接口。最外层的Shell是用户与UNIX系统的接口,其他的各种实用程序和用户程序也在这一层运行。
系统结构如图8.1所示。
1.Shell
UNIX提供的用户接口是一种被称为Shell的命令语言,这种命令语言的解释程序也称为Shell 。在系统初始启动时为每个用户建立一个Shell进程,每个Shell进程等待用户输入命令。命令的最简单形式是一个命令行,由命令名和若干参数组成,中间用空格隔开。Shell解释执行命令时,先区分命令名和参数,然后根据命令名找出对应的文件,把文件读入内存,并按给出的参数解释执行。
命令的执行是通过 fork 系统调用来完成的,Shell进程调用for
k后,fork创建一个Shell进程的子进程且让Shell进程等待。子进程解释执行命令,命令执行结束时子进程调用exit系统调用完成终止子进程和释放父进程的工作。Shell进程被释放后,给出允许用户输入下一个命令行的提示,命令的基本执行过程如图8.2。
UNIX的交互系统要求用户必须等待前一行命令执行结束,在终端上出现提示符后才能输入下一个命令行。由于有些命令的执行时间较长,因此为了减少用户等待时间,在UNIX系统中允许用户使用Shell命令语言编写程序来表示一组命令的执行顺序,用命令语言编写成的程序称Shell程序。Shell程序存放在文件上,需要时由命令解释程序去执行Shell程序中的各个命令。
2.系统调用
系统调用是用户程序请求操作系统为其服务的惟一形式,在UNIX中把系统调用称为程序员接口。UNIX规定用户程序用捕俘(trap)指令请求系统服务,UNIX核心中的中断捕俘程序根据trap的类型转向相应的处理程序。Trap指令形式如下:
UNIX第6版共有41条系统调用,可以分成以下三类:
①与进程管理有关的系统调用,如建立子进程、等待子进程、睡眠、发信号、修改数据段大小等。
②与文件管理有关的系统调用,如建立文件、连接文件、打开文件、关闭文件 、读文件 、写文件以及修改当前目录、修改文件属性等。
③其他系统调用,如取当前用户号 、取日历时间 、读取进程运行时间、改变优先数等。
在系统调用中,参数的传递有两种方式。第一种方式:在程序中通过trap指令后继单元传送。这一方式又分为直接方式和间接方式。在直接方式中,允许在trap指令的后继单元中最多可放5个参数;在间接方式中,trap指令的后继单元放的是一个参数区指针,在这个参数区可以存放更多的参数。第二种方式是通过寄存器R0,R1传递参数的。
UNIX的系统程序员界面这包括了大量的库子程序和标题文件。标题文件定义了在系统调用中使用的复杂数据结构;库子程序和库函数为系统调用提供了附加的程序支持。
3.存储管理
UNIX系统最初是在 PDP-11 上开发的,PDP-11是段式结构的存储器,在PDP-11中把段称作页,每一页可包含若干块,每块64个字节,主存以块为单位进行分配。
存储分配采用优先适应算法,存储空间使用空闲区表来管理。每表占50项,每项2个单元,一个指向相应空闲区起始块号,另一个指出空闲区大小。表内各项次序按空闲区地址从低到高排列,若有两个相邻空闲区则合并成一个。表项内容为0,表示表尾。
由于PDP-11不支持虚拟存储器,所以UNIX中内存用户区和磁盘对换区的分配和释放由存储管理模块管理。在对换程序的管理下内存用户区和磁盘对换区连成一体,起着虚拟存储器的作用。对换进程扫描PCB表,发现辅存有就绪进程时,查内存是否有空闲区,若有空闲区则直接调入;否则要把内存中某些进程换出,若内存没有可换出进程,则对换进程处于等待状态,直到某些事件发生,唤醒后再度工作。辅存有多个就绪进程时,按先进先出换进内存;内存有多个进程可换出时,则选可换进程中优先数低的进程换出。
当进程要增加页长时,可通过申请新页、释放旧页来实现。若内存无足够空间,则在辅存申请新页,同时将进程整个换到辅存。
Linux是什么?
1991年,芬兰赫而辛基的学生LinusTorvalds为了自己使用与学习的需要,他开发了类似Unix且运行在80386平台上运行的操作系统,命名为Linux。为了使每个需要它的人都能够容易的得到它,LinusTorvalds把它变成了"自由"软件。
感谢Internet的飞速发展使得全世界的程序开发员有了一种全新的有效沟通方法。还要感谢在数年之前由RichardStallman主持的GNU项目。Linux在几年后变成了一个完整的操作系统。它的能量得到了释放,变得非常可靠,并且每天都会有新的改进加入进去。
为了使Linux变得容易使用,Linux也有了许多发布版本,发布版实际上就是一整套完整的程序组合。现在已经有许多不同的Linux发行版和各自的版本号,为了不产生混淆,我们先解释一些常提到的术语。
当我们提到Linux时,一般是指"RealLinux",即内核,是所有UNIX操作系统的“心脏”。但光有linux并不能成为一个可用的操作系统。还需要许多软件包,编译器,程序库文件,Xwindow系统等等。因为组合方式不同,面向用户对象不同,所以这就是为什么有许多不同的Linux发行版的原因。
Linux的特点
Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux包含了Unix的全部功能和特性。简单的说,Linux具有以下主要特性:
1.开放性
开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
2.多用户
多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。
3.多任务
多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程,平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。
4.良好的用户界面
Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。
系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
5.设备独立性
设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。
Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。
6.提供了丰富的网络功能
完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。
支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。
文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。
远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。
7.可靠的系统安全
Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
8.良好的可移植性
可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。
Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。
我们为什么要用Linux?
Linux是"免费"的,上面又有那么多"免费"的软件,为什么不用?
Windows实在太不稳定了,受不了,换个平台吧。
想学习UNIX,可是钱包里的钞票不多,先从Linux开始吧。
想学习操作系统,哪里有开放源代码的OS?而且还要很活跃,有前途的。
基于Linux的并行计算,不但费用低廉,而且功能强大,有潜力,重要的是有源代码。
想成为一名Hacker(当然是网侠一类),Linux当然是最好的工具之一。
Linux潜在的商业价值不可限量,性能相当地好,稳定性也很好,用其替换商业操作系统真是明智的选择。
Oracle,Infomix,Sysbase,IBM都支持Linux了,用其作数据库平台挺不错。烦了一次又一次去买许可证(奸商经常设这样的陷阱),Linux遵循公共版权许可证(GPL)正合我意。
Linux太适合Internet/Intranet,本身就是通过网络来协同开发的,网络时代为什么不用Linux?
采用Linux可以极大的降低拥有者总成本(TCO)。等待商业操作系统补丁的耐心是有限度的,更受不了总被商家牵着鼻子走,开放源代码的Linux至少可以使用户有一定的控制权。开放源代码使用户可以按照自己的需要添加或删除某些功能,用户可定制性,真是太好了!
利用开放源代码的Linux还可以开发路由器,嵌入式系统,网络计算机,个人数字助理等等,GNU真是巨大的知识宝库,何乐而不用?
崇尚自由软件精神和梦想,贡献自己的力量!
参考资料:网络世界
希望对你有用!
附:一、概述
标准 UNIX 操作系统是一个交互式的分时系统,提供了一个支持程序开发全过程的基础和环境,可以支持40个终端用户。UNIX系统是由美国电报电话公司(AT&T)下属的Bell实验室的两名程序员K.汤普逊(Ken Thompson)和D.里奇(Dennis Ritchie)于1969~1970年研制出来的。UNIX问世以来十分流行,它运行在从高档微机到大型机各种具有不同处理能力的机器上。目前,UNIX除了可在PDP-11 、DEC公司的VAX-11系统的各种机型上运行之外,还可以在IBM的370、3300系列机和Amdahi公司、Data General公司、Hp公司的系列机上。近年来,几乎所有的16位机、32位微型计算机都竞相移植UNIX。这种情况在操作系统发展的历史上是极为罕见的。随着UNIX的普及,书写系统的C语言也成为引人注目的语言,得到广泛使用。
UNIX系统获得了巨大的成功,这有着内在的原因和客观的因素。客观条件之一是,UNIX问世之前己有许多操作系统研制成功,其中有成功的经验,也有失败的教训,而UNIX的设计者正是经过认真考虑,作了适当的取舍,使UNIX站在前人肩头上获得成功(MULTICS用了200人年未达到原定目标,UNIX只用了2个人年);其二是,由于当时人们需要一个使用方便、能提供良好开发环境、大小适中的系统,UNIX恰是生逄其时;其三是,UNIX是在PDP-11系列机上开发出来的,这种机器在世界上己得到广泛应用,这为UNIX广泛配置创造了条件。当然,UNIX成功的关键是在于自身的性能和特点。
UNIX的主要特点是:短小精悍、简易有效、并具有易理解、易扩充、易移植性。
UNIX的核心程序由约10000行C语言代码和1000行汇编语言代码构成,被分成能独立编译和汇编的44个文件,每个文件又分若干过程。这些文件可分以下三类:
⑴汇编语言文件:系统只有2个文件用汇编语言编程,包含33个汇编子程序,与机器硬件直接相关的部分,如中断处理、系统启动等,为了提高效率,有些频繁使用的基本过程,也用汇编语言编写。
⑵C语言文件:共有28个,其中包括进程管理的主要过程,它们又可分成190个子程序 。文件可以独立编译,经装配程序连接装配后就可执行。
⑶C语言全局变量文件:共14个,其中含有结构的重要说明。这类文件不能独立编译,而必须和某个C语言文件一起编译。
二、UNIX操作系统的主要特点
1.精巧的核心与丰富的实用层
UNIX系统在结构上分成内核层和实用层。核心层小巧,而实用层丰富。核心层包括进程管理、存储管理、设备管理、文件系统几个部分。UNIX核心层设计得非常精干简洁,其主要算法经过反复推敲,对其中包含的数据结构和程序进行了精心设计。因此,核心层只需占用很小的存储空间,并能常驻内存,以保证系统以较高的效率工作。
实用层是那些能从核心层分离出来的部分,它们以核外程序形式出现并在用户环境下运行 。这些核 外程序包含有丰富的语言处理程序。UNIX支持十几种常用程序设计语言的编译和解释程序,如C、APL、FORTRAN77、PASCAL、SNOBOL、COBOL、BASIC、ALGOL68等语言及其编译程序。还包括其他操作系统常见的实用程序,如编辑程序、调试程序、有关系统状态监控和文件管理的实用程序等。UNIX还有一组强有力的软件工具,用户能比较容易地使用它们来开发新的软件。这些软件工具包括:用于处理正文文件的实用程序troff,源代码控制程序SCC
S(Source Code Control System),命令语言的词法分析程序和语法分析程序的生成程序LEX(Generator of Lexical Analyzers)和YACC(Ye
t Another Compiler Compiler)等。另外,UNIX的命令解释程序Shel
l也属于核外程序 。正是这些核外程序给用户提供了相当完备的程序设计环境。
UNIX的核心层向核外程序提供充分而强有力的支持。核外程序则以内核为基础,最终都使用由核心层提供的低层服务,它们逐渐都成了“UNIX系统”的一部分。核心层和实用层两者结合起来作为一个整体,向用户提供各种良好的服务。
2.使用灵活的命令程序设计语言Shell
Shell首先是一种命令语言。UNIX 的200多条命令对应着200个实用程序。Shell 也是一种程序设计语言。它具有许多高级语言所拥有的控制流能力,如if、for、while、until、case语句,以及对字符串变量的赋值、替换、传替参数、命令替换等能力。用户可以利用这些功能用Shell语言写出“Shell”程序存入文件。以后用户只要打入相应的文件名就能执行它。这种方法易于系统的扩充。
3.层次式文件系统
UNIX系统采用树型目录结构来组织各种文件及文件目录。这样的组织方式有利于辅助存储器空间分配及快速查找文件,也可以为不同用户的文件提供文件共享和存取控制的能力,且保证用户之间安全有效的合作。
4.文件和设备统一看待
UNIX系统中的文件是无结构的字节序列。在缺省情况下,文件都是顺序存取的,但用户如果需要的话,也可为文件建立自己需要的结构,用户也可以通过改变读/写指针对文件进行随机存取。
UNIX将外围设备与文件一样看待,外围设备如同磁盘上的普通文件一样被访问、共享和保护。用户不必区分文件和设备,也不需要知道设备的物理特性就能访问它。例如系统中行式打印机对应的文件名是/dev/lp 。用户只要用文件的操作(write)就能把它的数据从打印机上输出。这样在用户面前,文件的概念简单了,使用也方便了。
5.良好的移植性
UNIX的所有实用程序和核心的90%代码是用C语言写成的,这使得UNIX成为一个可移植的操作系统。操作系统的可移植性带来了应用程序的可移植性,因而用户的应用程序即可用于小型机,又可用于其他的微型机或大型机。从而大大提高了用户的工作效率。
虽然UNIX系统取得了巨大的成功,但它也不是没有缺点的。概括起来,对UNIX的批评有如下几点:
1.UNIX系统的版本太多,造成应用程序的可移植性不能完全实现
UNIX是用C语言写成的,因而容易修改和移植。UNIX也鼓励用户用UNIX的工具开发适合自己需要的环境,这样造成了UNIX版本太多而不统一。为了解决这一问题,目前 AT&T己与四家重要的微机厂家(Inte
r,Motorola ,Zilog和National Semiconductor)合作制订统一的UNIX
system V版本,这将会给UNIX的标准化以重大影响。
2.UNIX系统缺少诸如实时控制、分布式处理、网络处理能力
这一缺点也在不断改进中,以UNIX为基础的分布式系统和具有实时处理能力的系统己在研制中,有的已研制成功。
3.UNIX系统的核心是无序模块结构
UNIX系统的核心有90%是用C语言写成的,但其结构不是层次的,故显得十分复杂,不易修改和扩充。
UNIX系统的这些缺点比起它的成就而言是十分次要的,它的成功是辉煌的。
三、UNIX系统结构
UNIX操作系统采用以全局变量为中心的模块结构,因而系统结构较为复杂,这主要表现在:模块间的循环调用和文件之间的全局变量问题。
从结构上看,UNIX可以分为核心层和外壳层,核心层又分成与硬件接口的设备驱动、物理存储块管理的最低层及实现存储管理、文件管理、设备管理、进程管理等功能的低层。核心的外层是系统调用,它是UNIX核心的对外接口。最外层的Shell是用户与UNIX系统的接口,其他的各种实用程序和用户程序也在这一层运行。
系统结构如图8.1所示。
1.Shell
UNIX提供的用户接口是一种被称为Shell的命令语言,这种命令语言的解释程序也称为Shell 。在系统初始启动时为每个用户建立一个Shell进程,每个Shell进程等待用户输入命令。命令的最简单形式是一个命令行,由命令名和若干参数组成,中间用空格隔开。Shell解释执行命令时,先区分命令名和参数,然后根据命令名找出对应的文件,把文件读入内存,并按给出的参数解释执行。
命令的执行是通过 fork 系统调用来完成的,Shell进程调用for
k后,fork创建一个Shell进程的子进程且让Shell进程等待。子进程解释执行命令,命令执行结束时子进程调用exit系统调用完成终止子进程和释放父进程的工作。Shell进程被释放后,给出允许用户输入下一个命令行的提示,命令的基本执行过程如图8.2。
UNIX的交互系统要求用户必须等待前一行命令执行结束,在终端上出现提示符后才能输入下一个命令行。由于有些命令的执行时间较长,因此为了减少用户等待时间,在UNIX系统中允许用户使用Shell命令语言编写程序来表示一组命令的执行顺序,用命令语言编写成的程序称Shell程序。Shell程序存放在文件上,需要时由命令解释程序去执行Shell程序中的各个命令。
2.系统调用
系统调用是用户程序请求操作系统为其服务的惟一形式,在UNIX中把系统调用称为程序员接口。UNIX规定用户程序用捕俘(trap)指令请求系统服务,UNIX核心中的中断捕俘程序根据trap的类型转向相应的处理程序。Trap指令形式如下:
UNIX第6版共有41条系统调用,可以分成以下三类:
①与进程管理有关的系统调用,如建立子进程、等待子进程、睡眠、发信号、修改数据段大小等。
②与文件管理有关的系统调用,如建立文件、连接文件、打开文件、关闭文件 、读文件 、写文件以及修改当前目录、修改文件属性等。
③其他系统调用,如取当前用户号 、取日历时间 、读取进程运行时间、改变优先数等。
在系统调用中,参数的传递有两种方式。第一种方式:在程序中通过trap指令后继单元传送。这一方式又分为直接方式和间接方式。在直接方式中,允许在trap指令的后继单元中最多可放5个参数;在间接方式中,trap指令的后继单元放的是一个参数区指针,在这个参数区可以存放更多的参数。第二种方式是通过寄存器R0,R1传递参数的。
UNIX的系统程序员界面这包括了大量的库子程序和标题文件。标题文件定义了在系统调用中使用的复杂数据结构;库子程序和库函数为系统调用提供了附加的程序支持。
3.存储管理
UNIX系统最初是在 PDP-11 上开发的,PDP-11是段式结构的存储器,在PDP-11中把段称作页,每一页可包含若干块,每块64个字节,主存以块为单位进行分配。
存储分配采用优先适应算法,存储空间使用空闲区表来管理。每表占50项,每项2个单元,一个指向相应空闲区起始块号,另一个指出空闲区大小。表内各项次序按空闲区地址从低到高排列,若有两个相邻空闲区则合并成一个。表项内容为0,表示表尾。
由于PDP-11不支持虚拟存储器,所以UNIX中内存用户区和磁盘对换区的分配和释放由存储管理模块管理。在对换程序的管理下内存用户区和磁盘对换区连成一体,起着虚拟存储器的作用。对换进程扫描PCB表,发现辅存有就绪进程时,查内存是否有空闲区,若有空闲区则直接调入;否则要把内存中某些进程换出,若内存没有可换出进程,则对换进程处于等待状态,直到某些事件发生,唤醒后再度工作。辅存有多个就绪进程时,按先进先出换进内存;内存有多个进程可换出时,则选可换进程中优先数低的进程换出。
当进程要增加页长时,可通过申请新页、释放旧页来实现。若内存无足够空间,则在辅存申请新页,同时将进程整个换到辅存。
Linux是什么?
1991年,芬兰赫而辛基的学生LinusTorvalds为了自己使用与学习的需要,他开发了类似Unix且运行在80386平台上运行的操作系统,命名为Linux。为了使每个需要它的人都能够容易的得到它,LinusTorvalds把它变成了"自由"软件。
感谢Internet的飞速发展使得全世界的程序开发员有了一种全新的有效沟通方法。还要感谢在数年之前由RichardStallman主持的GNU项目。Linux在几年后变成了一个完整的操作系统。它的能量得到了释放,变得非常可靠,并且每天都会有新的改进加入进去。
为了使Linux变得容易使用,Linux也有了许多发布版本,发布版实际上就是一整套完整的程序组合。现在已经有许多不同的Linux发行版和各自的版本号,为了不产生混淆,我们先解释一些常提到的术语。
当我们提到Linux时,一般是指"RealLinux",即内核,是所有UNIX操作系统的“心脏”。但光有linux并不能成为一个可用的操作系统。还需要许多软件包,编译器,程序库文件,Xwindow系统等等。因为组合方式不同,面向用户对象不同,所以这就是为什么有许多不同的Linux发行版的原因。
Linux的特点
Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux包含了Unix的全部功能和特性。简单的说,Linux具有以下主要特性:
1.开放性
开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
2.多用户
多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。
3.多任务
多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程,平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。
4.良好的用户界面
Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。
系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
5.设备独立性
设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。
Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。
6.提供了丰富的网络功能
完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。
支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。
文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。
远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。
7.可靠的系统安全
Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
8.良好的可移植性
可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。
Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。
我们为什么要用Linux?
Linux是"免费"的,上面又有那么多"免费"的软件,为什么不用?
Windows实在太不稳定了,受不了,换个平台吧。
想学习UNIX,可是钱包里的钞票不多,先从Linux开始吧。
想学习操作系统,哪里有开放源代码的OS?而且还要很活跃,有前途的。
基于Linux的并行计算,不但费用低廉,而且功能强大,有潜力,重要的是有源代码。
想成为一名Hacker(当然是网侠一类),Linux当然是最好的工具之一。
Linux潜在的商业价值不可限量,性能相当地好,稳定性也很好,用其替换商业操作系统真是明智的选择。
Oracle,Infomix,Sysbase,IBM都支持Linux了,用其作数据库平台挺不错。烦了一次又一次去买许可证(奸商经常设这样的陷阱),Linux遵循公共版权许可证(GPL)正合我意。
Linux太适合Internet/Intranet,本身就是通过网络来协同开发的,网络时代为什么不用Linux?
采用Linux可以极大的降低拥有者总成本(TCO)。等待商业操作系统补丁的耐心是有限度的,更受不了总被商家牵着鼻子走,开放源代码的Linux至少可以使用户有一定的控制权。开放源代码使用户可以按照自己的需要添加或删除某些功能,用户可定制性,真是太好了!
利用开放源代码的Linux还可以开发路由器,嵌入式系统,网络计算机,个人数字助理等等,GNU真是巨大的知识宝库,何乐而不用?
崇尚自由软件精神和梦想,贡献自己的力量!
参考资料:网络世界
1968年∶ 由一些来自通用电器公司,贝尔实验室和麻省理工院 的研究员开发了一个叫 Multics特殊的操作系统。
1970年∶ AT&T的Bell实验室研究员Ken Tompson和Dennis Ritchie 在Multics操作系统的基础上,开发了UNIX操 作系统 标志着UNIX的诞生。同年, 贝尔实验室允许 部分知名大学 免费使用第一个版本的UNIX 。
1973年∶Ken Tompson和Dennis Ritchie一起用C语言重写UNIX的程序代码,成为比较成熟的操作系统。
70年代∶AT&T成立Unix系统实验室,并致力于商业版本的发行。其中使用者之一就是Berkeley。
70年代后期∶Berkeley下属的BSD部门研究出了自己的UNIX版本。
从此UNIX的BSD版本和AT&T贝尔实验室的版本成为主要的竞争对手。
1980年 微软公司开发了Xenix的UNIX PC版
1981年 SUN公司成立
80年代初 AT&T发行第一个商业版 System Ⅲ
70年代末80年代初 Berkeley发行BSD Release4.2
1983年 SUN发布SunOS、Hewlett-Packard发布HP-UX 、
1991年 Sun Solaris 1.0、Linux 0.02
1993年 NOVELL收购UNIX System实验室,NOVELL为X/Open加上UNIX商标,386BSD 1.0、FreeBSD 1.0、NetBSD 0.8
1994年 Linux 1.0正式推出
1998年 公开源代码
UNIX主流产品介绍
SUN Solaris
HP-UX
IBM AIX
FreeBSD
SCO UNIX
unix是什么意思
因为Unix系统其具有良好的稳定性和强大的数据处理能力,现在一般用在服务器上,有很多版本的,PC上用的有SCO OpenServer和Unixware,IBM公司的叫AIX,HP公司的叫HP-UX,SUN公司的叫Solaris。三、在多处理器架构下运行 Unix系统可在非常多的处理器架构下运行,在服务器系统上有很高的使用率,例如大专院校...
请问哪位能解释一下unix,linux和mac os的关系?
实际上,linux仅仅是linux操作系统中的核心(kernel)。\\x0d\\x0aMac系统是苹果机专用系统,是基于Unix内核的图形化操作系统,一般情况下在普通pc上无法安装的操作系统。\\x0d\\x0a\\x0d\\x0a所以说linux是兼容unix的,或者说是linus写的一种开源的类unix系统\\x0d\\x0a而macos他的内核就是unix ...
能不能介绍一下Unix的相关知识
1973年,D.M.Ritchie研制出系统描述语言C,并应用新的C来改写原来用汇编语言编写的UNIX,这就是V5,这使得UNIX修改更容易,并且具有在不同CPU平台上的可移植性,这便成为UNIX一大重要特点,自此以后,UNIX操作系统和应用程序几乎都用C语言编写,只需拥有相应平台上的C编译器(将C语言转变为相应平台机器语言的翻译软件),便...
unix与linux的区别
区别:1、开源情况 UNIX是商业化的,而Linux是开源的,是免费、公开源代码的。2、硬件适用 UNIX系统大多是与硬件配套的,也就是说,大多数UNIX系统如AIX、HP-UX等是无法安装在x86服务器和个人计算机上的,而Linux则可以运行在多种硬件平台上。可以先学习linux后再学习unix,因为linux可以方便的在虚拟机...
unix是什么?
Unix操作系统可由多个可以动态安装及拆卸的文件系统组成。Unix文件系统主要分为两大类:根文件系统和附加文件系统。根文件系统是Unix系统至少应含有的一个文件系统,它包含了构成操作系统的有关程序和目录,由“\/”符号来表示。附加文件系统是除根文件系统以外的其它文件系统,它必须挂(mount)到根文件系统的某个目录下才能...
谁能详细的介绍一下Unix和Linux的历史
摘要:unix的历史 任何一门知识都是先研究它的历史开始的,因为任何一门知识都不是一下子出现和成熟起来的,研究过去,是为了更了解现在。对于unix更是如此,如果不知道它的历史,就会对现在五花八门的unix搅得眼花缭乱,看过很多关于unix历史的介绍,能真正讲明白的不多,因为it世界本来就变化的快,有的来不及进入历史就...
Unix和Linux的区别是什么呢?
Linux是开发源代码的自由软件,UNIX是对源代码实行知识产权保护的传统商业软件.UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.UNIX(5万美圆)而Linux免费 UNIX是命令行下的系统 linux是加了窗体管理的系统 在对硬件的要求上,linux比...
UNIX和WINDOWS的区别
区别如下所示:1、概念不同。UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构。Windows操作系统是最常见的计算机操作系统,是微软公司开发的操作软件。2、特点不同。UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。提供了丰富的,精心挑选的系统调用,...
以下关于UNIX操作系统的描述中,正确的是( )。
【答案】:B 选项A),UNIX是多用户、多任务的操作系统,用户可运行多个进程;选项B),UNIX的树状结构文件系统有良好的安全性、保密性和可维护性;选项C),UNIX提供了功能强大的Shell编程语言,即外壳语言;选项D),UNIX大部分是由C语言编写,易读、易修改、易移植。
麻烦给我解释一下UNIX,windows,Linux,DOS的区别好吗
Unix 系统(包括 Linux 系统)在设计上是层次化的,从物理硬件、内核、库函数、应用程序、用户界面逐次升高,用户所接触的就是用户界面以及输入输出设备。用户界面可以是非图形化的,也可以是图形化的。粗略地理解,用户界面(不管是图形化的 sh, bash, csh, tcsh 等等,还是非图形化的 Gnome, KDE, X...
象萱洛芬: Cygwin 是 Redhat 公司的产品,它提供了在 Windows 操作系统下的一个 UNIX 环境,它可以帮助程序开发人员把应用程序从 UNIX/Linux 移植到 Windows 平台(当然也是合在Windows平台开发方便移植的UNIX Linux代码),是一个功能强大的...
邛崃市13537022441: unix环境高级编程的编程环境是什么 - ?
象萱洛芬: linux 就可以,要有个gcc 编译器,完全安装就有.unix系统只能装在小型机上,一般的PC机装不了,即使是虚拟机也没用.所以只有在企业研究机构里边才有这种条件.
邛崃市13537022441: UNIX下有没有好用的软件开发环境??
象萱洛芬: Unix环境下程序员大都用 vim 或者 emacs. 不过现在也有很多人用 Eclipse 做 IDE 在 Linux开发. 如果是做Java的,肯定用 Eclipse 的 IDE,如果是做 c/c++ 的,也可以用 Eclipse 的 CDT 插件,不过高手还是用 vim/emacs 的多.
邛崃市13537022441: unix环境编程是什么意思 - ?
象萱洛芬: 你已经理解了70%,unix是一种语言、一个操作系统,linux就是它的一个山寨版.比windows等操作系统都要稳定.像一些银行的服务器都是unix的,安全稳定.
邛崃市13537022441: Unix 环境设计什么意思?
象萱洛芬: Unix 环境设计,也就是在UNIX操作系统内进行设计
邛崃市13537022441: 谈谈你对unix环境和windows环境进行软件开发的不同感受 - ?
象萱洛芬: windows环境,套路性强,让你切实体会什么叫“接口编程”,偏重“应用”型程序开发.由于编译器做的都比较好所以比unix环境相对方便一些.unix环境,我做的大多是后台处理,因此更偏重“功能”,虽然也是有一些套路,但相对更底层,更“自由”一些
邛崃市13537022441: UNIX是指什么 - ?
象萱洛芬: 操作系统liunx那一类的.
邛崃市13537022441: Unix下用什么软件编程?? 比如windows下可以用vc或者vs 那么Unix呢(Solaris10) 是gcc吗 - ?
象萱洛芬: 你说的gcc是一个编译器,多数用来编译C写的程序,但是链接文件不行,所以一般写C或者C++用的是g++,你可以安装一个.如果你习惯了windows下的VC或者VS,并且深深的被Virtual Assist所吸引,一时不能习惯没有智能提示的IDE,那么...
邛崃市13537022441: 简介一下linux,unix ?
象萱洛芬: linux和unix是操作系统的内核,针对该内核有不同的版本,如linux有redhat unix有solary
邛崃市13537022441: 介绍下unix系统??
象萱洛芬: Unix是操作系统老牌,现在演化为:Mac OS , Solaris , FreeBSD , NetBSD , OpenBSD等等其中BSD系列是纯种,另外的是类Unix系统,给你推荐个Unix的论坛 http://www.chinaunix.net/ 可以去上面学习下噢,不懂的可以追问、