Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103067099
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-19 16:30:24

UNIX是一个强大的多用户,多任务操作系统,支持多种处理器架构,最早由Ken Thompson,Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。

这篇文章以下问题的解答: 
  
       6.1)  声明,介绍及感谢。 
       6.2)  Unix 简史 
       6.3)  主要的 Unix 流派 
       6.4)  Unix 的标准化 
       6.5)  你所用的 Unix 是哪一种流派。 
       6.6)  请简要介绍一些知名的 (商业化/PD) Unix 
       6.7)  即时的 Unix 
       6.8)  Unix 用语汇编 
 
  
 6.1)  声明,介绍及感谢。 
  
     我并无法保证以下内容的完整性及正确性。我只是利用有限的时间尽量去做 
     (常碰到互相冲突的资料),未来还有很多要做。我希望能持续改进这份文 
     件。欢迎您的批评与指教:。 
  
     首先让我们先为 UNIX 下个简短的定义。我们所提的 Unix 指的是一个通 
     常是由 C 写成的作业系统,它有阶层式的档案系统,统合了档案和装置(device) 
     I/O,其系统函式呼叫(system call)介面包含了如 fork(),pipe() 等服务, 
     而且它的使用者介面包含 cc,troff,grep,awk 之类的工具及某一种 
     shell。UNIX 过去是 USL(AT&T) 的注册商标,现在则是 X/Open 的注册 
     商标。本文所指的 UNIX 是一般通用的意义,而不是那个注册商标。 
  
     绝大多数的 Unix 或多或少都用了来自 AT&T(现在则是 Novell)的程式 
     码(大部分的 Unix 里面可能都还有使用第一版 C 语言所写的程式), 
     但是也有些是自己从头写一个一模一样的 Unix。(就是写得和 Unix 完全 
     相容但是却没有用到 AT&T 的程式码。) 
  
     此外还有一些建构于别种 OS 上的 Unix-like 环境,例如 VOS;以及向 UNIX 
     借用灵感的的 OS,例如 MS-DOS。这些都不在本文的讨论范围里。对即时( 
     real-time)的 Unix 本文也讨论得不多。 
  
     UNIX 的流派实在多得令人难以置信。主要的原因是因为 Unix 的原始程式容易 
     取得、修改与移植。一般厂商的典型作法是以某一流派为主体再加入其他流 
     派的特色。如此一来又产生了另一个新的流派。目前 Unix 有数百款,如果 
     说有一种可当成圭臬的话,那应该是 System V 吧。 
  
     本文的内容大部份取自于网路上流传的资讯。如果取自其他来源,则会在适当的章 
     节中加以说明。 
  
      特别感谢:, , 
     , , 
     , , , 
     , ], 
     , 
     , , 
     jpazer@usl.com,ym@satelnet.org,merritt@gendev.slc.paramax.com, 
     , 
     bud@heinous.isca.uiowa.edu,pcu@umich.edu,quinlan@yggdrasil.com, 
     , 
     , , 许多我忘了名字的人, 
     以及许多我曾拜读他们文章的人。 
  
  
 6.2)  Unix 简史 
  
     Unix 的历史开始于 1969,Ken Thompson、Dennis Ritchie (K&R 里的那个 
     R) 与一群人在一部『位于角落且乏人问津的 PDP-7』上进行的一些工 
     作,后来这个系统变成了 Unix。"UNIX" 这个字(最初是写成 Unics, 
     Uniplexed Information and Computering System)有一点玩弄 "Multics" 这个字 
     的意味。 
  
     最初十年间,Unix 的发展基本上都是在 Bell Labs 里完成的。最初的几个 
     版本称为 "Version n" 或 "Nth Edition" ,是给 DEC 的 PDP-11(16 bits) 与 
     其下一代产品 Vax(32 bits)用的。主要的几个版本为: 
  
     V1 (1971):  第一版的 Unix,以 PDP-11/20 的组合语言写成。包括档案系统 
         (file system)、fork()、roff、ed 等东西。是用来给 AT&T 的专利部门 
         处理文件用的。Pipe() 出现于 V2。 
 
     V4 (1973):  以 C 语言从头写过,这或许是 OS 历史上最重要的一个事 
         件,这表示 Unix 修改容易,可以几个月内移植到新的硬体架构上。最 
         初 C 语言是为 Unix 设计的,所以 C 与 Unix 间有紧密的关系。 
  
     V6 (1975):  第一个在 Bell Labs 外(尤其是大学中)广为流传的 Unix 版 
         本。这也是 Unix 歧异的起点与广受欢迎的开始。1.xBSD(PDP-11) 就 
         是由这个版本衍生出来的。J. Lions 的“A Commentary on the Unix 
         Operating System" 也是以 V6 为本。 
  
     V7 (1979):  在许多 Unix 玩家的心目中,这是『最后一个真正的 UNIX』, 
         也是『空前绝后的一个 Unix』[Bourne 说的],这个版本包括一个完整 
         K&R C、Bourne shell。V7 移植到 VAX 上称为 32V。 V7 的 kernel 
         只有 40 Kbytes! 
  
     底下列出 V7 的系统呼叫,供「后进之辈」们凭吊瞻仰: 
         _exit, access, acct, alarm, brk, chdir, chmod, chown, 
         chroot, close, creat, dup, dup2, exec*, exit, fork, fstat, 
  
         ftime, getegid, geteuid, getgid, getpid, getuid, gtty, 
         indir, ioctl, kill, link, lock, lseek, mknod, mount, 
         mpxcall, nice, open, pause, phys, pipe, pkoff, pkon, 
         profil, ptrace, read, sbrk, setgid, setuid, signal, stat, 
         stime, stty, sync, tell, time, times, umask, umount, 
         unlink, utime, wait, write. 
  
     以上这些 "Vn" 版都是由 Bell Labs 里?nbsp;Computer Research Group(CRG) 
     发展的。另一个Unix Support Group(USG) 负责支援服务。Bell Labs 里还 
     有另一个与 Unix 发展相关的团体 Programmer's WorkBench(PWB) 则做出 
     了 sccs、named pipe 及一些其它的东西。USG 与 PWB 后来于 1983 年 
     合并成 Unix System Developement Lab。 
  
     此外 Bell Labs 在 Columbus 的分支机构,负责发展 Operations Support 
     System 也做了一版的 Unix 称为 CB Unix (Columbus Unix)。System V IPC 
     就是从 CB Unix 来的。 
  
     到了1980 年代 Bell labs 未放弃 Unix。CRG 仍继续发展 V 系列的 
     Unix (Stroustrrup 在它的 C++ 第二版里就提到了 V10),不过并未对外发 
     表。目前发展 Unix(System V) 的公司是 Unix System Laboratories(USL)。 
     USL 本为 AT&T 所有,'93 年初被 Novell 收购。Novell 于 '93 年末将 
     "UNIX" 这个注册商标转给 X/Open。 
  
     除了 AT&T 所属的机构外,有不少地方也对 Unix 的改进做出了贡献,例 
     如 Berkeley 就自成一大流派。有不少厂商(尤其是卖工作站的)也对 Unix 
     的发展有所贡献(如 Sun 的 NFS)。 
  
     对任何对 Unix 有兴趣的人而言 Don Libes 与 Sandy Ressler 所写的 "Life 
     with Unix" 是一本有趣的书。此书讲了许多 Unix 的历史与发展及一些轶 
     事。本文多采此书之说。 
  
     /* 译注: Life with Unix 在台湾并没有书局代理进口, 非常可惜! 
        这本书里面有很多关于 Unix 的故事, 有兴趣可以来我们这儿泡泡茶, 
        看看这本故事书 */ 
  
  
 6.3)  主要的 Unix 流派 
  
     目前为止,UNIX 有两大流派:那就是 AT&T 的 System V (读 five, 不读 v) 
     与 BSD (Berkeley Software Distribution)。SVR4 是两大流派融合后的产物。 
     '91 年底,与 System V 针锋相对的 Open Software Foundation 推出了 OSF/1, 
     或许 OSF/1 会改变市场生态。 
  
     /* 译注:由今日('95)观之,OSF/1 应该是无法挑战 System V 了 */ 
  
     以下是 System V、BSD、OSF/1 的主要版本以及特色。 
  
     AT&T 的 System V。Intel 系列的机器多半使用此系列。移植版本最多的 Unix, 
     当然在移植时都会加入一些由 BSD 发展的有用功能,例如 csh、job control、 
     termcap、curses、vi、symbolic link。目前 System V 的发展是由 Unix 
     International(UI) 负责监控。UI 的成员包括 AT&T、Sun 等。 
     网路讨论区: comp.unix.sysv[23]86。主要版本: 
  
          - System III (1982): AT&T 第一个拿来卖钱的 UNIX 
            - FIFOs (named pipes)  (later?) 
  
          - System V (1983): 
            - IPC package (shm, msg, sem) 
  
          - SVR2 (1984): 
            - shell 函数 (sh) 
            - SVID (System V Interface Definition) 
  
          - SVR3 (1986) for ? platforms: 
            - STREAMS (从 V8 得来的灵感), poll(), TLI (网路软体) 
            - RFS 
            - 共用程式库(shared libs) 
            - SVID 2 
            - demand paging (如果硬体有支援的话) 
  
          - SVR3.2: 
            - 并入 Xenix (Intel 80386) 
            - 网路 
  
          - SVR4 (1988), 融合了 System V、BSD、SunOS 是各种 UNIX 中 
            的主流 
            - 取自 SVR3 者: 系统管理, terminal 界面, 印表机 (from BSD?), 
              RFS, STREAMS, uucp 
            - 取自 BSD 者: FFS, TCP/IP, sockets, select(), csh 
            - 取自 SunOS 者: NFS, OpenLook GUI, X11/NeWS, 
              具有记忆体映对档案的虚拟记忆体子系统(virtual memory 
              subsystem with memory-mapped files), 共用程式库 
              (!= SVR3 ones?) 
            - ksh 
            - ANSI C 
            - 国际化(Internationalization) (8-bit clean) 
            - ABI (Application Binary Interface -- routines instead of traps) 
            - POSIX, X/Open, SVID3 
  
          - SVR4.1 
            - 非同步 I/O (from SunOS?) 
  
          - SVR4.2 (based on SVR4.1ES) 
            - Veritas FS, ACLs 
            - 动态载入核心模组 
  
          - Future: 
  
            - SVR4 MP (多处理器) 
            - 使用 Chorus 微核心? 
  
     Berkeley Software Distribution (BSD)。VAX、RISC、各式工作站多用之。 
     比起 System V 来 BSD 的变动比较快而且学术研究的味道比较浓一点。 
     Unix 之所以能够流行,BSD 居功阙伟。许多对 Unix 的加强改进都是由 
     BSD 先做出来的。在 UCB (University of California at Berkeley) 中负责 BSD 
     的是 Computer System Research Group(CSRG)。CSRG 已于 1992 年关门大吉。 
     网路讨论区: comp.unix.bsd。主要的版本如下: 
  
          - 2.xBSD (1978) 给 PDP-11 用的, 这个系统好像还活著的样子(1992 
            还推出了 2.11BSD!). 
            - csh 
  
          - 3BSD (1978): 
            - 虚拟记忆体 
  
          - 4.?BSD: 
            - termcap, curses 
            - vi 
  
          - 4.0BSD (1980): 
  
          - 4.1BSD (?): 后来 AT&T CRG 版本皆以此为本 
            - job 控制 
            - automatic kernel config 
            - vfork() 
  
          - 4.2BSD (1983): 
            - TCP/IP, sockets, ethernet 
            - UFS: 长档名, symbolic links 
            - 新的 reliable signals (SVR3 采用了 4.1 的 reliable signals) 
            - select() 
  
          - 4.3BSD (1986) for VAX, ?: 
          - 4.3 Tahoe (1988): 4.3BSD 附加对 Tahoe(一款32位元的超级迷你电脑) 
            的支援及一些新东西 
            - Fat FFS 
            - 新的 TCP 演算法 
          - 4.3 Reno (1990) for VAX, Tahoe, HP 9000/300: 
            - 大部份的 P1003.1 
            - NFS (from Sun) 
            - MFS (记忆体档案系统) 
            - OSI: TP4, CLNP, ISODE's FTAM, VT and X.500;  SLIP 
            - Kerberos 
  
          - Net1 (?) 与 Net2 (June 1991) 磁带: BSD 中不侵犯 USL 版权的部份 
  
          - 4.4BSD (alpha June 1992) for HP 9000/300, Sparc, 386, DEC, others; 
            已经不支援 VAX 与 Tahoe; 有两个版本, 一个是 lite (大约是 Net2 的 
            内容,加上修正与新的架构); 另一个是 encumbered (内容一应俱全,但需 
            USL 授权): 
            - 以 Mach 2.5 为基础的新型虚拟记忆体系统 (VMS), 
            - 虚拟档案系统介面, log-structured 档案系统, 本地档案系统 
              的大小可达 2^63, NFS (可以免费流传,可以跟 Sun 的 NFS 并存, 
              架在 UDP 或 TCP 之上) 
            - ISO/OSI 网路支援 (以 ISODE 为基础): TP4/CLNP/802.3 以及 
              TP0/CONS/X.25, session 及更高层的协定则放在 user space; 
              FTAM, VT, X.500。 
  
              /* 
                 译注: FTAM 跟 TCP/IP 网路的 ftp 协定相当 
                       VT 则跟 telnet 相当, X.500 则是 directory service 
              */ 
  
            - 大部分是 POSIX.1 (特别是新增的 SV 形式终端机驱动程式),有很多 
              POSIX.2, 改进过的 job control; ANSI C 表头档 
            - Kerberos 以整合入系统内许多地方 (包含 NFS) 
            - TCP/IP 加强 (包含表头预测, SLIP) 
            - 重要的核心修改 (新式系统呼叫惯例, ...) 
            - 其他改进: FIFOs, 以位元组为范围做档案锁定 
            正式的 4.4BSD 版本原来预计在 alpha 版 6 个月后发表。 
  
            /* 译注: 结果是在 '93 年六七月间发表 */ 
  
     Open Software Foundation(OSF) 于 1991 年底推出了OSF/1。OSF/1 需要 
     SVR2 授权。符合 SVID 2、SVID 3、POSIX、X/Open 等标准。 
     Apollo、Dec、HP、IBM 等大厂商都是 OSF 的成员。 
  
          - OSF/1 (1991): 
            - 以 Mach 2.5 的核心为基础 
            - 对称式多重处理, 平行化的核心, 处理绪(thread) 
            - 逻辑式容量(logical volumes), 磁碟镜射(disk mirroring), 
              UFS (原生的), S5 FS, NFS 
            - 系统安全之加强(B1 加一些 B2, B3 或 C2), 4.3BSD 的系统管理 
            - STREAMS, TLI/XTI, sockets 
            - 共用程式库, 动态程式载入器 (包括核心) 
            - Motif GUI 
  
          - Release 1.3 (Jun 94) 
            - 以 MACH 3.0 的微核心为基础 
            - 符合目前规格 1170 草案的标准 
             (在 X/Open 的 Fast Track 程序中考虑过要将此标准化) 
            - Data Capture I/F, Common Data Link I/F, 
            - 支援ISO 10646 与 64-bit 
            - 以 Mach 3.0 为基础的 OSF/1 MK (mircokernel) 
  
     以上关于 Unix 主要流派的列表或许该把 Microsoft 的 Xenix 也列出,因 
     为有不少 Unix 的分支是拿 Xenix 去改的。Xenix 是从 V7、System III、 
     System V 改出来的,外观没什么重大的改变,内部则为了求得在微电脑上 
     使用时有较好的表现而做了小的更动。 
  
     关于 Unix 两大流派的内部有两本好书可供参考。 
       - System V: "Design of the Unix Operating System", M.J. Bach. 
       - BSD: "Design and Implementation of the 4.3BSD Unix Operating System", 
         Leffler, McKusick, Karels, Quaterman. 
     关于 OSF/1 的介绍可参考 O'Reilly 出版的 "Guide to OSF/1, A Technical 
     Synopsis" 一书。关于 SunOS,可参考 Summer 1989 USENIX Proceedings 
     里的“Virtual Memory Architecture in SunOS" 与 "Shared Libraries in 
     SunOS"。 
  
  
     92 年 4 月号的 Unix Review 有一系列关于各种 Unix 之发展方向。BSD- 
     FAQ极有参考价值,本文中所提到的几个网路讨论区也值得看看。 
  
  
 6.4)  Unix 的标准化 
  
      目前(95年初) Unix 标准化的主要参与者: 
  
       - Novell 在 93 年初买下 USL 成为原始程式的拥有者。 
       - X/Open 可决定谁能使用 "UNIX" 这个商标当产品名称。 
       - OSF 具有双重身分:其一为 OSF/1 与 Motif 的发展者,其二为 COSE 
         之发展的监控组织。 OSF 于 1994 年重组后,Sun 成为了 OSF 中 
         的一员,OSF 与 X/Open 之间的关系也正常化了。 
       - IEEE 订定 POSIX 与 LAN 的相关标准。 
       - IBM、Apple、Motorola、Bull 以及其他厂商合组了 PowerOpen 来推动 
         PowperPC。别把它与一个也叫做 PowerOpen 的图形环境搞混了。 
  
      底下是一些与 Unix 有关的标准之简述: 
  
       - IEEE: 
         - 802.x (LAN) standards (LLC, ethernet, token ring, token bus) 
         - POSIX (ISO 9945?): Portable Operating System I/F (Unix, VMS 
           and OS/2!) (目前唯一已定案的标准?) 
           - 1003.1:  函数库(大部分是 system call) -- 除了 signals 与 
                      terminal 界面外多取自于 V7 
           - 1003.2:  shell 与公用程式 
           - 1003.3:  测试方法与合格标准 
           - 1003.4:  real-time: binary semaphores, process memory 
                      locking, memory-mapped files, shared memory, 
                      priority scheduling, real-time signals, clocks and 
                      timers, IPC message passing, synchronized I/O, 
                      asynchronous I/O, real-time files 
  
                      /* 译注: 翻了反而看不懂... :) 
                      即时性: 双态信号、执行体记忆体锁定、记忆体映对档案、 
                      共用记忆体、优先序排程、即时通告、时脉与定时器、 
                      IPC 讯息传送、同步输出入、非同步输出入、即时档案。 
                      */ 
  
           - 1003.5:  Ada language bindings 
           - 1003.6:  系统安全 
           - 1003.7:  系统管理(包括印表) 
           - 1003.8:  透通式档案存取(transparent file access) 
           - 1003.9:  FORTRAN language bindings 
           - 1003.10: 高速计算(super computing) 
           - 1003.12: 与协定种类无关的介面(protocol-independent I/Fs) 
           - 1003.13: 即时外观(real-time profiles) 
           - 1003.15: 高速计算批次处理介面(supercomputing batch I/Fs) 
           - 1003.16: C-language bindings (?) 
           - 1003.17: directory services 
           - 1003.18: POSIX standardized profile 
           - 1003.19: FORTRAN 90 language bindings 
  
       - X/Open (由厂商筹设的组织, 成立于 1984 年): 
         - X/Open Portability Guides (XPGn): 
           - XPG2 (1987), 非常倾向 SV 
             Vol 1:  命令与公用程式 
             Vol 2:  系统呼叫与函数库 
             Vol 3:  terminal 界面(curses, termio), IPC (SV), 
                     国际化 
             Vol 4:  程式语言 (C, COBOL!) 
             Vol 5:  资料管理(ISAM, SQL) 
           - XPG3 (1989) adds: X11 API 
           - XPG4 (1992) adds: XTI? 22 个元件 
         - XOM 系列的介面: 
           - XOM (X/Open Object Management) 需遵循的通用介面机制(generic 
             I/F mechanisms for following) 
           - XDS (X/Open Directory Service) 
           - XMH (X/Open Mail ??) 
           - XMP (X/Open Management Protocols) -- 不是 Bull's CM API? 
         - X/Open 此时已有权管理 "UNIX" 商标 ('93 年底); 
         - "Spec 1170" 
           - 此规格目前正在筹备当中,是一个共通的 API, 要使用 UNIX 这个 
             名称的厂商必需遵循此 API 的规格。这是结合 SVID、OSF 的 AES 
             与其他东东而成。 
  
       - AT&T 
         (在 1994 年后这些已经无关紧要了? 现在是谁负责 SVID, TLI, APLI?) 
         - System V Interface Definition (SVID) 
           - SVID1 (1985, SVR2) 
             Vol 1:  系统呼叫与函数库(类似XPG2.1) 
           - SVID2 (1986, SVR3) 
             Vol 1:  系统呼杏牒

阅读(1196) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~