虚拟存储器知识点总结

news/2024/7/20 14:35:13 标签: 运维, 操作系统, 内存管理

1、数据结构

struct mm_struct

{

    struct vm_area_struct *mmap;            /* list of VMAs */

    struct rb_root mm_rb;

    struct vm_area_struct *mmap_cache;      /* last find_vma result */

    ...

    unsigned long start_code, end_code, start_data, end_data;

    unsigned long start_brk, brk, start_stack;

    ...

};

 

struct vm_area_struct

{

    struct mm_struct *vm_mm;        /* The address space we belong to. */

    unsigned long vm_start;         /* Our start address within vm_mm. */

    unsigned long vm_end;           /* The first byte after our end address

                                           within vm_mm. */

    ....

    /* linked list of VM areas per task, sorted by address */

    struct vm_area_struct *vm_next;

    ....

    /* describe the permissable operation */

    unsigned long vm_flags;

    /* operations on this area */

    struct vm_operations_struct * vm_ops;

    

    struct file * vm_file; /* File we map to (can be NULL). */

} ;

2、进程加载

linux操作系统是通过sys_exec对可执行文件进行映射以及读取的,有如下几步:

  1.创建一组vm_area_struct

  2.圈定一个虚拟用户空间,将其起始结束地址(elf段中已设置好)保存到vm_start和vm_end中。

  3.将磁盘file句柄保存在vm_file中

  4.将对应段在磁盘file中的偏移值(elf段中已设置好)保存在vm_pgoff中;

  5.将操作该磁盘file的磁盘操作函数保存在vm_ops中

3、寻址技术

物理地址,CPU地址总线传来的地址,由硬件电路控制(现在这些硬件是可编程的了)其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。

        线性地址(Linear Address)也叫虚拟地址(virtual address)是逻辑地址到物理地址变换之间的中间层。在分段部件中逻辑地址是段中的偏移地址,然后加上基地址就是线性地址。是一个32位无符号整数,可以用来表示高达4GB的地址,也就是,高达4294967296个内存单元。线性地址通常用十六进制数字表示,值得范围从0x00000000到0xfffffff)程序代码会产生逻辑地址,通过逻辑地址变换就可以生成一个线性地址。如果启用了分页机制,那么线性地址可以再经过变换以产生一个物理地址。如果没有启用分页机制,那么线性地址直接就是物理地址。

        逻辑地址是在有地址变换功能的计算机中,访内指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址,也就是是机器语言指令中,用来指定一个操作数或是一条指令的地址。要经过寻址方式的计算或变换才得到内存储器中的实际有效地址即物理地址。一个逻辑地址由两部份组成,段标识符: 段内偏移量。段标识符是由一个16位长的字段组成,称为段选择符。其中前13位是个索引号,后面3位包含一些硬件细节 。

4、交换技术

缺页异常被触发通常有两种情况——

1.程序设计的不当导致访问了非法的地址

2.访问的地址是合法的,但是该地址还未分配物理页框

5、内存管理技术

堆和栈都是虚拟地址空间上的概念

6、段页安全思想

1.基本思想:

分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。

在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。对于主存空间也分成大小相等的页,主存的分配以页为单位。

段页式系统中,作业的地址结构包含三部分的内容:段号,页号,页内位移量

程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。

为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号,该段的页表始址和页表长度。每个段有自己的页表,记录段中的每一页的页号和存放在主存中的物理块号


http://www.niftyadmin.cn/n/1043913.html

相关文章

浏览器安全学习笔记

目录前言浏览器安全一、同源策略二、浏览器沙箱三、恶意网址拦截前言 作为一个菜鸟渣渣,自以为懂得很多,然而在一次面试交谈中被问及浏览器相关安全策略,是一脸懵逼。脑袋里跑的是什么url、协议、用户访问过程啥的,能想到一点&am…

实验三十六 Windows Server 2012 RDS桌面虚拟化之七VDI虚拟桌面的更新和维护

实验三十六 Windows Server 2012 RDS桌面虚拟化之七VDI虚拟桌面的更新和维护 在远程桌面服务中,往往需要定期对虚拟桌面更新补丁或应用程序,以往的方法是一台一台的更新;但是在Windows Server 2012 中可以通过更新虚拟机模版,然后…

springcloud控制台日志不打印_springcloud中feign的@FeignClient应该写在哪里?

前言最近项目组拿了友商的springcloud alibaba项目来进行改造,在翻阅他们的代码时候,发现他们把FeignClient写在服务提供方的API上,他们这样的写法成功的引起我的注意,于是抱着好学的心态请教友商的开发人员,于是一篇水…

显示器市场“移情别恋”:液晶与OLED战争打响

显示器市场一直以来都孳孳不息地在探索中前进着,无论身处的境地是好是坏,它都在努力地做到宠辱不惊,淡然的面对所有的褒奖和批评。近年来的显示器行业,有无数的应用技术不断被挖掘并且投身到显示器中去发扬光大。然而这些穿梭在厂…

R中几种常用的绘图命令

1.条形图&#xff1a;barplot() 添加标题&#xff1a;main ’ ’ 添加坐标轴标题&#xff1a;xlab ’ ’ , ylab ’ ’ region2 <- table(example1Region2)rlabels<−c(′North′,′South′,′Foreign′,′East′,′West′)barplot(region2)barplot(region2,names.arg…

kali骚操作之系统字典

目录一、kali默认字典简单介绍二、关于johnjohn破解kali密码实战三、kali字典生成工具——crunchkali默认字典目录&#xff1a; /usr/share/wordlists/ 一、kali默认字典简单介绍 dirb big.txt #大的字典 small.txt #小的字典 catala.txt #项目配置字典 common.txt #公共字典…

实验三十七 Windows Server 2012 RDS桌面虚拟化之八RemoteApp程序快速启动部署

实验三十七 Windows Server 2012 RDS桌面虚拟化之八RemoteApp程序快速启动部署 RemoteApp是微软桌面虚拟化架构中的重要组成部分&#xff0c;RemoteApp程序是透过终端服务远程访问的程序&#xff0c;客户端本机无需安装任何应用程序也可像本地资源一样使用remoteapp程序&#x…

delphi 提示class tparamlistbox not found_PC微信[多开+免扫码+防撤回撤回提示+转存语音+自动收款+远程命令]...

心灵禅语三十句原帖地址:https://www.52pojie.cn/thread-1041120-1-1.html原帖子已经关闭不能编辑了.今天再重新开新帖,微工V2.9.51.增加转存语音到MP3(保存你重要的语音数据)2.增加表图转存;3.增加自动收转账和自动回复;4.增加远程操作命令 (远程操作命令只有手机发送才有效)5…