Linux操作系统万月亮Email:fornetwork@126.com参考书目教材:Linux系统应用基础教程.张小进编著机械工业出版社参考教材:Linux操作系统原理与应用.陈莉君,康华.清华大学出版社Unix环境高级编程.Stevens著,尤晋元译.机械工业出版社Unix网络编程,第1卷:套接口API和X/Open传输接口API,Stevens著,施振川译.清华大学出版社Unix网络编程,第2卷:进程间通信,Stevens著,杨续张译.清华大学出版社作业上交所交的电子作业包括两部分:源程序(加注释并存为*.c或*.txt)或作业文档(存为*doc);是本次作业的心得体会(以注释形式附在程序或文档后面)最后将所有上述文件用winrar打包压缩后(文件名是班级+学号+姓名+x.rar),x表示第几次作业,作为电子邮件的附件发送。否则无效!发送电子邮件要注意的是:收件人地址为:fornetwork@126.com,主题为:作业(班级:姓名:***,学号:********,第x次),附上附件!一定要按照要求格式发送作业邮件,切忌不规范邮件出现。成绩评定成绩(100)=作业(20)+期末考试(60)+考勤(20)第一章操作系统概述认识操作系统操作系统的发展开放源代码的Unix/Linux操作系统Linux内核Linux内核源代码认识操作系统不同角度看到的操作系统操作系统整体看操作系统设计者使用者普通开发者认识操作系统-从使用者的角度看打开计算机,首先跳入眼帘的是什么?要拷贝一个文件,具体的拷贝操作是谁完成的?你需要知道文件存放在何处吗?柱面、磁道、扇区描述什么?数据的搬动过程怎样进行繁琐留给自己,简单留给用户操作系统穿上华丽的外衣-图形界面操作系统穿上朴素的外衣-字符界面认识操作系统-从程序开发者的角度看拷贝命令的C语言实现片断inf=open(“/floppy/TEST”,O_RDONLY,0);out=open(“/mydir/test”,O_WRONLY,0600);do{l=read(inf,buf,4096);write(outf,buf,l);}while(l);close(outf);close(inf);认识操作系统-从所处位置看浏览器信息管理文件管理系统游戏编译程序编辑程序命令解释程序操作系统CPU、内存、I/O接口硬件内核操作系统是其它所有用户程序运行的基础。#includestdio.hmain(){printf(“Helloworld\n”)}用户告诉操作系统执行test程序操作系统通过文件名找到该程序检查其类型,检查程序首部,找出代码和数据存放的地址文件系统找到第一个磁盘块操作系统建立程序的执行环境操作系统把程序从磁盘装入内存,并跳到程序开始处执行该程序的执行过程简述如下:操作系统检查字符串的位置是否正确操作系统找到字符串被送往的设备操作系统将字符串送往输出设备窗口系统确定这是一个合法的操作,然后将字符串转换成像素窗口系统将像素写入存储映像区视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕)显示器发射电子束。你在屏幕上看到Helloworld。从中看到什么认识操作系统-从程序执行看从操作系统设计者的角度看操作系统的设计目标是什么?尽可能地方便用户使用计算机让各种软件资源和硬件资源高效而协调地运转起来。计算机的硬件资源和软件资源各指什么?假设在一台计算机上有三道程序同时运行,并试图在一台打印机上输出运算结果,必须考虑哪些问题?从操作系统设计者的角度考虑,一个操作系统必须包含以下几部分操作系统接口CPU管理内存管理设备管理文件管理认识操作系统-从设计者角度看操作系统:计算机系统中的一个系统软件,是一些程序模块的集合——它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活、方便、有效的使用计算机,使整个计算机系统能高效、顺畅地运行。认识操作系统-定义操作系统的演变单道批处理系统串行执行预先组织好的一组任务提高了系统效率。多道批处理系统可以交错运行多个程序再次提高系统效率。分时系统将处理器的运行时间分成数片,均分或依照一定权重派发给系统中的用户使用快速响应操作系统的发展硬件角度下的操作系发展轨迹年代硬件特点操作系统特点背景机械计算机时代17世纪~20世纪初1)纯机械结构,低速2)只能进行简单的数学运算纯手工操作从计算尺至差分机到分析机发展了数百年第一代计算机1946年~50年代末电子管计算机1)体积大、能耗高、故障多、价格贵2)难以普及应用无操作系统(程序按机器码编写,载体从插件板到卡片与纸带)1906年发明电子管1946ENIAC研制成功(第一台电子管计算机)年代硬件特点操作系统特点背景第二代计算机50年代末~60年代中期晶体管计算机1)采用印刷电路2)稳定性与可靠性大大提高3)批量生产成为可能4)进入实际应用领域但数量有限1)单道批处理系统2)操作系统以监督软件形式出现3)任务按顺序方式处理1947年发明晶体管第三代计算机60年代中期~70年代初集成电路计算机1)体积减小,性价比迅速提高2)小型计算机发展迅速3)进入商业应用4)尚不适合家庭应用的需求1)涌现大批操作系统多道批处理系统、分时系统和实时系统2)奠定了现代操作系统的基本框架1958年发明集成电路1971年INTEL发明微处理器硬件角度下的操作系统发展轨迹在硬件的性价比较低的时候,操作系统设计追求什么?在硬件性价比越来越高后,操作系统的设计开始追求的目标是什么?计算机开始普及后,操作系统的设计开始追求?从第三代到第四代计算机,操作系统的发展逐渐摆脱追随硬件发展的状况,形成自己的理论体系进入第四代系统后,分布式系统和多处理器系统虽然极大的扩充了操作系统理论,但系统结构并没有变化,只是各功能模块得以进一步完善。硬件角度下操作系统发展的分析主流操作系统系统特点计算机语言背景无手工操作无编程语言直接使用机器代码1936年图灵提出图灵机单道批处理系统作业运行的监督程序编程语言雏形期1957年FORTRAN语言开发成功多道批处理分时系统实时系统多处理系统操作系统结构确立,分为处理机管理、内存管理、设备管理、文件管理等模块1)编程语言大量涌现2)结构化程序设计3)C语言逐渐60年代的软件危机导致软件工程的发展1969年Unix诞生1972年C语言推出主流操作系统系统特点计算机语言背景类Unix系列WINDOWS系列人机交互成为主题1)可视化界面2)多媒体技面向对象语言成为主流80年代中期开始面向对象技术逐步发展网络操作系统分布式操作系统微内核技术兴起1)JAVA语言2)脚本语言兴起1995年JAVA推出嵌入式系统单内核与微内核竞争激烈编程工具向跨平台方向发1991年免费的操作系统Linux发布软件角度下的操作系统发展轨迹程序设计理论约束着操作系统设计。操作系统的发展滞后于计算机语言的发展,从结构化设计到对象化设计,操作系统总是最后应用新编程理论的软件之一。至今操作系统对于是否需要彻底对象化(即微内核化),还处于徘徊时期,仍在探索单内核与微内核的最佳结合方式。人机交互技术主要是为用户考虑,这是对操作系统设计进行的变革。以Linux为代表的开源软件的出现,打破了带有神秘色彩的传统的封闭式开发模式。软件角度下的操作系统发展轨迹分析讲究效率的单模块操作系统进程管理内存管理设备管理文件管理模块之间可以互相调用的单模块结构模块之间直接调用函数,除了函数调用的开销外,没有额外开销。庞大的操作系统有数以千计的函数复杂的调用关系势必导致操作系统维护的困难讲究效率的单模块操作系统追求简洁的微内核操作系统客户进程进程服务器内存服务器文件服务器…微内核内核与各个服务器之间通过通信机制进行交互,这使得微内核结构的效率大大折扣。内核发出请求,服务器做出应答为各个服务器模块的相对独立性,使得其维护相对容易追求简洁的微内核操作系统一些重要的操作系统FMS(FORTRANMonitorSystem)和IBSYS(IBM为7094配备的操作系统)OS/360(IBM为系列机360配备的操作系统)CTSS(CompatibleTimeSharingSystem)MULTICS(MULTiplexedInformationandComputerService)UNIX类、LinuxCP/M历史上的操作系统MS-DOS、Windows3.1/95/98/Me、WindowsNT、Windows2000/XP、WindowsCE、WindowsServer2003、Windows7MacintoshOS/390MachVxWorks嵌入式领域研究型操作系统历史上的操作系统有线电视机顶盒领域PowerTV掌上计算机领域PalmOS数字影像领域Digita手机Symbian,SmartPhone,PalmOS,WindowsMobile,Linux,Android其他Nucleus,VxWorks嵌入式Linux:uClinux,MontaVistaLinux,LynxOS操作系统领域中新的操作系统1965年在ARPA的支持下MIT、贝尔实验室和通用电气公司决定开发一种“公用计算服务系统”,希望能够同时支持整个波士顿所有的分时用户。该系统称作MULTICS(MULTiplexedInformationandComputingService)MULTICS设计目标是:便利的终端使用——大量远程终端通过电话线接入计算机主机高可靠的大型文件系统——大容量的用户信息共享;存储和构造层次化信息结构的能力历史悠久的UnixMULTICS研制难度超出所有人的预料(PL/1语言)长期研制工作达不到预期目标,1969年4月贝尔实验室退出,通用电气公司也退出最终,MIT坚持下来,MULTICS成功运行,成为商业产品(通用汽车、福特、美国国家安全局等)运行MULTICS的计算机系统在九十年代中陆续被关闭(加拿大国防部于2000年10月30日17:08)MULTICS的意义引入了许多现代操作系统领域概念雏形,对随后的操作系统特别是UNIX的成功有着巨大的影响历史悠久的Unix1969年,在贝尔退出MULTICS研制项目后,KenThompson和DennisM.Ritchie想申请经费买计算机从事操作系统研究,但多次申请得不到批准项目无着落,他们在一台无人用的PDP-7上,重新摆弄原先在MULTICS项目上设计的“空间旅行”游戏为了使游戏能够在PDP-7上顺利运行,他们陆续开发了浮点运算软件包、显示驱动软件,设计了文件系统、实用程序、shell和汇编程序到了1970年,在一切完成后,给新系统起了个同MULTICS发音相近的名字UNIX随后,UNIX用C语言全部重写,自此,UNIX诞生了历史悠久的UnixUNIX是现代操作系统的代表。Unix运行时的安全性、可靠性以及强大的计算能力赢得广大用户的信赖促使UNIX系统成功的因素:首先,由于UNIX是用C语言编写,因此它是可移植的,UNIX是世界上唯一能在笔记本计算机、PC机、工作站直至巨型机上运行的操作系统第二,系统源代码非常有效,系统容易适应特殊的需求最后,也是最重要的一点,它是一个良好的、通用的、多用户、多任务、分时操作系统历史悠久的UnixUNIX的两大体系:SystemⅤ:具有BellLab的血统BSD4.3:伯克利版的,TCP/IP协议诞生于此Unix的商业化是一把双刃剑历史悠久的UnixSunSolarisIBMAIXSCOUnixWareHPHP-UXFreeBSD主流Unix产品1986年,AndrewTanenbaum开发Minix系统;1991年,芬兰赫尔辛基大学的学生L