2018-03-05 15:07:57 lmseo5hy 阅读数 574

Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为Unix和Linux操作系统是一样的,然而,事实并非如此,以下是两者的区别。

1. 开源性

Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。

2. 跨平台性

Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。

3. 可视化界面

Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。

4. 硬件环境

Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。

5. 用户群体

Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。

相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!

2019-06-19 20:29:52 dyausasd 阅读数 213

上节《UNIX和Linux的区别》中讲到了 UNIX 系统的历史,UNIX 是操作系统的开山鼻祖,是操作系统的发源地,后来的 Windows 和 Linux 都参考了 UNIX。

 

有人说,这个世界上只有两种操作系统:

  • UNIX 和类 UNIX 操作系统;
  • 其它操作系统。

类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD、OpenBSD、Sun Solaris 等,还包括与 UNIX 相似的系统,比如 Linux、QNX、Minix 等,它们都相当程度地继承了原始 UNIX 的特性,有很多相似之处,并且都在一定程度上遵守 POSIX 规范(UNIX 可移植接口规范)。

类 UNIX 系统不都是免费的,有相当一部分是收费的,而且还比较昂贵。

Linux 几乎是最著名的一个类 UNIX 系统,现在风头正盛,甚至有点“喧宾夺主”,剥夺了原来属于 UNIX 的市场份额,但是 UNIX 也经历了时间的考验,其在操作系统发展历程中的地位是不可否认的。

几乎每一门科学学到深入都是要接触 Linux 的,很多专业的软件甚至针对 Linux 做了大量的优化。

除去 Windows,几乎你所知道的每一个系统都是 UNIX 和类 UNIX,而且它们在 PC 普及前就大放异彩。Windows 仅仅占领了 PC,而别的方方面面都被 UNIX 和类 UNIX 占领了,至于其他的操作系统更是不值一提。比如:

  • 服务器、超级计算机、嵌入式、机顶盒领域都有 Linux 的身影;
  • 在手机领域,Android 和 iOS 都是类 UNIX 系统。

总之,除了 Windows,几乎你能叫的出名的都是 UNIX 和类 UNIX 系统。

类UNIX系统详解
图1:维基百科对 UNIX 和类 UNIX 系统的简单

 

类UNIX系统详解
图2:类 UNIX 系统发展史(简明版)

推荐阅读

年薪40+W的大数据开发【教程】,都在这儿!

大数据技术盘点

下一篇linux教程:Linux的优缺点

2007-03-19 14:55:00 haoel 阅读数 152445

其实Unix很简单

 

陈皓

 

很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大多数时候,我发现问这些问题的朋友都有两个特点:

1)对Unix有畏难心理,对其没有信心;

2)喜欢用拿Windows来和Unix做比较。

 

这两种特点就像两个“心理暗示”,暗示着自己Unix很不好学,暗示着Unix很糟糕,不如Windows好。于是,自己也就被自己的这种长期的“暗示”所催眠了。因为,从一开始就有畏难情绪,所以也就觉得Unix不好,觉得非常很吃力,最后还会导致对Unix的厌恶和反感的情绪。所以,为了纠正上述朋友们的“心理暗示”。我想写下这篇文章,想告诉大家,Unix真的很简单。

 

在正式叙述“简单的Unix”之前,我想做几点说明:(以免陷入无意义的争论)

 

1)  本文是站在开发者的角度来说明的,所以,如果有朋友不同意我的观点,请也以开发者的角度来向我提出质问和讨论,本人非常欢迎。

 

2)  本文难免要用Windows来和Unix做对比。这并不代表我不喜欢Windows,也不代表我要叫你放弃Windows。我们也知道这种对比已经没有什么意思了,但因为众多的朋友被Windows先入为主了,所以,我一定要拿Windows来开刀,才能扭转那个“心理暗示”。仅此而已。

 

 

       OK,言归正传。先说Unix的一个最重要的特点——“高内聚,低藕合”!也就是说,Unix下的各种应用程序都和别人不相干。这就是贯穿整个Unix的思维——模块和程序的高度独立性。这样的设计和做法,会让你的系统比较的稳定,也会让你的系统特别地容易管理和维护。Unix下的应用程序们就像一支正规军一样排列地整整齐齐,只要司令(内核)还在,系统是不会因为某个军队的损失而无法自举的。而Windows的应用程序们就像一片树林一样,从地表上看过去,树木们排列地整整齐齐,但是他们的树根在地下却相互缠绕在一起,剪不断,理还乱,异常地复杂。

 

       “高内聚,低藕合”的给Unix造成的结果是,其系统中基本上都是功能单一的小程序,这些小程序就像积木一样,当我们需要构造建一个自定义的建筑时,大多数情况下,我们只需要做的只是一个“搭积木”的简单游戏。Windows建设得富丽堂皇,可惜,别人的“积木”你几乎不可能拿到自己的建筑中来。总是要你模仿或重写。

 

插一句:你是否注意到在网上下载Windows的软件时,会有一种所谓的“绿色软件”?这就是对Windows的最大讽刺,Windows下装一个软件,NDLL放到Windows系统目录下,注册表里写入N个键值,还有很多你不知道的动作。而在Unix装软件,你不用担心你的系统目录下会莫明其妙地多出些乱七八糟的文件。就是copy那么简单,那怕是rpm自动安装,安装完后,你也能够查询到软件安装后对系统所做的改变。所以,你在Unix下分发你的软件时,你会觉得比Windows下要做得简单了许多许多。)

 

       再说说Unix的另一个最重要的特点——“所有的设备都可以像文件一样地操作”。简单吧。所有的调备,文件、打印机、显示器、终端、网络、软盘、磁带、USBCDROM、等等的I/O操作,都以文件描述符的方式进行操作。两个Unix下最重要的系统调用read/write就可以胜任所有设备的I/O了。Unix早就在/dev目录下为你建好了这些文件。使用起来很简单。

 

       也许很多人都觉得Unix的命令行太过复杂。一个命令有着若干的参数,异常地复杂。但之所以今天Unix下的应用程序还在以字符界面为主,这恰好体现了Unix的简单的特征。这也是Unix的另一个特点——“命令的相互支持性”,命令们通过一个管道或是重定向,可以互相联系在一起,再加以Shell脚本的支持,哪怕要实现一些复杂的功能(比如一个小型的文本数据库),也是简单之极。

 

       如果上面的论述依然不能让你信服Unix很简单,那么,让我们来用一些具体地实际的例子来看一下,Unix是如何简单的。让我们试着做下面的这样一个假设:“如果我们在学习编程的时候一开始是学Unix,然后转去做Windows”,那会是怎么样的一个情况?

 

1)  我们在Unix下创建进程,使用fork调用。到了Windows下,我们查了MSDN,发现了一个叫CreateProcess的系统调用可以创建进程,但我们却发现这个系统调用有10个参数。而Unix下的fork却一个参数都没有。这种情况下,你是否会有一种头大的感觉?因为,在Unix下,你根本看不到会有10参数这样复杂的系统调用API

 

2)  我们在Unix下操作文件权限很简单,文件权限分三组(本人,同组,别人),每组都是可读,可写,可执行。两个简单的系统调用chmod/chown就搞定。到了Windows下,如果是NTFS,如果要以程序的方式设置文件权限,呵呵,你需要先了解什么是:SID,什么是DACL,什么是SACL,什么是ACE,还有十几相关的系统API函数等着你。(参看我的《以程序操作NTFS文件权限》)你也许会觉得这么复杂的安全策略是让系统更安全的基础,可以自从Windows出现的那一天以后,在安全方面的表现就没有胜过Unix。这无疑让人感到Windows做了一件吃力不讨好的事。

 

插一句Unix下的用户切换是相当简易方便的。而Windows下的用户切换会导致你需要退出当前用户的前台程序。这导致了Windows下的用户几乎无一例外地都会选择在超级用户的权限下工作/上网,这完全是让自己的机器在裸奔,所以,Windows下的病毒一旦在系统中运行就为所欲为了。而Unix下,很少用户会以root身份操作本机,因为切换用户非常方便。

 

3)  Unix下,用户有ID,用户组有ID,进程/线程都有IDID很简单易懂,就像我们的身份证一样。到了Windows下,用户标识叫Token,进程标识叫Handle(其实也就是一个DWORD的类型),我看到网上很多问题都在问Windows下的Handle的概念问题。我一直在想,为什么微软不取一个简单易懂的术语?要取得那么抽象,那么让人很迷惑。虽然这让Windows看起很NB,但也会因此加大了学习复杂度。(Windows的开发学习复杂度要比Unix复杂多了,而且有太多的看似很高深的术语让人一头雾水)

 

4)  让我们再来看一下用户管理和程序所有者方面的东西。在Unix下,需要你做的是配置NIS服务器和NFS服务器(以Autofs自动mount),简洁,清楚。到了Windows下,与其相似的是一个叫Domain的东西(主域控制器),首先,为了加入域,你需要重启电脑(Unix下只需要配置/etc/nsswitch.conf文件来告诉本机的用户登录源,无需重启),而对开发者来说,Unix的这个配置对程序是完全透明的。而Windows的域用户和本地用户需要一个域名来区分。在程序中切换用户时,Unix只需要setuid/seteuid就行了,Windows对此有三个比较复杂的APICreateProcessAsUser, ImpersonateLoggedOnUser, LogonUser,其复杂度就不用比较了。另外,在Domain方式下,你的Document and Setting目录下的文件,会全部放到Domain服务器上去,你在别的机器上登录时,需要下载这些文件。最后,我倒不担心你和网友的MSN聊天记录会因为你的登录而到处都是,我担心的是,你在这么复杂的管理环境中写出来的代码是否能让别人放心?:-(

 

5)  Unix下,要把自己的程序加入系统的启动服务只需要在/etc/init.d中配置就行了。写下一个有启动停止功能脚本,以特殊命名的方式链接到不同启动模式目录下就行了。Windows下加一个启动服务,如果你不编写程序,估计比较困难。

 

6)  Unix下,如果要取得系统的信息。只需要到/proc目录下去cat那堆文件。所有进/线程的状态、命令行、内存/交换区使用情况、打开的文件描述符,等等,系统的CPU,内存,交换区,内存文件IO,分区,信息,网络,系统运行状态,系统设备,等等,要有多详细就有多详细,而且完全是纯文本的,直接就可以看了。到了Windows下,要穷举系统当前进程的信息,就不是一样很容易的事,更别说要取得别的信息了。

 

 

我很佩服微软把操作系统搞得那么复杂,又是注册表,又是安全策略,又是OLE,又是COM……。每次打开regedit.exe时,我根本不敢碰HKEY_CLASSES_ROOT,因为我看着里面那些成千上万个CLSID,我有点晕菜。

 

1995年以来,10来年过去了。微软推出了多种各式各样的技术。我还记得Visual Studio 6.0中还有两个叫做FoxProJ++的东西,FoxPro来自Foxbase,还有个几年,J++好像就没有几年。ActiveX Control完全是一个失败的技术,而那个叫做VB的编程语言,今天看来,它的确毁了很多很有潜力的程序员。在COM出现的时候,不知道今天还有多少人还记得一个叫MTS的玩意?今天,不知道还有多少人记得有一个叫ODBC的东西?在这种复杂混乱的Windows世界中,是否让你疲于追赶?今天的.NET不知道又有多少技术会随着时间所沉淀?在Windows上面,我们学习了许多的失败技术或是说是过渡技术。而我们的Unix自从上纪70年代以来,就没有多大的变化,而因为Unix应运而生的C语言直到今天依然光彩夺目。我相信这个30多年来久经考验还那么简单的Unix

 

Unix就是这么简单,各位想在Unix下学开发的朋友,Windows那么复杂的操作系统都过来了,你还会怕这么简单的Unix么?

 

 

(转载时请注明作者和出处。未经许可,请勿用于商业用途)

更多文章请访问我的Blog: http://blog.csdn.net/haoel

 

2020-01-01 12:39:21 weixin_43840862 阅读数 15

1 UNIX操作系统

UNIX系统是一个交互式的分时操作系统
1974年《ACM通信》上发表了K. Thompson 和 D. Ritchie的论文“The UNIX Time-Sharing System”,UNIX系统公布于世。
作者:美国BELL实验室
Ken Thompson(K.汤普逊)Dennis Ritchie (D.里奇)(C语言的创始人)

1.1 UNIX操作系统的发展

1965年:麻省理工大学、BELL实验室、通用电器公司组成MAC课题组联合研制Multics操作系统。
Multics操作系统设计目标是要向大的用户团体提供对计算机的同时访问,支持强大的计算能力与数据存储,以及允许用户带需要的时候容易共享他们的数据。
1969年Multics在GE645计算机上运行了,但它既没有能提供预定的综合计算服务,而且连它自己究竟什么时候算达到开发的目标。
BELL实验室退出了该课题组。

Multics操作系统开发失败的原因是当时操作系统设计的指导思想所导致的。
当时操作系统设计的指导思想是“满足所有用户的所有要求”。
UNIX系统的作者认为:操作系统的设计不应也不可能做到“满足所有用户的所有要求”,而应为广大的计算机用户提供一种良好的程序设计环境。

1969年K. Thompson和 D. Ritchie 为了改善他们的程序设计环境,设计了一个纸面的文件系统设计,这个设计后来演化成UNIX系统早期的版本。并在PDP-11计算机上实现,后来Dennis Ritchie创造了C语言, 并用C语言改写了早期的UNIX系统。
1974年在《ACM通信》上发表了“The UNIX Time-Sharing System”的论文,UNIX正式公布于世。

由于UNIX系统生逢其时,品质优秀很快风靡全球,成为当令各种计算机系统的主流操作系统。
目前,国内流行的UNIX操作系统:
SCO UNIX
AT&T UNIX SVR 4X
惠普计算机上的HP-UX
IBM小型机上的AIX
苹果Mac上的AUX
免费的UNIX版本,如Linux、Minix和FreeBSD

1.2 UNIX操作系统的主要特点

1.设计思想的正确合理
UNIX系统的设计者认为操作系统的设计和实现不可能做到满足所有用户的所有要求,而应是“为广大的计算机用户提供一个良好的程序设计环境”。UNIX系统的实践证明了这种设计思想的正确性,后来的Windows 95系统的实践也证明了这一点。

2.生逢其时、选择恰当
在60年代初,产生了多用户计算机,这时人们都在盼望有一个大小适中、功能齐全、使用方便的分时操作系统见世,就在人们翘首以待的时候,UNIX系统产生了。
其次是选择恰当,UNIX系统设计者选择了在PDP-11系列的计算机上实现,当时占据小型计算机的主要市场,为UNIX系统的广泛配置创造了物质条件。

3.特色明显、品质优良
UNIX系统的成功,外部的原因起到了一定的作用,但起决定作用的是UNIX系统内部的原因,这就是UNIX系统有着别的系统无法比拟的特征和优良的品质。使它成为操作系统的一代霸主。

其主要特点是:
⑴ 该系统用高级语言编写,使之易读、易懂、易修改、易移植到别的计算机上。
⑵ 它有一个简单的用户界面—shell
⑶ 它使用了在维护上容易的、实现上是高效的树形结构的文件系统。
⑷ 文件、设备统一处理
⑸ 内核和核外程序的有机结合
⑹ 丰富的核外系统程序

1.3 linux系统简介

linux的起源和发展确实令人惊奇。
它是一个芬兰人Linus Torvalds(二十三岁计算机系学生)的业余发明。但如今已经成长为一个羽翼丰满的32位计算机的操作系统,其性能可与商业的x86UNIX操作系统相媲美。
linux是自由软件,并且在专用的网站上公布了该系统的源代码。因此,引起了全世界操作系统爱好者的兴趣,不断地对linux进行修改和补充,不断地增加功能,用户可以不断地下载更新的版本,并在各种系统配合下进行测试,这使得linux日趋完善和成熟。

2 UNIX文件系统

2.1文件的静态结构

在这里插入图片描述
特别块(管理块)结构:

特别块是在磁盘格式化时建立的,当一个文件子系统安装到系统中时,系统将申请一个内存缓冲区来存放特别块。

在这里插入图片描述
在这里插入图片描述
文件的静态结构
UNIX系统中,一个文件存在要占用如下资源:至少占用一个文件目录项;仅占用一磁盘I节点;占用一个或多个磁盘块(物理块)。
在这里插入图片描述
在这里插入图片描述

2.2文件的索引结构

在这里插入图片描述
在这里插入图片描述
在i结构中的索引表有13个表目,
前10个表目存放文件数据块的地址,采用直接索引;如果文件的长度超过10个数据块;
第11个表目登记的是一次间接索引块的物理块号,该块存放索引表,而不是文件的内容,采用一次间接索引;
第12个表目登记二次间接索引块的物理块号,该块存放二次间接索引表,每个表目中登记的是一次间索引表的物理块号;
第13个表目登记的是三次间接索引块的物理块号,该块存放三次间接索引表,每个表目中登记的是存放二次间接索引表的物理块号。
这种结构对于小于等于10个物理块的文件采用直接索引,可从i结构的索引表中直接取到文件数据块的物理块号,不需要进行任何转换和计算,加快文件存取的速度,提高文件系统的使用效率;对于一些大型文件或巨型文件,系统采用间接索引的方法也可以方便的管理和使用,只不过要付出些代价。因此,不论是几KB仍至几个字节的文件,还是几十MB、甚至更大的文件都能存在于UNIX系统中。

UNIX系统中采用这种方法主要是照顾小型文件,保证对小型文件的存取高效快速,同时又兼顾大型文件和巨型文件。这与UNIX系统的环境有关,UNIX系统的设计者提供以下的统计资料说明他采用这种结构的理由。其统计资料说:在UNIX系统的环境下,小于10个物理块的文件约占所有使用文件的80%,其它文件约占20%,其中巨型文件不到1%。在实际应用中的文件大小的分布情况与这个统计结果是相符的。
在这里插入图片描述
一、三种文件类型
UNIX系统中有普通文件、目录文件和特别文件。
目录文件是由文件目录项组成的文件。
文件目录项由文件名和文件I节点号组成
I节点号(2) 文件名(14)
UNIX系统中文件目录项只包括文件名和I节点号,把通常目录项中的信息放在一个叫索引节点(I节点)的结构中,有两个优点:其一是便于文件的共享,即不同的用户可以通过不同的文件路径名来共享一个文件;其二是加快文件检索的速度。

整个系统有个根目录文件(DOS、WINDOWS系统中有一个根目录区),相当于一棵树的树根,
并有多级目录文件(与DOS概念相同,WINDOWS中叫做文件夹),相当于树枝。
还有许多文件(普通文件和特别文件),相当于树叶。
在这里插入图片描述
二、文件的安装和拆卸
UNIX系统采用树型目录结构,整个文件系统由根文件系统和若干个子文件系统所组成 。
根文件系统是基本文件系统,在系统生成时产生。
子文件系统是驻留其它文件存储介质上的文件系统,例如,一片软盘、一盘的逻辑分区、一卷磁带、一个磁鼓等,在UNIX环境下格式化后成为一个子文件系统,经过UNIX系统提供的安装命令装到系统中,与根文件系统和已经安装在系统中的其它子文件系统一起形成一个完整的文件系统,当某个子系统不再使用时,用拆卸命令将该子文件系统拆卸下来。
踪上所述,在UNIX环境下总只有一个完整的树型目录结构。所以,在UNIX系统环境下使用文件只要给出文件的路径名即可。

三、文件的联接
UNIX系统是一个多用户的操作系统,为了使多个用户能方便地共享系统中的某些文件,UNIX系统提供文件的联接操作(取别名),方法见用户手册。
用户在使用文件之前必须要使打开文件操作,为什么?
文件是存放在磁盘上的。磁盘属于外存储器,它是CPU不能直接访问的存储器,当然,用户就不能直接存取存放在磁盘上的文件。但用户又要使用文件,这样,在使用文件之前,就要在内存中建立存取文件的结构,然后,通过对这个结构的访问来达到对文件的访问。

内存中建立的存取文件的结构,称为文件控制块(FCB),包含文件目录的信息和对文件存取的有关信息。
该结构是在打开文件操作中建立的,并向用户返回FCB的首地址,用户以后使用文件(如读、写)就使用FCB首址。显然,用户要使用具体的内存地址,这对用户来说是非常困难的。
UNIX系统中打开文件的结构包括活动I节点表,系统打开文件表和用户文件描述符表

一、活动I节点
i_flag打开文件的标志
ILOCK:锁位
IUPD:修改标志
IMOUNT:安装点
IWANT:有进程等待
ITEXT:纯正文段
i_count:访问计数
i_dev:文件所在设备号
i_number:I节点号
在这里插入图片描述
二、打开文件表
f_flag:标志
FREAD:读
FWRITE:写
FPIPE:管道
f_count:访问计数
f_inode:指向活动I节点指针
f_offset:读写指针

在这里插入图片描述
三、用户文件描述符表(进程打开文件表)
每个进程有一个用户文件描述符表,存放在进程的user结构中,u.u_ofile[NOFILE]。
NOFILE=15是一常数,表示一个进程最多能同时打开15个文件。

这一个结构类似于一般操作系统中的FCB。

四、打开文件结构之间的关系
在这里插入图片描述
文件共享的三个层次:
1.父子进程共享同一文件,子进程在创建时继承了父进程的所有打开的文件,体现在对某个打开文件表目的共享;

2.不同的用户打开了同一个文件(以不同的文件名)
进程2 open(“/unix/li.c”,READ)
进程3 open(“/user/ll.i”,WRITE)
文件/unix/li.c和/user/ll.i是同一个文件;

3.不同的进程以不同的用途打开同一个文件
进程1
open(“/user1/ll”,READ)
进程3
open(“/user1/ll”,WRITE)

3文件操作系统调用

一、文件系统调用及其它算法的关系
在这里插入图片描述
二.系统调用 open
使用文件之前必须使打开文件操作,UNIX系统中打开文件的系统调用是open,其调用格式是:
fd=open(pathname,flags);
功能:打开一个指定的文件;
输入参数:pathname 要打开文件的路径名
flags 指示打开文件的类型(读或写)
返回参数:fd 文件描述符(一个小的正整数)
若fd=-1则表示系统调用失败,对所有系统
调用都是。

执行过程:
①调用namei()将文件的路径名转换成I节点;
②文件不存在或非法访问,返回-1;
③申请打开文件表项,f_count++;f_offset置0; f_inode指向I节点;
④分配用户文件描述表项,将打开文件表首地址填入;
⑤若打开文件的类型是清文件,则释放该文件占用的所有磁盘块;
⑥返回用户描述表项的编号。

在这里插入图片描述
三.系统调用 creat
调用格式:
fd=creat(pathname,modes);
功能:创建一个新文件;
输入参数:pathname 要创建文件的路径名
modes 指示创建文件的类型(读或写)
返回参数:fd 文件描述符(一个小的正整数)

执行过程:
①调用namei()取得文件路径名的I节点;
②文件存在且不允许访问,则释放I节点,返回-1;
③文件不存在,则申请分配一I节点;
④在其父目录中建立目录项,包括文件名和I节点号;
⑤分配用户文件描述表项,打开文件表首地址填入;
⑥若文件在创建时已存在,则释放该文件占用的所有磁盘块;
⑦返回用户描述表项的编号。

四. 系统调用 close
调用格式:
fd=creat(pathname,modes);
功能:关闭文件;
输入参数:fd 文件描述符
返回参数:无
执行过程:
⑴if(f_count-- > 0) return;
⑵ 释放该表目;
⑶if(i_count-- > 0) return;
⑷ 如果活动I节点修改,则将有关盘上I节点的内存写回到相应盘上I节点;释放此I节点,return;
⑸如果活动I节点未修改,释放此I节点,return。

在这里插入图片描述

五.系统调用read,write
Read 读文件;
write写文件。
调用格式:
n=read(fd,buffer,size);
n=write(fd,buffer,size);
输入参数
fd 文件描述符;
buffer 缓冲区,对于读是将读文件的信息存放在缓冲区中;对于写是将缓冲区中的信息写到文件中;

size 读(或写)信息的长度,单位字节。

返回值:
对于读操作
n=0 读到文件尾
n > 0 实际读的字节数。

对于写操作
n > 0 实际写的字节数,n与size应相等。
执行过程:
读(或写)操作先按文件表中的位移量设置U区中的位移量,然后调用低层读(或写)磁盘块的操作,读完指定的字节数后,返回实际读的字节数。
低层读磁盘块的操作
计算出文件的逻辑块号;
查活动I节点中的文件索引表,找到相应的物理块号;
读磁盘块。

linux系统简介
linux是自由软件,并且在专用的网站上公布了该系统的源代码。因此,引起了全世界操作系统爱好者的兴趣,不断地对linux进行修改和补充,不断地增加功能,用户可以不断地下载更新的版本,并在各种系统配合下进行测试,这使得linux日趋完善和成熟。

2005-11-08 09:28:00 noproblem_jyb 阅读数 532
技术这玩意儿也挺有趣的。同样一种技术,有人说它好,也有人说它不好。说它好的人爱屋及乌,说不好的人恨之入骨。UNIX的fans们对他们热爱的系统顶礼膜拜,但也有不少人偏偏想破除他们的迷信。看看这位,David Chisnall,把UNIX系统上为之骄傲的特性罗列为十大缺陷(http://www.informit.com/articles/article.asp?p=424451&seqNum=1),在字里行间处处流露出对他们的不满。而Andrew  Hunt和David Thomas在Progmatic Programmer中却对这些特性推崇备至。如果把他们放到一起,必然会在BSS上在此引发回复数量以百计的口水大战。
罗素说,幸福的本源在于参差多态。有不同的意见才会把事情做的更好。反观国内有些现象,全国人民一片呼声,中间有多少是真的呢?

Unix 发展史

阅读数 3705

gnu unix linux

阅读数 70

没有更多推荐了,返回首页