- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
operating_system_2
近代计算机系统资源为一同执行的多个用户程序所共享。就主存来说,它同时存有多个用户的程序和系统软件。为使系统正常工作,必须防止由于一个用户程序出错而破坏同时存在主存内的系统软件或其他用户的程序,还须防止一个用户程序不合法地访问并非分配给它的主存区域。因此,存储保护是多道程序和多处理机系统必不可少的部分。 主存保护是存储保护的重要环节。主存保护一般有存储区域保护和访问方式保护。存储区域保护可采用界限寄存器方式,由系统软件经特权指令给定上、下界寄存器内容,从而划定每个用户程序的区域,禁止越界访问。 一、作业、作业步、进程的关系 作业:是用户在一次上机活动中,要求计算机系统所做的一系列工作的集合。(也称作任务) 作业步:一个作业一般可以分成几个必须顺序处理的工作单位(或步骤)。如:一个用高级语言写的用户作业,它的运行要分成三步:先编译,再连接,最后运行。 进程:一个作业步又可分为若干个作业步任务 ––– 进程,而一个进程又可能要执行多个线程,如下图: 用户 作业 作业步 作业步 进程 进程 线程 线程 ... ... ... 由用户创建 由用户指定 由系统创建 作业、作业步进程和线程的关系 线程是进程内的一个相对独立的可调度的执行单元。 二、重定位的概念 1. 引子 CPU使用的16位寄存器,表示最大数为 65535即FFFFH,CPU采用内存分段方式,解决寻址大于64k空间内存的问题:一段为64k内存,用一个16位的地址值就可指向其中的任一字节,用另一个双字节(16位)的值来标示某一段的起点。 例:每段16个字节,段值为2,段中的地址数为7,则16×2+7=39字节绝对地址为39,相对地址为7。 (1) 绝对地址 ––– 存储控制部件能够识别的主存单元编号(或字节地址),也就是主存单元的实际地址。 (2) 相对地址 ––– 相对于某个基准量(通常用零作基准量) 编址时所使用的地址,常用于程序的编写和编译过程中。 因为多道程序系统中,主存将存放多道作业,而程序员在编写程序时,不可能了解自己的程序将放在主存中何处运行,不可能用绝对地址来编写程序。 (3) 逻辑地址空间 ––– 指一个被汇编、编译或连接装配后的目标程序所限定的地址的集合。程序中相对地址的全体称为逻辑地址空间。是相对于实际的主存地址空间而言的。 (4) 物理地址空间 –––实际的主存地址空间。 在多道程序环境下,用户不可能决定自己使用的主存区,因而在编制程序时常按(以零作为基准地址)相对地址来编写。这样,当程序放入主存时,如果不把程序中与地址有关的“项”变成新的实际地址,而是原封不动的装入,那么程序就不能正确执行(除非有动态地址变换机构)。 2. 重定位:把程序中相对地址变换为绝对地址 举例: 0 LOAD 1, 62 ADD 1, 84 STORE 1, 106 A 8 B 10 相对 LOAD 1, 6ADD 1, 8STORE 1, 10A B 100 102 104 106 108 ? 程序装入 主存部分 矛盾 地址单元 不变换会出错 110 (1) 静态重定位 它在程序装入主存时,由连接装入程序进行重定位,程序开始运行前,程序中各与地址有关的项均已重定位完(即已将程序中的相对地址转换成绝对地址了)。 0 LOAD 1, 62 ADD 1, 84 STORE 1, 106 A 8 B 10 相对 LOAD 1, 106ADD 1, 108STORE 1, 110A B 100 102 104 106 108 ? 程序装入 主存部分 不矛盾 地址单元 110 (2) 动态重定位 重定位不是在程序装入过程中进行,在处理机每次访问主存时,由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。 本节只介绍静态重定位,关于动态重定位技术将在第七章介绍。当操作系统为某目标程序分配了 一个以B为起始地址的连续主存区后,静态重定位过程就是把每个与地址有关的项都加上“ B-R” (设R是该程序编址时的基准地址,通常R=0)即可。 如上例中 B=100,R=0 小的源程序,编译后立即执行,不需要装入程序来做任何工作。实际上许多用户的程序往往要调用许多过程和子程序。过程和子程序首先要同主程序装配起来,形成一个完整的大程序才能运行。过程和子程序很可能不是同一次编译的。
文档评论(0)