内存管理(持续更新中。。。)

来源:互联网 发布:eai 数据黑盒 编辑:程序博客网 时间:2024/06/06 09:44

内存管理:

单道程序设计系统中,内存被划分成两部分:一部分供操作系统使用(驻留监控程序、内核),一部分供当前正在执行的程序使用。多道程序设计系统中,必须在内存中进一步细分出用户部分,以满足多格进程的要求。细分的任务由操作系统动态完成,这称为内存管理。

固定分区:系统生成阶段,内存被分成许多静态分区。进程装到大于等于自身大小的分区中。

动态分区:分区自动创建。每个进程可以装入与自身大小正好相等的分区中。

分页:内存被分成许多大小相等且很小的页框,每个进程被划分成同样大小的页,较小的进程需要较少的页。较大的需要较多的页。

分段:每个进程被划分成许多段,要装入一个进程,需要把进程包含的所有段都装入到内存内不一定连续的某些动态分区中。段的大小是程序逻辑确定,且大小不是固定。

一、内零头和外零头:

操作系统在分配内存时,有时候会产生一些空闲但是无法被正常使用的内存区域,这些就是内存碎片,或者称为内存零头,这些内存零头一共分为两类:内零头(内部碎片)和外零头(外部碎片)。

1.内零头:是指进程在向操作系统请求内存分配时,系统满足了进程所需要的内存需求后,还额外还多分了一些内存给该进程,也就是说额外多出来的 这部分内存归该进程所有,其他进程是无法访问的。固定分区和分页中会存在内部碎片,分页中内部碎片是少量的。

2.外零头:是指内存中存在着一些空闲的内存区域,这些内存区域虽然不归任何进程所有,但是因为内存区域太小,无法满足其他进程所申请的内存大小而形成的内存零头。动态分区和分段存在外部碎片。

二、覆盖技术和交换技术:

以下参考水晶依恋的博客部分内容:http://blog.csdn.net/qq_28602957/article/details/53580302

    覆盖与对换技术是在多道程序环境下用来扩充内存的两种方法。覆盖与对换可以解决在小的内存空间运行大作业的问题,是“扩充”内存容量提高内存利用率的有效措施。覆盖技术主要用在早期的 OS中,对换技术则用在现代OS 中。

(1)覆盖技术:把一个程序划分为一系列功能相对独立的程序段,让执行时不要求同时装入内存的程序段组成一组(称为覆盖段) ,共享主存的同一个区域,这种内存扩充技术就是覆盖。

    覆盖的基本思想是:由于程序在运行时并非任何时候都需要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分成一个固定区一个或多个覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。首先将那些即将要用的段放在覆盖区,其它段放在辅存中。在需要调用前用户通过特定系统调用将其调入覆盖区,替换覆盖区中原有的段。
    采用覆盖技术是把解决空间不足的问题交给了用户。批处理系统提供帮助用户将覆盖段调入主存的系统调用,但用户自己必须说明覆盖段,并安排调入覆盖段,由此可见覆盖技术用户参与过多,会给用户带来麻烦

单一连续 存储管理用户可采用覆盖技术。

(2)对换技术:把处于等待状态(或在CPU调度原则下被剥夺运行权力)的作业从主存移到辅存,这一过程叫做换出;把确定占用CPU的作业从辅存移到主存,这一过程称为换入。交换技术也是“扩充”内存容量和提高内存利用率的有效措施。交换到外存的进程需要时可以被再次交换回(选择换出时间最久的)内存中继续执行。

对换的类型:
整体对换:
进程对换,解决内存紧张问题。 (中级调度)
部分对换:页面对换/分段对换,提供虚存支持。

对换空间的管理:
具有对换功能的 OS 中,通常把外存分为文件区和对换区。前者用于存放文件,后者存放从内存换出的进程。对换区比文件区侧重于对换速度。因此对换区一般采用连续分配。

进程的换出与换入:
选择换出进程:优先级,进程状态。
选择换入进程:优先级,进程状态,换出时间等。

(3)覆盖与对换技术的区别:

1).覆盖可减少一个进程运行所需的空间。对换可让整个进程暂存于外存中,让出内存空间。
2).覆盖是由程序员实现的,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。对换技术不要求程序员给出程序段之间的覆盖结构。
3).覆盖技术主要在同一个作业或进程中进行。对换主要在作业或进程之间进行。

三、存储保护

存储保护,是指给外置的存储设备加个保护程序,写不进去数据,也删不掉数据。当多个用户共享主存时,为使系统能正常工作,应防止由于一个用户程序出错而破坏其它用户的程序和系统软件,还要防止一个用户程序不合法的访问不是分给它的主存区域。为此,系统提供存储保护。 
通常采用的方法是:存储区域保护和访问方式保护。

阅读全文
0 0
原创粉丝点击