第一章操作系统概述计算机系统由硬件,系统程序和应用程序组成银行系统航空订票系统浏览器编辑器编译器命令解释器操作系统机器语言微程序物理设备应用程序系统程序硬件用户态核心态Questions你知道有哪些操作系统?你用过哪些操作系统?Windows系列,Linux,Unix,MaxOS,AIX,Minix,VxWorks,DOS、FreeBSD、PalmOS、TinyOS、MVS内容提要什么是操作系统操作系统的功能操作系统的历史操作系统的结构各种典型OS的系统结构操作系统的设计和实现Minix操作系统概述1.什么是操作系统什么是操作系统?给个例子作为扩展了的机器—虚拟机(自顶向下):以使用软盘为例,从复杂的驱动过程到简单的文件操作。作为资源管理器—跟踪使用状况,满足和协调多个程序对软硬件资源的使用要求,提高利用率(自底向上)被竞争使用的系统资源多种多样,如CPU、内存、I/O和文件等。2.操作系统的功能OS的功能有哪些?管理者对内用户接口对外3.操作系统的历史第一代(1945-55)真空管和插板:无OS可言第二代(1955-65)晶体管和批处理:批处理OS第三代(1965-80)IC和多道程序:应用的逐步广泛和逐步升级的要求:兼容机的产生(IBM360)关键技术的出现:多道程序-起因和实现方法(p.7);Spooling;分时-交互的需要和随之带来的保护问题;小型机的成长和UNIX的出现第四代(1980-现在)个人计算机:PC的廉价、方便和广泛使用OS:DOS→WINDOWS;UNIX;网络OS;分布式OS;MINIX的历史和LUNIX;MINIX的历史UNIXVersion6,源代码免费,许多大学在将OS时分析验研究UNIX的代码。AT&T在发布第7版本时,禁止在课程中研究其源代码,只讲理论AndrewS.Tanenbaum写了与UNIX完全兼容,单内核全新的OS-MINIX。Minix没有借用Unix的一行代码Minix更加模块化,文件系统不是OS的一部分,而是作为一个用户程序在运行Minix注重可读性,Unix注重效率MINIX的历史(续)Minix用C编写,容易移植Minix很短小,SmallisbeautifullMinix出现不久就出现了面向MInix的新闻组,数周之内就有40000用户订阅,很多人建议增加功能,二作者坚持不采纳,以保持其短小。芬兰的学生LinusTorvalds决定编写一个类似Minix的系统-Linux,面向适用,而非教学,Linux的历史LinusTorvalds在Minix的新闻组中发布想开发一个OS,出于爱好最初是能在i386上运行的类UNIX的OS1999年发布Linux的2.4版本的内核Linux的出现,产生了一种文化:精髓是知识和技术应该为全人类共享。4.操作系统的结构整块式系统层次式系统虚拟机系统C/S系统(1)操作系统的结构-整块式系统操作系统系统调用执行过程操作系统的结构-整块式系统整块式系统:无结构,整个OS是一组过程的集合。但仍然有kernelcall,相应地有核心态和用户态(p.28),有一定的模块结构monolithicsystemormodularsystem模块结构的特点模块结构的特点:模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程优点:具有一定灵活性,在运行效率高缺点:功能划分和模块接口难保正确和合理;模块之间的依赖关系(功能调用关系)复杂(调用深度和方向),降低了模块之间的相对独立性--不利于修改(2)操作系统的结构-层次式系统层次式系统:上层软件基于下层软件之上。THE系统(p.29)分层结构或虚拟机(续)•从资源管理观点出发,划分层次•在某一层次上代码只能调用低层次上的代码,使模块间的调用变为有序性•系统每加一层,就构成一个比原来功能更强的虚拟机•有利于系统的维护性和可靠性•但是效率差(3)操作系统的结构-虚拟机系统虚拟机系统:多道程序和方便的界面。VM/370(p.30)(裸机硬件的精确复制);在pentium上运行老的DOS程序。是否使用exokernel来实现虚拟机。(4)操作系统的结构-C/S系统C/S系统:尽可能把OS所做的工作放到特定的用户程序中完成(客户进程/服务器进程)。P.32的C/S结构和分布式C/S。机制和策略分离。•Kernel的全部工作是处理客户和服务器之间的通信Client-ServermodelorMicrokernel微内核(micro-kernel):将更多操作系统功能放在核心之外,作为独立的服务进程运行;服务进程(或称作“保护子系统”)客户进程(系统客户和应用客户)--需支持多进程本地过程调用(LPC,LocalProcedureCall):一种进程之间请求-应答式的消息(Message)传递机制。消息:是一定格式的数据结构。操作系统的结构-C/S系统每一部分较小,易于管理,一个部分崩溃,不会导致整个系统的崩溃;适合于分布式系统;5.各种典型OS的系统结构Linux的结构传统的UNIX结构现代UNIX结构WindowsNT体系结构Windows2000体系结构Linux的结构硬件硬件层硬件控制字符设备设备驱动程序块设备缓冲区管理文件子系统系统调用接口函数库内核层用户程序进程通信进程调度存储管理进程控制子系统传统的UNIX结构现代UNIX结构texta.outelfcoff公共例程可执行格式开关表NFSFFSs5fsRFSvnode/vfs接口分时进程实时进程系统进程调度框架网络驱动程序终端驱动程序流磁盘驱动程序磁带驱动程序块设备开关表文件映射匿名映射设备映射虚存框架WindowsNT体系结构安全子系统登录进程Win32客户OS/2客户POSIX客户OS/2子系统Win32子系统POSIX子系统硬件抽象层系统服务核心态用户态内核NT执行体对象管理器安全引用监视器虚拟内存管理器进程和线程管理器本地过程调用功能高速缓存管理器文件系统驱动程序硬件设备驱动程序I/O管理器网络重定向简化的Windows2000体系结构简化的Windows2000体系结构6.操作系统的设计和实现1)DesignGoals设计目标Usergoals–OSshouldbeconvenienttouse,easytolearn,reliable,safe,andfast用户目标-操作系统应该便于使用,易学,可靠,安全并且快捷Systemgoals–OSshouldbeeasytodesign,implement,andmaintain,aswellasflexible,reliable,error-free,andefficient.系统目标-操作系统应该容易设计、实现和维护,还要灵活、可靠、无错误和高效2)操作系统的设计原则可维护性:容易修改与否称为可维护性;有三种可能的维护:改错性维护:改正已发现的错误;适应性维护:修改软件,使之适应新的运行环境(硬件环境和软件环境);如:操作系统的移植。完善性维护:增加新功能;可靠性:可靠性包括两方面:正确性:正确实现所要求的功能和性能;稳健性:对意外(故障和误操作)作出适当的处理;可理解性:易于理解,以方便测试、维护和交流;性能:有效地使用系统资源;尽可能快地响应用户请求;3)MechanismsandPolicies机制和策略机制确定怎样做事,策略决定要做什么,例如构建定时器是一个确保保护CPU的机制,但是决定对一个特殊的用户定时器设置多长是一个策略决定把策略从机制中分离(separation)是非常重要的原则,如果策略在后期要改变,它允许最大的灵活性(flexibility)基于微内核(Microkernel-based)的OS利用机制与策略相分离的思想到一个极致(extreme),通过实现原语构建块的基本集合,几乎与策略无关,允许增加更多的先进机制和策略4)语言选择传统上用汇编语言编写,现在可用高级语言编写用高级语言编写代码:canbewrittenfaster.编码快ismorecompact.更紧凑iseasiertounderstandanddebug.容易理解和调试以高级语言编写的OS更容易移植AnOSisfareasiertoport(movetosomeotherhardware)ifitiswritteninahigh-levellanguage.5)SystemGeneration(SYSGEN)系统生成操作系统被设计在任何类型的机器上运行;系统必须能在每一特定的机器上配置SYSGEN程序得到硬件系统特定配置的信息自举(Booting)--通过调入内核启动计算机(startingacomputerbyloadingthekernel.)自举程序(Bootstrapprogram)--存储在ROM中的代码,能够定位内核,调入内存,并开始其运行(codestoredinROMthatisabletolocatethekernel,loaditintomemory,andstartitsexecution.)7.Minix操作系统概述Minix系统结构图Minix的代码结构组织与数据结构定义头文件的定义与组织各个部分简介顺序进程模型进程基本状态顺序进程模型Minix系统结构图磁盘任务终端任务时钟任务系统任务以太网任务……内存管理器文件系统网络服务器……Init进程用户进程用户进程用户进程用户进程……第一层第二层第三层第四层I/O任务服务器进程用户进程系统核心进程管理第一,捕获陷入和中断、保存和恢复寄存器、调度以及向高层提供一个独立顺序进程模型第二,处理消息机制:检查目标进程的合法性、定位物理内存中的发送和接收缓冲区,以及向发送方接收方拷贝数据。Minix系统结构图磁盘任务终端任务时钟任务系统任务以太网任务……内存管理器文件系统网络服务器……Init进程用户进程用户进程用户进程用户进程……第一层第二层第三层第四层I/O任务服务器进程用户进程系统核心进程管理•任务:IO进程,每类设备有一个IO进程,也称作“设备驱动程序“。•第二层的任务和第一层的代码链接形成二进制程序,称作内核(kernel);•第一层代码可以访问任意的内存,以及处理器,被赋予较任务更高的特权级Minix系统结构图磁盘任务终端任务时钟任务系统任务以太网任务……内存管理器文件系统网络服务器……Init进程用户进程用户进程用户进程用户进程……第一层第二层第三层第四层I/O任务服务器进程用户进程系统核心进程管理包含向用户进程提供有用服务的进程,特权级较低,不能直接访问IO端口,1)代码结构组织Minix系统代码结构头文件:usr/include源代码:usr/src无法归类的公共头文件Posix标准头文件:sys/Minix的头文件:minix/IBMPC头文件:ibm/系统核心代码:kernel/内存管理器代码:mm/文件系统代码:fs/库例程代码:lib/init源代码:tools/命令代码:commands/网络源代码:inet/测试工具源代码:test/1)代码结构组织磁盘任务终端任务时钟任务系统任务以太网任务……内存管理器文件系统网络服务器……Init进程用户进程用户进程用户进程用户进程……进程管理系统核心代码kernel/独立代码模块mm、fs...源代码系统配置定义编译环境定义硬件环境定义数据类型定义DS、接口定义常量与宏定义全局变量定义头文件头文件的定义与组织头文件有哪些功能?功能1:定义数据结构、定义函数接口功能2:宏定义,例如常量、错误代码功能3:设定编译开关,控制运行过程功能4:设定硬件开关,适应硬件环境功能5:设定配置开关,限定功能范围头文件的用法举例软件的体系结构观点硬件底层环境编译器环境操作系统环境现实应用环境程序内部控制流程完整的软件系统设计必须涵盖从底层至顶层的完整流程,以体系结构的思