




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 操作系统结构(Artechature)本章教学目标 主要讨论操作系统对运行软件、硬件环境的要求操作系统运行的硬件环境系统调用中断机制存储系统的层次结构特权指令和非特权指令目态、管态及其转换引论CPU的体系结构计算机体系结构引论结论:OS至少需要管理CPU、I/O、存储、通信其中,CPU管理是OS的核心但,OS如何提供与用户的接口?操作系统结构2.1用户与操作系统的接口2.2系统调用的实现原理2.3Linux 0.11中系统调用实现2.4操作系统的系统结构 用户与操作系统的接口1. 命令接口联机接口(交互式):使用系统提供的操作命令,交互地控制程序执行和管理计算机系统。如系统管理、环境设
2、置、权限管理、文件管理等脱机接口:以作业说明书的方式提交给系统(批的方式);执行过程中,用户无法干涉2.系统调用(程序接口)系统调用:操作系统提供给编程人员的唯一接口;编程人员利用系统调用,完成与机器硬件部分相关的工作;用户就可以在程序中调用操作系统所提供的一些子功能。命令接口-命令解释系统命令解释系统(外壳,shell):是OS的重要组件之一,是用户和OS的接口作用:读入用户的输入或者文件中的命令,并运行它(们);通常转换为一个或者多个系统调用命令解释系统的位置:有的是在内核中有的如MS-DOS和Unix,则将它作为一个特殊程序(它易变,因此更灵活),当一个作业开始或者分时系统中用户登陆时,
3、它运行命令解释系统的工作流程首先读入键盘缓冲区中的命令,判别其文件名、扩展名及驱动器名是否正确。 若发现有错,在给出出错信息后返回;若无错,再识别该命令(基于表格的方法):从对应表项中获得该命令处理程序的入口地址,然后把控制权交给该处理程序去执行该命令。表格其中的每一表目都是由命令名及其处理程序的入口地址两项所组成。产生提示符读入命令识别命令转到相应的处理程序处理结果送屏幕显示DOS命令解释程序COMMAND.COM 常驻磁盘根目录,系统启动时驻留内存。如何实现控制权的转移?操作系统结构2.1用户与操作系统的接口2.2系统调用的实现原理2.3Linux 0.11中系统调用实现2.4操作系统的系
4、统结构什么是系统调用系统调用是操作系统提供给编程人员的唯一接口,是一种特殊的过程调用 当用户使用系统调用时,产生一条相应的陷阱指令(指令中对应的功能号和相应的参数):OS核心中都有一组实现系统功能的过程(子程序),系统调用就是对上述过程的调用。编程人员利用系统调用,向OS提出服务请求,由OS代为完成。每个系统都有上百种系统调用,涉及进程、文件和设备控制等。系统调用运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。系统调用的处理过程陷阱指令当编程人员给定了系统调用名和参数之后,由一个类似于硬件中断处理的中断处理机构完成陷入处理机构。它是在系统中为控制系统调用服务的机构。当用户使
5、用系统调用时,产生一条相应的指令(陷入指令,trap指令),CPU在执行到该指令时发生相应的中断,发出有关信号给该处理机构,并启动相应的处理程序来完成该系统调用所要求的功能。陷入指令(或称访管指令):由于系统调用引起处理机中断的指令在陷入中断发生时,从用户态系统态。这一转换在发生访管中断时由硬件自动实现。系统调用语句本身是硬件提供的(机器指令),但其所调用的功能是操作系统提供的。每种机器的机器指令集中都有一条系统调用指令。系统调用与返回设置系统调用号和参数调用号作为指令的一部分(如早期UNIX),或装入到特定寄存器里(如:DOS的 int 21H,AH=调用号。)参数装入到特定寄存器里,或内存
6、区域执行trap(INT)指令:入口的一般性处理,查入口跳转表,跳转到相应功能的过程。保护CPU现场(将PC与PSW入栈),改变CPU执行状态(处理机状态字PSW切换,地址空间表切换)将参数取到核心空间执行操作系统内部代码;执行iret指令:将执行结果装入适当位置(类似于参数带入),恢复CPU现场(以栈顶内容置PSW和PC)。系统调用实现过程例1: 文件管理:文件读写和文件控制(高级语言);Open文件打开Close文件关闭Read读文件Write写文件Create文件创建系统调用-举例例2. 利用系统调用实现硬盘文件内容读写MOVE DX,OFFSETBUFFMOVE CX,BYTEMOVE
7、 BX,HANDLEMOVE AH,3FHINT 21H现在的系统提供了许多库函数,用户编程时也许就是用上层的库函数,而不是直接使用系统调用。系统调用-read( )思考题系统调用与库函数调用的区别和联系?代码举例:Linux系统调用实现陷入的机制软中断指令 int 0X80iret中断返回指令用户态核心态在80 x86系统中操作系统结构2.1用户与操作系统的接口2.2系统调用的实现原理2.3Linux 0.11中系统调用实现2.4操作系统的系统结构在linux/include/unistd.h中#define _syscall3(type, name, .) type name(.) _as
8、m_ volatile(“int 0 x80” :”=a”(_res).在linux/lib/write.c中#include _syscall3(int, write, int, fd, const char *buf, off_t, count)系统调用-printf的实现调用printf()应用程序库函数printf()C函数库库函数write()系统调用write()OS内核转为库函数write是关键步怎样在用户程序和系统程序间传递参数?常用的3种实现方法: 由陷入指令自带参数:陷入指令的长度有限的,且还要携带系统调用功能号,只能自带有限的参数. 通过有关通用寄存器来传递参数:这些寄存
9、器应是系统程序和用户程序都能访问,由于寄存器长度较短,无法传递较多的参数.大多在内存中开辟专用堆栈区来传递参数.将关于write的故事完整的讲完 在linux/include/unistd.h中#define _syscall3(type,name,atype,a,btype,b,ctype,c)type name(atype a, btype b, ctype c) long _res; /返回值存放在eax中,用ebx,ecx,edx传入3个参数 _asm_ volatile(“int 0 x80”:”=a”(_res) :”(_NR_#name),”b”(long)(a),”c”(lon
10、g)(b), “d”(long)(c); if(_res=0) return (type)_res; errno=-_res; return -1;_NR_write是系统调用号,放在eax中传入;在linux/include/unistd.h中#define _NR_write 4 /函数表索引)_syscall3表示有3个参数0.11版 中int 0 x80中断的处理 void sched_init(void) set_system_gate(0 x80,&system_call); 设置0 x80的中断处理在linux/include/asm/system.h中#define set_s
11、ystem_gate(n, addr) _set_gate(&idtn,15,3,addr); /idt是中断向量表基址#define _set_gate(gate_addr, type, dpl, addr)_asm_(“movw %dx,%axnt” “movw %0,%dxnt”“movl %eax,%1nt” “movl %edx,%2”:”i”(short)(0 x8000+(dpl13)+type8),“o”(*( char*)(gate_addr),”o”(*(4+(char*)(gate_addr),“d”(char*)(addr),”a”(0 x00080000)中断处理程序
12、: system_call _sys_call_table+4*%eax就是相应系统调用处理函数入口在linux/kernel/system_call.s中nr_system_calls=72.globl _system_call_system_call: cmpl $nr_system_calls-1,%eaxja bad_sys_callpush %ds push %es push %fspushl %edx pushl %ecx pushl %ebx /调用的参数movl $0 x10,%edx mov %dx,%ds mov %dx,%es /内核数据movl $0 x17,%edx
13、mov %dx,%fs /fs可以找到用户数据call _sys_call_table(,%eax,4)/a(,%eax,4)=a+4*eaxpushl %eax /返回值压栈,留着ret_from_sys_call时用 . /ret_from_sys_call: popl %eax, pop, ireteax中存放的是系统调用号在include/linux/sched.h中typedef int (fn_ptr*)();_sys_call_tablecall _sys_call_table(,%eax,4)就是call sys_write在include/linux/sys.h中fn_ptr
14、 sys_call_table= sys_setup, sys_exit, sys_fork, sys_read, sys_write, .;sys_call_table是一个全局函数数组sys_write对应的数组下标为4,_NR_write=4eax=4,函数入口地址长度也为4用户调用printfprintf展成int 0 x80中断处理system_call查表sys_ call_table_NR_write =4调用sys_write用户态内核态0.11Linux系统调用要点总结Linux为每个系统调用都进行了编号(最大为NR_syscall),同时在内核中保存了一张系统调用表,该表中
15、保存了系统调用编号和其对应的服务例程地址。第n个表项包含系统调用号为n的服务例程的地址。系统调用时需要把系统调用号一起传入内核。在x86上,这个传递动作是通过在执行int 0 x80前把调用号装入eax寄存器实现。这样系统调用处理程序一旦运行,就可以从eax中得到数据,然后再去系统调用表中寻找相应服务例程了。操作系统结构2.1用户与操作系统的接口2.2系统调用的实现原理2.3Linux 0.11中系统调用实现2.4操作系统的系统结构操作系统结构1. 整体或模块结构2. 分层结构3. 微内核结构(客户服务器结构)4. 虚拟机整体或模块结构整个系统按功能进行设计和模块划分。系统是一个单一的、庞大的
16、的软件系统。由众多服务过程(模块)组成,可以随意调用其他模块中的服务过程评价优点:具有一定灵活性,模块之间转接的灵活性使运行中的高效率;结构紧密,接口简单直接缺点:功能划分和模块接口难保正确和合理;模块之间的依赖关系(功能调用关系)复杂(调用深度和方向)整体或模块结构整体或模块结构分层结构按此模型构造的第一个操作系统是E.W.Dijkstra和他的学生在荷兰开发的THE系统(1968年)该系统分为六层:层次功能 5 操作员 4用户程序 3 输入/输出管理 2 操作员-进程通信 1内存和磁盘管理 0 处理器分配和多道程序从资源管理观点出发,将OS划分为若干层次。在某一层次上代码只能调用低层次上的
17、代码,使模块间的调用变为有序性。有利于系统的维护性和可靠性。分层结构分层结构特点分层原则被调用功能在低层:如文件系统管理设备管理设备驱动程序活跃功能在低层:提高运行效率资源管理的公用模块放在最低层:如缓冲区队列、堆栈操作最低层的硬件抽象层:与机器特点紧密相关的软件放在最低层资源分配策略放在最外层,便于修改或适应不同环境优点:功能明确,调用关系清晰(高层对低层单向依赖),有利于保证设计和实现的正确性低层和高层可分别实现(便于扩充);高层错误不会影响到低层缺点:效率低。层次之间的调用开销。思考题通过windows与linux的体系结构,比较这两个操作系统的安全性、可扩展性、开发性、稳定性?方便性:
18、有效性:充分利用资源可扩充性开放性:应用程序的可移植性和互操作性稳定性安全性微内核结构(客户服务器结构)背景:从操作系统中去掉尽可能多的东西,而只留一个最小的核心微内核(micro-kernel):只给内核分配一些最基本的功能,运行在内核模式。 如:进程间通信IPC、底层输入输出、有限调度和有限进程控制 、最低级的存储管理 其它的OS服务都是由运行在用户模式下的进程完成,可作为独立的应用进程,称为服务进程。微内核提供客户程序和运行在用户空间的各种服务之间的通信能力。如Mach Unix。而Windows NT采用了混合结构。(分层结构微内核结构)微内核结构优点:良好的扩充性:只需添加支持新功能的服务进程即可。而且所有新服务被增加到用户空间中,不需要修改内核。可靠性好:所有服务器以用户进程的形式运行,而不是运行在核心态,所以它们不直接访问硬件。假
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业领域技术研发工作经验证明(6篇)
- 诗词歌赋与修辞技巧融合:初中英语词汇教学方法
- 化工工艺流程及安全知识考核
- 艺术欣赏考试试题及答案
- 沂源小学考试试题及答案
- 六一亲子签到活动方案
- 六一德克士活动方案
- 六一活动女装活动方案
- 六一活动小集市活动方案
- 六一活动投纸球活动方案
- 广东省江门市2022-2023学年四年级下学期语文期末试卷(含答案)
- 涉企行政执法自查报告市场监管
- 河南天一大联考2025届高一物理第二学期期末监测试题含解析
- 《化工和危险化学品生产经营单位重大生产安全事故隐患判定标准(试行)》解读课件
- 八大浪费培训心得
- 硕博研究生英语综合教程完整版电子课件
- 手术室髌骨骨折手术护理查房
- 人工造雪技术培训课件
- 微水泥施工工艺流程
- 劳动教育理论与实践
- 安徽省合肥市滨湖区寿春中学2024年八年级下册物理期末统考试题含解析
评论
0/150
提交评论