搜档网
当前位置:搜档网 › X86体系中保护模式下的内存访问机制_湛辉来

X86体系中保护模式下的内存访问机制_湛辉来

X86体系中保护模式下的内存访问机制_湛辉来
X86体系中保护模式下的内存访问机制_湛辉来

文章编号:1000-582X(2002)06-0067-04

X86体系中保护模式下的内存访问机制Ξ

湛辉来,曾 一

(重庆大学计算机学院,重庆400044)

摘 要:保护模式是X86体系结构的一种重要的工作方式,为在X86平台上实现的多任务、多进程操作系统提供了相应的硬件支持。在计算机的底层开发过程中,了解计算机体系结构中的主要部件-内存的工作方式是及其重要的。文章介绍了当前较流行的微机体系结构-X86系统中的内存的组织、管理、和访问机制,分析了X86在保护模式下分段机制、分页机制中的一些主要的数据结构和相应的硬件支持,并详细描述了分段机制中逻辑地址到线性地址的转换,分页机制中虚拟地址到物理地址的转换过程。通过分页和分段机制,可以实现多进程操作系统中的进程独立地址空间,以及对操作系统中内存的保护措施,从而及时而有效地防止了因内存的非法访问而导致的系统崩溃。

关键词:保护模式;描述符;描述符表;页表;页目录

中图分类号:TP31611文献标识码:A

Intel的80X86CPU系列芯片可在2种模式下工作:实模式、保护模式[1]。实模式是MS-DOS的运行环境。当内存寻址模式为实模式时,采用80286的20位地址线的存储器分段线性管理技术,存储器容量最大为1M B,线性地址与物理地址一致,对物理内存单元读写直接、灵活。但因受限于640K基本内存,使大量的扩展内存的使用受到制约,同时,分段的64K范围限制影响了内存访问的连续性,从而使系统的内存资源难以得到充分利用。在保护模式下,系统采用分段机制和分页机制,提供了灵活的寻址方式,使得应用程序可以访问多达4G B的存储空间,并为操作系统和应用程序实现虚拟存储器提供了相应的硬件支持,从而打破了实模式下内存寻址所受到的制约,提高了内存资源的使用效率。

1 X86的分段机制

X86的分段机制就是将X86的线性地址空间分成若干空间段(Segment),利用这些段来存储(记录)代码和数据,通过对段的保护来提供一种对数据或代码的保护[2]。这种寻址模式允许CPU访问装在1M B以上的数据和程序代码,就象在实模式中访问1M B以内的内存一样。1.1 分段机制中的数据结构

在分段机制,X86使用了如下几种主要数据结构:

1)段描述符(Segment Descriptor):用来描述一个段的位置、长度以及访问权限。一个描述符由8个字节组成,具体的格式如下

:

其中:基地址描述了该段的开始位置共32位,使得该段可以从4G空间里的任意一个位置开始。段的长度是由20位的界限和一个标志位G决定。标志位G位于0字节的最高一个比特,它的含义如下: 0:段的长度=界限 范围为1B~1M B

1:段的长度=界限34K 范围为4K B-4G B

2)全局描述符表(G DT,G lobal Describe T able):存放系统用的段描述符和各项任务共用的段描述符;

3)局部描述符表(LDT,Local Describe T able):存放某个任务专用的各段的段描述符;

每个描述符表中最大可以放8,192个段描述符,因此,每个描述符表的最大长度为64K B。

1.2 分段机制的硬件支持

X86提供了如下几个用于支持分段机制的寄存器:

 2002年6月重庆大学学报 (自然科学版)V ol.25 N o.6第25卷第6期Journal of Chongqing University(Natural Science Edition)Jun.2002

Ξ收稿日期:2002-01-21

作者简介:湛辉来(1972-),男,重庆人,重庆大学硕士研究生。主要研究方向:软件工程及计算机体系结构。

1)全局描述符表寄存器(G DTR ):包含全局描述

表的基地址和界限。在系统进入保护模式时,G DT 的

基地址、界限、以及访问权限被装入到G DTR 中。

2)局部描述符表寄存器(LDTR ):包含选择符,用于访问设置LDT 的全局描述符。

3)段寄存器(Segment Register ):在保护模式下,段寄存器不再表示段地址,而是一个选择器(Selector )。用来选择描述表中的描述符。一般为16bits ,具体格式如下

:

RP L :描述请求者的特权级(00为最高,11最低)T L :为0时表示全局描述符,为1时表示局部描

述符

选择符:描述符在描述表中的索引。1.3 分段机制下的地址转换

X86的保护模式支持多任务环境,每个任务有自己的代码段(CS )、数据段(DS ),还可有一个或多个附

加数据段(ES ,FS ,G S )以及堆栈段(SS )等多个段[3]

。这些段的描述符组成任务自己的局部描述符表LDT 。各任务公用的代码段、数据段的描述符,以及系统段(如LDT 、任务状态段TSS 等)的描述符组成全局描述符表G DT 。全系统只有一个G DT ,有多个LDT 。当前任务使用的LDT 由LDTR 寄存器在G DT 中进行索引,当任务发生切换时由操作系统经由LDTR 索引访问G DT 取得此任务的LDT 描述符,将表基址、表界限、属性等装入LDT 描述符高速缓存,得到相应的LDT 。

当CPU 运行于分段管理的保护模式下时,可利用其32位地址线提供4G 字节地址访问空间的虚拟存储器,通过特权位和界限值的检查实现完整的保护功能。此时,系统的内存被全局描述符表(G DT )和局部描述符表(LDT )所控制,并以选择器(Selector )的方式供程序使用。进程的逻辑地址(Logical address )由选择器(Selector )和段内偏移量(O ffset )构成,这里的selector 不象实模式寻址那样代表某个段寄存器的真实地址,而是用来确定段描述符在描述符表中的入口地址,描述符表中相应位置所存的数据内容才是其真正的物理内存的地址。将段描述符的基地址加上段内偏移量的值就形成了32位的内存线性地址。一个进程的逻辑地址到线形地址的映射过程如图1所示(段寄存器的T L =1):

每个段寄存器含有一个对程序不可见的区域。这个对程序不可见的区域通常被称为高速缓存器。当段寄存器被改变时,该段的描述符号装入高速缓存器

图1 逻辑地址到线性地址的映射过程

该描述符一直保存在那里,并在访问存储器段时被使用,直到段寄存器的值再次被改变[4]

。这样,CPU 可以

通过高速缓存器重复访问存储器段,而不必每次都去访问描述表。

在X86的CPU 中有一个控制寄存器CR0,其31位标志了系统是否采用了分页机制。在没有分页的情况下,线性地址即为物理地址。否则,还要通过X86的分页转换,将线性地址转换为物理地址。

2 X86的分页机制

X86的分页机制允许把任何物理存储单元分配给

任何线性地址。分页机制以页为单位,把线性地址透明地转换为物理地址。这就使得为在特定地址上运行的程序可以通过分页机制来重新定位。2.1 分页机制下的数据结构

在分页机制,X86使用了5种数据结构:

1)页目录项(PDE ,Page Directory Entry ):32bits 结构,高20bit 为包含页表的物理页面的页帧号(PFN ),即物理页面的起始地址(物理地址)的高20位,低12bits 为页表属性,描述页表的状态和访问权限;

2)页目录(Page directory ):存储页目录项,位于一

页中,最大可容纳1024个页目录项;

3)页表项(PTE ,Page T able Entry ):32bits 结构,高20bits 为包含数据的物理页面的页帧号,低12bits 为页属性,包含一些描述页面状态和访问权限的标志;

4)页表(Page table ):存储页表项,位于一页中,总共可容纳1024个页表项;

5)页(Page ):4K B 的连续地址空间。X86系统将物理内存以4K 为单位进行分页。Pentium 以后的CPU 则扩展了分页的功能,增加了对大页面的支持,使单页的空间可达4M B 。2.2 分页机制下的硬件支持为了实现分页机制和提高地址转换的效率,X86提供和使用了如下的硬件结构:

1)页标志位(PG,Page ):位于控制寄存器CR0的

86重庆大学学报 (自然科学版) 2002年

第31bit 。该标志位为1,说明采用页机制;

2)页目录基地址寄存器(PDBR ,Page Directory Base Register ):即控制寄存器CR3。用于存储20位的页目录的基地址(物理地址)和一些标志位;2.3 分页机制的工作原理

为了实现将线性地址映射到物理地址,X86将32

bits 线性地址解释为3部分:第31~22bit 为页目录中的偏移,用于索引页目录项(得到对应页表的基地址);第21~12bit 为页表中的偏移,用于索引页表项(得到对应页的基地址);第11~0bit 为页中的偏移。这样,通过两级索引和页中的偏移量,最后能正确得到线性地址对应的物理地址。图2表示了把线性地址映射到物理地址的方法

图2 线性地址到物理地址的映射过程

下面通过WI NDOWS NT 中将虚拟地址转换为物理地址的例子来进一步说明分页机制的工作原理。

在WI NDOWS NT 操作系统采用基于平面(线性)32位地址空间的虚拟内存系统。系统中每个进程都

拥有各自的4G B 的虚拟内存空间。系统在创建进程时创建并初始化页目录,然后把页目录的基地址保存

在进程控制块(K POCESS )中[5]

。当该进程通过进程调度程序在一个CPU 上被运行时,进程控制块中的页目录基地址被写入CPU 的CR3,即PDBR 。这样,就保证了每个进程的虚拟地址空间的独立性。当进程访问一虚拟内存单元时,系统通过以下步骤将虚拟地址转换为物理地址:

①以页目录基地址作为高20位地址,10bit 的页目录索引左移2位作为低12位地址,得到32位的页目录项的起始地址。从该地址开始的连续4个字节为页目录项(PDE )。

②以页目录项中的页帧号(PFN )作为高20位地址,10bit 的页表索引左移2位作为低12位地址,得到32位的页表项的起始地址。从该地址开始的连续4

个字节为页表项(PTE )。

③以页表项中的页帧号(PFN )作为高20位地址,字节索引作为低12位地址,便得到了该虚拟地址的32

位的物理地址。

由此可以看出,每次地址转换都要进行两项查找:一次是在页目录中查找正确的页表,另一次是在页表中查找物理页面。如果在每次引用虚拟地址时都要做两次附加的内存查找将会导致不可接受的系统性能。因此,在X86的CPU 中以一种联合数组的形式提供了

一种被称为转换后备缓冲区(T LB T ranslation Look -aside Buffer )高速缓存。T LB 保存最近使用过的32个

页面的虚拟页面号、物理页面号以及该页面的属性。T LB 中的单元可以被同步地读出与虚拟地址的页面号

进行比较。如果在T LB 中存在与虚拟页面号匹配的项时,该虚拟地址就可以直接地被转换为物理地址。这样就使系统提供了非常快的虚拟地址到物理地址的转换和快速内存访问。

在WI NDOWS2000中实行的是段页式的内存管理机制,所以在WI NDOWS2000中,一个进程的逻辑地址首先要经过分段机制转换成为线形地址,然后再经过分页机制转换成物理地址。

2.4 分页机制与虚拟8086内存寻址模式

为了使实模式应用程序无需修改就可以在保护模

式下直接运行,X 86系统好提供了虚拟8086内存寻址模式(V86模式)。V86模式是一种特殊的运行方式,它允许多个实模式应用程序可以同时运行。在V86模式中,段寄存器的使用与实模式相同,因此段地址+偏移地址只能访问1M 的内存空间。尽管V86模式下运行了实模式的程序代码,但并不是和实模式相似的方式运行,而是和保护模式相似的方式运行。所以说V86模式的实质是一种能运行实模式软件的保护模式。

3 结语

以上主要介绍了X86系统的保护模式下的内存寻址的分段和分页机制。从80386开始,所有的X86CPU 均沿用了这种体系结构,从而打破了实模式下

内存寻址所受到的制约,提高了内存资源的使用效率,并为在X86平台上实现的多任务、多进程以及内存保护提供了相应的硬件支持。现在已经被各种多任务操作系统(如WI NDOWS ,LI NUX 等)广泛采用。参考文献:

[1] 曹义亲1计算机组成与系统结构[M].北京:中国水利水

电出版社,2001.

[2] DH AM DHERE D 1系统编程与操作系统[M].北京:电子工

业出版社,20011

[3] 杨季文180X 86汇编语言程序设计教程[M].北京:清华大

9

6第25卷第6期 湛辉来等: X 86体系中保护模式下的内存访问机制

学出版社,1998.

[4] 房有定,卢安国.80X86系列保护模式高级程序设计[M].

西安:西安交通大学出版社,1996.

[5] DAVI D A.S olom on WI NDOWS NT技术内幕[M].北京:清

华大学出版社,2000.

[6] 易钟芳180X86微型计算机原理及应用[M].北京:电子工

业出版社,19951

Memory Accessing Mechanism of X86Computer System I n Protected Mode

ZHAN Hui2lai,ZEN G Y i

(C ollege of C om puter,Chongqing University,Chongqing400044,China)

Abstract:Protecting m ode is on im portmant w orking method of X86-based com puter system,which provides the hardware support for multi-task and multi-process operation system on X86platform.During the low-level development of X86-based com puter system,it is very im portant to understand the w orking method of mem ory that is a main part of com puter system.This paper discusses the data structure and hardware com ponent of X86-based com puter system which support the tw o mechanism of accessing mem ory:segmenting and paging,as well as the process of converting logical address to linear address and mapping virtual address to physical address.Througn segmenting and paging mechanism,we can realize the independent address space for every process in multi-process system,as well as the measure for protecting the system mem ory which can prevent the system breakup caused by illegal mem ory access.

K ey w ords:protected-m ode;descriptor;describe table;page table;page directory

(责任编辑 吕赛英)

(上接第58页)

Comparison of Superiority of Optim al and Classical Predictions

with R espect to the Ridge Estim ation

Y AN G T ing,Y AN G Hu,ZHAN G Hong2yang

(Math.&Phys.Institute of Chongqing University,Chongqing400044,China)

Abstract:C onsidering the generalized linear regression m odel y=Xβ+e,e~N(0,σ2W)and its prediction problem of biased estimation,this paper discusses its superiority of the optimal and classical predictors based on the ridge estimation by criteria of mean dispersion error matrix and generalized risk function.A necessary and sufficient condition of com paris on of its superiority are given under the condition of above criteria by s ome properties of inequalities of matrix.An alternative method is proposed for the further research of superiority of tw o predictors based on the biased estimation.

K ey w ords:predictor;ridge estimator;mean dispersion error matrix

(责任编辑 张 苹) 07重庆大学学报 (自然科学版) 2002年

2014-2015(1)操作系统实验

实验项目名称:进程的同步(实验一) 1、实验目的 (1) 掌握进程和线程基本概念和属性; (2) 掌握用PV操作解决并发进程的同步问题; (3) 掌握用于同步的信号量初值的设置; (4) 掌握如何处理共享资源的直接制约关系。 2、实验内容 (1) 设计一个模拟若干售票网点的售票程序。界面可以参考图1。还应设计多个后台售票线程并发运行。 图1售票 (2) 模拟:桌上有一只盘子,每次只能放入一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,一个女儿专等吃盘子里的苹果,一个儿子专等吃盘子里的桔子。只要盘子空则爸爸或妈妈都可以向盘子放一个水果,仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。放-取水果的几种情况如图2(a)~(f)所示,可以参照进行设计。 (a)盘子空时取水果 (b)父亲放入苹果

(c) 儿子取水果 (d) 女儿取水果 (e)儿子取走桔子 (f)盘子满时放水果 图2 放-取水果 (3) 自选其它能反映进程互斥问题的应用。 实验项目名称:处理机调度(实验二) 1、实验目的 (1) 掌握几种处理机调度算法的基本思想和特点; (2) 理解并发与并行的区别; (3) 比较几种算法的特点。 2、实验内容 编写程序模拟处理机调度,参照图3。 (1) 时间片轮转 (2) 动态优先权调度 (3) 高响应比优先调度

图3 模拟处理机调度 实验项目名称:银行家算法(实验三) 1、实验目的 银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 2、实验内容 (1) 设计进程对各类资源最大申请表示及初值确定。 (2) 设定系统提供资源初始状况。 (3) 设定每次某个进程对各类资源的申请表示。 (4) 编制程序,依据银行家算法,决定其申请是否得到满足。 具体设计可参照图4(a)~(c) 进行。

第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案

1.什么是“程序可见”的寄存器? 程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。 2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途? 基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。 通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。 3.80x86微处理器标志寄存器中各标志位有什么意义? 常用的7位: CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。 PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。 当操作结果的最低位字节中1的个数为偶数时置1,否则置0。 AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。 ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。 SF符号标志:其值等于运算结果的最高位。 如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。 OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。 DF方向标志: 用于串处理指令中控制处理信息的方向。 当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。 4.画出示意图,简述实模式下存储器寻址的过程。 20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址 5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。 采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。

旭辉集团下属事业部及城市公司绩效管理制度

XH集团下属事业部/城市 公司 绩效管理制度 目录 第一章总则 (1)

1 目的 (1) 2 适用范围 (1) 3 术语与定义 (1) 4 绩效管理机构 (2) 第二章绩效管理职责划分 (2) 1 绩效管理委员会 (2) 2 人事行政部 (2) 3各部门负责人 (2) 4 各项目部负责人 (2) 5 员工 (3) 第三章绩效管理内容及周期 (3) 1 考核内容及周期 (3) 第四章各部门绩效程序 (3) 1 适用范围 (3) 2考核关系 (3) 3 绩效程序 (3) 第五章员工绩效程序 (5) 1 适用范围 (5) 2 考核关系 (5) 3 绩效程序 (6) 第六章项目部绩效程序 (7) 1 适用范围 (7) 2 考核关系 (7) 3绩效程序 (7) 第七章绩效考核等级和结果运用 (8) 1 各部门负责人年度绩效工资 (8) 2 员工季度绩效工资、年度等级和系数 (9)

第八章绩效考核申诉 (10) 1 绩效考核结果申诉 (10) 第九章附则 (11) 第十章附表 (11) 附表一部门年度考核表 (11) 附表二部门季度PPI考核表 (11) 附表三员工季度考核表 (11) 附表四员工年度IDP发展计划表 (11) 附表五员工绩效申诉表 (11) 附表六项目业绩合同 (11)

第一章总则 1 目的 1.1 使考核成为各级管理者有效激励员工的工具。 1.2 建立良好的绩效文化,促使XH集团下属事业部/城市公司总体绩效全面、持续提升。 1.3 绩效考评导向使员工明确事业部/城市公司要求、自身所处绩效位置,促进员工不断成长,同时提高管理者绩效管理能力和意识。 2 适用范围 2.1 本管理制度适用于事业部/城市公司总经理以下人员的绩效管理工作。 3 术语与定义 3.1 绩效管理 绩效管理是指考核者与被考核者之间为达到组织目标,共同参与的绩效计划制定、绩效辅导沟通、绩效考核评估、绩效反馈、绩效结果应用、绩效目标提升的持续循环过程,绩效管理的目的是持续提升个人、部门和组织的绩效。 3.2KPI 关键绩效指标(Key Performance Indicator),反映对公司战略、年度经营计划与部门职能起重大支持作用的绩效指标。 3.3 PPI 计划绩效指标(Plan Performance Indicator),反映对部门或岗位工作计划完成起主要作用的绩效指标。 3.4 BPI 职业行为绩效指标(Behavior Performance Indicator),简称行为绩效指标,反映员工作为职业人其行为与岗位能力素质要求、公司文化要求符合状况的绩效指标。 3.5 能力素质考核 能力素质考核分为管理者(事业部/城市公司项目总经理和部门负责人)的360度考核和员工的能力矩阵考核,其结果与业绩考核结果共同运用于九宫格确定绩效等级,进行岗位变动和薪酬调整。 3.7个人发展计划 个人发展计划是结合岗位需要及个人发展意向,通过上下级沟通达成促使员工素质和技

操作系统内存管理复习过程

操作系统内存管理

操作系统内存管理 1. 内存管理方法 内存管理主要包括虚地址、地址变换、内存分配和回收、内存扩充、内存共享和保护等功能。 2. 连续分配存储管理方式 连续分配是指为一个用户程序分配连续的内存空间。连续分配有单一连续存储管理和分区式储管理两种方式。 2.1 单一连续存储管理 在这种管理方式中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CP/M和 DOS 2.0以下就是采用此种方式。这种方式的最大优点就是易于管理。但也存在着一些问题和不足之处,例如对要求内

存空间少的程序,造成内存浪费;程序全部装入,使得很少使用的程序部分也占用—定数量的内存。 2.2 分区式存储管理 为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。 分区式存储管理引人了两个新的问题:内碎片和外碎片。 内碎片是占用分区内未被利用的空间,外碎片是占用分区之间难以利用的空闲分区(通常是小空闲分区)。 为实现分区式存储管理,操作系统应维护的数据结构为分区表或分区链表。表中各表项一般包括每个分区的起始地址、大小及状态(是否已分配)。

分区式存储管理常采用的一项技术就是内存紧缩(compaction)。 2.2.1 固定分区(nxedpartitioning)。 固定式分区的特点是把内存划分为若干个固定大小的连续分区。分区大小可以相等:这种作法只适合于多个相同程序的并发执行(处理多个类型相同的对象)。分区大小也可以不等:有多个小分区、适量的中等分区以及少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。 优点:易于实现,开销小。 缺点主要有两个:内碎片造成浪费;分区总数固定,限制了并发执行的程序数目。 2.2.2动态分区(dynamic partitioning)。 动态分区的特点是动态创建分区:在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。与固定分区相比较其优点是:没有内碎

操作系统实验内存分配

西安邮电大学 (计算机学院) 课内实验报告 实验名称:内存管理 专业名称:软件工程 班级: 学生姓名: 学号(8位): 指导教师: 实验日期:

实验五:进程 1.实验目的 通过深入理解区管理的三种算法,定义相应的数据结构,编写具体代码。充分模拟三种算法的实现过程,并通过对比,分析三种算法的优劣。 (1)掌握内存分配FF,BF,WF策略及实现的思路; (2)掌握内存回收过程及实现思路; (3)参考给出的代码思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。 2.实验要求: 1)掌握内存分配FF,BF,WF策略及实现的思路; 2)掌握内存回收过程及实现思路; 3)参考本程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。 3.实验过程: 创建进程:

删除其中几个进程:(默认以ff首次适应算法方式排列) Bf最佳适应算法排列方式:

wf最差匹配算法排列方式: 4.实验心得: 这次实验实验时间比较长,而且实验指导书中对内存的管理讲的很详细,老师上课的时候也有讲的很详细,但是代码比较长,刚开始的时候也是不太懂,但是后面经过和同学一起商讨,明白几种算法的含义: ①首次适应算法。在采用空闲分区链作为数据结构时,该算法要求空闲分区链表以地址递增的次序链接。在进行内存分配时,从链首开始顺序查找,直至找到一个能满足进程大小要求的空闲分区为止。然后,再按照进程请求内存的大小,从该分区中划出一块内存空间分配给请求进程,余下的空闲分区仍留在空闲链中。 ②循环首次适应算法。该算法是由首次适应算法演变而形成的,在为进程分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,并从中划出一块与请求的大小相等的内存空间分配给进程。 ③最佳适应算法将空闲分区链表按分区大小由小到大排序,在链表中查找第一个满足要求的分区。 ④最差匹配算法将空闲分区链表按分区大小由大到小排序,在链表中找到第一个满足要求的空闲分区。 实验中没有用到循环首次适应算法,但是对其他三种的描述还是很详细,总的来说,从实验中还是学到了很多。 5.程序源代码: #include #include #include

实模式和保护模式的区别

实模式和保护模式的区别 实模式和保护模式的区别 2009-08-31 20:19 551人阅读评论(1) 收藏举报 从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式(所以存在一个启动时的模式转换问题)。 实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。 在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务切换和保护任务环境; 4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离; 支持虚拟8086方式,便于执行8086程序。 1.虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。 2.保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。 实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。这些区域也不能随便修改,若修改就会有: SIGSEGV (linux 段错误);非法内存访问对话框(windows 对话框)。 CPU启动环境为16位实模式,之后可以切换到保护模式。但从保护模式无法切换回实模式

旭辉集团组织管理手册》

LOGO 集团股份有限公司组织管理手册 (沟通稿) 签发: _________ 日期: _________

目录 目录 (2) 第一章手册说明. (5) 一.手册的基本内容 (5) 二.手册发布 (5) 三.手册的调整和修订 (5) 四.手册的管理 (5) 第二章...... 集团业务关系汇报图与部门通用职能.. (6) 一、集团总部与事业部职能部门业务汇报关系图 (6) 二、集团总部与城市公司职能部门业务汇报关系图 (7) 三、部门通用职能 (8) 第三章 ..... 集团总部组织架构及各委员会、部门职责 (10) 一、集团总部组织架构图 (10) 二、集团总部岗位设置图 (11) 三、集团各委员会职能 (12) 四、集团总部各部门职能 (13) 1. 总裁办公室职能 (13) 2. 人力资源部职能 (15)

3. 业务拓展部职能 (17) 4. 营销管理部职能 (18) 5. 设计管理部职能 (20) 6. 工程管理部职能 (21) 7. 成本管理部职能 (22) 8. 财务管理部职能 (23) 9. 法务审计部职能 (25) 第四章...... 集团事业部组织架构及各部门职责.. (26) 一、事业部组织架构图 (26) 二、事业部岗位设置图 (27) 三、事业部各部门职能 (28) 1.行政人事部职能 (28) 2. 开发配套部职能 (30) 3. 营销部职能 (31) 4. 设计部职能 (32) 5. 工程部职能 (33) 6. 项目部职能 (34)

7. 成本部 (36) 8. 财务部职能 (37) 9. 客户服务部职能 (38) 第四章...... 集团城市公司的组织架构及各部门职责. (39) 一、城市公司组织架构图 (39) 二、城市公司岗位设置图 (40) 三、城市公司各部门职能 (41) 1.行政人事部职能 (41) 2. 开发配套部职能 (43) 3. 营销部职能 (44) 4. 设计部职能 (46) 5. 工程部职能 (47) 6. 成本部 (49) 7. 财务部职能 (50)

操作系统实验之内存管理实验报告

学生学号 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称 计算机操作系统 开 课 学 院 计算机科学与技术学院 指导老师姓名 学 生 姓 名 学生专业班级 2016 — 2017 学年第一学期

实验三 内存管理 一、设计目的、功能与要求 1、实验目的 掌握内存管理的相关内容,对内存的分配和回收有深入的理解。 2、实现功能 模拟实现内存管理机制 3、具体要求 任选一种计算机高级语言编程实现 选择一种内存管理方案:动态分区式、请求页式、段式、段页式等 能够输入给定的内存大小,进程的个数,每个进程所需内存空间的大小等 能够选择分配、回收操作 内购显示进程在内存的储存地址、大小等 显示每次完成内存分配或回收后内存空间的使用情况 二、问题描述 所谓分区,是把内存分为一些大小相等或不等的分区,除操作系统占用一个分区外,其余分区用来存放进程的程序和数据。本次实验中才用动态分区法,也就是在作业的处理过程中划分内存的区域,根据需要确定大小。 动态分区的分配算法:首先从可用表/自由链中找到一个足以容纳该作业的可用空白区,如果这个空白区比需求大,则将它分为两个部分,一部分成为已分配区,剩下部分仍为空白区。最后修改可用表或自由链,并回送一个所分配区的序号或该分区的起始地址。 最先适应法:按分区的起始地址的递增次序,从头查找,找到符合要求的第一个分区。

最佳适应法:按照分区大小的递增次序,查找,找到符合要求的第一个分区。 最坏适应法:按分区大小的递减次序,从头查找,找到符合要求的第一个分区。 三、数据结构及功能设计 1、数据结构 定义空闲分区结构体,用来保存内存中空闲分区的情况。其中size属性表示空闲分区的大小,start_addr表示空闲分区首地址,next指针指向下一个空闲分区。 //空闲分区 typedef struct Free_Block { int size; int start_addr; struct Free_Block *next; } Free_Block; Free_Block *free_block; 定义已分配的内存空间的结构体,用来保存已经被进程占用了内存空间的情况。其中pid作为该被分配分区的编号,用于在释放该内存空间时便于查找。size表示分区的大小,start_addr表示分区的起始地址,process_name存放进程名称,next指针指向下一个分区。 //已分配分区的结构体 typedef struct Allocate_Block { int pid; int size; int start_addr; char process_name[PROCESS_NAME_LEN]; struct Allocate_Block *next; } Allocate_Block; 2、模块说明 2.1 初始化模块 对内存空间进行初始化,初始情况内存空间为空,但是要设置内存的最大容量,该内存空间的首地址,以便之后新建进程的过程中使用。当空闲分区初始化

保护模式与实模式

什么是实模式、保护模式和虚拟8086方式 1:实模式:寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。 2:保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。 第一:实模式下程序的运行回顾. 程序运行的实质是什么?其实很简单,就是指令的执行,显然CPU 是指令得以执行的硬件保障,那么CPU如何知道指令在什么地方呢? 对了,80x86系列是使用CS寄存器配合IP寄存器来通知CPU指令在内存 中的位置. 程序指令在执行过程中一般还需要有各种数据,80x86系列有DS、 ES、FS、GS、SS等用于指示不同用途的数据段在内存中的位置。 程序可能需要调用系统的服务子程序,80x86系列使用中断机制 来实现系统服务。 总的来说,这些就是实模式下一个程序运行所需的主要内容 (其它如跳转、返回、端口操作等相对来说比较次要。) 第二:保护模式---从程序运行说起 无论实模式还是保护模式,根本的问题还是程序如何在其中运行。 因此我们在学习保护模式时应该时刻围绕这个问题来思考。 和实模式下一样,保护模式下程序运行的实质仍是“CPU执行指令, 操作相关数据”,因此实模式下的各种代码段、数据段、堆栈段、中 断服务程序仍然存在,且功能、作用不变。 那么保护模式下最大的变化是什么呢?答案可能因人而异,我的 答案是“地址转换方式”变化最大。 第三:地址转换方式比较 先看一下实模式下的地址转换方式,假设我们在ES中存入0x1000, DI中存入0xFFFF,那么ES:DI=0x1000*0x10+0xFFFF=0x1FFFF,这就是众 所周知的“左移4位加偏移”。 那么如果在保护模式下呢?假设上面的数据不变ES=0x1000, DI=0xFFFF,现在ES:DI等于什么呢? 公式如下:(注:0x1000=1000000000000b= 10 0000 0000 0 00) ES:DI=全局描述符表中第0x200项描述符给出的段基址+0xFFFF 现在比较一下,好象是不一样。再仔细看看,又好象没什么区别! 为什么说没什么区别,因为我的想法是,既然ES中的内容都不是 真正的段地址,凭什么实模式下称ES为“段寄存器”,而到了保护模式 就说是“选择子”? 其实它们都是一种映射,只是映射规则不同而已:在实模式下这

旭辉集团组织管理手册

LOGO .........集团股份有限公司 组织管理手册 (沟通稿) 签发: 日期:

目录 目录 .................................................... 错误!未定义书签。第一章手册说明......................................... 错误!未定义书签。一.手册的基本内容..................................................... 错误!未定义书签。二.手册发布........................................................... 错误!未定义书签。三.手册的调整和修订................................................... 错误!未定义书签。四.手册的管理......................................................... 错误!未定义书签。第二章 .........集团业务关系汇报图与部门通用职能........ 错误!未定义书签。 一、集团总部与事业部职能部门业务汇报关系图......................... 错误!未定义书签。 二、集团总部与城市公司职能部门业务汇报关系图....................... 错误!未定义书签。 三、部门通用职能................................................... 错误!未定义书签。第三章 .........集团总部组织架构及各委员会、部门职责.... 错误!未定义书签。 一、集团总部组织架构图................................................. 错误!未定义书签。 二、集团总部岗位设置图................................................. 错误!未定义书签。 三、集团各委员会职能................................................... 错误!未定义书签。 四、集团总部各部门职能................................................. 错误!未定义书签。 1.总裁办公室职能....................................................... 错误!未定义书签。 2.人力资源部职能....................................................... 错误!未定义书签。 3.业务拓展部职能....................................................... 错误!未定义书签。 4.营销管理部职能....................................................... 错误!未定义书签。 5.设计管理部职能....................................................... 错误!未定义书签。 6.工程管理部职能....................................................... 错误!未定义书签。 7.成本管理部职能....................................................... 错误!未定义书签。 8.财务管理部职能....................................................... 错误!未定义书签。 9.法务审计部职能....................................................... 错误!未定义书签。

第四章 操作系统存储管理(练习题)

第四章存储管理 1. C存储管理支持多道程序设计,算法简单,但存储碎片多。 A. 段式 B. 页式 C. 固定分区 D. 段页式 2.虚拟存储技术是 B 。 A. 补充内存物理空间的技术 B. 补充相对地址空间的技术 C. 扩充外存空间的技术 D. 扩充输入输出缓冲区的技术 3.虚拟内存的容量只受 D 的限制。 A. 物理内存的大小 B. 磁盘空间的大小 C. 数据存放的实际地址 D. 计算机地址位数 4.动态页式管理中的 C 是:当内存中没有空闲页时,如何将已占据的页释放。 A. 调入策略 B. 地址变换 C. 替换策略 D. 调度算法 5.多重分区管理要求对每一个作业都分配 B 的内存单元。 A. 地址连续 B. 若干地址不连续 C. 若干连续的帧 D. 若干不连续的帧 6.段页式管理每取一数据,要访问 C 次内存。 A. 1 B. 2 C. 3 D. 4 7.分段管理提供 B 维的地址结构。 A. 1 B. 2 C. 3 D. 4 8.系统抖动是指 B。 A. 使用计算机时,屏幕闪烁的现象 B. 刚被调出内存的页又立刻被调入所形成的频繁调入调出的现象 C. 系统盘不干净,操作系统不稳定的现象 D. 由于内存分配不当,造成内存不够的现象 9.在 A中,不可能产生系统抖动现象。 A. 静态分区管理 B. 请求分页式管理 C. 段式存储管理 D. 段页式存储管理 10.在分段管理中 A 。 A. 以段为单元分配,每段是一个连续存储区 B. 段与段之间必定不连续 C. 段与段之间必定连续 D. 每段是等长的 11.请求分页式管理常用的替换策略之一有 A 。 A. LRU B. BF C. SCBF D. FPF 12.可由CPU调用执行的程序所对应的地址空间为 D 。 A. 名称空间 B. 虚拟地址空间 C. 相对地址空间 D. 物理地址空间 13. C 存储管理方式提供二维地址结构。 A. 固定分区 B. 分页

操作系统课程设计内存管理

内存管理模拟 实验目标: 本实验的目的是从不同侧面了解Windows 2000/XP 对用户进程的虚拟内存空间的管理、分配方法。同时需要了解跟踪程序的编写方法(与被跟踪程序保持同步,使用Windows提供的信号量)。对Windows分配虚拟内存、改变内存状态,以及对物理内存(physical memory)和页面文件(pagefile)状态查询的API 函数的功能、参数限制、使用规则要进一步了解。 默认情况下,32 位Windows 2000/XP 上每个用户进程可以占有2GB 的私有地址空间,操作系统占有剩下的2GB。Windows 2000/XP 在X86 体系结构上利用二级页表结构来实现虚拟地址向物理地址的变换。一个32 位虚拟地址被解释为三个独立的分量——页目录索引、页表索引和字节索引——它们用于找出描述页面映射结构的索引。页面大小及页表项的宽度决定了页目录和页表索引的宽度。 实验要求: 使用Windows 2000/XP 的API 函数,编写一个包含两个线程的进程,一个线程用于模拟内存分配活动,一个线程用于跟踪第一个线程的内存行为,而且要求两个线程之间通过信号量实现同步。模拟内存活动的线程可以从一个文件中读出要进行的内存操作,每个内存操作包括如下内容: 时间:操作等待时间。 块数:分配内存的粒度。 操作:包括保留(reserve)一个区域、提交(commit)一个区域、释放(release)一个区域、回收(decommit)一个区域和加锁(lock)与解锁(unlock)一个区域,可以将这些操作编号存放于文件。保留是指保留进程的虚拟地址空间,而不分配物理 存储空间。提交在内存中分配物理存储空间。回收是指释放物理内存空间,但在虚拟地址空间仍然保留,它与提交相对应,即可以回收已经提交的内存块。释放是指将物理存储和虚拟地址空间全部释放,它与保留(reserve)相对应,即可以释放已经保留的内存块。 大小:块的大小。 访问权限:共五种,分别为PAGE_READONLY,PAGE_READWRITE ,PAGE_EXECUTE,PAGE_EXECUTE_READ 和PAGE EXETUTE_READWRITE。可以将这些权限编号存放于文件中跟踪线程将页面大小、已使用的地址范围、物理内存总量,以及虚拟内存总量等信息显示出来。

保护模式下寻址(易懂)

保护模式下寻址(易懂) 保护模式下寻址(易懂):网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位括号中是我的加注段机制轻松体验[内存寻址]实模式下的内存寻址:让我们首先来回顾实模式下的寻址方式段首地址×16+偏 移量=物理地址为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。保护模式下分段机制的内存寻址:保护模式下分段机制是利用一个称作段选择符的偏移量,从而到描述符表找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,再加上偏移量一段话,出现了三个新名词:1、段选择子2、描述符表3、段描述符我们现在可以这样来理解这段话:有一个结构体类型,它有三个成员变量:段物理首地址段界限段属性内存中,维护一个该结构体类型的是一个数组。而分段机制就是利用一个索引,找到该数组对应的结构体,从而得到段的物理首地址,然后加上偏移量,得到真正的物理地址。公式:xxxx:yyyyyyyy其中,xxxx也就是索引,yyyyyyyy是偏移量(因为32位寄存器,所以8个

16进制)xxxx存放在段寄存器中。现在,我们来到过来分析一下那三个新名词。段描述符,一个结构体,它有三个成员变量:1、段物理首地址2、段界限3、段属性我们再来重温一遍描述符表,也就是一个数组,什么样的数组呢?是一个段描述符组成的数组。接下来看看段选择子:段选择子,也就是数组的索引,但这时候的索引不在是高级语言中数组的下标,而是我们将要找的那个段描述符相对于数组首地址(也就是全局描述表的首地址)偏移位置。就这么简单,如图:图中,通过Selector(段选择子)找到存储在Descriptor Table(描述符表)中某个Descriptor(段描述符),该段描述符中存放有该段的物理首地址,所以就可以找到内存中真正的物理段首地址SegmentOffset(偏移量):就是相对该段的偏移量物理首地址+偏移量就得到了物理地 址本图就是DATA但这时,心细的朋友就发现了一个GDTR这个家伙还没有提到!我们来看一下什么是GDTR ?Global Descriptor Table Register(全局描述符表寄存器)但是这个寄存器有什么用呢?大家想一下,段描述符表现在是存放在内存中,那CPU是如何知道它在哪里呢?所以,Intel 公司设计了一个全局描述符表寄存器,专门用来存放段描述符表的首地址,以便找到内存中段描述符表。这时,段描述符表地址被存到GDTR寄存器中了。好了,分析就到这,我们来看一下正式的定义:当x86 CPU 工作在保护模式时,可

实验操作系统存储管理实验报告

实验四操作系统存储管理实验报告 一、实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二、实验内容 (1)通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。 页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。 在本实验中,假定页面大小为1k,用户虚存容量为32k,用户内存容量为4页到32页。 (2)produce_addstream通过随机数产生一个指令序列,共320条指令。 A、指令的地址按下述原则生成: 1)50%的指令是顺序执行的 2)25%的指令是均匀分布在前地址部分 3)25%的指令是均匀分布在后地址部分 B、具体的实施方法是: 1)在[0,319]的指令地址之间随机选取一起点m; 2)顺序执行一条指令,即执行地址为m+1的指令; 3)在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; 4)顺序执行一条指令,地址为m’+1的指令 5)在后地址[m’+2,319]中随机选取一条指令并执行; 6)重复上述步骤1)~5),直到执行320次指令 C、将指令序列变换称为页地址流

在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中 的存放方式为: 第0条~第9条指令为第0页<对应虚存地址为[0,9]); 第10条~第19条指令为第1页<对应虚存地址为[10,19]); 。。。。。。 第310条~第319条指令为第31页<对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 (3)计算并输出下属算法在不同内存容量下的命中率。 1)先进先出的算法

操作系统内存管理原理

内存分段和请求式分页 在深入i386架构的技术细节之前,让我们先返回1978年,那一年Intel 发布了PC处理器之母:8086。我想将讨论限制到这个有重大意义的里程碑上。如果你打算知道更多,阅读Robert L.的80486程序员参考(Hummel 1992)将是一个很棒的开始。现在看来这有些过时了,因为它没有涵盖Pentium处理器家族的新特性;不过,该参考手册中仍保留了大量i386架构的基本信息。尽管8086能够访问1MB RAM的地址空间,但应用程序还是无法“看到”整个的物理地址空间,这是因为CPU寄存器的地址仅有16位。这就意味着应用程序可访问的连续线性地址空间仅有64KB,但是通过16位段寄存器的帮助,这个64KB大小的内存窗口就可以在整个物理空间中上下移动,64KB逻辑空间中的线性地址作为偏移量和基地址(由16位的段寄存器给处)相加,从而构成有效的20位地址。这种古老的内存模型仍然被最新的Pentium CPU支持,它被称为:实地址模式,通常叫做:实模式。 80286 CPU引入了另一种模式,称为:受保护的虚拟地址模式,或者简单的称之为:保护模式。该模式提供的内存模型中使用的物理地址不再是简单的将线性地址和段基址相加。为了保持与8086和80186的向后兼容,80286仍然使用段寄存器,但是在切换到保护模式后,它们将不再包含物理段的地址。替代的是,它们提供了一个选择器(selector),该选择器由一个描述符表的索引构成。描述符表中的每一项都定义了一个24位的物理基址,允许访问16MB RAM,在当时这是一个很不可思议的数量。不过,80286仍然是16位CPU,因此线性地址空间仍然被限制在64KB。 1985年的80386 CPU突破了这一限制。该芯片最终砍断了16位寻址的锁链,将线性地址空间推到了4GB,并在引入32位线性地址的同时保留了基本的选择器/描述符架构。幸运的是,80286的描述符结构中还有一些剩余的位可以拿来使用。从16位迁移到32位地址后,CPU的数据寄存器的大小也相应的增加了两倍,并同时增加了一个新的强大的寻址模型。真正的32位的数据和地址为程序员带了实际的便利。事实上,在微软的Windows平台真正完全支持32位模型是在好几年之后。Windows NT的第一个版本在1993年7月26日发布,实现了真正意义上的Win32 API。但是Windows 3.x程序员仍然要处理由独立的代码和数据段构成的64KB内存片,Windows NT提供了平坦的4GB地址空间,在那儿可以使用简单的32位指针来寻址所有的代码和数据,而不需要分段。在内部,当然,分段仍然在起作用,就像我在前面提及的那样。不过管理段的所有责任都被移给了操作系统。

操作系统实验内存分配

精心整理西安邮电大学 (计算机学院) 课内实验报告 1. (1 (2 (3 原因,写出实验报告。 2.实验要求: 1)掌握内存分配FF,BF,WF策略及实现的思路; 2)掌握内存回收过程及实现思路; 3)参考本程序思路,实现内存的申请、释放的管理程序,调试运行,总结程序设计中出现的问题并找出原因,写出实验报告。

3.实验过程: 创建进程: 删除其中几个进程:(默认以ff首次适应算法方式排列) Bf最佳适应算法排列方式: wf最差匹配算法排列方式: 4.实验心得: 明 实验中没有用到循环首次适应算法,但是对其他三种的描述还是很详细,总的来说,从实验中还是学到了很多。 5.程序源代码: #include #include #include #include

#define PROCESS_NAME_LEN 32 //进程名长度 #define MIN_SLICE 10 //最小碎片的大小#define DEFAULT_MEM_SIZE 1024 //内存大小 #define DEFAULT_MEM_START 0 //起始位置 /*内存分配算法*/ #define MA_FF 1 #define MA_BF 2 #define MA_WF 3 /*描述每一个空闲块的数据结构*/ struct free_block_type { }; /* /* { }; /* /* void display_menu(); int set_mem_size(); void set_algorithm(); void rearrange(int algorithm); int rearrange_WF(); int rearrange_BF(); int rearrange_FF(); int new_process(); int allocate_mem(struct allocated_block *ab);

第3章作业

第3章从8086到Pentium系列微处理器的技术发展 教材习题解答 1. 简述80286的特点和保护模式的保护功能。 【解】80286的特点: ①CPU内部分为四个处理部件:EU(执行部件)、AU(地址部件)、IU(指令部件)和BU(总线部件)。这四个处理部件可以并行的进行操作,提高了处理速度。 ②数据线和地址线完全分离。在一个总线周期中,当有效数据出现在数据总线上的时候,下一个总线周期的地址已经送到地址总线,形成总线周期的流水作业。 ③具有“实地址模式”(Real Address Mode,简称为“实模式”)和“保护虚地址模式”(Protected V irtual Address Mode,简称为“保护模式”)”两种工作模式。 ④能运行实时多任务操作系统,支持存储管理和保护功能。 ⑤实现了虚拟存储管理。 ⑥与80286 配合使用的数学协处理器是80287,它基本与8087相同,但适应80286 的两种工作模式。 保护模式体现了80286的特色,主要是对存储器管理、虚拟存储和对地址空间的保护。在保护模式下,可为每个任务提供多达1GB的虚拟存储空间和保护机制,有力地支持了多用户、多任务的操作。那些内存装不下的逻辑段,将以文件形式存在外存储器中,当处理器需要对它们进行存取操作时就会产生中断,通过中断服务程序把有关的程序或数据从外存储器调入到内存,从而满足程序运行的需要。 保护模式为不同程序设置了四个特权级别,可让不同程序在不同的特权级别上运行。依靠这一机制,可支持系统程序和用户程序的分离,并可进一步分离不同级别的系统程序,大大提高了系统运行的可靠性。 2. 简述80386 的特点、80386引脚与8086的区别。 【解】80386 的特点: 80386是全32位结构,它的外部数据总线和内部数据通道,包括寄存器、ALU和内部总线都是32位的。 80386 有3 种工作模式:实模式、虚拟86模式、386的保护模式。 80386的硬件结构可分成6个逻辑单元,它们以流水线方式工作,运行速度可达4MIPS。其硬件设计有支持段页式存储管理部件,易于实现虚拟存储系统。在保护模式下的分段寻址体系,与操作系统相配合可以组成虚拟存储器系统,一个任务的最大虚拟空间可达246=64 TB。 80386硬件支持多任务处理,用一条指令就可以实现任务切换。 80386设置了4级特权级,按优先顺序依次为0级、1级、2级、3级,前3级用于操作系统程序,后1级用于用户程序。 80386引脚与8086的区别见表3-1。 表3-1 80386引脚与8086的区别 8086CPU 80386CPU 共有40个引脚共有132个引脚 16条地址/数据复用线4条地址线34条地址线 32条数据线 在总线宽度控制信号16 BS的控制下,可实现16位或32位数据传送。字节控制信号0 BE~3 BE 协处理器接口信号 (1) PEREQ:协处理器向80386发出的请求信号,有效时表示协处理器请求与存储器之间传送数据。80386响应该请求后,将按照指令的要求控制对存储器的读写。 (2) BUSY:协处理器向80386发出的状态信号,有效时表示协处理器正在执行指令,处于忙状态,暂时不能接受新的指令。 (3)ERROR:协处理器向80386发出的状态信号,有效时表示协处理器出错。80386在检测到ERROR信号后,将转到错误处理子程序来处

相关主题