目录:
1.开关上的o和i是什么意思
2.开关为什么是o和i
3.电源开关的o和I是什么意思
4.o是开i是关吗
5.O和I哪个表示开哪个表示关
6.O和I哪个是开关
7.i是开关还是o
8.开关上面的o和i
9.开关上的o和i
10.开关上的o和I
1.开关上的o和i是什么意思
内存与I/O的交换堆、栈、代码段是否常驻内存?本文主要介绍两类不同的页面,以及这两类页面如何在内存和磁盘间进行交换?以及内存和磁盘的颠簸行为- swaping,和硬盘的swap分区page cachefile-backed的页面
2.开关为什么是o和i
:(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache。
3.电源开关的o和I是什么意思
匿名页:匿名页,如stack,heap,CoW后的数据段等;他们没有对应的硬盘文件,因此如果要交换,只能交换到虚拟内存-swapfile或者Linux的swap硬盘分区),此部分页面,如果系统内存不充分,可以被swap到swapfile或者硬盘的swap分区。
4.o是开i是关吗
内核通过两种方式打开硬盘的文件,**任何时候打开文件,Linux会申请一个page cache,然后把文件读到page cache里**page cache 是内存针对硬盘的缓存更多Linux内核视频教程文档资料免费领取后台私信【。
5.O和I哪个表示开哪个表示关
内核大礼包】自行获取。
6.O和I哪个是开关
Linux读写文件有两种方式:read/write 和 mmap1)read/write: read会把内核空间的page cache,往用户空间的buffer拷贝参数 fd, buffer, size ,write只是把用户空间的buffer拷贝到内核空间的page cache。
7.i是开关还是o
2)mmap:可以避免内核空间到用户空间拷贝的过程,直接把文件映射成一个虚拟地址指针,指向linux内核申请的page cache也就知道page cache和硬盘里文件的对应关系参数fd,文件对于应用程序来说,只是一部分内存。
8.开关上面的o和i
Linux使用write写文件,只是把文件写进内存,并没有sync而内存的数据和硬盘交换的功能去完成ELF可执行程序的头部会记录,从xxx到xxx是代码段把代码段映射到虚拟地址,0~3 G, 权限是RX。
9.开关上的o和i
这段地址映射到内核空间的page cache, 这段page cache又映射到可执行程序page cache,会根据LRU算法(最近最少使用)进行替换demo演示 page cache会多大程度影响程序执行时间。
10.开关上的o和I
echo3>/proc/sys/vm/drop_cachestimepythonhello.py\time-vpythonhello.pyroot@whale:/home/gzzhangyi2015#\time
-vpythonhello.pyHelloWorld!Love,PythonCommand being timed:”python hello.py”Usertime(seconds):0.01System
time(seconds):0.00Percent of CPU this job got:40%Elapsed(wallclock)time(h:mm:ssorm:ss):0:00.03Average
sharedtextsize(kbytes):0Averageunshareddatasize(kbytes):0Averagestacksize(kbytes):0Averagetotalsize(kbytes):
0Maximumresidentsetsize(kbytes):6544Averageresidentsetsize(kbytes):0Major(requiringI/O)page faults:10
Minor(reclaimingaframe)page faults:778Voluntary context switches:54Involuntary context switches:9Swaps:
0File system inputs:6528File system outputs:0Socket messages sent:0Socket messages received:0Signals delivered:
0Pagesize(bytes):4096Exit status:0root@whale:/home/gzzhangyi2015#\time-vpythonhello.pyHelloWorld!Love,
PythonCommand being timed:”python hello.py”Usertime(seconds):0.01Systemtime(seconds):0.00Percent of CPU this job got:
84%Elapsed(wallclock)time(h:mm:ssorm:ss):0:00.01Averagesharedtextsize(kbytes):0Averageunshareddatasize
(kbytes):0Averagestacksize(kbytes):0Averagetotalsize(kbytes):0Maximumresidentsetsize(kbytes):6624Average
residentsetsize(kbytes):0Major(requiringI/O)page faults:0Minor(reclaimingaframe)page faults:770Voluntary context switches:
1Involuntary context switches:4Swaps:0File system inputs:0File system outputs:0Socket messages sent:0
Socket messages received:0Signals delivered:0Pagesize(bytes):4096Exit status:0总结:Linux有两种方式读取文件,不管以何种方式读文件,都会产生page cache 。
free命令的详细解释totalusedfreesharedbufferscachedMem:4953724416675324786971214680821652421268-/+buffers/cache:
122461248312632Swap:419430004194300
buffers/cache都是文件系统的缓存,当访问ext3/ext4,fat等文件系统中的文件,产生cache当直接访问裸分区(/dev/sdax)时,产生buffer访问裸分区的用户,主要是应用程序直接打开 or 文件系统本身。
dd命令 or 硬盘备份 or sd卡,会访问裸分区,产生的缓存就是buffer而ext4文件系统把硬盘当作裸分区buffer和cache没有本质的区别,只是背景的区别-/+ buffer/cache 的公式
used buffers/cache = used – buffers – cachedfree buffers/cache = free + buffers + cached新版freeavailable参数:评估出有多少空闲内存给应用程序使用,free + 可回收的。
File-backed和Anonymous pageFile-backed映射把进程的虚拟地址空间映射到files比如 代码段比如 mmap一个字体文件Anonymous映射是进程的虚拟地址空间没有映射到任何file
StackHeapCoW pagesanonymous pages(没有任何文件背景)分配一个swapfile文件或者一个swap分区,来进行交换到磁盘的动作demo:演示进程的代码段是如何被踢出去的?。
pidoffirefoxcat/proc//smaps运行oom.cswap以及zRAM数据段,在未写过时,有文件背景在写过之后,变成没有文件背景,就被当作匿名页linux把swap分区,当作匿名页的文件背景。
swap(v.),内存和硬盘之间的颠簸行为 swap(n.),swap分区和swap文件,当作内存中匿名页的交换背景在windows内,被称作虚拟内存pagefile.sys 页面回收和LRU
回收匿名页和回收有文件背景的页面后台慢慢回收:通过kswapd进程,回收到高水位(high)时,才停止回收从low -> high直接回收:当水位达到min水位,会在两种页面同时进行回收,回收比例通过swappiness越大,越倾向于回收匿名页;swappiness越小,越倾向于回收file-backed的页面。
当然,它们的回收方法都是一样的LRU算法Linux Page Replacement用LRU算法来进行swap和page cache的页面替换。
现在cache的大小是4页,前四次,1,2,3,4文件被一次使用,注意第七次,5文件被使用,系统评估最近最少被使用的文件是3,那么不好意思,3被swap出去,5加载进来,依次类推所以LRU可能会触发page cache或者anonymous页与对应文件的数据交换。
嵌入式系统的zRAM
zRAM: 用内存来做swap分区从内存中开辟一小段出来,模拟成硬盘分区,做交换分区,交换匿名页,自带透明压缩功能当应用程序往zRAM写数据时,会自动把匿名页进行压缩当应用程序访问匿名页时,内存页表里不命中,发生page fault(major)。
从zRAM中把匿名页透明解压出来,还到内存
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容