操作系统学习记录(四)
3.1.1 内存的基本知识
1.内存是用于存放数据的硬件;
2.外存数据到内存,再到CPU运行;
3.按字节编址的内存一个基本单元是八位二进制一个字节,按字编址的内存一个基本单位是十六位二进制两个字节,比如4G=2的32次方,代表这个内存有32位。
4.逻辑地址和物理地址
物理地址是内存中标识的地址,逻辑地址是程序在编译链接后的得到地址,编译链接后的装入过程表现了逻辑地址到物理地址的映射。
5.装入方式有三种:动态装入、静态装入、绝对装入。
动态装入:在程序被CPU执行前,利用程序的逻辑地址与重定向位置相加得到绝对地址;
静态装入:在装入时,依据程序当前在内存中的绝对位置修改程序中的逻辑地址;
绝对装入:程序在进行编译链接时,就分配相应的绝对地址,只适用于单道程序。(编译器完成)
3.1.2内存管理概念
1.内存分配回收、内存虚拟扩充、地址转换、内存保护是内存管理的四个方面。
2.地址转换就是上述的三种装入方式将逻辑地址转换为物理地址。
3.内存保护是指进程不能越界访问其他资源。内存保护方式有两种,第一种是使用上下限寄存器,位于上下限内的地址分配给某进程的地址,其他进程不能访问,当然该进程也只能访问上下限内的地址。第二种是使用重定向寄存器和界地址寄存器联合判断申请访问的地址是不是合法的地址位置。
3.1.3 覆盖与交换
1.覆盖:对于某一个程序,在内存中指定一个固定区和若干个覆盖区。覆盖区的程序段会被反复调入调出内存,也就是说程序中不会同时并行执行的代码段可以互相被调出内存到外存为对方等待。
2.覆盖技术需要程序员在编写程序时就标注各代码段的覆盖策略。
3.交换:当内存资源紧张时,将部分资源调出到外存的磁盘交换区等待。一般调出低优先级的进程和本身就阻塞的进程。
4.交换是指不同作业或进程之间的调度,覆盖是指同一程序不同代码段的调度。
3.1.4 连续分配管理方式
1.为进程分配一个连续的存储空间;
2.单一内存分配是指将整个内存资源分配给一个进程,缺点是内部碎片(内存利用率低);
3.固定内存分配是指在内存中划分多个内存区,可以相等也可以不相等。每一个内存区只装入一道进程。
4.动态内存分配是指按进程需求在内存中划分使用区间。各个进程之间会留下内存碎片。
3.1.6 基本分页存储概念
1.属于非连续内存分配的一种。将进程拆分为多个代码块存放在多个不连续的内存分区中。这种内存分区或者内存块也叫页框,这种代码块也叫页,即不同的页存放在内存中不同的页框中。
2.如何找到非连续存储在内存中的页:借助动态重定向装入方式,通过要查找的逻辑位置和页的大小得到页内偏移量和页号,其次检查页号的合法性,然后通过页号在页表中查找对应的页框,最后根据页框的起始地址和页内偏移量得到这个逻辑位置在内存中的物理位置。页表表示哪个页对应哪个页框,一个进程维护一个页表。(基本地址变换)
3.1.7 基本地址变换机构
1.页表寄存器存放了页表长度和页表起始位置,页表是连续存储在内存中的。
2.在3.1.6中简述了基本地址变换的方式,即逻辑地址到物理地址转换。
3.1.8 具有快表的地址变换机构
1.快表是一张放在高速缓存器而非内存中的页表副本。
2.在逻辑地址转换物理地址时,如上述3.1.6(2)的基本地址转换方式找到了该逻辑地址所在页对应的物理地址所在的页框之后,将这个映射关系存放在快表中,下次访问时就直接查找快表,不必再次访存,因为页表在内存中,而快表在高速缓存器中。
3.快表的意义是缩短重复访问的时间,应用场景比如C语言循环,会重复访问某些物理地址。