目录
2)客户/服务器模式(Client-Server Model)
在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。
- 并发:即宏观上在一段时间内有多道程序在同时运行,在微观上,这些程序是在交替执行的。
- 为使程序能并发执行,为每个程序建立进程。
注意区分并发和并行!!
程序是静态实体(Passive Entity),它们是不能并发执行的。为使多个程序能并发执行,系统必须分别为每个程序建立进程。一个进程是程序的一次执行,简单说来,进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个活动实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要一定的资源,如CPU、存储空间及I/O设备等。
在操作系统中引入进程的目的,是使多个程序能并发执行。进程和并发是现代OS中最重要的基本概念,也是OS运行的基础。进程是OS中可以拥有资源和作为独立运行的基本单位。
直到80年代中期,人们才有提出了比进程更小的单位——线程(Threads)。引入线程后,进程是分配资源的基本单位,线程作为独立运行的基本单位。
- 如何从一个进程切换到另一个进程?
- 如何将各个进程隔离开来,使之互不干扰?
- 怎样让多个进程协作完成任务?
- 多个进程共享文件数据时,如何保证数据的一致性?
- 怎样协调多个进程对资源的竞争或共享?
- 并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程序之间多路复用。
- 并发性是让有限物理资源实现多用户共享,以提高效率。
并发和共享是相互依存的!!
- 共享是指系统中的资源可供内存中多个并发执行的进程共同使用。因资源属性不同,对资源共享的方式也不同;
- 互斥共享:(如音频设备、打印机等) 资源分配后到释放前,不能被其他进程所用;
- 同时访问:(如磁盘文件) 同时是宏观上的,在微观上进程可能是交替地对资源进行访问;
- 并发和共享是操作系统的两个最基本的特征。一方面,资源共享是以程序(进程)的并发执行为条件的;另一方面,若系统不能对资源共享实施有效管理, 协调好诸进程对共享资源的访问,也必然影响到程序并发执行的程度;
“虚拟”:指通过某种技术把一个物理实体变为若干个逻辑上的对应物,目的是提高资源利用率。
虚拟是以并发和共享为前提的!!
时分复用技术:利用设备为一用户服务的空闲时间,又转去为其他用户服务,使该设备得到最充分的利用。
- 虚拟处理机:
- CPU--每个用户(进程)的"虚处理机;
- 虚拟设备:
- 显示设备--多窗口或虚拟终端(virtual terminal);
- 打印设备--将临界资源变为同时访问资源;
空分复用技术:利用存储器的空闲空间分区存放或运行 其它的多道程序,以此来提高内存的利用率。
存储器--每个进程都占有的地址空间(指令+数据+堆栈)
- 进程的运行速度不可预知:分时系统中,多个进程并发执行,"时走时停",不可预知每个进程的运行推进快慢;
- 也称不确定性,指进程的执行顺序和执行时间的不确定性;
- 判据:无论快慢,应该结果相同--通过进程互斥和同步手段来保证;
- 难以重现系统在某个时刻的状态(包括重现运行中的错误);
异步是并发和共享的必然结果! !
操作系统是用户与硬件之间的桥梁,它主要负责管理计算机系统中的所有资源,并负责它们的调度和使用,充分发挥这些资源的作用和方便用户使用计算机。
从资源管理的角度来看,操作系统的功能主要有:
- 处理机管理功能;
- 存储器管理功能;
- 设备管理功能;
- 文件管理功能;
- 用户接口;
处理机的分配和运行,都是以进程为基本单位,因而对处理机的管理,可归结为对进程的管理。
- 为作业创建一个或多个进程,并为之分配必要资源。
- 撤销已结束的进程,回收其占用的资源。
- 控制进程运行过程的状态转换。
- 互斥方式:诸进程访问临界资源;锁机制;
- 同步方式:在相互合作完成任务的进程之间由同步机构对执行次序加以协调;信号量机制;
相互合作的诸进程之间需要互换信息,即合作进程间需要通信,以协调进程间的协作。
- 作业调度:为部分后备作业分配资源、将其调入内存、创建进程、插入到就绪队列,等待进程调度。
- 进程调度:为就绪队列的某进程分配处理器,设置运行现场,使其能够运行。
存储器管理的主要任务,是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。
主要任务是为每道作业分配内存空间,减少内存碎片,提高内存利用率,允许正在运行的程序动态申请存储空间。
- 静态分配:装入作业时分配其所需全部存储空间,运行期间不可再申请存储空间,也不能“移动”。
- 动态分配:装入作业时分配其所需的基本存储空间,运行期间可再申请存储空间,也可以“移动”。
- 通过设置界限寄存器实现,主要任务是保证各道程序之间互不干扰,各自在系统为其分配的内存空间运行,禁止用户程序访问操作系统的程序和数据。
- 为了确保每道程序都只在自己的内存区中运行,必须设置内存保护机制。设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。越界检查都由硬件实现。对发生越界后的处理,还须与软件配合来完成。
- 下界寄存器:存放程序装入内存后的开始地址(首址);
- 上界寄存器:存放程序装入内存后的末地址;
- 判别式:
下界寄存器 ≤ 物理地址 < 上界寄存器
- 程序中的地址称为“逻辑地址”或“相对地址”,这些程序的地址都是从“0”开始的,程序中的其它地址都是相对于起始地址计算的;
- 内存中单元的地址称为“物理地址“或“绝对地址”,由内存中的一系列单元所限定的地址范围;
- 多道程序下,进程装入内存后要由逻辑地址到内存物理地址进行变换,该功能应在硬件的支持下完成。
借助于虚拟存储技术,从逻辑上去扩充内存容量,借助于虚拟存储技术。改善了系统的性能,基本上不增加硬件投资。
- 请求调入:部分装入,即运行期间由操作系统在需要时装入所需部分。
- 置换:内存空间不够时,可调出部分不活跃程序或数据到外存,将需要调入的部分放入内存。
设备管理用于管理计算机系统中所有的外围设备, 而设备管理的主要任务是,完成用户进程提出的I/O请求;为用户进程分配其所需的I/O设备;提高CPU和I/O设备的利用率;提高I/O速度;方便用户使用I/O设备。为实现上述任务,设备管理应具有缓冲管理、设备分配和设备处理,以及虚拟设备等功能。
匹配CPU和外设的速度,提高两者的利用率。最常见的缓冲区机制有单缓冲机制、能实现双向同时传送数据的双缓冲机制,循环缓冲以及能供多个设备同时使用的公用缓冲池机制。
根据用户请求,分配I/O设备及相应的控制器和通道。
通过设备驱动程序完成,实现CPU和设备控制器之间的通信。
- 设备独立性:应用程序独立于物理设备,使得用户编制的程序与实际使用的物理设备无关。
- 虚拟设备功能:每次仅允许一个进程使用的物理设备,变为能“同时”供多个进程共享的设备。(即多个对应的逻辑设备)
文件管理的主要任务:对用户文件和系统文件进行管理,以方便用户使用并保证文件安全。
- 解决如何存放信息,以提高空间利用率和读写性能;
- 存储空间的使用情况,空间分配与回收;
- 解决信息检索问题,对众多目录项加以有效组织。
- 目录项包括文件名、文件属性、文件在磁盘上的物理位置等。
- 文件的读/写管理:
- 该功能是根据用户的请求,从外存中读取数据;或将数据写入外存。
- 文件保护:
- 防止未经核准的用户存取文件;
- 防止冒名顶替存取文件;
- 防止以不正确的方式使用文件。
目标:提供一个友好的用户访问操作系统的接口。
- 联机用户接口:这是为联机用户提供的,它由一组键盘操作命令及命令解释程序所组成。当用户在终端或控制台上每键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释并执行该命令。
- 脱机用户接口:该接口是为批处理作业的用户提供的,故也称为批处理用户接口。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预。
该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径。它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用。
图形用户接口采用了图形化的操作界面, 用非常容易识别的各种图标(icon)来将系统的各项功能、各种应用程序和文件,直观、逼真地表示出来。用户可用鼠标或通过菜单和对话框,来完成对应用程序和文件的操作。
- 软件:
- 是指当计算机运行时,能提供所要求的功能和性能的指令和程序的集合,以及该程序能够正确地处理信息的数据结构;
- 规范的软件还应具有描述程序功能需求以及程序如何操作使用的文档;
- 软件工程:
- 是指运用系统的、规范的和可定量的方法,来开发、运行和维护软件;
- 目的是为了解决在软件开发中所出现的编程随意、软件质量不可保证以及维护困难等问题;
设计者主要任务是功能实现和系统高效,而不考虑操作系统的结构性。
- 其特点:
- 一组过程的集合;
- 各过程之间可以相互调用;
- 在操作系统内部不存在任何结构;
- 主要缺点:
- 操作系统庞大杂乱,缺乏清晰的程序结构,调试困难;
- 程序难以阅读和理解,增加了维护人员的负担;
20世纪60年代,OS采用“模块化程序设计”技术,模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程;
- 优点:
- 具有一定灵活性,在运行中的高效率;
- 缺点:
- 功能划分和模块接口难保正确和合理;
- 模块之间的依赖关系(功能调用关系)复杂(调用深度和方向),降低了模块之间的相对独立性--不利于修改
- 有序分层的概念;
- 基本原则是每一层都仅使用其底层所提供的功能和服务,这样可使系统的调试和验证都变得容易;
- 层次的设置:
- 程序嵌套;
- 运行频率;
- 公用模块;
- 用户接口;
- 把操作系统分成若干分别完成一组特定功能的服务进程,等待客户提出请求;而系统内核只实现操作系统的基本功能(如:虚拟存储、消息传递);
- 微内核(MicroKernel):
- 将更多操作系统功能放在核心之外,作为独立的服务进程运行;
- 服务进程,如进程服务器、存储管理服务器、文件服务器;
- 客户进程(系统客户和应用客户)--需支持多进程
微内核所提供的功能,通常都是一些最基本的功能:
- 进程管理;
- 存储器管理;
- 进程通信管理;
- I/O设备管理;
- 为了提高OS的灵活性和可扩充性而将OS划分为两部分, 一部分是用于提供各种服务的一组服务器(进程); 另一部分是内核,用来处理客户和服务器之间的通信;
- 所有这些服务器(进程)都运行在用户态。 当有一用户进程(现在称为客户进程)要求读文件的一个盘块时,该进程便向文件服务器(进程)发出一个请求 ;
- 将此应答回送给请求客户;内核还有与硬件直接相关的一些功能;
- 可维护性:容易修改与否称为可维护性;
- 改错性维护:改正已发现的错误;
- 适应性维护:修改软件,使之适应新的运行环境(硬件环境和软件环境);如:操作系统的移植。
- 完善性维护:增加新功能;
- 可靠性:
- 正确性:正确实现所要求的功能和性能;
- 稳健性:对意外(故障和误操作)作出适当的处理;
- 可理解性:易于理解,以方便测试、维护和交流;
- 性能:有效地使用系统资源;尽可能快地响应用户请求;
- 微内核结构:只给内核分配最基本的功能,可简化实现,提供灵活性;
- 多线程:把执行一个应用程序的进程划分成可以同时运行的多个线程。提高程序的执行效率。
- 对称多处理:有多个处理器共享同一个主存储器和I/O设备,可以执行相同的功能。提高并行性、可靠性;
- 分布式操作系统;
- 面向对象设计:提高模块独立性,便于扩展;