关闭

UNIX/Linux/BSD、POSIX、GNU

标签: UNIXLinuxPOSIXGNU
2095人阅读 评论(0) 收藏 举报
分类:

UNIX来源  

      Bell实验室的Ken Thompson开始利用一台闲置的 PDP-7计算机开发了一种多用户,多任务操作系统。很快,Dennis Richie加入了这个项目,在他们共同努力下诞生了最早的UNIX。Richie受一个更早的项目——MULTICS的启发,将此操作系统命名为 Unix。早期UNIX是用汇编语言编写的,但其第三个版本用一种崭新的编程语言C重新设计了。C是Richie设计出来并用于编写操作系统的程序语言。通过这次重新编写,Unix得以移植到更为强大的 DEC PDP-11/45与11/70计算机上运行。后来发生的一切,正如他们所说,已经成为历史。Unix从实验室走出来并成为了操作系统的主流,现在几乎每个主要的计算机厂商都有其自有版本的Unix。


POSIX来源

     随着UNIX成长,后来占领了市场,公司多了,懂得人也多了,就分家了。而“UNIX”这个名字由于法律关系,谁也不能说自己的操作系统是“UNIX”而只能说是“UNIX兼容”系统了。所以现在“UNIX”系统严格意义上说是不存在的,存在的只是一个遥远的传说。那么现在那些Solaris,AIX,IRIS都是什么呢?那些都是各公司在他们硬件平提上作的商业UNIX,这些系统都遵循一个叫POSIX的古怪标准,对了,这个标准呢,是后来UNIX太多太乱,大家编程接口甚至命令都不一样了所以没办法座下来商量的一个协议。


Linux来源

        Linux起源于一个学生的简单需求。Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统。Linus 对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分发。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码。它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。


GNU来源

   GNU就是GNU's Not Unix的缩写, GNU 的创始人Stallman 认为UNIX虽然不是最好的操作系统,但是至少不会太差,而他自信有能力把UNIX 不足的地方加以改进,使它成为一个优良的操作系统,就是名为GNU的一个同UNIX兼容的操作系统,并且开发这 个系统的目的就是为了让所有计算机用户都可以自由地获得这个系统。任何人都可以免费地获得这个系统的源代码,并且可以相互自由拷贝GNU 是由自由软件基金会 (Free Software Foundation,FSF)的董事长Richard M. Stallman (RMS)于1984年发起的,如今已经有十几年的历史了。


    GNU 开始的策略就是先开发UNIX已经有的程序(因为计划中GNU将会是一个与UNIX兼容的操作系统,而UNIX下的标准使用界面已经非常完善了,所以先依照这个标准开发应用程序,将来GNU自己的系统核心一出来,就立即可以使用所有先前开发的GNU 应用程序),因此会先有emacs,GCC等工具软件开发出来。其中GCC更是GNU计划自立更生的一个重要步骤(不需要依靠商业软件来产生/编译整个GNU系统),如今这套程序开发工具已经很成熟了。


   下一步要做的就是开发GNU的核心--Hurd了,只要Hurd一开发出来,GNU 就是一套能够自我开机,真正自给自足,完整的自由操作系统。Hurd是基于Mach这个微内核(micro kernel)上的操作系统核心。以后会使用尤他大学的Mach4(一个更为方便和快速的微内核),由于Hurd基于Mach,所以只要Mach移植到什么机器上,Hurd也立刻就是这种硬件平台的操作系统,就这一点而言,它是一种很前卫的操作系统。


   但是,GNU的操作系统核心Hurd一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。自由软件基金会目前有一套以Linux为核心的GNU系统计划。这个计划就是自由软件基金会支持的 Debian Linux。 Debian Linux 是GNU软件与公共软件(Public Domain Software)最彻底的结合,它是一套完全由GNU和公共软件配置起来的,而且具有商业操作系统水平的操作系统。


   Linux加入GNU之后,成了“自由的OS”,称为“GNU/Linux”。


BSD来源

          BSD 则代表“Berkeley Software Distribution,伯克利软件套件”,其源于对加州大学伯克利分校所开发的贝尔实验室UNIX的一系列修改,它最终发展成一个完整的操作系统,现在有多个不同的BSD分支。今天,“BSD”并不特指任何一个BSD衍生版本,而是类UNIX操作系统中的一个分支的总称。

BSD分支

以下是通常认可的三个“主流” BSD 操作系统:

  • FreeBSD: FreeBSD 是最受欢迎的 BSD,针对高性能和易用性。它支持英特尔和 AMD 的32位和64位处理器。
  • NetBSD: NetBSD 被设计运行在几乎任何架构上,支持更多的体系结构。在他们的主页上的格言是"理所当然,我们运行在 NetBSD 上"。
  • OpenBSD:OpenBSD 为最大化的安全性设计的 —— 这不仅仅它宣称的功能,在实践中也确实如此。它是为银行和其他重要机构的关键系统设计的。

还有两个其他的重要 BSD 操作系统:

  • DragonFly BSD: DragonFly BSD 的设计目标是提供一个运行在多线程环境中的操作系统 —— 例如,计算机集群。
  • Darwin / Mac OS X: Mac OS X 实际上基于 Darwin 操作系统,而 Darwin 系统基于 BSD。它与其他的 BSD 有点不同,虽然底层内核和其他的软件是开源代码(BSD 代码),但操作系统的大部分是闭源的 Mac OS 代码)。苹果在 BSD 基础上开发了 Mac OS X 和 iOS,这样他们就不必写操作系统底层,就像 谷歌在 Linux 基础上开发 android 系统一样。

linux与BSD

1、许可证

         许可证是典型的差异,虽然它不会对大多数人产生影响。

         Linux 使用 GNU 通用公共许可证,即 GPL。如果你修改了 Linux 内核,并将其分发,你就必须放出您的修改的源代码。

         BSD 使用 BSD 许可证。如果你修改了 BSD 内核或发行版,并且发布它,你根本不需要必须发布其源代码。你可以自由地对你的 BSD 代码做任何你想做的事情,你没有义务发布的你修改的源代码,当然你想发布也行。

         两者都是开放源码的,但是以不同的方式。人们有时会陷入关于哪种许可证是“更自由”的辩论。GPL 可以帮助用户以确保他们可以拥有 GPL 软件的源代码,并限制开发人员迫使他们开放代码。BSD 许可证并不能确保用户可以拥有源代码,而是给开发人员选择是否公布代码的权利,即使他们想要把它变成一个闭源项目。

2、使用

       Linux 显然比 FreeBSD 更受欢迎。例如,Linux 往往会比 FreeBSD 更早提供新硬件的支持。BSD 有一个兼容包可用,使之能像大多数的其他软件一样原生的执行 Linux 二进制程序。

        如果您使用过 Linux, FreeBSD 不会让你感觉到太大的不同。如果把 FreeBSD 作为桌面操作系统,你也可以使用相同的 GNOME,KDE 或 Xfce 桌面环境,你也可以在BSD上使用 Linux 上的大多数的其他软件。有一点需要注意,FreeBSD 不会自动安装的图形化桌面,所以你要花相对于 Linux 更多的心思来照顾你的BSD。BSD 更守旧一些。

        FreeBSD 的可靠性和稳定性也许更适合作为服务器的操作系统。而厂商也会选择 BSD 而不是 Linux 作为其操作系统,因为这样他们就不必放出他们修改的代码。

         如果你是一个 PC 桌面用户,你真的不需要太过在意 BSD。你可能会喜欢 Linux,因为它具有更先进的硬件支持,更容易安装,具有现代操作系统的特点。如果你关注服务器或嵌入式的设备,你可能会更喜欢 FreeBSD。

         我们可能会听到一些人说他们在桌面电脑上使用 FreeBSD,你当然也可能是其中之一!但像 Ubuntu 或 Mint 一样的开源操作系统对于多数用户来说更体验良好和更先进些。



  



1
0
查看评论

Unix/Linux的System V、BSD、Posix概念

1. System V和BSD  Unix操作系统在操作风格上主要分为System V和BSD(目前一般采用BSD的第4个版本SVR4),前者的代表的操作系统有Solaris操作系统,在Solaris1.X之前,Solaris采用的是BSD风格,2.x之后才投奔System V阵营。后者的代表的操作...
  • qq_29344757
  • qq_29344757
  • 2017-11-28 18:23
  • 307

SystemV和BSD的区别

目前,Unix操作系统不管其内核如何,其操作风格上主要分为SystemV(目前一般采用其第4个版本SVR4)和BSD两种。其代表操作系统本别是Solaris和FreeBSD。当然,在SunOS4(Solaris1.x)之前,Solaris采用了BSD的风格,而2.x之后,Solaris投奔了Syst...
  • taolinke
  • taolinke
  • 2012-02-24 10:36
  • 3455

posix 标准, 很不错的linux和unix的文档

  • 2010-04-28 16:03
  • 5.67MB
  • 下载

Linux 程序设计学习笔记----POSIX 文件及目录管理

问题引入
  • hu1020935219
  • hu1020935219
  • 2014-07-26 15:21
  • 2619

Linux进程同步之POSIX信号量

POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分。在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V信号量的系统接口。信号量作为进程间同步的工具是很常用的一种同...
  • anonymalias
  • anonymalias
  • 2013-07-01 22:14
  • 10848

Linux—— Posix IPC

<br />最好的参考资料:<br />1.师从互联网。<br />2.UNP v2 Posix IPC的相关章节2、5、10、13。<br />3.Linux man 命令。<br />    &#...
  • satanwxd
  • satanwxd
  • 2011-03-18 16:07
  • 5901

POSIX C和ANSI C、GNU C以及ISO C有什么区别?

K&RC  1978年,丹尼斯·里奇(Dennis Ritchie)和BrianKernighan合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序设计师称作“K&RC”,第二版的书中也包含了一些ANSI C的标准。K&RC主要介绍...
  • Lina_ACM
  • Lina_ACM
  • 2016-07-18 10:49
  • 2047

【Linux】Posix信号量操作中的函数

主要函数 sem_init #include <semaphore.h\ int sem_init(sem_t *sem, int pshared, unsigned int value); Link with -lrt or -pthread. sem_init函数是posix信号量操...
  • vickytong1018
  • vickytong1018
  • 2017-03-28 09:36
  • 372

Linux进程通信之POSIX消息队列

消息队列是Linux IPC中很常用的一种通信方式,它通常用来在不同进程间发送特定格式的消息数据。 消息队列和之前讨论过的16.1管道和FIFO有很大的区别,主要有以下两点: l 一个进程向消息队列写入消息之前,并不需要某个进程在该队列上等待该消息的到达,而管道和FIFO是相反的...
  • anonymalias
  • anonymalias
  • 2013-08-07 08:53
  • 11849

linux--posix多线程编程----第一篇

一   线程创建 1.1 线程与进程 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。 线程...
  • u010358881
  • u010358881
  • 2015-09-25 14:14
  • 589
    个人资料
    • 访问:236429次
    • 积分:3833
    • 等级:
    • 排名:第9912名
    • 原创:131篇
    • 转载:1篇
    • 译文:0篇
    • 评论:59条
    博客专栏
    感谢打赏-支付宝二维码
    支付宝
    最新评论