操作系统分页为什么不用进行地址检查
时间: 2023-05-31 17:05:38 浏览: 64
操作系统中的分页技术将物理内存划分为固定大小的页框,每个页框都被映射到逻辑地址空间中的一个页。当程序访问逻辑地址时,操作系统会将其转化为物理地址,以便访问真正的数据。在这个过程中,操作系统会检查逻辑地址是否有效,即是否在当前进程的地址空间中。如果逻辑地址越界或者无效,操作系统会触发缺页异常并将其交给内核处理。
因此,分页技术本身已经包含了地址检查的过程,无需再进行额外的地址检查。操作系统通过页表维护逻辑地址和物理地址之间的映射关系,并且在页表中记录每个页的属性信息,包括是否存在、是否可读写等。当程序访问一个逻辑地址时,操作系统会根据页表查询对应的物理地址和相应的属性信息,然后进行访问操作。如果逻辑地址无效或者对应的页不存在,操作系统会触发缺页异常并执行相应的异常处理程序。因此,分页技术可以有效地避免地址越界和非法访问等问题。
相关问题
为什么操作系统中分段要进行地址检查,分页不需要
操作系统中分段要进行地址检查的原因是,分段机制将地址空间分为不同的段,每个段的大小和位置都可以不同,因此需要检查每个地址是否属于合法的段,以防止非法访问。如果不进行地址检查,可能会导致程序崩溃或系统崩溃。
而分页机制将地址空间分为大小相等的页,每个页的大小都是固定的,因此不需要进行地址检查。如果程序访问了不存在的页或者非法的页,硬件会自动触发一个“缺页中断”,操作系统会将缺失的页装入内存并重新执行程序。因此,分页机制可以提高系统的性能和可靠性。
8.操作系统采用分页式存储管理方式,其中每个页面大小为64Byte,操作系统的物理地址和逻辑地址的寻址空间为64KB,由16位二进制位组成。采用两级页表的分页管理方式,包括一级页表和二级页表。 (1)请问上述分配方式下一级页表和二级页表的逻辑地址的bit?一级页表和二级页表的大小以及页表占用的存储空间大小? (2)请画出一级页表和二级页表逻辑地址结构图(简单解释一下一级页表和二级页表项里面有啥) (3)为加快操作系统的对内存的访问速度,引入TLB机制,请问TLB是如何加快操作系统对内存的访问速度的?
(1) 由于每个页面大小为64Byte,因此每个页面的偏移量需要6位二进制位来表示。操作系统的物理地址和逻辑地址寻址空间为64KB,即2^16Byte,因此需要16位二进制位来表示。因为采用两级页表的分页管理方式,所以可以将16位逻辑地址分为两部分,一部分用于访问一级页表,另一部分用于访问二级页表。因此,一级页表需要10位二进制位来表示,而二级页表需要6位二进制位来表示。每个页表项需要记录页面的物理地址,因此每个页表项需要占用6位二进制位。因此,一级页表和二级页表的大小均为2^10个和2^6个,页表占用的存储空间大小为2^10*6bit=60Byte和2^6*6bit=24Byte。
(2) 一级页表和二级页表逻辑地址结构图如下:
一级页表逻辑地址结构图:
|--------10位--------|--------6位--------|
| 一级页表索引 | 页内偏移量 |
二级页表逻辑地址结构图:
|--------10位--------|--------6位--------|
| 一级页表索引 | 二级页表索引 | 页内偏移量 |
一级页表项包含了指向二级页表的指针,而二级页表项包含了页面的物理地址。
(3) TLB(Translation Lookaside Buffer)是一种高速缓存,用于存储最近访问过的页表项,以加快操作系统对内存的访问速度。当操作系统需要访问某个页面时,首先会检查TLB中是否已经存在该页面的页表项。如果存在,操作系统就可以直接从TLB中获取该页表项,而不需要访问内存中的页表。这样可以大大减少访问内存的次数,从而提高了操作系统对内存的访问速度。如果TLB中不存在该页表项,操作系统就需要访问内存中的页表来获取页面的物理地址。在访问完毕后,操作系统会将该页表项加载到TLB中,以便下次访问时直接从TLB中获取。