一个简易操作系统的实现 毕业论文.docx

上传人:小小飞 文档编号:3904734 上传时间:2019-10-10 格式:DOCX 页数:77 大小:362.25KB
返回 下载 相关 举报
一个简易操作系统的实现 毕业论文.docx_第1页
第1页 / 共77页
一个简易操作系统的实现 毕业论文.docx_第2页
第2页 / 共77页
一个简易操作系统的实现 毕业论文.docx_第3页
第3页 / 共77页
一个简易操作系统的实现 毕业论文.docx_第4页
第4页 / 共77页
一个简易操作系统的实现 毕业论文.docx_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《一个简易操作系统的实现 毕业论文.docx》由会员分享,可在线阅读,更多相关《一个简易操作系统的实现 毕业论文.docx(77页珍藏版)》请在三一文库上搜索。

1、摘 要作为学习操作系统的新手,商用的操作系统设计复杂,代码量大,不适合作为学习的蓝本,如果能够从零开始开发一个小型的操作系统雏形,不但可以全面深入地了解操作系统的工作原理,还可以为读大型开源操作系统的代码积累经验。这个取名为MyOS的从头开始开发的系统虽然结构简单,但是具备了内存管理、多任务控制、任务切换、基本输入输出管理并且运行在32位保护模式下,在用户接口方面,它采用的是图形界面和命令行界面混合的方式来与用户交互,在程序接口方面,设计了部分API,主要是针对于图形显示和计时器两方面,本文利用这些API,实现了“贪吃蛇”、“时钟计时器”两个例子程序。本文首先介绍操作系统运行所依赖的硬件系统组

2、成,然后重点地介绍了操作系统的基本特征和主要功能,接着详细地说明了80386以上Intel CPU所运行的贯穿整个操作系统开发的32位保护模式,接下来简述了MyOS的开发环境和语言,以及MyOS的基本运行原理,然后重点介绍了MyOS的设计与实现,最后叙述MyOS的程序接口API,以及利用MyOS中的API设计的应用程序。关键词:操作系统,运行原理,32保护模式2ABSTRACTAs a fresh man who want to learn Operating System deeply, commercial using OS are too complex to learn .So ,if

3、 we develop a demo of OS from blank, if we start from scratch ,we can not only have a good know for the running principle of a OS, but also accumulate many experience which are of significant importance to our further study and research for the operating system.This thesis is about a Operating Syste

4、m which is developed from the blank,and its name is MyOS.This MyOS is simple in structure, however, it possesses the management of memery and task and basic input and out, it support the multitask and run under the 32 bit protect mode. In addition, it using both graphical interfaces and command line

5、 interfaces to interact with user.As for the API, the MyOS get some API for the graphical display and timer, by which we develop some program which may run on the MyOS.This thesis are composed by these elements.First of all, it describe the hardware which Operating System run on, and then ,it presen

6、t the fundamental character and main function of the Operating System. Secondly ,it illuminates the protect mode which is one of the two important elements of the thesis, and the other one is particularize the design and realization of the MyOS, before which ,it will briefly tell you the developing

7、circumstance and the developing language. At last, it deals with the API of MyOS and the program developed based on these APIs.Keywords: Operating System , Principle of Running ,32bit Protect Mode 目 录摘 要IABSTRACTII第1章 绪论11.1 选题背景和意义11.2 国内外研究现状21.3 主要研究内容3第2章 操作系统运行环境及运行原理简述42.1 计算机系统硬件组成简述42.1.1 总线

8、42.1.2 I/O设备42.1.3 主存52.1.4 处理器52.2 操作系统的基本特性52.2.1并发性62.2.2共享性62.2.3虚拟性62.2.4异步性72.3 操作系统的主要功能72.3.1 处理机管理72.3.2 存储器管理72.3.3 设备管理82.3.4 文件管理82.3.5 用户接口92.3.6 程序接口9第3章 32位保护模式介绍113.1 32位保护模式简述113.1.1 存储管理机制和地址转换机制简介113.1.2 保护机制123.2 分段管理机制153.2.1 段定义153.2.2 虚拟地址到线性地址的转换机制153.2.3 虚拟地址到线性地址的转换机制所需要的数据

9、结构和寄存器163.3 分段管理机制所依赖的两类寄存器173.3.1 控制寄存器173.3.2 系统地址寄存器183.4 系统段描述符、门描述符、任务状态段203.4.1 系统段描述符203.4.2 门描述符213.4.3 任务状态段TSS223.5 控制转移233.5.1 任务内无特权级变换的转移233.5.2 任务内不同特权级的变换243.5.3 任务间控制转移-“任务切换”26第4章 MyOS具体设计与实现284.1 MyOS的开发语言、开发流程以及开发环境简述284.2 MyOS运行原理简述294.2.1 引导扇区294.2.2 加载内核304.2.3 执行系统内核304.3 MyOS

10、内核设计与实现314.3.1 内存管理314.3.2 定时器设计364.3.3 FIFO缓冲区设计414.3.4 基本输入输出管理444.3.5 多任务管理474.3.6 图形界面的设计544.3.7 编程接口API设计56第5章 利用MyOS的API编写程序并运行605.1 表秒计时器605.2 游戏“贪吃蛇”61第6章 总结68参考文献69致 谢70 第1章 绪论1.1 选题背景和意义众所周知,一个成型的操作系统往往非常复杂,因为考虑到操作系统作为软硬件桥梁的特殊地位,其看上去比一般的软件系统更加的难以理解,因为其核心部分往往包含许多直接针对CPU,内存和I/O端口的操作。现在有许多公开源

11、代码的操作系统,可供随时下载和阅读,但是如果没有些许实际开发的经验,往往会深陷代码的汪洋大海中,“一叶障目,不见泰山”,并且这些代码的细节之间经常互相关联,要理解起来很不容易。而动手开发一个简易的操作系统,从底层原理一步一步实现最基本和最简单的功能,到最后积累成一个简单的操作系统模型,最终达到为以后阅读大型操作系统(例如Linux)的源代码打下基础的目的。作为一个计算机系并有志于从事计算机相关行业的大学生来说,很多本科时期计算机相关科目的学习都仅仅是“纸上谈兵”,缺乏实际操作,更谈不上实际应用,这对以后的深入学习和长期发展非常不利。例如:汇编课程学习的大部分内容都使用8086/8088的16位

12、实模式作为学习蓝本,而现在操作系统因为大内存的使用, 基本全部是32位保护模式,虽然语法等基础没有变化,但是其32保护模式的架构思想在汇编课程中却没有提及到;作为系统开发利器的c语言,其课程学习只是掌握表面语法,如果没有深入地应用,没有研究其在机器层面的原理,很多精髓都无法掌握,也就谈不上真正掌握c语言;而对于学习操作系统本身,如果没有阅读经典操作系统的源代码或者尝试去做系统开发这方面的实践,对于其诸多概念和原理是无法深入理解的,只能停留在表面理解,无法做到心中有数,就更谈不上创新了。本文试图通过这么一个“麻雀虽小,五脏俱全”操作系统的开发,达到复习并总结本科时期诸多科目的目的,包括:x86汇

13、编语言,C语言,计算机组成原理,微机原理,数据结构,操作系统,而事实上,在基本完成毕设,撰写论文之际,对这几门课程的确有了更新更高层次的理解,很多当时只是浮于表面的概念现在都能够或多或少地落实到代码并能够亲自实现和完善,同时也初步具备了自己阅读和分析大型操作系统源代码的能力。1.2 国内外研究现状操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足两大需求:提高资源利用率、增强计算机系统性能,伴随着计算机技术本身及其应用的日益发展,而逐步地形成和完善起来的。操作系统的发展经历了手工操作(无操作系统)、批处理系统、多道程序系统、分时系统、实时系统、通用操作系统。如今,概念

14、意义上的操作系统和通俗意义上的操作系统差距越来越大,通俗意义上的操作系统为了方便而把最普通的包和应用程序的集合包括在操作系统内,而随着操作系统的发展,一些功能更强的“第二类”操作系统软件也被包括进去。在今天,没有图形界面和各种文件浏览器已经不能称为一个真正的操作系统了。另一方面,操作系统的发展和计算机硬件的发展紧密联系,而从计算机硬件发展的角度来看,操作系统的发展经过了大型机时代操作系统、小型机时代操作系统(Unix)和个人计算机时代操作系统。大型机时代。早期的操作系统非常多样化,生产商生产出针对各自硬件的系统。每一个操作系统都有很不同的命令模式、操作过程和调试工具,即使它们来自同一个生产商。

15、最能 反映这一状况的是,厂家每生产一台新的机器都会配备一套新的操作系统。这种情况一直持续到二十世纪六十年代IBM公司开发了System/360系列机器。尽管这些机器在性能上有明显的差异,但是他们有统一的操作系统OS/360。OS/360的成功陆续地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、OS/390和z/OS。 小型机和UNIX的崛起。UNIX操作系统是由AT&T公司开发出来的。由于它的早期版本是完全免费的,可以轻易获得并随意修改,所以它得到了广泛的接受。后来,它成为开发小型机操作系统的起点。由于早期的广泛应用,它已经成为的操作系统的典范。不过,它始终属于AT&T公

16、司,只有那些能负担的起许可费的企业才用得起,这限制了它的应用范围。 早期的操作系统是可以被用户软件所利用的功能的集合。一些有能力的公司发展更好的系统,但他们不支持其他公司硬件的特性。 60年代末70年代初,几种硬件支持相似的或提供端口的软件可在多种系统上运行。早期的系统已经利用微程序来在他们的系统上实现功能。事实上,除了360/165和360/168外,360/40之后的大部分360系列的机器都实行微程序设计。 个人计算机时代。Apple, DOS 和以后微型处理器的发展使计算机的应用普及至中小企及个人爱好者。而计算机的普及又推动了硬件组件公共接口的发展(如S-100,SS-50,Apple

17、II,ISA和PCI总线),并逐渐地要求有一种“标准”的操作系统去控制它们。在这些早期的计算机中,主要的操作系统是8080/8085/Z-80 CPU用的Digital Researchs CP/M-80,它建立在数码设备公司(Digital Research)几个操作系统的基础上,主要针对PDP-11架构。在此基础上又产生了MS-DOS(或IBM公司的PC-DOS)。这些计算机在ROM(只读存储器)都有一个小小的启动程序,可以把操作系统从磁盘装载到内存。IBM-PC系列的BIOS是这一思想的延伸。自1981年第一台IBM-PC诞生以来,BIOS的功能得到不断地增强。 随着显示设备和处理其成本

18、的降低,很多操作系统都开始提供图形用户界面。如:许多UNIX提供的X Window一类的系统、微软的Windows系统、苹果公司的Mac系统和IBM公司的OS/2等。最初的图形用户界面是由Xerox Palo Alto研究中心70年代初期研发出来的,之后被许多公司模仿,继承发展。1.3 主要研究内容1. 实现一个能够在裸机上运行的简易的操作系统。l 该操作系统在保护模式下运行,是一个多任务的操作系统,可以进行任务调度以及任务之间的通信。l 该操作系统具有自己的硬盘驱动程序,并实现一个简易的文件系统,能够实现基本的文件操作系统调用。l 该操作系统具有简单的内存管理功能。l 该操作系统使用键盘和显

19、示器作为基本的输入输出系统。l 该操作系统具有简易的命令行风格的用户界面,实现一些主要的操作系统命令。2. 在时间允许的情况下,进一步改善用户界面,能够实现一个简易的图形用户界面,可以使用鼠标进行操作,并能够输出声音(选做)。 3. 将已完成的简易操作系统制作成软盘镜像文件,可在虚拟机中运行。4. 将已完成的简易操作系统制作成光盘在真机上运行(选做)。5. 撰写毕业论文。6. 答辩。第2章 操作系统运行环境及运行原理简述2.1 计算机系统硬件组成简述如图2-1所示,这是一个计算机系统硬件组成的简单模型。CPUALU寄存器文件PC总线接口I/O桥主存储器图形适配器磁盘控制器USB控制器磁盘鼠标键

20、盘显示器系统总线存储器总线I/O总线扩展插槽图2-1 计算机系统硬件组成的简单模型2.1.1 总线贯穿整个系统的是一组电子管道,称作“总线”,它携带信息字节并负责在各个部件之间传递。通常总线被设计成传送定长的字节块,也就是“字”(word)。一个字的字节数(被称为“字长”)是一个基本的系统参数,在各个系统中可能不相同。现在的很多机器字长有的是4个字节(即32bit),有的是8个字节(即64bit)。12.1.2 I/O设备输入/输出设备(I/O设备)是系统与外部世界的联系通道。如图2-1所示,示例系统包括4个I/O设备:作为用户输入的键盘和鼠标,作为用户输出的显示器,以及用于长期存储数据和程序

21、的磁盘驱动。每个I/O设备都通过一个“控制器”或者“适配器”与I/O总线相连。“控制器”和“适配器”之间的主要区别是它们的封装方式。“控制器”是置于I/O设备本身或者系统的主板上的芯片组内,而“适配器”是是一块插在主板插槽上的卡。但是这两者的任务一样的,它们都负责在I/O总线和I/O设备自检传递和翻译信息。2.1.3 主存主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序所处理的数据。从物理组成的角度来说,主存是一组动态随机存取存储器芯片组成的,从逻辑来说,主存就是一个线性的字节数组,每一个字节都有唯一的地址,这些地址从0开始。一般来说,组成程序的每条机器指令都由不同数量的字节构成

22、,与C程序变量相对应的数据项的大小是根据类型变化的。2.1.4 处理器 中央处理单元(CPU),简称处理器,是解释和执行存储在主存中指令的引擎。处理器的核心是一个字长的存储设备,称为程序计数器(PC),在任何时刻,PC都指向主存中的某条机器语言指令。从系统通电开始,直到系统断电,处理器都一直在不断地执行程序计数器所指向的指令,再更新程序计数器,使其指向下一条需要执行的指令,这条指令不一定和上一条执行的指令相邻。处理器看上去是按照一个非常简单的指令执行模型来操作的,这个模型是由指令集结构决定的。这样的简单操作并不多,而且操作是围绕主存、寄存器文件、和算术逻辑单元(ALU)进行的。寄存器文件是一个

23、小的但是高速的存储设备,由一些1字长的寄存器组成,每个寄存器有唯一的名字和特别的使用方式。而ALU则负责计算,计算数据和地址。下面是一些简单操作的例子,可以通过这些例子更好地了解CPU的各个部件在CPU工作的作用和工作原理。CPU在执行的要求下,可能会执行以下操作:a) 加载:把一个字节(或者一个字)从主存复制到寄存器,寄存器里原来的值被覆盖。b) 存储:把一个字节(或者一个字)从寄存器复制到主存的某个位置,以覆盖内存中该位置原来的值。c) 计算:把两个寄存器的内容复制到ALU,ALU对这两个字做算术运算,并将结果存在一个寄存器中,寄存器里原来的值被覆盖。d) 跳转:从指令中抽取一个字,并将这

24、个字复制到程序计数器(PC)中,实现跳转。e) 处理器看上去指示它的指令集结构的简单实现,但是实际上现代处理器使用了非常复杂的机制来加速程序的执行。所以,可以这样区分“处理器的指令集结构”和“微体系结构”:“指令集结构描述的是每条机器代码指令的效果”,而“微体系结构”描述的是处理器实际上是如何实现的。2.2 操作系统的基本特性操作系统的基本特性有并发性、虚拟性、共享性、异步性,其中,并发性和虚拟性是操作系统最重要的两个特性。2.2.1并发性并行性和并发性是既相似又有区别的两个概念,并行性是指两个或者多个事件在同一时刻发生,而并发性是指两个或者多个事件在同一时间间隔内发生。为了使多个程序能够在系

25、统中并发执行,系统必须为每个程序建立进程(Process)。简单来说,进程是指在系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数据和堆栈等组成,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要一定的资源,如CPU、存储空间以及I/O设备等。操作系统中程序的并发执行将使系统复杂化,以至于在系统中必须增设若干新的功能模块,分别用于对CPU、内存、I/O设备以及文件系统等重要资源进行管理,并控制好系统中各个进程的运行。长期以来,进程都是操作系统中可以拥有资源并作为独立运行的基本单位。当一个进程因故不能继续运行,操作系统便调度另一个程序运行。但是由于进程

26、拥有自己的资源,故使得调度付出的代价非常大,所以人们引入比进程更小的单位线程。通常一个进程中包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的OS中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统转,所以对地进行调度所花费的系统资源很少,从而能够更高效地提高系统内多个程序并发执行的程度。2.2.2共享性在操作系统中,所谓共享,是指系统中的资源可供内村中并发执行的进程共同使用,相应的,把这种西苑共同使用成为资源共享,或者是资源复用。由于资源的属性不同,进程对资源的复用方式也不同,主要实现资源共享的方式有以下两种:互斥共

27、享方式和同时访问方式。2.2.3虚拟性操作系统中的所谓“虚拟性”,是指通过虚拟技术把一个物理实体变为若干逻辑上的对应物。物理实体是实际存在的,而逻辑对应物是现对于用户来说的,是用户感觉到的可以使用的东西。这个技术的实现主要有两种途径,时分复用技术和空分复用技术。通俗地理解,时分复用技术就是将物理设备的使用机会按时间划分为许多小段,各个用户(或进程)在调度进程的调度下,交替使用这些使用设备的机会,常见的例子有:系统通过对处理机进行分片,然后把时间片分配给各个进程,实现了把一台物理上的处理机虚拟位多台逻辑上的处理机,从而在每台逻辑处理机上运行一道程序。通常把用户感觉到的处理机成为虚拟处理机。而空分

28、复用技术则被用来提高存储空间的利用率,常见的有虚拟磁盘技术和虚拟存储器技术。2.2.4异步性在多道程序下允许多个进程并发执行,但是只有进程获得所需的资源后方能执行。在单处理机环境下,由于系统只有一台处理机,所有每个时刻只能有一个进程运行,其他的必须等待处理机。当正在执行的进程提出某种资源要求时,此项资源如果得不到满足,这个进程就无法继续下去。可见一个进程在系统中的运行不可能是“一帆风顺”的,而是以“走走停停”的方式运行,而且这种方式在进程运行之前是不可预见的,具有随机性,并且由于各个任务、系统、机器的之间的差异,进程通常以人们不可预知的速度向前推进,这就是进程的“异步性”。为了应对这种进程的“

29、异步性”,为了让系统中的各个进程都不出错地执行完自己的任务,操作系统必须具备完善的进程同步机制,使得进程之间能够协调地利用好共享的资源,获得最后想要的结果。2.3 操作系统的主要功能操作系统的主要任务,是为多道程序的运行提供良好的运行环境,以保证运行在系统中的各个进程能够有序、高效地运行,并能够最大程度地提高系统中各项资源的利用率,而考虑到现在的系统和人之间的交互愈发频繁,操作系统还需提供给用户的使用接口和给程序员的编程接口。所以,操作系统应该具备这样几个主要功能:处理机管理,存储器管理,设备管理,文件管理,用户接口和程序接口。而随着网络的普及,现代操作系统一般都具备网络功能。2.3.1 处理

30、机管理在未引入线程的系统中,处理机的分配和运行都是以进程为基本单位,因而对处理机的管理可以归纳为对进程的管理:创建和撤销进程(进程控制),对各个进程的运行进行协调(进程同步),进实现进程之间的信息交换(线程通信),按照一定的算法将处理机的处理时间分配给进程。其中进程同步包括“进程互斥”和“进程同步”,“进程互斥”是指各个进程在对临界资源进行访问时,应采用互斥方式,“进程同步”是指相互合作去完成某项任务的进程之间,必须遵循某种顺序,操作系统中有同步机构对它们的执行次序加以协调。2.3.2 存储器管理存储器管理管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以

31、及能从逻辑上扩充内存。主要功能包括:内存分配、内存保护、地址映射、内存扩充。其中,为了实现内存分配,在内存分配机制中应该有这样的设计和功能:用于实现内存分配的数据结构,内存分配功能,内存回收功能。而内存保护的的主要任务是保证让每个程序都只能在属于自己的内存空间运行,不能访问到别的程序的空间,更不能够访问到操作系统的内存空间。此时,让内存保护得以实现,必须设置合理的内存保护机制。内存映射功能主要是实现将程序的“逻辑地址”或“相对地址”映射为内存的“物理地址”。内存扩充并非是扩大物理内存的实际容量,而是借助于虚拟存储技术,从逻辑上扩充内存容量,使用户能够使用的内存容量大于实际的物理内存容量。内存扩

32、充机制主要包括:请求调入功能和置换功能。2.3.3 设备管理设备管理用于管理计算机系统中所有的外围设备,而设备管理的主要任务是:完成进程提出的I/O请求;为进程分配其所需要的I/O设备;提高CPU和I/O设备的利用率。为了实现上述任务,设备管理应具备缓冲管理、设备分配、设备处理和虚拟设备等功能。缓冲管理集中要解决的矛盾是,CPU运行的高速型和外围设备的低速性。而随着CPU速率的不断提高,而I/O又具备一定的确定性,所以这个矛盾更加严重地降低了CPU的利用率。为了提高CPU的利用率,可以在I/O设备和CPU之间设置缓冲区,用于实现提高CPU的利用率和系统吞吐量。设备分配的任务是根据进程的I/O请

33、求和资源情况,按照某种分配策略,为进程分配所需要的设备。如果在I/O设备和CPU之间还存在着设备控制器和I/O通道,还要未分配出去的设备分配对应的控制器和通道。为了实现设备分配,系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标示符和状态,系统应该以这些数据结构的实时数据为依据,了解制定设备当前是否可用,是否忙碌,以供进行设备分配。设备处理其实就是设备驱动程序,基本任务是用于实现CPU和设备控制器之间的通信,即由CPU向设备控制器发I/O命令,要求其完成指定的I/O操作;反之,由CPU接受从控制器发来的中断请求,并迅速给予响应和相应的处理。2.3.4 文件管理在现代计算机

34、系统中,一般将程序和数据以文件的形式存储在磁盘或者磁带上,供所有的或者某些指定的用户使用。为了达到这个目的,操作系统必须配置文件管理机构,文件管理的主要任务是对用户文件盒系统文件进行管理,以方便用户使用,同时需要保证文件的安全性。所以,文件管理的功能主要有:对文件存储管理空间的管理、目录管理、文件的读/写管理、文件的共享与保护。为了实现文件存储空间的管理,系统应设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时作为参考。系统还应具有对存储空间进行分配和回收的功能。为了提高存储空间的利用率,通常采用离散分配方式对存储空间进行分配,以减少外村零头,以盘块为基本分配单位,盘块的大

35、小通常为18KB。为了实现用户能方便的在外存上找到自己的文件,通常由文件系统为每个文件建立一个目录项。目录项包括文件名、文件属性、文件在磁盘上的物理位置等等描述文件的信息。而若干个目录项又可以构成一个目录文件。目录管理的主要任务是为每个文件建立目录项,并对所有的目录项进行有效的管理,以方便按名存取,即用户只需要提供文件名就可以对该文件进行存取。文件的读/写管理实际上是简化用户对文件的操作,当用户想要打开、添加、修改、删除一个文件时,操作系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存的位置,然后利用读/写指针,对文件进行读或写。文件的保护是系统为用户的文件提供保护,以达到这几个目标

36、:防止没有权限的用户存取文件,防止冒名顶替存取文件,防止以不正确的方式使用文件。2.3.5 用户接口用户接口是提供给用户使用的接口,用户可以通过该接口取得操作系统的服务。设置用户接口的目的是为了方便用户直接或者间接地控制自己的作业,用户可以通过这个接口向作业发出命令以控制作业的运行。用户接口分为联机用户接口和脱机用户接口,联机用户接口又分为命令行接口和图形接口。命令行接口是由一组键盘操作命令组成,当用户在终端或者控制台上每次键入一条命令后,系统便立即转入命令解释程序,对这条命令加以解释并执行该命令。图形接口是为了解决用户必须熟记各种命令的名字和格式的问题而生的,其采用图形化的操作界面,用非常容

37、易识别的各种图标来将系统的各项功能、各种应用程序和文件形象逼真地表现出来,用户不需要用键盘输入命令,只需要用鼠标点击就能够控制操作系统。联机用户接口都能够实现用户与进程的实时交互,而脱机用户接口则是为批处理作业的用户提供的,故也可以称作是批处理用户接口。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预。2.3.6 程序接口程序接口是为用户程序在执行中访问系统资源而设置的,是用户所编制的程序取得操作系统服务的唯一途径。程序接口的本质是一组系统调用,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务时,便调用具有相应功能的系统调用。

38、早期版本的系统调用都是用汇编语言提供的, 只有在用汇编语言书写的程序中才能直接使用系统调用;但在高级语言以及C语言中,玩玩提供了与各系统调用一一对应的库函数,这样应用程序就可以通过调用对应的库函数来来使用系统调用。与早期操作系统系统调用不同的是,近几年的操作系统中,系统调用本省已经采用C语言进行编写,并以函数的形式提供,所以,在C语言编制的程序中,可以直接使用系统调用。第3章 32位保护模式介绍80386以上的X86处理器有两种工作模式:实模式和保护模式。尽管实模式下的80386的功能要大大超过先前处理器(8086/8088,80186,80286),但只有在保护模式下,80386才能真正发挥

39、作用。3.1 32位保护模式简述32位保护模式相对于实模式的优势体现在这几个方面:在保护模式下,80386处理器的32根地址线全部有效,可寻址达到4GB的物理地址空间;保护模式所独有的存储器分段管理机制和可选的存储器分页管理机制,前者为存储器的共享和保护提供了硬件支持,后者为实现虚拟存储器提供了硬件支持;支持多任务,在保护模式下,80386处理器给予系统开发者极大便利,可以快速地进行任务切换和保护任务环境;80386处理器有4个特权级和完善的特权检查机制,既能高效的实现资源共享,又能保证代码及数据的安全和保密,以及任务之间的隔离;在保护模式下可以用虚拟8086方式来执行8086程序。3.1.1

40、 存储管理机制和地址转换机制简介为了对存储器中的程序和数据实现保护和共享提供硬件支持,80386在保护模式下采用了扩充的存储器分段管理机制;为了对实现虚拟存储器提供硬件支持,80386在保护模式下提供了可选的存储器分页管理机制。这些存储管理机制有80386的存储器管理部件MMU实现。由于本文实现的操作系统没有使用更高级更复杂的分页管理机制,所以在这里重点介绍与分段有关的地址转换,不详细介绍分页管理机制。保护模式下的虚拟存储器由大小可变的存储块构成,这样的存储块称为段。80386采用称为描述符的数据来描述段的位置、大小、使用情况以及其他属性。虚拟存储器的地址(即“逻辑地址”)由指示描述符的“选择

41、子”和“偏移地址”两部分构成,这样的地址集合称为“虚拟地址空间”。很显然,只有在物理存储器中的程序才能运行,只有在物理存储器中的数据才能访问,一切的地址都要映射到物理地址,二维的虚拟地址(“选择子”+“偏移地址”)必须转换成为一维的物理地址(实际内存的地址)。由于物理地址远小于虚拟地址,所以只有一部分虚拟地址空间能真正映射到物理存储器。因为每一个任务都有一个虚拟地址空间,而为了避免多个并行任务的多个虚拟空间直接映射到一个物理地址空间,所以,采用线性地址空间隔离虚拟地址空间和物理地址空间。线性地址空间和物理地址空间对等,大小一样。如图3-1所示。80386分两步实现虚拟地址空间到物理地址空间的映

42、射。第一步是通过虚拟地址中的“选择子”在描述符表GDT中查询得到段描述符,在段描述符中记载着这个段的段起始地址(在8086的实模式下,段起始地址是直接存储在段寄存器中),再结合“偏移地址”计算得到线性地址。第二步是可选的,如果采用分页机制,就用MMU来将线性地址映射为物理地址,从而寻址结束。所以,如果没有采用分页管理机制,线性地址空间等于物理地址空间。选择子(16位):偏移量(32位)分段管理机制32位虚拟地址线性地址分页管理机制32位物理地址不启用分页管理机制图 3-1 虚拟地址空间到物理地址空间的映射3.1.2 保护机制为了支持多任务,对各任务实施保护是必要的。保护机制必须有效地实现不同任

43、务之间的保护和同一任务内的保护3.1.2.1不同任务之间的保护不同任务之间的保护中的一个重要方面是应用程序之间的保护。是通过把每个任务放置在不同的虚拟地址空间的方法来实现任务与任务之间的隔离,达到应用程序之间保护的目的。虚拟地址到物理地址的映射函数在每个任务中单独定义,随着任务的切换,映射函数也随之切换,这样的机制使得任务A和任务B拥有相同的虚拟地址空间,但是映射到物理空间后,就是两块独立不相干的区域。这样,两个不同的任务,尽管虚拟存储单元地址相同,但实际的物理存储单元地址不同。3.1.2.2同一任务内的保护实现在同一任务内的保护需要达到那些目标?怎样实现在同一任务内的保护?为什么要实现在同一

44、任务内的保护?实现在同一任务内的保护,主要目标是区分不同的段的特权级。在一个任务内,可以定义四种执行特权级别,用于限制对任务中段进行访问。一般会按照不同的段中的数据和代码的可信任程度,给予不同的段不同的特权级。例如:具有最高特权级别的数据,只能由最可信任的代码访问;给不重要的数据段和代码段分配比较低的特权级别;具有最低特权级别的数据,可以被任何特权级的代码访问到。特权级的典型用法如图3-2所示,把操作系统的核心放在0级,操作系统的其余部分(操作系统外围程序)放在1级,中间软件(数据库和办公软件)放在2级,用户的应用程序放在3级。这样安排,使得在0级的操作系统核心有权利访问所有特权级中的所有数据

45、段和代码段,在1级的操作系统其余部分有权利访问除了0级意外的所有代码段和数据段,而在3级中的应用程序只能访问本任务的数据段和代码段。图 2-2 四个特权级的分配Data ofKernelCode ofKernelData ofOSCode ofOSData ofOSCode ofOSData ofProgram 1Code ofProgram1Code ofProgram 2Data ofProgram 23.1.2.3实现“同一任务内的保护”所依赖的机制在程序运行中,32位保护模式依靠CPL(current privilege level)、DPL(descriptor privilege

46、level)和RPL(requestor privilege level)三种数据结构来实施任务内的特权级保护,这三种数据结构如图3-3所示。图 3-3 CPL、DPL、RPL的数据结构示意图这些数据结构的具体解释如下:a) 当前特权级CPL。当前代码段的选择子中,最低2位为特权级CPL,这表示当前正在运行的程序的特权级。CPL是程序本身的性质所决定的:如果是“操作系统和操作系统核心程序”(如存储器管理程序、任务调度程序、访问控制程序),那么,特权级为0;如果是“操作系统外围的系统程序”(如缓冲区分配程序、外设驱动程序),那么,特权级为1;如果是一些“应用软件”(如数据库、办公软件),那么、特

47、权级为2;如果是用户程序,那么特权级为3。b) 描述符特权级DPL。每个段的段描述符中,用描述符特权级DPL表示此段的特权级。程序运行时,数据段的DPL在每次被访问时受到检查,以确定程序是否有权访问该数据段。c) 请求特权级RPL。数据段的段选择子中的最低2位为请求特权级RPL,数据段总是被代码访问的,此时RPL将受到检测,以确定此次访问是否合法。只有当代码段的CPL的级别不低于RPL的时候,才能是访问成功进行。数据段中设置RPL是为了防止特权级低的程序访问特权级高的数据段。一般情况下,数据段选择子中的RPL和此段描述符中的DPL是相等的,由于在程序运行中,要访问数据时,总是先装入选择子,再由选择子找到段描述符,然后由段描述符找到对应段,所以,提前在装入选择子这一环用RPL进行特权级保护检查,使得保护机制更加快捷。当一个程序访问数据段的时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1