页表

页表机制

余生长醉 提交于 2020-01-04 14:32:44
分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。页表可看做简单的220个物理地址数组。线性到物理地址的映射功能可以简单地看做进行数组查找。线性地址的高20位构成这个数组的索引值,用于选择对应页面的物理(基)地址。线性地址的低12位给出了页面中的偏移量,加上页面的基地址最终形成对应的物理地址。由于页面基地址对齐在4K边界上,因此页面基地址的低12位肯定是0。这意味着高20位的页面基地址和12位偏移量连接组合在一起就能得到对应的物理地址。 页表中每个页表项的大小为32位。由于只需要其中的20位来存放页面的物理基地址,因此剩下的12位可用于存放诸如页面是否存在等的属性信息。如果线性地址索引的页表项被标注为存在的,则表示该项有效,我们可以从中取得页面的物理地址。如果页表项中信息表明(说明、指明)页不存在,那么当访问对应物理页面时就会产生一个异常。 1.两级页表结构 页表含有2^20(1M)个表项,而每项占用4B。如果作为一个表来存放的话,它们最多将占用4MB的内存。因此为了减少内存占用量,80x86使用了两级表。由此,高20位线性地址到物理地址的转换也被分成两步来进行,每步使用(转换)其中的10bit。 第一级表称为页目录(page directory)。它被存放在1页4K页面中,具有2^10(1K)个4B长度的表项

计算机系统大作业

孤者浪人 提交于 2020-01-04 14:03:39
#计算机系统大作业 题 目 程序人生-Hello’s P2P 专 业 软件工程 学   号 1183710227 班   级 1837102 学 生 孙兴博 指 导 教 师 史先俊 计算机科学与技术学院 2019年12月 摘 要 摘要是论文内容的高度概括,应具有独立性和自含性,即不阅读论文的全文,就能获得必要的信息。摘要应包括本论文的目的、主要内容、方法、成果及其理论与实际意义。摘要中不宜使用公式、结构式、图表和非公知公用的符号与术语,不标注引用文献编号,同时避免将摘要写成目录式的内容介绍。 论文内容主要是在预处理,编译,汇编,链接,进程管理,存储管理,和io管理等方面,对hello例程进行全面的系统级解释。 文章首先对源文件hello.c文件变为hello可执行文件的中的过程,以及产生的中间文件,来描述关于预处理,编译,汇编和链接的内容。再利用hello可执行文件执行过程中进程切换,内存分配情况和输入输出情况对有关于进程管理,存储时地址的管理,地址的映射和转换,Linux下的io管理方法接口等进行描述。 本文通过hello.c例程,对程序从源代码到可执行文件,再到被载入内存执行的过程,使用计算机系统的相关知识概念,进行解释。 关键词:计算机系统、编译,汇编,链接,进程,内存,shell,信号,cache; (摘要0分,缺失-1分,根据内容精彩称都酌情加分0-1分) 目 录 第1章

HITICS-2019大作业报告

女生的网名这么多〃 提交于 2019-12-30 01:24:03
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机类 *指 导 教 师 吴锐   * 计算机科学与技术学院 2019年12月 摘 要 当hello world这个句子显示在电脑上时,标志着世界上第一个程序的诞生。然而很多人都认为让hello world显示在屏幕上是一件很简单的事。殊不知,这个程序的所有执行周期却经历了很多阶段,当然,计算机科学家们在这个程序执行之前也做了大量的铺垫。所以,当我们研究hello world程序的整个生命周期时,我们发现这个程序是不平凡的,我们也理解了计算机科学家们的执着与智慧。从开始对这个程序的编码,再到预处理,编译的高级语言阶段。再到汇编成机器语言,转换成机器码。再进行链接生成可执行文件,再执行。在此过程中,CPU,操作系统,内存,磁盘等计算机的重要组成部分都有条不紊的相互协调工作,其中又产生了进程的创建与回收、异常处理、内存管理等后台。这些后台过程都默默地支持着程序的执行。本篇论文来告诉你hello world被打印在电脑屏幕里所要经历的所有过程。 **关键词:**程序 编码 执行 进程管理 储存管理 目 录 第1章 概述 - 4 - 1.1 Hello简介 - 4 - 1.2 环境与工具 - 4 - 1.3 中间结果 - 4 - 1.4 本章小结 - 4 - 第2章 预处理 - 5 - 2.1 预处理的概念与作用 -

操作系统 庞丽萍 第七章

ぐ巨炮叔叔 提交于 2019-12-28 21:23:14
1. 存储管理的功能与目的是什么? 主要包括以下四个方面:(1)映射逻辑地址到物理主存地址;(2)在多用户之间分配物理主存;(3)对各个用户区的信息提供保护措施;(4)扩充逻辑主存区。 2.物理地址 VS 逻辑地址 把内存分成若干个大小相等的单元,每个单元给个编号,就是物理地址,又称为绝对地址或者实地址; 逻辑地址是用户编程序时所用的地址,又称为程序地址或者虚地址。 为了支持多道程序运行,方便用户使用;使得多用户程序共享主存, 必须要解决主存区域如何分配、各个区域内信息如何保护等问题。如果直接以物理地址提交给用户使用,这对用户来说将是十分困难的事情,因此必须要由操作系统实现逻辑地址到物理地址的转换。 3.地址变换可以由软件实现,但是软件实现会花费较多的CPU时间。 4.所谓存储保护,就是指计算机在多用户使用或者多道程序运行的情况下,为了互不影响,必须由硬件(软件配合)保证每道程序只能在给定的存储区域内活动。 分区分配方法中,主要采用上下界保护。 5. 放置策略中: 最佳适应算法 VS 首次匹配算法 最佳适应算法:将输入作业放入到主存中与他所需要大小最接近的空闲区中,这样剩下的未用空间最小。 此时,空闲区队列是按空闲区大小递增的顺序链接在一起的。 起主要缺点是:空闲区一般不可能正好和要求的大小相等,因此将其分割成两部分后,往往会使得剩下的空闲区非常小,以至于无法使用

操作系统 - 分段机制 & 分页机制

北城余情 提交于 2019-12-27 12:08:44
文章目录 分段机制 简介 段的定义 段描述符表 段选择符 段描述符 代码和数据段描述符类型 系统描述符类型 分页机制 简介 页表结构 页表项格式 区别 分段机制 简介 80X86 使用了一种称为 段 (Segment)的寻址技术。这种寻址技术把内存空间分成一个或多个称为段的线性区域,从而对内存中一个数据对象的寻址就需要使用一个段的起始地址(即段地址)和一个段内偏移地址两部分构成。 段地址部分使用 16 位的 段选择符 指定,其中 14 位可以选择 2 14 2^{14} 2 1 4 次方即 64K 个段。 段内偏移地址部分使用 32 位的值来指定,因此段内地址可以是 0 到 4G。即一个段的最大长度可达 4G。 程序中由 16 位的段和 32 位的偏移构成的 48 位地址称为一个 逻辑地址 (虚拟地址)。 分段提供了一种机制,用于把处理器可寻址的 线性地址空间 划分成一些较小的称为段的受保护地址空间区域。 段可以用来存放程序的代码、数据和堆栈,或者用来存放系统数据结构(例如 TSS或 LDT)。 如果处理器中有多个程序在运行,那么每个程序可分配各自的一套段。此时处理器就可以加强这些段之间的界限,并且确保一个程序不会通过访问另一个程序的段而干扰程序的执行。 段的定义 每个段由三个参数定义: 段基地址(Base address):指定段在线性地址空间中的开始地址。基地址是 线性地址

操作系统知识系列之基础篇

為{幸葍}努か 提交于 2019-12-26 08:34:34
一、操作系统概述 特性 1. 并发: 同一时间间隔内支持执行多个任务, 对于一个核则是交替执行; 2. 共享: 硬件资源或数据资源支持多个进程共享; 3. 异步: 并发情况下, 一个程序会陆陆续续被执行,完成时间不可预知; 4. 虚拟: 物理实体转化为逻辑实体,如虚拟内存。 基本功能 CPU管理:对处理器的管理和调度最终归结为对进程和线程的管理和调度,包括进程控制和管理,线程控制和管理,确定处理器调度策略,设计处理器调度算法,做好处理器分配和回收。 存储管理:存储管理的主要任务是管理内存资源,为多道程序运行提供有力支撑,提高存储空间利用率,具体来说有内存分配与回收,地址转换与存储保护,内存共享与存储扩充等。 设备管理:设备管理的除妖任务是管理各种外部设备,完成用户提出的I/O请求;加快数据传输速度,发挥设备的并行性,提高设备的利用率;提供设备驱动程序和中断处理请求。 文件管理:文件库案例的主要任务有提供文件逻辑组织方法,提供文件物理组织方法,提供文件存取和使用方法,实现文件目录管理,实现文件共享和安全性控制,实现文件存储空间管理等。 体系结构 大内核:将操作系统作为一个整体放在内核当中。 微内核:将操作系统的功能进行详细划分,只有微内核在内核态中存在,其他的在用户态。由于存在用户态和内核态的切换所以会影响系统整体性能。 补充 用户栈: 进程在用户空间时创建的栈

分段和分页的区别

南笙酒味 提交于 2019-12-18 11:35:02
连续分配方式会形成许多碎片,从而采用离散分配方式。采用页为分配的基本单位,可以避免产碎片,只在最后一页可能产生内碎片。若采用段为基本单位,则称之为分段存储管理方式,段可通俗理解为大的页面,段内采用连续分配,段与段之间采用离散分配。 基本分页存储管理方式 页面 : 分页存储管理是将一个进程的逻辑地址空间分成若干大小相等的片,称之为页。并给各个页加以编号,从0开始。相应的,内存也分成与页面等大的若干存储块,称为物理块戍页框,同样为它们加以编号。在为进程分配内存时,以块为单位将进程的若干页分别装入到多个可以不相邻的物理块中。由于进程的最后一页通常装不满而形成不可利用的碎片,称之为“页内碎片“。页面大小一般为2的幂。 页面地址结构 : 分页地址由项号,偏移量(页内地址)组成。 页表:系统要为每一个进程都建立一个页表。在进程地址空间内的所有页,依此在页表中有一项表项,记录了相应页在内存中的对应的物理块号。页表是实现从页号到物理块号的地址映射。 地址变换机构 : 该机构是实现从逻辑地址到物理地址的转换,页内地址和物理地址是一一对应的,地址变换机构的任务是将逻辑地址中的页号,转换为内存中的物理块号。借助页表实现。 基本的地址变换机构 : 如果页号大于或等于页表长度,表示本次所访问的地址超过进程的地止空间,若未越界,则将页表地止与页号和页表项长度的乘积相加(即,基地止*偏移量

内存管理:页式虚拟内存管理

笑着哭i 提交于 2019-12-17 23:16:26
页式存储管理——虚拟内存——缺页中断,页面替换算法 开章明意 : 创建一个进程(创建进程是在磁盘中),进程以字节为单位编号,然后再进程分为许多页(每页4KB),内存中有对应的页框(设定同页)。通过页表(记录页和页框的对应关系),将最需要的页调入内存,其他页留在磁盘中。根据CPU的需要动态的更新页表,并调入调出页,实现对内存的充分利用。 本质就是:内存局部读入进程,其余的存储在磁盘中 内存不够用的问题—— 现阶段通常使用8G内存,但一个大型游戏就要10G+内存,如何解决? 虚拟内存 :给每个进程分配一个独立的地址空间(本质在磁盘上),每个进程独立的地址空间就叫虚拟内存。 虚拟内存中的页是连续的,但可以对应到内存中不连续的页框,这样就实现了对内存的充分利用。(不要求内存提供连续的存储空间) 当进程建立时, 数据储存于磁盘内的虚拟内存空间,也不需要为该进程去配置主内存空间,只有当该进程的页被调用的时候才会被加载到实际内存中。 操作系统为了管理内存,给每个进程都分配独立的地址空间,对32位的系统而言,这个空间的大小是4GB。这4GB并不是实际的物理内存,实际上并不存在,因此有虚拟内存这一名称。 建立映射关系: 页(page),页框(frame),页表 分为大小相等的多个块,称为页(Page).每个页都是虚拟内存中一段连续的地址(一般一页为4Kb),其中一部分对应物理内存上的一块(称为页框

暴力搜索内存进程对象反隐藏进程

♀尐吖头ヾ 提交于 2019-12-12 17:52:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们前面说过几种隐藏进程的方法: 遍历进程活动链表(ActiveProcessLinks) 遍历PspCidTable表检测隐藏进程 但还是不能防止别人通过各种方法来隐藏进程,所以下面来介绍一种通过暴力搜索内存枚举进程的方法。 一个进程要运行,必然会加载到内存中。基于这个事实,隐藏进程要在目标机运行,在内存中一定会存在对应的EPROCESS结构体。基于系统内存搜索的进程监测技术利用EPROCESS结构体特征找到EPROCESS地址指针进而输出进程信息,可以有效地对进程进行全面的监测。 那我们应该搜索进程的什么结构?进程的PEB(PEB(Process Environment Block)——进程环境块)。主要原因是PEB地址的高4位是相同的。 image 可以看到除了system,其他进程的PEB都是0x7ffdxxxx.为什么? 找到wrk源码,MiCreatePebOrTeb这个函数负责分配peb和teb的地址。 贴出关键代码: //判断是不是分配PEB地址,通过与PEB的大小比较 if (Size == sizeof(PEB) #if defined(_WIN64) || (Size == sizeof(PEB32)) #endif ) { PVOID HighestVadAddress; LARGE

第 17 章 计算机体系结构基础

旧巷老猫 提交于 2019-12-11 13:45:57
一、参考网址   1、 linux C编程一站式学习 二、笔记   1、一级cache与二级cache的区别     一级缓存是用VA寻址的,二级缓存是用PA寻址的,这是它们的区别   2、VA(虚拟地址)和PA(物理地址)的区别     CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将VA映射成PA(Physical Address)   3、MMU     1)MMU将VA映射到PA是以页(Page)为单位的,32位处理器的页尺寸通常是4KB     2)物理内存中的页称为物理页面或者页帧(Page Frame)     3)虚拟内存的哪个页面映射到物理内存的哪个页帧是通过页表(Page Table)来描述的,页表保存在物理内存中,MMU会查找页表来确定一个VA应该映射到什么PA     4) MMU除了做地址转换之外,还提供内存保护机制      5|)x86平台的虚拟地址空间是0x0000 0000~0xffff ffff,大致上前3GB(0x0000 0000~0xbfff ffff)是用户空间,后1GB(0xc000 0000~0xffff ffff)是内核空间 来源: https://www.cnblogs.com