
1. 请求调页是一种动态内存分配技术,它把页框的分配推迟到不能再推迟为止。这种技术的动机是:进程开始运行的时候并不访问地址空间中的全部内容。事实上,有一部分地址也许永远也不会被进程所使用。程序的局部性原理也保证了在程序执行的每个阶段,真正使用的进程页只有一小部分,对于临时用不到的页,其所在的页框可以由其它进程使用。因此,请求分页技术增加了系统中的空闲页框的平均数,使内存得到了很好的利用。从另外一个角度来看,在不改变内存大小的情况下,请求分页能够提高系统的吞吐量。当进程要访问的页不在内存中的时候,就通过缺页异常处理将所需页调入内存中。
2. 写时复制主要应用于系统调用fork,父子进程以只读方式共享页框,当其中之一要修改页框时,内核才通过缺页异常处理程序分配一个新的页框,并将页框标记为可写。这种处理方式能够较大的提高系统的性能,这和Linux创建进程的 *** 作过程有一定的关系。在一般情况下,子进程被创建以后会马上通过系统调用execve将一个可执行程序的映象装载进内存中,此时会重新分配子进程的页框。那么,如果fork的时候就对页框进行复制的话,显然是很不合适的。
在上述的两种情况下出现缺页异常,进程运行于用户态,异常处理程序可以让进程从出现异常的指令处恢复执行,使用户感觉不到异常的发生。当然,也会有异常无法正常恢复的情况,这时,异常处理程序会进行一些善后的工作,并结束该进程。也就是说,运行在用户态的进程如果出现缺页异常,不会对 *** 作系统核心的稳定性造成影响。 那么对于运行在核心态的进程如果发生了无法正常恢复的缺页异常,应该如何处理呢?是否会导致系统的崩溃呢?是否能够解决好内核态缺页异常对于 *** 作系统核心的稳定性来说会产生很大的影响,如果一个误 *** 作就会造成系统的Oops,这对于用户来说显然是不能容忍的。本文正是针对这个问题,介绍了一种Linux内核中所采取的解决方法。
在读者继续往下阅读之前,有一点需要先说明一下,本文示例中所选的代码取自于Linux-2.4.0,编译环境是gcc-2.96,objdump的版本是2.11.93.0.2,具体的版本信息可以通过以下的命令进行查询:
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
$ objdump -v
GNU objdump 2.11.93.0.2 20020207
Copyright 2002 Free Software Foundation, Inc.
在某个文件夹执行命令完全卡死,(ctrl+z,ctrl+c等都不能用),表现为:
只好关闭当前shell,重新登录。
产生原因:
该文件夹中有一个服务挂载在该文件夹某一目录下,因突然关机等异常情况导致该服务无限制等待,机器重启后也不能正常连接。
解决方法:
查看与该文件夹相应的服务挂载情况:mount -l | grep 有问题文件夹名,如mount -l | grep "/root/bakup"
umount -l 文件夹,此刻,再访问文件夹即可使用命令了!
作为一个linux用户/系统管理员, 有些时候你会遇到以下错误提示:
bash: /bin/ls: Argument list too long
bash: /bin/rm: Argument list too long
产生原因:
“Argument list too long”参数列表过长错误经常发生在用户在一行简单命令中提供了过多的参数而导致,经常在ls *, cp *, rm * 等中出现,一般是因为受到 shell 参数个数限制所致
解决方法:
方法1 : 将文件群手动划分为比较小的组合
这是最基本的方法,只是简单的使参数数量符合要求,这种方法应用范围有限,只适用于文件列表中的名字分布比较均匀,另外这也是个初级用户可以考虑的解决方案,不过需要很多重复命令和对文件名分布的观察与猜测。
方法2 : 使用find命令
通过find命令,将文件清单输出到rm命令,使其一次处理一个,这样就完全避免了过量参数的存在,另外通过不同的参数,可以指定除了名称以外的时间戳,权限,以及inode等匹配模式。
方法3: 使用xargs命令
用xargs 命令将文件以每 100 个为一组为单位处理
xargs 命令会将文件以每 100 个为一组做 rm 处理。
方法4: 使用 ls 结合 awk *** 作
可以使用 awk 一次删除一个的方式进行删除,但必须先进入该目录下。
Linux 命令 argument list too long 错误解决
https://blog.51cto.com/u_14782715/5082973
https://blog.csdn.net/fdipzone/article/details/41558461
Linux删除文件出现/bin/rm: Argument list too long解决方法
https://southcat.net/1481.html
Linux下经过 rm -f 删除大量文件时报错:Argument list too long
http://www.javashuo.com/article/p-pucmuhoh-v.html
Linux文件系统十问
https://mp.weixin.qq.com/s/pOKjwl3ONPMPSRF6RSmvaw
新建一个空文件占用多少磁盘空间?
https://mp.weixin.qq.com/s/9YeUEnRnegplftpKlW4ZCA
文件过多时ls命令为什么会卡住?
https://mp.weixin.qq.com/s/g-fFoYsBJkonV3ezdGDJKA
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)