




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
01第一二次课UNIX系统简介01第一二次课UNIX系统简介1课件原作者:刘日升教授杨芙清、仲萃豪、孙玉方、刘日升等是开拓我国UNIX操作系统事业的先驱者。孙玉方(中科院软件所副所长,红旗LINUX的创始人)。二人第一次在中国介绍UNIX,第一次讲授UNIX,剖析UNIX内核。是中国接触UNIX的先辈。刘日升;孙玉方;UNIX操作系统分析报告[J];计算机研究与发展;1982年09期课件原作者:刘日升教授2最新01第一二次课UNIX系统简介课件3最新01第一二次课UNIX系统简介课件4最新01第一二次课UNIX系统简介课件5最新01第一二次课UNIX系统简介课件6最新01第一二次课UNIX系统简介课件7最新01第一二次课UNIX系统简介课件8一、UNIX历史
Unix的生命力
Unix起源与历史Unix当前流行版本Unix标准化一、UNIX历史Unix的生命力9UNIX的生命力Unix诞生于1969年,比PC机、工作站、微处理器甚至视频显示终端都要早,与第一块半导体存储器是同一时代的古物。按照计算机工业的标准,那已经是好几个地质纪年前的事了。世界上第一台PC机是由IBM公司在1981年推出。英特尔公司成立于1968年,1971年11月15日:世界上第一块个人微型处理器4004诞生。1972年:8008微处理器。1974年:8080微处理器。1978年:8086-8088微处理器Unix比其它任何操作系统都更广泛地应用在各种机型上。没有哪一种操作系统能像Unix那样,能同时在作为研究工具、定制技术应用的友好宿主机、商用成品软件平台和互联网技术的重要部分等各个领域都大放异彩。UNIX的生命力Unix诞生于1969年,比PC机、10Unix的生命力和适应力令人称奇。不变的东西有很多:语言、系统调用、工具用法——它们积年不变,甚至可以用上数十载。而在其它操作系统中则无法预判什么东西会持久不变,有时候甚至整个操作系统都会被淘汰。Unix的稳定和成功在很大程度上归功于它与生俱来的内在优势,归功于KenThompson,DennisRitchie,BrianKernighan,DougMcIroy,RobPike和其他早期Unix开发者一开始就作出的设计决策。Unix的生命力和适应力令人称奇。11Unix的起源及历史“第二版效应”与“第三版效应”。最初的Unix就是一个第三系统。Unix的祖辈是小而简单的兼容分时系统CTSS(CompatibleTime-SharingSystem)Unix的父辈是颇具开拓性的MULTICS项目,(MultiplexedInformationandComputingService,多路信息与计算服务),能够支持大群用户对大型计算机的交互式分时使用。最终MULTICS因不堪自身重负而崩溃了。但Unix却正是从它的废墟中破壳而出。Unix的起源及历史“第二版效应”与“第三版效应”。12创世纪:1969—1971Unix于1969年诞生于贝尔实验室(BellLabs)的计算机科学家们的头脑中。当贝尔实验室从Multics研究联盟中退出时,KenThompson等人带着从Multics激发的灵感留了下来。于是UNICS(UNiplexedInformationandComputingService,单路信息与计算服务)问世于一台PDP-7小型机上。KenThompsonDennisRitchieBrianKernighan创世纪:1969—1971Unix于1969年诞生于贝尔13DigitalEquipmentCorporationPDP-7迷你计算机DigitalEquipmentCorporation14UNIX的实用:1970年,当时贝尔实验室的专利部门要设计开发一套文书处理系统,买了一台拥有512Kbytes硬盘的PDP-11/20计算机。Thompson与Ritchie将UNIX移植到该机上,并在此系统上开发了一套文书处理工具(nroff/troff的前身)。正式命名第一版。UNIX的实用:15最初的Unix用汇编语言写成,应用程序用汇编语言和B语言混和编写。B语言属于一种解译语言,执行成效不好,于是Ritchie又将它发展成可产生机器码、允许定义数据形态及结构——C语言。1973年,Thompson和Ritchie成功地用C语言重写了整个Unix系统。UNIX于是首度出现正式版本——V5(第五版)。
1974年[Ritchie-Thompson]在《美国计算机通信》(CommunicationsoftheACM)上发表论文第一次公开展示了Unix。出埃及记:1971-1980最初的Unix用汇编语言写成,应用程序用汇编语言和B语言混16C语言的发展C语言的原型ALGOL60语言。1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。1967年,剑桥大学的MatinRichards对CPL语言进行简化,产生BCPL语言。1970年,KenThompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。Ritchie向Thompson的B语言中加入数据类型和新的句法,产生了一种新语言——C语言。C语言是一门伟大的承前启后的语言。C语言是借助Unix操作系统的翅膀而起飞的,Unix操作系统也由于C而得已快速移植落地生根,两者相辅相承,成就了软件史上最精彩的一幕。C语言的发展C语言的原型ALGOL60语言。171972年在PDP-11旁的Ken(坐)和Dennis(站)1972年在PDP-11旁的Ken(坐)和Dennis(18根据1958年为解决反托拉斯案例达成的和解协议,AT&T被禁止进入计算机相关的商业领域。所以,Unix不能够成为一种商品。而且贝尔实验室必须将非电话业务的技术许可给任何提出要求的人。CACM论文发表后,全球各个研究实验室和大学都嚷着要亲身体验Unix。KenThompson开始默默回应那些请求,将磁带和磁盘一包包地寄送出去。V6。……UCBerkeley也就是依据这个版本开始研究并加以发展,并在1977年发表1BSD(BerkeleySoftwareDistribution)。根据1958年为解决反托拉斯案例达成的和解协议,AT&T被禁19现代Unix程序员公认的第一个完全意义上的Unix是1978年发布的V7版本。UNIXTime-SharingSystem,7thEditionUNIXV7包含Fortran77compiler、Shell(BourneShell)、文件处理工具(nroff/troff、roff、MSmocro等)、UNIX-to-UNIX-file-Copy(支持两台UNIX机器间的档案传输)、数据处理工具(AWK、SED等)、除错工具(ADB)、程序开发工具(MAKE)、Lexicalanalyzergenerator(LEX、YACC等)、简单的绘图工具、并支持C语言及LINTverifier商业化的不平坦历程--UNIX版本的战争。现代Unix程序员公认的第一个完全意义上的Unix是1920AT&TV6(1975)V7(1978)SystemIII(1981)SystemV.1(1983)SystemV.4(1989)UNIXWARE(Novell1992)(SCO1995)UNIXWARE7.0(1997)MicroSoftXenix(1980)XenixV(1988)SCOUnix(1989)OpenServer5.0(1995)MINIX(1987)(A.S.Tanenbaum)Linux(LinusTorvalds1991)UCBerkeleyBSD(1978)4.1BSD(1981)TCP/IP4.2BSD(1984)4.3BSD(1987)4.4BSD(1992)V8(1983)V9(1987)V10(1988)Plan9(1990)SUNSUNOS(1984)SUNOS4(1989)SUNOS5Solaris2(1992)Solaris8(1999)DECUltrixOSFOSF/1(1990)DigitalUNIX(DEC1995Compag1998)TRu64UNIX(1999)IBMAIX(1986)HPHP_UX(1986)SGIIRIX(1990)CMUMach1988OpenUNIX8(2001)UNIX族系AT&TV7(1978)SystemIIISystemV21UNIX的流行版本
公司:Unix版本/CPU型号SUN:Solaris/SPARC,IntelHP:HP-UX/PA-RISCIBM:AIX
/PowerPC
SCO:UnixWare7.0,OpenServer/IntelCompaq:Tru64UNIX/AlphaSGI:IRIX
/MIPSGNU:Linux/CISC(Intel,MC68000)RISC(SPARC,Alpha,MIPS)UNIX的流行版本公司:Unix版本/22再来看看几件有关的事!再来看看几件有关的事!23微软的兴起1981年,微软同IBM就新型IBMPC达成了历史性交易:PC-DOS。比尔·盖茨从西雅图计算机产品公司(SCP,SeattleComputerProducts)买下了QDOS(QuickandDirtyOperatingSystem,是SCP公司拼凑出来的第一个广泛采用的PC操作系统CP/M的翻版)。盖茨对SCP隐瞒了同IBM的交易,只花了五万美元。后来,盖茨又说服了IBM允许微软将MS-DOS从硬件中剥离出来单独出售。接下来的十年中,盖茨利用这个非他所写的程序变成了超级亿万富翁,而比首笔交易更加精明的商业策略更是让微软垄断了桌面计算机市场。作为产品的XENIX被放弃,最终卖给了SCO公司。微软的兴起1981年,微软同IBM就新型IBMPC24AT&T的拆分1983年,美国司法部对在针对AT&T的第二起反托拉斯诉讼中获胜,并拆分了贝尔系统。这次判决将AT&T从1958年的禁止将Unix产品化的和解协议中解脱了出来。AT&T马上忙不迭地将UnixSystemV商业化——这一举措差点扼杀了Unix。当时,没有人意识到,Unix的产业化会破坏Unix源码的自由交流,而恰是后者滋养了Unix系统早期的活力。AT&T的拆分1983年,美国司法部对在针对AT&T的25AT&T与BSD的官司BSD不断增大的影响力终于引起了AT&T的关注,于是开始了一场旷日持久的版权官司,一直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell采取了一种比较开明的做法,允许伯克利自由发布自己的BSD,但是前提是必须将来自AT&T的代码完全删除,于是诞生了4.4BSDLite版。4.4BSDLite不存在法律问题,成为现代BSD系统的基础版本。尽管后来,非商业版的UNIX系统经过了很多演变,但其最终都是建立在BSD版本上(Linux除外)。所以从这个角度上,4.4BSD又是所有自由(Free)版Unix的基础,它们和SYSTEMV及Linux共同构成Unix操作系统这片璀璨的星空。AT&T与BSD的官司BSD不断增大的影响力终于引起了A26UNIX与DARPA握手1980年,国防部高级研究计划局(DARPA,DefenseAdvancedResearchProjectsAgency)正在为AI,VLSI及计算器视觉等研究找寻一个可共通作业的计算机环境。硬件方面的首选是DEC的VAX主机,配合的操作系统是VMS。但是需要VMS做调整,包括实现全新的TCP/IP协议栈。因DEC不太乐意改动他们的专有操作系统,DARPA选择了伯克利Unix作为平台——显然因为可以毫无阻碍地拿到它的源码。UNIX与DARPA握手1980年,国防部高级研究计271983年后,随着BSD植入了TCP/IP,Unix文化和ARPANET文化开始融合。随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议。从此,Unix与TCP/IP相伴,占领了网络时代的大舞台。1983年后,随着BSD植入了TCP/IP,Unix文28GNU宣言"GNU'sNotUnix!"1983年,MIT的RichardM.Stallman发表了GNU宣言,1985年发起了自由软件基金会(FreeSoftwareFoundation)。——FreeUNIX。制定出了属于GNU计划的软件版权(“copyleft”),与著作版权(copyright)“对立”。这就是GPL--GeneralPurposeLicense(通用公共授权)。90年代初,GNU计划已完成了质量与数量均十分可观的系统工具,被广泛使用在当时各种工作站的UNIX系统上。虽然已有如此的成果,但仍称不上是完整的操作系统。他们缺少一支属于自己的“核心程序(kernal)"。GNU宣言"GNU'sNotUnix!"1983291985年,CarnegieMellonUniversity以4.3BSD为发展基础,采用微核心的写法,成立自己的计划,名称叫“Hurd“。GNUHurd是GNU工程中取代Unix的核心,但目前仍在工作中。在众多自由软件写作者的努力下,一条新的大道其实已经被开拓出来:Linux是一套版权彻彻底底与
AT&T
无关的
UNIX-likeOS。Linux里大部分的系统工具,来自于
GNU
计划成果及其它的自由软件写作计划产生的软件。这套操作系统,包含了自由软件写作者的共同心血,其实也就是
RMS
多年来想要达成的宿愿
--"FreeUNIX"。所以,也有人用
GNU/Linux
来称呼这个操作系统。1985年,CarnegieMellonUnivers30UNIX简史1965-1969Multics(MultipleInformationComputingService)USDOD国防部MIT,AT&TBell,GE1970
UnixV1(PDP-7),AT&TBell,K.Thompson,D.M.Ritchie1970UnixV2(BLanguage),K.Thompson1972
CLanguage,D.M.Ritchie1973
UnixV5(C)1973ACMOS原理会议1974
CACM“TheUnixTimeSharingSystem”1975
UnixV6发行源代码1978
UnixV7移植到不同机器上1980BSD发行BSD4.0,Microsoft发行XENIX1981AT&T
SystemIII(USG-UNIXSystemGroup)1983AT&T
SystemV(USG并入USL(UNIXSystemLaboratory))1983ACMTuring奖(D.M.Rithie&K.Thompson)UNIX简史1965-1969Multics(Mul311984UNIXSystemVRelease2(SVR2)推出。4.2BSD推出1987SVR3推出。4.3BSD推出1988
POSIX.1发布。OSF和UI成立1989SVR4推出1991
LinusTorvalds推出Linux1992SVR4.2(USL)推出。4.4BSD推出(最后版)
USL并入Novell发布SVR4.2MP(最后版)和UNIXWARE1995X/Open推出UNIX95UNIXWARE卖给SCO(SantaCruzOperation)1996
OpenGroup成立1998OpenGroup推出UNIX981999Linux2.2内核发布2001Linux2.4内核发布1984UNIXSystemVRelease232UNIX标准由各自独立的组织所制定的三个标准:ISOCIEEEPOSIXSingleUNIXSpecificationUNIX标准由各自独立的组织所制定的三个标准:33ISOC1989年下半年,C程序设计语言的ANSI标准X3.159-1989得到批准。此标准已被采纳为国际标准ISO/IEC9899:1990。此标准不仅定义了C程序设计语言的语法和语义,还定义了其标准库。因为所有现今的UNIX系统都提供C标准中定义的库例程,所以该标准库是很重要的。在1999年,ISOC标准被更新为ISO/IEC9899:1999。新标准显著改善了对进行数值处理的应用程序的支持。ISOC1989年下半年,C程序设计语言的ANSI标准X34按标准定义的各个头文件(header),可将ISOC库分成24个区。下表列出了C标准定义的各个头文件。按标准定义的各个头文件(header),可将ISOC库分成35
IEEEPOSIXPOSIX是一系列由IEEE制定的标准,指的是可移植的操作系统接口(PortableOperatingSystemInterface)。它原来指的只是IEEE标准1003.1-1988(操作系统接口),后来则扩展成包括很多标记为1003的标准及标准草案,包括shell和实用程序(1003.2)该标准的目的是提高应用程序在各种UNIX系统环境之间的可移植性。它定义了“依从POSIX的”(POSIXcompliant)操作系统必须提供的各种服务。IEEEPOSIXPOSIX是一系列由IEEE制定的标准36由于1003.1标准定义的是一个接口(interface)而不是一种实现(implementation),所以并不区分系统调用和库函数。经过不断演变,最终的文档作为IEEEStd.1003.1-1990正式出版,这也就是国际标准ISO/IEC9945-1:1990。通常被称为POSIX.1。IEEE1003.1工作组继续对标准做出修改,最终形成了IEEE标准1003.1-2001。由于1003.1标准定义的是一个接口(interface)而37IEEE标准1003.1-2001,其中包括了下列几个标准:.ISO/IEC9945-1(IEEE标准1003.1-1996),它包括.IEEE标准1003.1-1990。.IEEE标准1003.1b-1993(实时扩展)。.IEEE标准1003.1c-1995(pthreads)。.IEEE标准1003.1i-1995(实时技术勘误表)。.IEEEP1003.1a标准草案(系统接口修订版)。.IEEE标准1003.1d-1999(高级实时扩展)。.IEEE标准1003.1j-2000(更高级的实时扩展)。.IEEE标准1003.1q-2000(文件跟踪)。.IEEE标准1003.2d-1994(批处理扩展)。.IEEEP1003.2b草案标准(附加的实用程序)。.IEEE标准1003.1g-2000(协议无关接口)的某些部分。.ISO/IEC9945-2(IEEE标准1003.2-1993)。.SingleUNIXSpecification第2版的基本规范。.开放组技术标准,网络服务,5.2发行版。.ISO/IEC9899:1999,C编程语言。IEEE标准1003.1-2001,其中包括了下列几个标准38
SingleUNIXSpecificationSingleUNIXSpecification(单一UNIX规范)(SUS)由OpenGroup发布,是POSIX.1标准的一个超集,定义了一些附加的接口,这些接口扩展了基本的POSIX.1规范所提供的功能。相应的系统接口全集被称为X/Open系统接口(XSI,X/OpenSystemInterface)。XSI还定义了必须实现POSIX.1的哪些可选部分才能认为是遵循XSI(XSIconforming)的。它们包括文件同步、存储映射文件、存储保护及线程接口。只有遵循XSI的实现才能称为UNIX系统。2003年ISO将其批准为国际标准ISO/IEC9945:2003。SingleUNIXSpecificationSing39二、UNIX系统结构简略结构总体结构UNIX运行环境文件系统结构UNIX核心结构二、UNIX系统结构简略结构40硬件kernelShell编译部件实用程序应用程序编译程序UNIX简略结构硬件kernelShell编译部件实用程序应用程序编译程序U41UNIX层次结构说明:硬件:可以是便携机、个人机、工作站、小型机等内核:包括中断、存储、进程、I/O、文件等管理程序Shell:具有多种功能的系统程序实用程序:完成大部分UNIX高级命令的功能UNIX层次结构说明:硬件:可以是便携机、个人机、工作站、小42系统调用入口表Shell核心程序GUI实用程序和应用程序中断向量表设备开关表硬件系统调用接口硬件接口字符界面图形界面用户态核心态
总体结构系统调用入口表Shell核心程序GUI实用程序和应用程序中断43CRTkeybordUNIXSERVERTTYPCPCMPSTNMTTY/PCPCRouterDialserverTermserver远程网RouterPSTNPSTNPCPCTTYPC控制台网卡多端口卡哑终端或PC仿真终端(主机多用户)哑终端拨号上网wwwemailftptelnet(伪终端)PC仿真终端…….(网络多用户)PPPPPPTCP/IP
UNIX运行环境LANLAN串口CRTkeybordUNIXTTYPCPCMPSTNMTTY44文件系统结构rootboot启动目录,存放Bootloader和内核
etcbinsbinlibusrvarhomebinsbinliu……wangtmpdevmntproctty1lp0注册用户目录设备文件root用户目录内存文件/根目录被安装的文件系统系统命令文件临时文件变化文件库文件系统文件文件系统结构rootboot启动目录,存放Bootloade45一般来说OS的核心有以下几种:1.单块核心(MONOLITHICKERNEL)将所有OS功能放入核心.UNIX就是这种结构.2.环状核心分为核心,任务,用户几级,如MINIX.LINUX也有这种特征,比如LINUX增加某些种类的服务时不像UNIX,必须重新启动.这就是这种结构比UNIX先进的地方.3.无内核:不区分核心和用户程序的分别,这样省去了状态切换的时间,这种模式适合WEB服务器.4.微内核微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的。一般来说OS的核心有以下几种:1.单块核心(MONOLITH46用户级核心级硬件级核心级traptrapI/O进程
(单块结构monolithic)UNIX核心结构系统调用界面程序库硬件硬件控制driver字符设备块设备cache文件系统用户程序IPC调度存储管理用户级核心级硬件级核心级traptrapI/O进程(单47用户级核心级硬件级核心级Linux核心结构用户程序系统调用界面VFS内存进程SOCKETFS1FS2FS3driverTCP/IPDisk
driverFlopy
driverDISKFLOPYEtherCardEthercard
driver用户级核心级硬件级核心级Linux核心结构用户程序系统调用界48习题什麽是内核?什麽是shell?以UNIX环境为例说明什麽是主机多用户环境和网络多用户环境?UNIX的文件系统是什麽结构?这有什麽优点?UNIX的核心属于什麽结构?简述各成分的功能及它们间的关系。Linux中VFS的作用是什麽?有什麽优点?习题什麽是内核?什麽是shell?49三、UNIX特点主要优缺点“机制,而不是策略”UNIX哲学基础UNIX哲学之一言以蔽之三、UNIX特点主要优缺点50UNIX优点和缺点Unix优点设计精湛:小核心和大量实用工具(用管道和shell组合)简单小巧的文件系统(字节流文件)系统使用文本数据(便于管理)I/O的文件表示便于I/O重定向(设备独立性)可移植性(c语言)
Unix缺点I/O库复杂用户接口不方便(描述过于简单)积木式工具要求程序员有丰富的想象力和创造力版本太多,可移植性不能完全实现无序模块结构内核,层次不清晰,显得复杂UNIX优点和缺点Unix优点51机制,而不是策略最持久的异议恰恰来自Unix哲学的一个特性,这一条特性是Xwindow设计者首先明确提出的——“机制,而不是策略”。这种选择机制而不是策略的代价是:当用户“可以”自己设置策略时,他们其实是“必须”自己设置策略。只看眼前,Unix的这种自由放纵主义风格会让它失去很多非技术型用户。但从长远考虑,最终你会发觉这个“错误”换来至关重要的优势:策略相对短寿,而机制才会长存。机制,而不是策略最持久的异议恰恰来自Unix哲学的一个特性52UNIX哲学基础
从整体上来说,可以概括为以下17点:模块原则:使用简洁的接口拼合简单的部件。BrianKernighan曾经说过的:“计算机编程的本质就是控制复杂度”。要编制复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂软件。UNIX哲学基础
从整体上来说,可以概括为以下17点:模块532.清晰原则:清晰胜于机巧。在写程序时,要想到你不是写给执行代码的计算机看的,而是给人——将来阅读维护源码的人,包括你自己——看的。这个建议不仅意味着代码注释。良好的Unix实践同样信奉在选择算法和实现时就应该考虑到将来的可扩展性。3.组合原则:设计时考虑拼接组合。如果程序彼此之间不能有效通信,那么软件就难免会陷入复杂度的泥淖。要想让程序具有组合性,就要使程序彼此独立。2.清晰原则:清晰胜于机巧。544.分离原则:策略同机制分离,接口同引擎分离。其中一个方法是将应用程序分成可以协作的前端和后端进程,通过套接字上层的专用应用协议进行通讯;前端实现策略,后端实现机制。5.简洁原则:设计要简洁,复杂度能低则低。一种软件文化,以简洁为美。6.吝啬原则:除非确无它法,不要编写庞大的程序。“大”有两重含义:体积大,复杂程度高。4.分离原则:策略同机制分离,接口同引擎分离。557.透明性原则:设计要可见,以便审查和调试。一个特别有效的减少调试工作量的方法就是设计时充分考虑透明性和显见性。透明性是指你一眼就能够看出软件是在做什么以及怎样做的。显见性指程序带有监视和显示内部状态的功能。8.健壮原则:健壮源于透明与简洁。让程序健壮的方法,就是让程序的内部逻辑更易于理解。要做到这一点主要有两种方法:透明化和简洁化。9.表示原则:把知识叠入数据以求逻辑质朴而健壮。在设计中,你应该主动将代码的复杂度转移到数据之中去。7.透明性原则:设计要可见,以便审查和调试。5610.通俗原则:接口设计避免标新立异。(也就是众所周知的“最少惊奇原则”。)最易用的程序就是用户需要学习新东西最少的程序——或者,换句话说,最易用的程序就是最切合用户已有知识的程序。11.缄默原则:如果一个程序没什么好说的,就沉默。12.补救原则:出现异常时,马上退出并给出足够错误信息。软件在发生错误的时候也应该与在正常操作的情况下一样,有透明的逻辑。10.通俗原则:接口设计避免标新立异。5713.经济原则:宁花机器一分,不花程序员一秒。14.生成原则:避免手工hack,尽量编写程序去生成程序。由程序生成代码几乎(在各个层次)总是比手写代码廉价并且更值得信赖。15.优化原则:雕琢前先要有原型,跑之前先学会走。在Unix世界里,有一个非常明确的悠久传统:先制作原型,再精雕细琢。优化之前先确保能用。或者:先能走,再学跑。“极限编程”宗师KentBeck从另一种不同的文化将这一点有效地扩展为:先求运行,再求正确,最后求快。13.经济原则:宁花机器一分,不花程序员一秒。5816.多样原则:决不相信所谓“不二法门”的断言。Unix奉行的是广泛采用多种语言、开放的可扩展系统和用户定制机制。17.扩展原则:设计着眼未来,未来总比预想来得快。设计代码时,要有很好的组织,让将来的开发者增加新功能时无需拆毁或重建整个架构。建议在编写代码时要考虑到将来的需要,使以后增加功能比较容易。程序接合部要灵活,在代码中加入“如果你需要……”的注释。16.多样原则:决不相信所谓“不二法门”的断言。59如果刚开始接触Unix,这些原则值得好好体味一番。
同时,谈软件工程的文章常常会推荐大部分的这些原则,因为这是构建任何成功的计算机应用系统的广泛经验。如果刚开始接触Unix,这些原则值得好好体味一番。
60Unix哲学之一言以蔽之所有的Unix哲学浓缩为一条铁律,那就是编程大师们奉为圭臬的“KISS”原则:Unix哲学之一言以蔽之所有的Unix哲学浓缩为一条铁律61
结束语谢谢大家聆听!!!62
结束语谢谢大家聆听!!!6201第一二次课UNIX系统简介01第一二次课UNIX系统简介63课件原作者:刘日升教授杨芙清、仲萃豪、孙玉方、刘日升等是开拓我国UNIX操作系统事业的先驱者。孙玉方(中科院软件所副所长,红旗LINUX的创始人)。二人第一次在中国介绍UNIX,第一次讲授UNIX,剖析UNIX内核。是中国接触UNIX的先辈。刘日升;孙玉方;UNIX操作系统分析报告[J];计算机研究与发展;1982年09期课件原作者:刘日升教授64最新01第一二次课UNIX系统简介课件65最新01第一二次课UNIX系统简介课件66最新01第一二次课UNIX系统简介课件67最新01第一二次课UNIX系统简介课件68最新01第一二次课UNIX系统简介课件69最新01第一二次课UNIX系统简介课件70一、UNIX历史
Unix的生命力
Unix起源与历史Unix当前流行版本Unix标准化一、UNIX历史Unix的生命力71UNIX的生命力Unix诞生于1969年,比PC机、工作站、微处理器甚至视频显示终端都要早,与第一块半导体存储器是同一时代的古物。按照计算机工业的标准,那已经是好几个地质纪年前的事了。世界上第一台PC机是由IBM公司在1981年推出。英特尔公司成立于1968年,1971年11月15日:世界上第一块个人微型处理器4004诞生。1972年:8008微处理器。1974年:8080微处理器。1978年:8086-8088微处理器Unix比其它任何操作系统都更广泛地应用在各种机型上。没有哪一种操作系统能像Unix那样,能同时在作为研究工具、定制技术应用的友好宿主机、商用成品软件平台和互联网技术的重要部分等各个领域都大放异彩。UNIX的生命力Unix诞生于1969年,比PC机、72Unix的生命力和适应力令人称奇。不变的东西有很多:语言、系统调用、工具用法——它们积年不变,甚至可以用上数十载。而在其它操作系统中则无法预判什么东西会持久不变,有时候甚至整个操作系统都会被淘汰。Unix的稳定和成功在很大程度上归功于它与生俱来的内在优势,归功于KenThompson,DennisRitchie,BrianKernighan,DougMcIroy,RobPike和其他早期Unix开发者一开始就作出的设计决策。Unix的生命力和适应力令人称奇。73Unix的起源及历史“第二版效应”与“第三版效应”。最初的Unix就是一个第三系统。Unix的祖辈是小而简单的兼容分时系统CTSS(CompatibleTime-SharingSystem)Unix的父辈是颇具开拓性的MULTICS项目,(MultiplexedInformationandComputingService,多路信息与计算服务),能够支持大群用户对大型计算机的交互式分时使用。最终MULTICS因不堪自身重负而崩溃了。但Unix却正是从它的废墟中破壳而出。Unix的起源及历史“第二版效应”与“第三版效应”。74创世纪:1969—1971Unix于1969年诞生于贝尔实验室(BellLabs)的计算机科学家们的头脑中。当贝尔实验室从Multics研究联盟中退出时,KenThompson等人带着从Multics激发的灵感留了下来。于是UNICS(UNiplexedInformationandComputingService,单路信息与计算服务)问世于一台PDP-7小型机上。KenThompsonDennisRitchieBrianKernighan创世纪:1969—1971Unix于1969年诞生于贝尔75DigitalEquipmentCorporationPDP-7迷你计算机DigitalEquipmentCorporation76UNIX的实用:1970年,当时贝尔实验室的专利部门要设计开发一套文书处理系统,买了一台拥有512Kbytes硬盘的PDP-11/20计算机。Thompson与Ritchie将UNIX移植到该机上,并在此系统上开发了一套文书处理工具(nroff/troff的前身)。正式命名第一版。UNIX的实用:77最初的Unix用汇编语言写成,应用程序用汇编语言和B语言混和编写。B语言属于一种解译语言,执行成效不好,于是Ritchie又将它发展成可产生机器码、允许定义数据形态及结构——C语言。1973年,Thompson和Ritchie成功地用C语言重写了整个Unix系统。UNIX于是首度出现正式版本——V5(第五版)。
1974年[Ritchie-Thompson]在《美国计算机通信》(CommunicationsoftheACM)上发表论文第一次公开展示了Unix。出埃及记:1971-1980最初的Unix用汇编语言写成,应用程序用汇编语言和B语言混78C语言的发展C语言的原型ALGOL60语言。1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。1967年,剑桥大学的MatinRichards对CPL语言进行简化,产生BCPL语言。1970年,KenThompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。Ritchie向Thompson的B语言中加入数据类型和新的句法,产生了一种新语言——C语言。C语言是一门伟大的承前启后的语言。C语言是借助Unix操作系统的翅膀而起飞的,Unix操作系统也由于C而得已快速移植落地生根,两者相辅相承,成就了软件史上最精彩的一幕。C语言的发展C语言的原型ALGOL60语言。791972年在PDP-11旁的Ken(坐)和Dennis(站)1972年在PDP-11旁的Ken(坐)和Dennis(80根据1958年为解决反托拉斯案例达成的和解协议,AT&T被禁止进入计算机相关的商业领域。所以,Unix不能够成为一种商品。而且贝尔实验室必须将非电话业务的技术许可给任何提出要求的人。CACM论文发表后,全球各个研究实验室和大学都嚷着要亲身体验Unix。KenThompson开始默默回应那些请求,将磁带和磁盘一包包地寄送出去。V6。……UCBerkeley也就是依据这个版本开始研究并加以发展,并在1977年发表1BSD(BerkeleySoftwareDistribution)。根据1958年为解决反托拉斯案例达成的和解协议,AT&T被禁81现代Unix程序员公认的第一个完全意义上的Unix是1978年发布的V7版本。UNIXTime-SharingSystem,7thEditionUNIXV7包含Fortran77compiler、Shell(BourneShell)、文件处理工具(nroff/troff、roff、MSmocro等)、UNIX-to-UNIX-file-Copy(支持两台UNIX机器间的档案传输)、数据处理工具(AWK、SED等)、除错工具(ADB)、程序开发工具(MAKE)、Lexicalanalyzergenerator(LEX、YACC等)、简单的绘图工具、并支持C语言及LINTverifier商业化的不平坦历程--UNIX版本的战争。现代Unix程序员公认的第一个完全意义上的Unix是1982AT&TV6(1975)V7(1978)SystemIII(1981)SystemV.1(1983)SystemV.4(1989)UNIXWARE(Novell1992)(SCO1995)UNIXWARE7.0(1997)MicroSoftXenix(1980)XenixV(1988)SCOUnix(1989)OpenServer5.0(1995)MINIX(1987)(A.S.Tanenbaum)Linux(LinusTorvalds1991)UCBerkeleyBSD(1978)4.1BSD(1981)TCP/IP4.2BSD(1984)4.3BSD(1987)4.4BSD(1992)V8(1983)V9(1987)V10(1988)Plan9(1990)SUNSUNOS(1984)SUNOS4(1989)SUNOS5Solaris2(1992)Solaris8(1999)DECUltrixOSFOSF/1(1990)DigitalUNIX(DEC1995Compag1998)TRu64UNIX(1999)IBMAIX(1986)HPHP_UX(1986)SGIIRIX(1990)CMUMach1988OpenUNIX8(2001)UNIX族系AT&TV7(1978)SystemIIISystemV83UNIX的流行版本
公司:Unix版本/CPU型号SUN:Solaris/SPARC,IntelHP:HP-UX/PA-RISCIBM:AIX
/PowerPC
SCO:UnixWare7.0,OpenServer/IntelCompaq:Tru64UNIX/AlphaSGI:IRIX
/MIPSGNU:Linux/CISC(Intel,MC68000)RISC(SPARC,Alpha,MIPS)UNIX的流行版本公司:Unix版本/84再来看看几件有关的事!再来看看几件有关的事!85微软的兴起1981年,微软同IBM就新型IBMPC达成了历史性交易:PC-DOS。比尔·盖茨从西雅图计算机产品公司(SCP,SeattleComputerProducts)买下了QDOS(QuickandDirtyOperatingSystem,是SCP公司拼凑出来的第一个广泛采用的PC操作系统CP/M的翻版)。盖茨对SCP隐瞒了同IBM的交易,只花了五万美元。后来,盖茨又说服了IBM允许微软将MS-DOS从硬件中剥离出来单独出售。接下来的十年中,盖茨利用这个非他所写的程序变成了超级亿万富翁,而比首笔交易更加精明的商业策略更是让微软垄断了桌面计算机市场。作为产品的XENIX被放弃,最终卖给了SCO公司。微软的兴起1981年,微软同IBM就新型IBMPC86AT&T的拆分1983年,美国司法部对在针对AT&T的第二起反托拉斯诉讼中获胜,并拆分了贝尔系统。这次判决将AT&T从1958年的禁止将Unix产品化的和解协议中解脱了出来。AT&T马上忙不迭地将UnixSystemV商业化——这一举措差点扼杀了Unix。当时,没有人意识到,Unix的产业化会破坏Unix源码的自由交流,而恰是后者滋养了Unix系统早期的活力。AT&T的拆分1983年,美国司法部对在针对AT&T的87AT&T与BSD的官司BSD不断增大的影响力终于引起了AT&T的关注,于是开始了一场旷日持久的版权官司,一直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell采取了一种比较开明的做法,允许伯克利自由发布自己的BSD,但是前提是必须将来自AT&T的代码完全删除,于是诞生了4.4BSDLite版。4.4BSDLite不存在法律问题,成为现代BSD系统的基础版本。尽管后来,非商业版的UNIX系统经过了很多演变,但其最终都是建立在BSD版本上(Linux除外)。所以从这个角度上,4.4BSD又是所有自由(Free)版Unix的基础,它们和SYSTEMV及Linux共同构成Unix操作系统这片璀璨的星空。AT&T与BSD的官司BSD不断增大的影响力终于引起了A88UNIX与DARPA握手1980年,国防部高级研究计划局(DARPA,DefenseAdvancedResearchProjectsAgency)正在为AI,VLSI及计算器视觉等研究找寻一个可共通作业的计算机环境。硬件方面的首选是DEC的VAX主机,配合的操作系统是VMS。但是需要VMS做调整,包括实现全新的TCP/IP协议栈。因DEC不太乐意改动他们的专有操作系统,DARPA选择了伯克利Unix作为平台——显然因为可以毫无阻碍地拿到它的源码。UNIX与DARPA握手1980年,国防部高级研究计891983年后,随着BSD植入了TCP/IP,Unix文化和ARPANET文化开始融合。随着Unix的成功,TCP/IP逐步成为Unix机器的标准网络协议。从此,Unix与TCP/IP相伴,占领了网络时代的大舞台。1983年后,随着BSD植入了TCP/IP,Unix文90GNU宣言"GNU'sNotUnix!"1983年,MIT的RichardM.Stallman发表了GNU宣言,1985年发起了自由软件基金会(FreeSoftwareFoundation)。——FreeUNIX。制定出了属于GNU计划的软件版权(“copyleft”),与著作版权(copyright)“对立”。这就是GPL--GeneralPurposeLicense(通用公共授权)。90年代初,GNU计划已完成了质量与数量均十分可观的系统工具,被广泛使用在当时各种工作站的UNIX系统上。虽然已有如此的成果,但仍称不上是完整的操作系统。他们缺少一支属于自己的“核心程序(kernal)"。GNU宣言"GNU'sNotUnix!"1983911985年,CarnegieMellonUniversity以4.3BSD为发展基础,采用微核心的写法,成立自己的计划,名称叫“Hurd“。GNUHurd是GNU工程中取代Unix的核心,但目前仍在工作中。在众多自由软件写作者的努力下,一条新的大道其实已经被开拓出来:Linux是一套版权彻彻底底与
AT&T
无关的
UNIX-likeOS。Linux里大部分的系统工具,来自于
GNU
计划成果及其它的自由软件写作计划产生的软件。这套操作系统,包含了自由软件写作者的共同心血,其实也就是
RMS
多年来想要达成的宿愿
--"FreeUNIX"。所以,也有人用
GNU/Linux
来称呼这个操作系统。1985年,CarnegieMellonUnivers92UNIX简史1965-1969Multics(MultipleInformationComputingService)USDOD国防部MIT,AT&TBell,GE1970
UnixV1(PDP-7),AT&TBell,K.Thompson,D.M.Ritchie1970UnixV2(BLanguage),K.Thompson1972
CLanguage,D.M.Ritchie1973
UnixV5(C)1973ACMOS原理会议1974
CACM“TheUnixTimeSharingSystem”1975
UnixV6发行源代码1978
UnixV7移植到不同机器上1980BSD发行BSD4.0,Microsoft发行XENIX1981AT&T
SystemIII(USG-UNIXSystemGroup)1983AT&T
SystemV(USG并入USL(UNIXSystemLaboratory))1983ACMTuring奖(D.M.Rithie&K.Thompson)UNIX简史1965-1969Multics(Mul931984UNIXSystemVRelease2(SVR2)推出。4.2BSD推出1987SVR3推出。4.3BSD推出1988
POSIX.1发布。OSF和UI成立1989SVR4推出1991
LinusTorvalds推出Linux1992SVR4.2(USL)推出。4.4BSD推出(最后版)
USL并入Novell发布SVR4.2MP(最后版)和UNIXWARE1995X/Open推出UNIX95UNIXWARE卖给SCO(SantaCruzOperation)1996
OpenGroup成立1998OpenGroup推出UNIX981999Linux2.2内核发布2001Linux2.4内核发布1984UNIXSystemVRelease294UNIX标准由各自独立的组织所制定的三个标准:ISOCIEEEPOSIXSingleUNIXSpecificationUNIX标准由各自独立的组织所制定的三个标准:95ISOC1989年下半年,C程序设计语言的ANSI标准X3.159-1989得到批准。此标准已被采纳为国际标准ISO/IEC9899:1990。此标准不仅定义了C程序设计语言的语法和语义,还定义了其标准库。因为所有现今的UNIX系统都提供C标准中定义的库例程,所以该标准库是很重要的。在1999年,ISOC标准被更新为ISO/IEC9899:1999。新标准显著改善了对进行数值处理的应用程序的支持。ISOC1989年下半年,C程序设计语言的ANSI标准X96按标准定义的各个头文件(header),可将ISOC库分成24个区。下表列出了C标准定义的各个头文件。按标准定义的各个头文件(header),可将ISOC库分成97
IEEEPOSIXPOSIX是一系列由IEEE制定的标准,指的是可移植的操作系统接口(PortableOperatingSystemInterface)。它原来指的只是IEEE标准1003.1-1988(操作系统接口),后来则扩展成包括很多标记为1003的标准及标准草案,包括shell和实用程序(1003.2)该标准的目的是提高应用程序在各种UNIX系统环境之间的可移植性。它定义了“依从POSIX的”(POSIXcompliant)操作系统必须提供的各种服务。IEEEPOSIXPOSIX是一系列由IEEE制定的标准98由于1003.1标准定义的是一个接口(interface)而不是一种实现(implementation),所以并不区分系统调用和库函数。经过不断演变,最终的文档作为IEEEStd.1003.1-1990正式出版,这也就是国际标准ISO/IEC9945-1:1990。通常被称为POSIX.1。IEEE1003.1工作组继续对标准做出修改,最终形成了IEEE标准1003.1-2001。由于1003.1标准定义的是一个接口(interface)而99IEEE标准1003.1-2001,其中包括了下列几个标准:.ISO/IEC9945-1(IEEE标准1003.1-1996),它包括.IEEE标准1003.1-1990。.IEEE标准1003.1b-1993(实时扩展)。.IEEE标准1003.1c-1995(pthreads)。.IEEE标准1003.1i-1995(实时技术勘误表)。.IEEEP1003.1a标准草案(系统接口修订版)。.IEEE标准1003.1d-1999(高级实时扩展)。.IEEE标准1003.1j-2000(更高级的实时扩展)。.IEEE标准1003.1q-2000(文件跟踪)。.IEEE标准1003.2d-1994(批处理扩展)。.IEEEP1003.2b草案标准(附加的实用程序)。.IEEE标准1003.1g-2000(协议无关接口)的某些部分。.ISO/IEC9945-2(IEEE标准1003.2-1993)。.SingleUNIXSpecification第2版的基本规范。.开放组技术标准,网络服务,5.2发行版。.ISO/IEC9899:1999,C编程语言。IEEE标准1003.1-2001,其中包括了下列几个标准100
SingleUNIXSpecificationSingleUNIXSpecification(单一UNIX规范)(SUS)由OpenGroup发布,是POSIX.1标准的一个超集,定义了一些附加的接口,这些接口扩展了基本的POSIX.1规范所提供的功能。相应的系统接口全集被称为X/Open系统接口(XSI,X/OpenSystemInterface)。XSI还定义了必须实现POSIX.1的哪些可选部分才能认为是遵循XSI(XSIconforming)的。它们包括文件同步、存储映射文件、存储保护及线程接口。只有遵循XSI的实现才能称为UNIX系统。2003年ISO将其批准为国际标准ISO/IEC9945:2003。SingleUNIXSpecificationSing101二、UNIX系统结构简略结构总体结构UNIX运行环境文件系统结构UNIX核心结构二、UNIX系统结构简略结构102硬件kernelShell编译部件实用程序应用程序编译程序UNIX简略结构硬件kernelShell编译部件实用程序应用程序编译程序U103UNIX层次结构说明:硬件:可以是便携机、个人机、工作站、小型机等内核:包括中断、存储、进程、I/O、文件等管理程序Shell:具有多种功能的系统程序实用程序:完成大部分UNIX高级命令的功能UNIX层次结构说明:硬件:可以是便携机、个人机、工作站、小104系统调用入口表Shell核心程序GUI实用程序和应用程序中断向量表设备开关表硬件系统调用接口硬件接口字符界面图形界面用户态核心态
总体结构系统调用入口表Shell核心程序GUI实用程序和应用程序中断105CRTkeybordUNIXSERVERTTYPCPCMPSTNMTTY/PCPCRouterDialserverTermserver远程网RouterPSTNPSTNPCPCTTYPC控制台网卡多端口卡哑终端或PC仿真终端(主机多用户)哑终端拨号上网wwwemailftptelnet(伪终端)PC仿真终端…….(网络多用户)PPPPPPTCP/IP
UNIX运行环境LANLAN串口CRTkeybordUNIXTTYPCPCMPSTNMTTY106文件系统结构rootboot启动目录,存放Bootloader和内核
etcbinsbinlibusrvarhomebinsbinliu……wangtmpdevmntproctty1lp0注册用户目录设备文件root用户目录内存文件/根目录被安装的文件系统系统命令文件临时文件变化文件库文件系统文件文件系统结构rootboot启动目录,存放Bootloade107一般来说OS的核心有以下几种:1.单块核心(MONOLITHICKERNEL)将所有OS功能放入核心.UNIX就是这种结构.2.环状核心分为核心,任务,用户几级,如MINIX.LINUX也有这种特征,比如LINUX增加某些种类的服务时不像UNIX,必须重新启动.这就是这种结构比UNIX先进的地方.3.无内核:不区分核心和用户程序的分别,这样省去了状态切换的时间,这种模式适合WEB服务器.4.微内核微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的。一般来说OS的核心有以下几种:1.单块核心(MONOLITH108用户级核心级硬件级核心级traptrapI/O进程
(单块结构monolithic)UNIX核心结构系统调用界面程序库硬件硬件控制driver字符设备块设备cache文件系统用户程序IPC调度存储管理用户级核心级硬件级核心级traptr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年安庆市岳西县信访局招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年宁波海洋开发研究院招考工作人员2名易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年宁波市住房和城乡建设培训中心招考编外工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025和田水务发展集团有限责任公司招聘(5人)笔试参考题库附带答案详解
- 【2025】鄂尔多斯市低空经济开发有限公司关于招聘劳务派遣笔试考点考试试题及答案
- 浙江鸭2025版高考化学二轮复习选择题提升练二含解析
- 2024福建晋江市清新文旅产业运营管理有限公司招聘17人笔试参考题库附带答案详解
- 2025年可调式角度规项目可行性研究报告
- 2025年六角扁凿项目可行性研究报告
- 2024浙江舟山市人才发展集团有限公司新城分公司拟聘用人员笔试参考题库附带答案详解
- 2023英语新课标义务教育英语课程标准
- 鲁科版高中化学必修2全册教案
- GB/T 11661-2012炼焦业卫生防护距离
- 《电业安全工作规程》
- 新能源概论新能源及其材料课件
- 化学化工专业英语1课件
- 装配式建筑装配率计算评分表
- 1.1北京市基本概况与主要文旅资源《地方导游基础知识》(第四版)PPT
- 综述的写作方法与技巧课件
- 零售药店实施GSP情况的内审报告
- 机械设计基础网考题库答案 吉林大学
评论
0/150
提交评论