计算机操作系统的软件体系结构是什
操作系统结构
操作系统与用户接口
系统调用
操作系统结构
操作系统特征
3。0用户与操作系统的接口
1。 命令接口
联机接口(交互式):使用系统提供的操作命令,交互地控制程序执行和管理计算机系统。 如系统管理,环境设置,权限管理,文件管理等
脱机接口:以作业说明书的方式提交给系统(批的方式);执行过程中,用户无法干涉
2。程序接口(系统调用)
系统调用是操作系统提供给编程人员的唯一接口,编程人员利用系统调用,完成与机器硬件部分相关的工作。 用户就可以在程序中调用操作系统所提供的一些子功能。
命令解释系统
命令解释系统(外壳,shell):是OS的重要组件之一,是用户和OS的接口。
作用...全部
操作系统结构
操作系统与用户接口
系统调用
操作系统结构
操作系统特征
3。0用户与操作系统的接口
1。 命令接口
联机接口(交互式):使用系统提供的操作命令,交互地控制程序执行和管理计算机系统。
如系统管理,环境设置,权限管理,文件管理等
脱机接口:以作业说明书的方式提交给系统(批的方式);执行过程中,用户无法干涉
2。程序接口(系统调用)
系统调用是操作系统提供给编程人员的唯一接口,编程人员利用系统调用,完成与机器硬件部分相关的工作。
用户就可以在程序中调用操作系统所提供的一些子功能。
命令解释系统
命令解释系统(外壳,shell):是OS的重要组件之一,是用户和OS的接口。
作用:读入用户的输入或者文件中的命令,并运行它(们);通常转换为一个或者多个系统调用
位置:
有的是在内核中
有的如MS-DOS和Unix,则将它作为一个特殊程序(它易变,因此更灵活),当一个作业开始或者分时系统中用户登陆时,它运行
命令解释系统的工作流程
首先读入键盘缓冲区中的命令,判别其文件名,扩展名及驱动器名是否正确。
若发现有错,在给出出错信息后返回;
若无错,再识别该命令:
基于表格的方法:
从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令。
表格其中的每一表目都是由命令名及其处理程序的入口地址两项所组成。
3。1 系统调用-功能
系统调用(SYSTEM CALL) :
OS核心中都有一组实现系统功能的过程(子程序),系统调用就是对上述过程的调用。编程人员利用系统调用,向OS提出服务请求,由OS代为完成。
每个系统都有上百种系统调用,涉及进程,文件和设备控制等。
系统调用运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。
3。1 系统调用-举例
例1: 文件管理:文件读写和文件控制(高级语言);
Open 文件打开
Close 文件关闭
Read 读文件
Write 写文件
Creat 文件创建
例2。
利用系统调用实现硬盘文件内容读写
MOVE DX,OFFSETBUFF
MOVE CX,BYTE
MOVE BX,HANDLE
MOVE AH,3FH
INT 21H
3。1 系统调用-实现过程
当编程人员给定了系统调用名和参数之后,由一个类似于硬件中断处理的中断处理机构完成-陷入处理机构。
它是在系统中为控制系统调用服务的机构。
当用户使用系统调用时,产生一条相应的指令(陷入指令,trap指令),CPU在执行到该指令时发生相应的中断,发出有关信号给该处理机构,并启动相应的处理程序来完成该系统调用所要求的功能。
陷入指令(或称访管指令):由于系统调用引起处理机中断的指令
在陷入中断发生时,从用户态->系统态。这一转换在发生访管中断时由硬件自动实现。
3。1 系统调用-实现过程
系统调用语句本身是硬件提供的(机器指令),但其所调用的功能是操作系统提供的。
每种机器的机器指令集中都有一条系统调用指令。
系统调用与返回
3。1 系统调用-实现过程
设置系统调用号和参数。
调用号作为指令的一部分(如早期UNIX),或装入到特定寄存器里(如:DOS的 int 21H,AH=调用号。
)
参数装入到特定寄存器里,或内存区域
执行trap(INT)指令:入口的一般性处理,查入口跳转表,跳转到相应功能的过程。
保护CPU现场(将PC与PSW入栈),改变CPU执行状态(处理机状态字PSW切换,地址空间表切换)
将参数取到核心空间
执行操作系统内部代码;
执行iret指令:将执行结果装入适当位置(类似于参数带入),恢复CPU现场(以栈顶内容置PSW和PC)。
系统调用表/调用号
Linux为每个系统调用都进行了编号(最大为NR_syscall),同时在内核中保存了一张系统调用表,该表中保存了系统调用编号和其对应的服务例程地址。第n个表项包含系统调用号为n的服务例程的地址。
系统调用时需要把系统调用号一起传入内核。在x86上,这个传递动作是通过在执行int $0x80前把调用号装入eax寄存器实现。
这样系统调用处理程序一旦运行,就可以从eax中得到数据,然后再去系统调用表中寻找相应服务例程了。
现在的系统提供了许多库函数,用户编程时也许就是用上层的库函数,而不是直接使用系统调用。
Win32 API:如微软提供了一个Win32 API函数集合,它实质上就是一些库函数。在这些函数执行时,往往会再去调用系统的系统调用。
该库函数提供了更易用的界面。因此,通过Win32 API程序员就能够得到操作系统的服务。
如write(,…,…)
教材P49:文件复制
3。1 系统调用-库函数
陷入与中断的比较
相同点:它们都是由相同的硬件机构处理的事件,
陷入是指CPU内部事件产生的中断,它包括程序运算引起的各种错误,如地址非法,效验错,页面失效,存取控制错,从用户态到核心态的切换等都是陷阱的例子
中断和陷入不同点:
陷入通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关 的中断源引起;
陷入处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的
中断只能在指令之间被响应,而陷入可以在一条指令执行中被响应
陷入处理程序在各自的堆栈上进行,中断处理程序则在系统堆栈环境中进行
_软中断是通信进程之间用来模拟硬中断的一种信号通信方式,处理机处理的时机决定于接受软中断信号的进程,如果占有处理机,与中断处理相同,否则相应的处理必须等到接收进程得到处理机才能响应。
3。2。1 整体或模块结构
3。2。2 分层结构
3。2。3微内核结构(客户-服务器结构)
3。2。4 虚拟机
3。2,操作系统结构
整体或模块结构
整个系统按功能进行设计和模块划分。
系统是一个单一的,庞大的的软件系统。由众多服务过程(模块)组成,可以随意调用其他模块中的服务过程
评价
优点:具有一定灵活性,模块之间转接的灵活性使运行中的高效率;结构紧密,接口简单直接
缺点:功能划分和模块接口难保正确和合理;模块之间的依赖关系(功能调用关系)复杂(调用深度和方向)
3。
2,操作系统结构-(1)整体或模块结构
3。2。1 整体或模块结构
从资源管理观点出发,将OS划分为若干层次。在某一层次上代码只能调用低层次上的代码,使模块间的调用变为有序性。有利于系统的维护性和可靠性。
3。2。2 分层结构
3。2。2 分层结构
按此种模式构造的第一个操作系统是E。W。Dijkstra开发的THE系统(1968年)。
一个层次式操作系统
处理器分配和多道程序
0
内存和外存管理
1
操作员一进程通信
2
输入输出管理
3
用户程序
4
操作员
5
功 能
层次
3。
2。2 分层结构-特点
分层原则
被调用功能在低层:如文件系统管理-设备管理-设备驱动程序
活跃功能在低层:提高运行效率
资源管理的公用模块放在最低层:如缓冲区队列,堆栈操作
最低层的硬件抽象层:与机器特点紧密相关的软件放在最低层。
如Windows NT中的HAL--单处理,多处理
资源分配策略放在最外层,便于修改或适应不同环境
3。2。2 分层结构-特点
优点:
功能明确,调用关系清晰(高层对低层单向依赖),有利于保证设计和实现的正确性
低层和高层可分别实现(便于扩充);高层错误不会影响到低层
缺点:
效率低。
层次之间的调用开销。
3。2。3微内核结构(客户-服务器结构)
趋势:从操作系统中去掉尽可能多的东西,而只留一个最小的核心
微内核(micro-kernel):
只给内核分配一些最基本的功能,运行在内核模式。
(如:内存,进程间通信,基本调度等)。
其它的OS服务都是由运行在用户模式下的进程完成,可作为独立的应用进程,称为服务进程。
微内核提供客户程序和运行在用户空间的各种服务之间的通信能力。
如Mach Unix。而Windows NT采用了混合结构。(分层结构+微内核结构)
3。2。3微内核结构
3。2。3微内核结构
优点:
良好的扩充性:只需添加支持新功能的服务进程即可。
而且所有新服务被增加到用户空间中,不需要修改内核。
可靠性好:所有服务器以用户进程的形式运行,而不是运行在核心态,所以它们不直接访问硬件。假如在文件服务器中发生错误,文件服务器可能崩溃,但不会导致整个系统的崩溃
便于网络服务,实现分布式处理:微内核可以以相同的方式与本地和远程的服务进程交互(远程过程调用 RPC, Remote Procedure Call)
缺点:
消息传递比直接调用效率要低一些 (但可以通过提高硬件性能来补偿 )
3。
2。3 微内核结构
3。2。4 虚拟机
3。2。4 虚拟机
虚拟机:通过某种技术,使物理计算机作为共享资源从而创建虚拟机。
利用CPU调度,虚拟内存技术,OS能创建一种幻觉,从而使进程认为有自己的处理器和自己的内存。
每台虚拟机都与裸机相同,所以每台虚拟机可以运行一台裸机所能够运行的任何类型的操作系统。不同的虚拟机可以运行不同的操作系统。
3。2。4 虚拟机
使用虚拟机的好处
通过完成保护系统资源,虚拟机提供了一个安全层,每个虚拟机完全与其它虚拟机隔开,从而使系统资源被完全保护
虚拟机允许进行系统开发而不必中断正常的系统操作:系统程序员有自己的虚拟机,系统开发可在虚拟机而不是真实的物理机器上进行。
虚拟机的应用:作为解决系统兼容性问题的一种方法,虚拟机的应用程序不断增加。
例如在Sun的处理器上运行微软开发的基于Intel CPU的系统:解决方法是在Sun的处理器上创建虚拟Intel机,其Intel指令被转换为本机指令。
允许windows程序运行在基于Linux的机器上,该虚拟机可以运行Windows应用程序和Windows操作系统。
3。2。5 系统设计与实现
设计目标
硬件
系统类型:批处理,分时,分布式。
。。
用户目标:
使用人员:使用方便,可靠,快速
设计与维护人员:容易设计,实现和维护。
系统目标
区分机制与策略(细读P65页)
机制:决定如何来做
策略:决定做什么
如定时器结构。
策略可能会随地点或时间而概念,系统更需要通用机制。
系统实现
传统OS是用汇编语言写的,如MS-DOS使用Intel8088 汇编语言写的
现在的OS都是用高级语言如C或者C++来写的:使代码编写更快,容易理解和调试,OS更容易移植。
但可能降低速度,提高存储要求。
对于关键子程序,可用汇编语言编写。
3。3 现代操作系统的特征
并发(concurrency)
共享(sharing)
虚拟(virtual)
异步性(asynchronism)
并发(concurrency)
并发指:多个事件在同一时间段内发生。
操作系统是一个并发系统,各进程间的并发,系统与应用间的并发。操作系统要完成这些并发过程的管理。
"在同一段时间内,多个程序在宏观上同时运行,微观上分时地交替执行" (在单处理器情况下)。
并行(parallel)是指在同一时刻发生。
共享(sharing)
互斥共享方式(如音频设备):资源分配后到释放前,不能被其他进程所用。
同时访问方式:(如可重入代码,磁盘文件)
资源分配难以达到最优化
多个进程共享有限的计算机系统资源。
操作系统要对系统资源进行合理分配和使用。资源在一个时间段内交替被多个进程所用。
程序的并发执行能有效改善系统资源的利用率,但使系统复杂化,因此操作系统必须对并发活动进行控制和管理。
并发是操作系统最重要的特征,其它特征均以并发为前提。
并发和共享是操作系统的两个最基本的特征 ,二者互为存在条件:
资源的共享是以程序的并发执行为条件。
程序的并发执行也以资源的共享为条件。
虚拟(virtual)
是指通过某种技术把一个物理实体变成若干个逻辑上的对应物。
在OS中利用了多种虚拟技术,分别用来实现虚拟处理机,虚拟内存,虚拟外部设备和虚拟信道等。
虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。
CPU--每个用户(进程)的"虚处理机"
存储器--每个进程都占有的地址空间(指令+数据+堆栈)
显示设备--多窗口或虚拟终端(virtual terminal)
异步性(asynchronism)
进程的运行速度不可预知:分时系统中,多个进程并发执行,"时走时停",不可预知每个进程的运行推进快慢
判据:无论快慢,应该结果相同--通过进程互斥和同步手段来保证
难以重现系统在某个时刻的状态(包括重现运行中的错误)
也称不确定性,指进程的执行顺序和执行时间的不确定性;
操作系统采用强内核结构,是基于传统的集中式操作系统的内核结构。
在这种强内核的操作系统中,系统调用是通过陷入内核实现的,在内核完成所需要的服务,最后返回结果给用户程序。
微内核结构是一种新的结构组织形式,它体现了操作系统结构设计的新思想。
① 进程间通信机制;
② 某些存储管理;
③ 有限的低级进程管理和调度;
④ 低级I/O。
一台完全无软件的计算机系统称为裸机,即便其性能再强,相对于用户来讲,如果要面对计算机的指令集,存储组织,I/O总线结构的编程则是十分困难的。对于一般程序员也并不想涉足硬件编程的种种具体细节,而希望针对数据结构抽象地使用硬件。
如果我们在裸机上覆盖一层I/O设备管理软件,用户便可以利用这层I/O设备管理软件提供给用户的接口来进行数据的输入和输出,那么用户此时看到的计算机是一台功能强大,使用方便的计算机,但实际上,计算机的硬件丝毫没有变化,这样的计算机称为软件扩充的机器,或称软件虚拟机。
。收起