第7章 存储管理_第1页
第7章 存储管理_第2页
第7章 存储管理_第3页
第7章 存储管理_第4页
第7章 存储管理_第5页
已阅读5页,还剩130页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章存储管理主讲:房道伟Daowei_fang@163.com操作系统原理今天虽然主存价格已相当便宜,但主存容量仍然是计算机四大硬件资源中最关键而又最紧张的“瓶颈”资源。因此对主存的管理和有效使用仍然是今天操作系统十分重要的内容。许多操作系统之间最明显的区别特征之一往往是所使用的存储管理方法不同。如OS/360-MFT采用固定分区存储管理技术,OS/360-MTV是采用可变分区存储管理技术,OS/2,WindowsNT,是采用虚拟存储管理技术。主存储器管理技术可分为两大类:实存储器管理和虚拟存储器管理。主要内容实存管理虚拟存储管理§7.1主存管理的基础(1)主存的物理组织和逻辑组织(a)存储器分三级:为能更多的存放并更快地处理用户信息目前许多计算机把存储器分为三级。高速缓存主存外存cpu可访n+k~几百knM~几百Mn+M~nG(G=1kn)用户的程序在运行时应存放在主存中,以便处理机访问。但是由于主存容量有限。所以把那些不马上使用的程序、数据放在外部存储器(又称次级存储)中。当用到时再把它们读入主存。图7.1中的三级存储器,从高速缓冲存储器(简称缓存)到外部存储器(以后简称外存),其容量愈来愈大,而访问数据的速度则愈来愈慢,价格也愈来愈便宜,如IBM的缓存的最大传输速度为每双字120~225毫微秒,主存的传输速度每字1微秒。)(b)程序只能在主存中运行(c)物理地址:(需要区分存贮体中不同的存贮单元,统一编号,这些编号称为地址)与地址有关:20根 220=1M32根 232=4G物理地址是主存的真实地址–––绝对地址物理地址的集合间–––存贮空间它是:存储控制部件能够识别的主存单元编号(或字节地址)。(d)逻辑地址:又称相对地址,是指相对于某个基准量(通常用0)编址时所使用的地址,相对地址常用于程序编写和编译过程中。名空间–––由程序员所写符号组成。地址空间–––一个目标程序所限定的地址集合。例:Address:movAx,1Obj目标地址…名空间编译地址空间EXE文件装入存贮空间(2)存贮管理功能:(a)映射逻辑地址为存贮地址-地址映射(b)在多个用户间分配主存-主存分配研究主存分配算法,以及算法的性能(c)对主存中信息提供保护-存贮保护(d)扩充逻辑存区-主存扩充(这里指的扩充并非指硬件设备上的扩充,而是用存储管理软件来实现逻辑上的扩充-即所谓的虚拟存贮技术)(I)地址映射(重定位)(a)执行指令时,必须将地址变为绝对地址才可访问系统分配的内存。存贮空间地址空间程序执行时,必须将逻辑地址正确地转换为物理地址即地址映射。例:movAx,(500)12.30100500100011001500movAx,(500)12.3装入主存出错解决方法:重定位(b)使一个作业程序装入到与其地址空间不一致的存贮空间,所引起的对有关地址部分的调整过程称为地址重定位。逻辑地址物理地址(c)地址映射的方式:编程或编译对确定地址映射关系,不灵活。静态地址映射

在装入时实现调整

地址要有标识

每装入时都可要定位

装入后不再变(静态)动态重定位在执行寻址时重定位访问地址时通过地址变换机构改变为内存地址movAx(500)12.3movAx(500)12.31005001100150010001000cpu运行主存……B特点:(1)任意装入内存区域(不要求占用一个连续的内存)(2)只装入部分代码即可运行(3)改变系统时不需改程序(程序占用的内存空间、动态可变,主程序从某一个存贮区域移动时,只需修改得定位存器B即可)(4)程序可共享(II)主存分配:(a)分配策略(计算)放置策略–––决定放的位置调入策略–––装入时机(什么时刻调入)淘汰策略–––建立空闲区(b)数据结构:队、表(c)地址映射(III)存贮保护:越界保护-范围存贮键保护-存贮权限(IV)主存扩充:逻辑存贮区扩充(利用辅存)(1)单一连续区分配(a)概要:存区分为o.s连续区和用户连续区o.s区用户区越界R受保护o.s存取区特权管态目态§7.2实存管理(b)简单、低放、单一用户单用户o.s的内存管理十分简单,因为存贮器在任何时候都只保存一个用户进程,除o.s本身占据的内存外都可分配给用户使用。方案:o.s可以占据RAM的底部(a)或顶部(b)也可以部分在内存顶部的Rom中,另一部分存放RAM底部(c)例如:IBMPC在MS/Dos下,其内存分配便条用(c)其装有设备驱动程序的8k.Rom占据IM地址空间的最高区通常称Rom中的这些设备驱动程序为BIOS用户程序o.s(a)用户程序o.s(b)Rom设备驱动程序o.s用户程序(c)(2)固定分区:把主存分成若干个固定大小的存储区(存储块)(a)概要:主存被划分为多个分区,每个分区分给某一作业使用,并由分区说明表指明作业按区分配直到该作业完成后才把该存储区归返系统。o.s区20k28k60k90k128k256k0区1区2区3区4区区号大小起址状态123420k28k60k128kinusingNuL8k32k68k128kinusingNuL(存贮分块表MBT)固定分区分配算法大区图要求xk大小的分区取分区说明表的第一项该分区空闲吗?分区大小xk表结束吗?返回分区号状态位置1无法分配取下一项NNNYYY(b)特点由操作员划分分区MBT应放在操作系统区内,填分区表多道程序零头缺点:不允许两个作业同时放于同一个分区中剩下的空闲部分称为内存碎片,降低了主存利用率。(3)可变分区(a)概要:存贮空间的划分在作业装入时进行(事先并未划分成一块块分区),且使分区大小与作业大小一致(按作业大小建立)分区大小、个数,不固定的(系统启动时,整个主存除o.s块外,其余主存区可看成是整个一个分区)。O.S自由分区0512k1536k序号大小起址状态1234312k320k-384k已分已分8k32k-120k空表目已分5--空表目大小起址状态352k504k自由空表目32k520k自由空表目--空表目----已分配分区表UBT表自由分区表FBT例:20k28k94k232k248ko.s区Job1(8k)Job2(16k)Job4(50k)Job3(124k)Job5(16k)44k108k256k分裂分裂来了job4(50k),job5(16k)未分配分区表(自由分区表)FBT的变化序号大小起址状态1264k14k24k8k44k94k232k248k自由自由job2,job3完成后、释放(如下图)o.s区Job1

Job4

Job5合并空申请分配一个xk大小的分区置空白区号F=1(F)的状态=可用?空白区F大小xk?loc(F)的始址否是请求-主存块程序框图F=未分配表的结尾?置空白区F,F的状态=空表目(F)的大小-xk(F)的大小loc+xk(F)的始边在分配表中找一个状态=空表目的分区P置P分区的大小=xk置P分区的地址=loc置状态=已分配返回一个分区号P本次无法分配一个分区F+1F><=是否(是自由还是空表目)空表目(b)分配与回收寻找一个容纳作业的空白区分裂该区,(分配区和空白区)修改两个表返回分配区序号和始址有:首次适应、循环首次适应、最佳适应、最坏适应算法。(i)分配算法检查是否与空白区相邻,是则合并成一个大空白区修改两个表(返回分配区与空白区序号和始址)(ii)分区回收算法将空白区按存贮顺序链成一个队列,用一指针指向队首分配时将找到的第一个满足要求的空白区分配给它。(i)首次适应算法(FirstFit:FF)(c)分区管理算法(可适应于固定分区及可变分区)例:指针10k60k90k20k有四块空白区(从低地址高地址),来了一个作业需分配19k内存。指针10k60k90k20k41k在高地址空白区中保持较大空白区(每次从10k开始分配寻找)。解:FF特点:(ii)循环首次适应(Nextfit:NF)将空白区组成环状队列,按循环顺序寻找空白区。(与FF区别,头指针从低地址开始向高地址循环移动)12指针移动使得小空白区均匀分布,易于与其它空白区合并。NF特点:(iii)最佳适应算法(Bestfit:BF)将空白区按大小排成队列,寻找时总是以最小的空白区开始,找到第一个合适的分区指针10k60k90k20k例:来一个19k的作业最佳地利用分区;开销比较大,并不是最好算法。指针10k20k60k90k1k特点:解:(iv)最坏适应算法(Worstfit:WF)将空白区排序(按从大到小)找最大空白区如上例:指针90k60k20k10k71k不会出现小的空白区。特点:例:设系统空白链表为指针7k3k10k8k20k5kabcdef用户先后申请7.5k,4k试用四种算法,试求出分配块。FF:c,a3k3k2.5k8k20k5kabcdefNF:c,d7k3k2.5k4k20k5kabcdef3k5k7k8k10k20kbfadceBF:首先从小到大排序3k5k7k0.5k10k20kbfadce3k5k7k0.5k10k20kbfadce再排序从小到大分配块为d,f8.5k10k8k7k5k3kecdafbWF:e,e0.5k3k1k7k10k20kdbface可变式分区与固定式分区分配方案相比,一般来说其存储空间的利用率高些,但是,由于存在着一些分散的,较小的空白区,仍然不能充分利用-称之为存储器的“零头”。(d)碎片(零头)问题:存在于已分配的分区之间的一些不能充分利用的空白区(i)原因:请求释放使存区分割(ii)碎片总和>nk,但不能装入nk作业(iii)解决的方法:(I)将程序装入分散存区中–––多重分区Job1Job2Job3RR11RR12Job4部分2Job4部分1RR21RR22(II)将碎片集中(紧凑或拼接)–––可重定位分配Job1Job2Job3Job4可重定位分区分配法是利用分区的“拼接”(对空白区而言)或“紧凑”(作业程序而言)技术解决“零头”。(4)可重定位分区分配(a)概要:移动内存已分配区的信息,使得所有分配区靠在一起使空白区连成一片,采用浮动方法。(b)浮动(重定位-动态)进行主存的压缩,就要将主存中用户程序移动(浮动),对作业中与地址有关的部分进行调整。请求分配一个大小为xk的分区有大于xk的空闲区吗?空闲区的总和xk吗?紧缩存储并相应地修改诸表(得到一个完整的空闲区xk)分配分区并修改诸表此刻已经分配一个分区返回一个分区号数是是否否(c)动态重定位可变分区分配算法:例20k28k88k132k182ko.s作业1(8k)(36k)作业3(24k)(24k)作业2(20k)作业4(50k)(74k)64k112k256k(a)初始状态20k202ko.s1324作业5(80k)(54k)122k(c)分配作业5之后(b)移动之后(即浮动)20k28k72ko.s1(8k)3(24k)2(20k)4(50k)(134k)52k122k256k作业580k实现这种重定位,可通过类似于重定位装入程序的软件来达到,但这种方案要在费许多处理机时间,而且限制较大。较好的办法是采用动态重定位技术(在本章中,当一个作业装入与其地址空间不一致的存储空间时,可在每次访问指令或数据时,通过重定位寄存器来自动修改访问存储器的地址)因而,一个作业在主存中移动后,只需要改变重定位寄存器的内容即可。例:图(a)是作业拼接之前的执行情况,这时重定位寄存器RR的值为64k,(b)是拼接后作业3执行情况,作业3被移动到28k大字节开始的分区中。为保证在新的位置上仍能正确执行,只需要将重点定位寄存器RR的值改为28k即可。LDAD1,50012345Load1,5001234550064K0100500RR656366603664作业3的分区88K处理机一侧存贮器一侧(a)拼接前相对地址定位寄存器Load1,50012345Load1,5001234550028K0100500RR287722917228k(b)拼接后的执行情况52k256k主存24k相对地址定位寄存器采取动态重定位后,由于目标程序装入主存后不需修改地址指针及所有与地址有关的项,因而程序可在主存中随意浮动而不影响其正确执行。这样,就可以方便地进行存储器紧缩,较好地解决了碎片问题。(d)拼凑时机(i)出现相邻空白区即拼接;(或某分区被释放后即紧缩)(ii)存贮不足(空白分区不够大)时进行拼接紧缩工作大,开销大,但管理简单紧缩次数少,但管理(算法)较复杂。前面已有框图表示(5)多重分区分配-不拼接而解决零头问题(a)概要将程序分为若干段,按小段申请存区,即将程序分散在不连续存区中运行。程序:程序、数据区等(也可解决共亨信息问题)例:给一个作业分配二个分区o.s作A0区作A1区下界0上界0下界1上界1采用动态重定位技术:利用下界寄存器作为重定位Reg而上界可供检查地址越界用在实存管理技术中,多重分区的多重程序不宜过多,否则会增加管理的复杂性,一般不超过3~4对界地址寄存器。多重分区技术的进一步发展导致了段式虚拟存储管理技术的出现。(6)覆盖(overlay):指一个作业的若干程序段(或数据段)或几个作业的某些部分间共享某主存空间(a)目标:用较小的存区满足较大的存区要求(b)程序的分析:并不是作业的每一部分都是时时要用的mainA20kA0,30kB0,40kB1,30kA2,30kA1,60kA4,40kA3,20k例:B0,40kB1,30kA1,60kA2,30kA3,20kA4,40kmain20k覆盖段040k覆盖段160k覆盖段240kAmain20kA0,30k则总计270k160k内存即可可装入(c)注意:(i)每次仅放入作业的一个部分(ii)覆盖段程序员事先确定(iii)系统自动覆盖-虚存(iv)可与其内存分配方法结合使用(7)交换:(swapping)(a)目标:解决小主存分区大作业的矛盾–––利用辅存(b)概要:将主存中已阻塞的作业信息存入辅存,将辅存中的活动作业调入主存并运行。job1job2job3job1job2job1job2job3job3job1主存辅存上部上部下部job3job2job2覆盖的部分保存好!Job2下部Job1<Job3<Job2(c)注意:(i)覆盖与交换的区别覆盖由用户解决空间不足交换由系统解决空间不足覆盖中被覆盖的那部分,既使未被破坏也不能使用,要重新调用。而交换中在界地址寄存器的保护下次可使用。小结:实存管理小结(i)两大类分区分配类单一连续区固定分区可定分区多重分区可重定位分区多用户解决零头覆盖交换类覆盖交换(ii)空白区管理分裂、合并、零头问题,分配回收算法:FF、NF、BF、WF。§7.3虚拟存贮管理(Virtualstorage)(1)虚拟存贮器的概念(a)在实存管理技术中(除开覆盖),要求整个作业必须装入主存作业尺寸>主存大小作业无法运行“扩充”主存–––虚拟存贮技术(b)虚拟存贮器:关键点:地址空间存贮空间(编程)(运行)逻辑物理虚空间(虚存)实存、实空间交换o.s

程序的访问地址称为虚地址而程序可访问的虚地址范围叫做程序的虚地址空间。

可使用的实地址范围叫实地址空间(即主存)(c)虚空间独立于实空间虚空间>>实空间(也可以虚空间<实空间)系统地址空间–––虚存空间地址结构20位有效地址长度–––0~220(寻址范围),实存64k<虚存220作业可以大于内存,部分作业调入运行,其余放入磁盘。利用辅存存放放不进内存的作业部分。主存+辅存虚拟存(仅与地址结构有关)(2)分页存贮管理:(a)实现原理:地址空间分成大小相同的部分–––页存贮空间分成大小相同的部分–––块(页架)页大小=块大小页号块号状态012238该页是否在内存分配时页对应块,但不要求连续页表(PMT)又称页面映象表由内存一个特殊区域担任重定位(地址变换)包括:页号,块号以及状态movAx(2500)movAX(2500)123页号块号012238页表2页0页页1k分3页0块1块2块3块8块01k2k3k9k8k4k1k2k3k10025002500-1024×2=452作业地址空间1页逻辑地址的表示(p,d)P=INT[A/L];d=AmodL其中A:虚地址L:页大小P:页号d:页内位移例:2452页块012238页表长页表始址8452123实地址虚地址(页)d(偏移)P(页)9k8644…页表地址reg++例:设虚地址为(357101)8每一块为128字节128=27(357101)8=(011101111001000001)21 6 7 4 1 0 1偏移为(101)8,页号为(1674)8块号由页表指定,偏移不变(b)多级页表的地址转换进程的页表表目可达222个。而WindowsNT等使用x86的CPU的32位地址,使用4KB的页面(212),这意味着进程最多可以使用多达220(100多万)个页面。如果每个页表表目占4byte,那么每个进程的页表所占的空间是222byte,占去主存的1‰的空间,显然这样大的页表是不能全放在主存中的。为此对页表本身也采取分页措施。即把页表本身按固定大小分成为一个个页面(页面大小为212=4KB)。每个小页表形成的页面中可以有210=1K个页表表目(每个表目4byte),共有210=1K个小页表。为了对1K个小页表进行管理和索引查找,设置一个页表目录,又称之为顶级页表,该顶级页表包含有1K个表目项,分别指出每个次级小页表所在物理页号和其他有关状态信息。这样,每个进程有一个页目录,它的每个表目映射一个页表。页目录本身大小刚好是一个页面大小,页目录是一级表。而每个小页表本身就是二级页表。以后一律使用页目录和页表的名称。页目录寄存器当前进程页目录

31 11 0页架号

+面目录号 页号 偏移虚拟地址+

31 1211 0页架号

页架号 偏移物理地址31 222112110当前进程的某个次级页表311211 0二级页表地址变换通过二级页表的地址映射访问主存存取数据需要三次访问主存(一次页目录,一次页表,最后是数据所在物理地址),所需时间是原来的三倍。当然对64位的地址,也可组织成三级、四级页表,但性能的影响是不可忽视的。(若页表全部放在主存,则要取一个数据(一条指令)至少要访问二次主存,第一次是访问页表,确定所取数据(或指令)的物理地址,第二次是根据该地址取数(或指令))将作业中最常用的页块号置入高速缓存,提高查表速度(在地址变换机构中加入一个高速、不容易的联想存储器)(c)快表(联想存贮器)访问主存=访页表+访主存存放页表部分内容的快速存贮器称为联想存贮器,联想存贮器中存放的部分页表称为“快表”。联想存贮器一般由8~16个单元组成,它们用来存放正在运行进程的当前最常用的页号和相应的块号,并具有并行查寻能力。查联想表-物理地址(访问一次主存)查页表-物理地址(访问二次主存)有效地址同时进行这个联想存贮器的查表速度可以做到比一般存储器的速度快一个数量级。PBPB输入输出BWPW联想表物理地址页表起址PB页表虚地址(分页)B例:设访问主存时间为200ns,访问联想存贮器为40ns,命中率为90%,则平均存取时间为多少?查页表两次访存:平均为200+200=400ns查块表(200+40)×90%+(200+200)×10%=256ns解:方法1:方法2:(3)请求分页式存储管理(a)目标:实现小内存大作业(b)实现方法:作业运行时,只将当前的一部分装入内存其余的放在辅存,一旦发现访问的页不在主存中,则发出缺页中断,由o.s将其从辅存调入主存,如果内存无空块,则选择一个页淘汰。怎样发现页不在内存?扩充表(以前页表结构只包含页号和块号两个信息,这是进行地址变换机构所必须的,为了判断页面在不在主存,可在原页表上扩充,增加两个数据项、中断位I,辅存的位置)。第一个问题:页号块号中断位辅存1.不在内存0.在内存当进程运行时,在内存中至少有一块为该进程所对应的程序所占用,并正在执行此块内的一条指令。若这条指令不涉及访内地址则罢,如果涉及访内地址,则由分页机构得到页号,并以该页号为索引查页表PT,这时将有两种可能性:一般步骤如下:发生缺页中断请求调入此页,当缺页中断发生时,用户程序被中断,控制转到os的调页程序,由调页程序把所需的页面从磁盘调入内存的某块中,并把页表中该页面登记项中的中断位I由1改为0,填入实际块号,随后继续执行被中断的程序,这一页面是根据请求而装入的,因而称为请求分页存贮管理。此页对应页表中的中断位为0,表示此页已调入主存,可查得块号B,形成B+W的物理地址,从而指令得以执行,继而执行下条指令;

当中断位为1,表示此页不在主存,而是在磁盘上(辅存地址指示)指令执行和缺页中断处理启动要处理的指令该页在主存给出虚地址形成页号有空闲块从外存读入需要的页调整存贮分块表和页表重新启动被中断的指令准备执行下条指令执行完该指令选一页淘汰调整存贮分块表和页表要重新写入该页写入外存YYYNN硬件软件N缺页中断如何处理缺页一缺页中断管理?发现中断、调入所缺页第二个问题:如果内存不足,选一页淘汰,选择哪一页呢?引用位是来指示某页最近被访问过没有?修改位是来指示某页的数据修改过没有?“0”表示没有访问过“1”表示已被访问过引用位修改位0修改位–––写回辅存1未修改过–––不必写回辅存辅存地址引用位中断位改变位主存块号页号页表表目为(c)置换算法–––确定淘汰哪一页的策略系统抖动–––内外存交换频繁使效率下降(导致系统效率急剧下降的主、辅存之间的频繁转换现象)驻留集–––驻留在内存中页面的集合。(i)最佳置换算法:(OPT)“淘汰在将来再不被访问(以后不再要的),或者在最远的将来才被访问的页”然而这样的算法是无法实现的,因为在程序运行中无法对后面要使用的页面作精确的判断,不过可作为衡量各种具体算法的标准。(ii)先进先出算法(FIFO)例:设页面请求次序...2.1.2.存贮块为3时(驻留集为3)3012302302304230423042301230120127017012707 0 1 2030 4 2 3 0321 2+ + + + +++ + ++ + +页面迹踪图问题:驻留集越大,缺页中断率越小吗?(不一定)。一般来说,对于任何一个页的访问顺序(或序列)和任何一种换页算法,如果分给的页架数增加,则缺页(所访问页不在主存)的频率应该减少。但这个结论并不普遍成立,对于某些页面访问序列,FIFO有随着分给的页架数增加,缺页频率也增加的异常现象。页面访

问序列九次缺页三块页架ABCDABEABCDEABCDABEEECDDABCDABBBECCABCDAAABEE++++++++页面访

问序列十次缺页四块页架ABCDABEABCDEABCDDDEAACDEABCCCDEEBCDABBBCDDABC+++++++++AAABCCEAB+(iii)最近最久未用页面算法(最近最少使用)LRU其思想:“若发生缺页中断,则选择最近一段时间内最长时间没有被访问的页淘汰掉,将要使用的页调入主存”。基本理由是认为过去一段时间里不曾被访问过的页,在最近的将来也可能不再会被访问。1232303020323242404030323020212101077213077 0 1 2 0 3 0 4 2 3 0 3 2 1 2+ + + + + + + + + + 缺页次数:10该算法实现起来比较困难,因为要为每一页设置一特定单元来记录自上次访问后到现在的时间量t,并选择t值最大的页淘汰。得到广泛使用的是最近最久未使用算法的近似方法–––最近未使用更换算法(NUR),它比较易于实现,开销也比较少,此更换算法,不但希望淘汰的页是最近未使用的页,而且还希望被挑选的页在主存驻留期间,其页面内的数据未被修改过。为此,要为每页增设两个硬件位、访问位和修改位。(iv)最近未用更换算法(NUR)访问位=0;该页尚未被访问过。=1;该页已经被访问过。修改位=0;该页尚未被修改过。=1;该页已经被修改过。其具体工作过程如下:开始时,所有页的访问位、修改位置为“0”。当访问某页时,将该页访问位置“1”。当某页的数据被修改,则该页的修改位置“1”。当要选一页淘汰时,挑选下面序列中属于低序号情况的页进行淘汰。序号: 1 2 3 4

访问位: 0 0 1 1

修改位: 0 1 0 1在多道程序系统中,主存中所有页架的访问位或修改位可能都会被置成了“1”,这时就难以决定淘汰哪一页。当前大多数系统的解决办法是避免出现这种情况,为此,周期性地(经一定时间间隔)把所有访问位重新清成“0”。当以后再访问页面时重新置“1”,这里一个主要问题是选择适当的清零时间间隔,如果间隔太大,可能所有页架的访问位均成为“1”。如果间隔太小,则访问位为“0”的页架又可能过多。LRU和NUR算法没有异常现象,即驻留集越大,缺页中断率越小。(d)注意:(i)虚存:页面并未全部放入内存,使用户感到“内存”很大-用户不用考虑覆盖-系统“扩充内存”-用户编程在虚空间,运行在物理空间-缺页中断处理属于中级调度-外存、内存、高速缓冲,三级存贮变为一级。(e)评价:虚存大,有效地利用了主存,适合多道程序,方便用户编程。处理页面调度的开销,防止抖动开销较大。(4)分段存贮管理(segrmanent)(a)段地址空间:作业由若干个逻辑分段组成,如由代码分段(cs)数据分段(ds),栈段(ss)附加段(Es)组成一个段可定义为一组逻辑信息,如子程序,数组或工作区,(分段是程序中自然划分的一组逻辑意义完整的信息集合,它是用户在编程时决定的)。因此,每个作业的地址空间是由一些分段构成的,每段都有自己的名字,且都是一段连续的地址空间。如下图,可见整个作业的地址空间是二维的Y:0500……C:0200……D:0300……CallLoadstore01k……Main

(主程序)分段X

(子程序)分段A

(数据)分段B

(工作区)分段地址系统中的地址结构有如下形式:(24位)段号S位移量W0723loadYD12345C段号段长主存始址01k6k15004k2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论