赞
踩
操作系统全家桶:传送门
一、操作系统引述:https://blog.csdn.net/diviner_s/article/details/108829327
二、处理器管理:https://blog.csdn.net/diviner_s/article/details/108940809
三、存储器管理:https://blog.csdn.net/diviner_s/article/details/112245241
四、设备管理:https://blog.csdn.net/diviner_s/article/details/112250905
五、文件管理:https://blog.csdn.net/diviner_s/article/details/112253441
六、用户接口:https://blog.csdn.net/diviner_s/article/details/112255959
一、存储器管理
存储器管理的主要功能
存储器的层次
二、地址转换
程序装入内存
绝对装入:在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生基于绝对地址的目标代码。绝对装入程序按照装入模块中的设定地址,直接将程序和数据装入指定内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。
绝对装入方式只适用于单道程序环境。程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。而通常情况下在程序中釆用的是符号地址,编译或汇编时再转换为绝对地址。
可重定位装入方式:在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其它地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的逻辑地址一次性变为物理地址的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位。
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。
动态运行时装入方式:动态运行时装入,也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到进程执行时才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要重定位寄存器的支持。
动态重定位的特点是可以将作业分配到不连续的存储区中,在进程运行之前可以只装入它的部分代码即可投入运行,然后在进程运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。
三、地址保护
系统内多道并发,内存属于共享状态,为实现存储保护,需要进程执行时所访问的内存属于自己的合理空间,这就要实现内存地址保护,也就是进行地址越界检查。主要有两种方式:
对于静态重定位方式:
在处理器中设置“下界寄存器”和“上界寄存器”。当一个已经装入主存储器的进程得到处理器运行时,进程调度计算得到该进程的上界地址(起始地址)和下界地址(最大地址),分别送入上界寄存器和下界寄存器中。处理器执行该进程的指令时,将处理器的物理地址分别与上界寄存器和下界寄存器进行比较,确定是否越界,越界则为地址越界,出错。如果不越界,则访问相应内存单元。
对于动态重定位方式:
在处理器设置设置“基址寄存器”和“限长寄存器”。当一个已经装入主存储器的进程得到处理器运行时,进程调度计算得到该进程的长度和起始地址,分别送入限长寄存器(也叫界限寄存器)和基址寄存器(也叫重定位寄存器)中。处理器执行该进程的指令时,首先将逻辑地址与限长寄存器的值作比较,确定是否越界,越界则为地址越界,出错。如果不越界,再将逻辑地址与基址寄存器运算得到实际的物理地址,然后通过地址总线找到对应的内存单元读取指令或数据。
四、覆盖与对换
覆盖技术:主要用在早期操作系统中(内存 <64KB),可用存储空间受限,某些大作业不能一次全部装入内存,产生了大作业与小内存的矛盾。这时把一个程序划分为一系列功能相对独立的程序段,让执行时不要求同时装入内存的程序段组成一组(称为覆盖段),共享主存的同一个区域,这种内存扩充技术就是覆盖
对换技术:是指将暂时不用的某个进程及数据(首先是处于阻塞状态优先级最低的)部分(或全部)从内存移到到外存(备份区或对换区)中去,让出内存空间,同时将某个需要的进程调入到内存中,让其运行。交换到外存的进程需要时可以被再次交换回(选择换出时间最久的)内存中继续执行。
对换的类型:1)整体对换:进程对换,使用中级调度。
2)部分对换:页面对换/分段对换,使用虚存存储。
对换空间的管理:具有对换功能的OS中,通常把外存分为文件区和对换区。前者用于存放文件,后者存放从内存换出的进程。对换区比文件区侧重于对换速度。因此对换区一般采用连续分配。
进程的换出换入:
1)选择换出进程:优先级,进程状态
2)选择换入进程:优先级,进程状态,换出时间等
覆盖与对换技术的区别:覆盖与对换技术是在多道环境下扩充内存的两种方法。覆盖与对换可以解决在小的内存空间运行大作业的问题,是“扩充”内存容量和提高内存利用率的有效措施。覆盖技术主要用在早期的OS中,对换技术则用在现代OS中。主要区别为:
1)覆盖可减少一个进程运行所需的空间。对换可让整个进程暂存于外存中,让出内存空间。
2)覆盖是由程序员实现的,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。对换技术不要求程序员给出程序段之间的覆盖结构。
3)覆盖技术主要在同一个作业或进程中进行。对换主要在作业或进程之间进行。
在存储管理中涉及到两个问题:
1、是否要把作业全部(一次性)装入内存,分为两种:
2、装入内存时是否要放在内存连续地址空间,分为两种:
采用全部装入和连续分配,进程执行时速度快、效率高,采用部分装入和非连续分配都是为了进一步提高内存的利用率,使有限的内存装入更多更大的作业。
一、单一连续分区存储管理的基本原理
是一种最简单的存储管理方式,在早期的单道批处理系统中使用这种管理方案。
采用这种管理方案时,内存被分成两个区域,一个是系统区域,仅供操作系统使用,可以驻留在内存的低地址部分,也可以驻留在高地址部分(通常设置在内存的低端);另一个是用户区,它是除系统区以外的全部内存区域,这部分区域是提供给用户使用的区域,任何时刻主存储器中最多只有一个作业,作业放在从用户区起始地址开始的连续地址区域。所以,单用户连续存储管理只适用于单用户的情况。
二、单一连续分区存储管理的地址变换与地址保护
单一连续分区使用静态重定位,不需要专门硬件进行地址变换,但是会有硬件保护机构,以确保不干扰系统区中的信息,方法有:
1)上界寄存器和下界寄存器:上界寄存器和下界寄存器中存放用户区的起始地址和终止地址,运行时检查指令或数据的地址,若不在上界寄存器和下界寄存器的范围内,则发生越界中断。
2)内核态(系统态/管态)与用户态(目态)工作:如果当前在用户态下工作,内存访问时对硬件进行校验,以保证系统区不被访问,如果系统区被访问则产生中断,控制权交给操作系统。在内核态下工作,能访问整个存储空间。用户态是用户进程的工作方式,而系统态是系统进程的工作方式。
3)不做特别管理:如MS-DOS等单用户单任务微机操作系统。
三、单一连续分区存储管理的管理特点
管理简单。容易记住存储器的状态,不是全部空闲就是全部已分配;当作业被调度时就获得全部用户空间;全部主存空间都分配给一个作业使用;作业运行完后,全部主存空间又恢复成空闲(以上所指的全部主存空间是用户区空间)。
资源利用率低。存储器没有得到充分利用,作业的大小与存储器的可用空间的大小不一定一致,作业的全部信息都装入主存,占用主存空间。处理机的利用率较低,因为是单道处理,一旦一个作业提出I/O请求,则CPU空闲。
不支持覆盖技术、对换技术、虚拟存储等技术,作业地址空间大于内存可用空间就无法运行。
一、固定分区存储管理的基本原理
固定分区分配是是将内存用户空间划分为若干个固定大小(不是相等大小)的区域,在每个分区中只装入一道作业,放在该分区起始地址开始的连续地址区间内。
用户空间划分为几个分区,便允许有几道作业并发运行。当有一空闲分区时,便可以从外存的后备作业队列中选择一个适当大小的作业装入该分区,当该作业结束时,又可再从后备作业队列中找出另一作业调入该分区。
实际上每一个分区就相当于一个单用户连续分配区间。
固定分区分配很少用于现在的操作系统中,但在某些用于控制多个相同对象的控制系统中仍发挥着一定的作用。
二、固定分区的分区划分
三、固定分区中主存空间的分配与回收
分区分配表:为便于内存分配,通常将分区按大小排队,并为之建立一张分区分配表,其中包括每个分区的起始地址、大小及状态(是否已分配)。
主存空间分配:当有用户作业要装入内存时,便检索该表,以找到合适的分区给予分配,并将其状态置为“已分配”;未找到合适分区则拒绝为该用户作业分配内存。
四、固定分区中的地址转换与存储保护
固定分区存储管理实际中可采用可重定位装入(静态重定位)方式,也可采用运行时动态装入(动态重定位)方式
1、静态重定位方式:装入内存后所有地址转换为物理地址,通过上界寄存器和下界寄存器进行地址保护。
2、动态重定位方式:装入内存后地址仍然是逻辑地址,通过限长寄存器和基址寄存器进行地址转换和地址保护。在执行的时候,首先将逻辑地址与限长寄存器的值作比较,确定是否越界,越界则出错。不越界时再与基址寄存器的值运算转换为物理地址,然后通过地址总线找到对应的内存单元读取指令或数据。
五、固定分区中的管理特点
作业长度不能大于分区的大小,一个分区只能装入一个作业,一个作业只能装入一个分区。
无外部碎片,有内部碎片(一个分区会有剩余空间),作业大小比分区大小越小时,内部碎片越大,空间比较浪费。
分区的数量限制了作业的个数。
一、可变分区存储管理的基本原理
可变分区分配是一种动态划分内存的方法。这种方法不预先将内存划分分区,而是在作业装入内存时,根据作业大小动态进行内存分配,并使分配的内存空间大小正好适合进程的需要。在不断的分配回收过程中,系统中分区的大小和数目是不断变化的。
动态分区在开始分配时是比较好的,但随着时间的推移,内存中可能会产生越来越多的小的空闲内存块,内存利用率下降。这些小的空闲内存块称为外部碎片,与固定分区中的内部碎片正好相对。
克服外部碎片可以通过紧凑技术来解决,就是系统对进程进行移动和整理。这需要动态重定位的支持,比较费时。紧凑的过程实际上类似于Windows系统中的磁盘整理,只不过后者是对外存空间的紧凑。
二、可变分区存储管理的主存空间分配与回收
1)已分分区表:登记系统中的已分配分区(分区号、分区起始地址、分区大小及状态)(不是必须的,内存占用情况可以记录在进程的PCB中,如起始地址和空间大小)
2)空闲分区表:用来登记系统中的空闲分区(分区号、分区起始地址、分区大小及状态),必须的数据结构。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。