虚拟内存管理
查看进程: ps
显示结果:
PID TTY TIME CMD
1979 pts/0 00:00:00 bash
2048 pts/0 00:00:00 ps
查看bash的虚拟地址空间: cat /proc/1979/maps
或是pmap 1979
显示结果:
08048000-08123000 r-xp 00000000 08:01 786438 /bin/bash
08123000-08124000 r--p 000da000 08:01 786438 /bin/bash
08124000-08129000 rw-p 000db000 08:01 786438 /bin/bash
08129000-0812e000 rw-p 00000000 00:00 0
083a2000-08607000 rw-p 00000000 00:00 0 [heap]
b72d4000-b72f3000 r--p 00000000 08:01 787504 /usr/share/locale-
langpack/zh_CN/LC_MESSAGES/bash.mo
b72f3000-b72fa000 r--p 00000000 08:01 546952 /usr/share/locale-
langpack/en_AU/LC_MESSAGES/bash.mo
b72fa000-b7302000 r--p 00000000 08:01 547192 /usr/share/locale-
langpack/en_GB/LC_MESSAGES/bash.mo
b7302000-b7309000 r--s 00000000 08:01 288595 /usr/lib/i386-linux-
gnu/gconv/gconv-modules.cache
b7309000-b730a000 r--p 0043a000 08:01 270739 /usr/lib/locale/locale-
archive
b730a000-b734a000 r--p 002bd000 08:01 270739 /usr/lib/locale/locale-
archive
b734a000-b74ef000 r--p 006b4000 08:01 270739 /usr/lib/locale/locale-
archive
b74ef000-b76ef000 r--p 00000000 08:01 270739 /usr/lib/locale/locale-
archive
b76ef000-b76f1000 rw-p 00000000 00:00 0
b7701000-b7703000 rw-p 00000000 00:00 0
bfa71000-bfa92000 rw-p 00000000 00:00 0 [stack]
进程地址空间:
内核地址空间 0xc000 0000
0xbf?? ????
环境变量
命令行参数
栈
共享库和mmap内存映射区
堆
data segment
test segment
x86的虚拟空间地址是:0x0000 0000~0xffff ffff
前3G为用户空间,后1G为内核空间
虚拟内存所起作用:
1 控制物理内存的访问权限
2 让每个进程有独立的地址空间,不同进程的同一个va被mmu映射到不同的pa
再打开一个终端窗口执行以上命令
两个进程在同一个系统中运行,所以data segment 占用相同的va,
各自干各自的事情,所以data segment中有不同的数据
两个进程都是bash进程,text segment是一样的,共享相同的物理页面
共享库的地址并不相同,共享库可以节省内存
3 物理地址不连续的几块内存可以映射成虚拟地址连续的一块内存
4 系统如果同时运行着多个进程,为各个进程分配的内存之和可能大于物理内存,
虚拟内存管理使得各进程可以正常运行
交换设备(swap device):在磁盘上保存虚拟内存页面的磁盘分区/磁盘文件
换出(page out): 当物理内存不够用时,将不常用的物理页面的数据临时保存
到交换设备,这个物理页面就认为是空闲的了,可以重新分
配给内存使用
换入(page in): 如果进程要用到换出的页面,可以从交换设备加载回物理内存
以上两者统称为换页(paging)
系统分配内存的总量=物理内存的大小+交换设备的大小
分享到:
相关推荐
C语言学习笔记C语言学习笔记C语言学习笔记C语言学习笔记
C语言学习笔记 C语言学习笔记 C语言学习笔记 C语言学习笔记
c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记c语言学习笔记
认真学习的人从国内某个培训机构上课时,记录的C语言学习笔记,其中包含所有的C语言基本语法,文章中对指针、字符操作有好多介绍,整理的很全面,并且有图示哦!! 相信对大家学习C语言会有很大帮助!!!
C语言学习笔记.zip
C语言学习笔记C语言学习笔记
c语言学习笔记
C语言学习笔记.pdf
C语言学习笔记 必看知识点 精品啊 值得看
C语言基础部分学习笔记全部
C语言学习笔记,C语言学习笔记,qsort排序。。。。。。。。。。。。。。。。。。。。。。。。。。。。
自己学习过程中记录的一些信息,可能不全C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针C语言学习笔记变量数组指针
这是本人学习C语言的一些经验总结和学习笔记,想参考的可以看一下
对想入门和增加C语言的开发技术,都是挺好的文档,希望对各位程序员的能力提高有所帮助。
从头到尾,超级全面。
C语言学习笔记.docx
C语言基础学习笔记,都是自己读C语言的一些理解,如果大家有发现理解错误的地方可以跟我说下,希望能一起学习共同进步
C语言学习笔记.doc
c语言学习笔记.pdf