io dsffsdfsdfsfsdfd

本文详细介绍了计算机系统的内存管理机制,包括I/O过程、虚拟地址与物理地址的映射规则、分页机制等内容。重点讲解了如何通过页表实现虚拟地址到物理地址的映射,以及操作系统如何管理和调度内存资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

/io过程

进程请求io操作read() -> 使用本地方法执行系统调用read -> 内核程序(由cpu执行)向dma发送io命令 -> dma将数据写

 

入内核内存缓冲区 -> 缓冲区装满 -> 内核把数据从内核空间的临时缓冲区拷贝到进程执行系统调用read指定的缓冲区

 

■(本地调用到java内存的过程待弄清)

 

/虚拟地址与物理地址的映射规则

 

(1)程序要运行,首先要将源代码编译成可载入内存的目标模块,然后静态或者动态去链接这些模块或所需的函数库,把这

 

些模块加载进内存,即是 编译-> 链接(静态) -> 装入内存 或者 编译 -> 装入内存 -> 链接(动态)

 

(2)虚拟地址指程序中使用的地址,这种地址是相对于程序的起始位的,也称为逻辑地址,在程序编译时每个目标模块的虚

 

拟地址都是从0开始编号,32位cpu对应32位操作系统,在程序中的指针用4字节表示,可映射到4G的虚拟地址空间

 

(3)内存是由存储单元组成的,存储单元都有编号,这个编号就是物理地址,物理地址是内存的绝对地址

 

(4)为了保证cpu执行指令时能正确访问存储单元,程序被加载进内存时(静态重定位)或需要执行时(动态重定位)要进行地

 

址映射,即把虚拟地址映射到物理地址,动态重定位方式使得程序可在内存中移动

 

 

/分页

(1)分页机制中,内存的分块的大小由cpu决定,然后由操作系统选择等同的页的大小.

(2)分页的思想是程序运行时用到哪页就为哪页分配内存,没用到的页暂时保留在硬盘上(页表中页与程序文件的映射)。

 

当用到这些页时再在物理地址空间中为这些页分配内存,然后建立虚拟地址空间中的页和刚分配的物理内存页间的映射(

 

同样用页表记录映射信息)

(3)当一个PE文件(PE文件是微软Windows操作系统上的程序文件)执行时,操作系统会先为该程序创建一个4GB的进程虚拟

 

地址空间。前面介绍过,虚拟地址空间只是一个中间层而已,它的功能是利用一种映射机制将虚拟地址空间映射到物理

 

地址空间,所以,创建4GB虚拟地址空间其实并不是要真的创建空间,只是要创建那种映射机制所需要的数据结构而已,

 

这种数据结构就是页目和页表。

 

/整体过程

st1 程序文件被执行

st2 系统建立程序文件与页的映射,即页和页表,4GB虚拟地址空间共可以分成1048576个页,按程序的需要分配

st3 执行程序时cpu发现虚拟地址对应的物理地址不存在 -> 交给操作系统处理

st4 操作系统为对应的页在内存分配一个空间,并将映射信息记录到页表

st5 程序继续执行,此时虚拟地址对应的物理空间已分配,物理空间对应的页对应的文件中的数据已经载入内存空间

 

详细参考:http://blog.youkuaiyun.com/qingfeng_happy5/article/details/4322723

    

/相关概念

(1)页面文件,这个是硬盘上的一块空间,在Windows下表现为一个文件。这个页面文件存在的意义就是在物理内存被占用

 

满以后,将物理内存中的东西移动到硬盘上的这个空间,腾出物理内存给需要的应用程序来使用。

(2)交换区,这个是物理内存和页面文件空间的总和,“交换”的含义,则是指在硬盘文件、CPU和其它IO之间进行数据

 

的传递和暂存

(3)■程序运行时,其全部信息都装入虚拟存储区,运行需要的信息载入内存,所以可以将程序数据分页或分段,同时将内存

 

对应划分单元,以块号标识,以页或段为单位进行内存区与虚拟存储区的进程数据调度

(3)系统为每一进程建立一张页表/段表,实现从页号/段号到物理块号的映射

(4)请求分页系统中的外存分为对换区和文件区

(5)unix方式: 与进程有关的文件放在文件区,未运行的页面应从文件区调入,曾经运行但又被换出的页面被放在对换区,

 

下次调入从对换区调入,进程请求的共享页面可能已被其他进程调入,无需再从对换区调入.

 

 

/把内核空间地址与用户空间的虚拟地址映射到同一个物理地址,这样,DMA 硬件(只能访问物理内存地址)就可以填充

 

对内核与用户空间进程同时可见的缓冲区■

 

/■虚拟地址和虚拟存储管理的区别

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值