您的位置:首页 > 其它

磁盘与文件系统管理之五

2016-01-28 16:20 239 查看
虚拟内存:

进程要想运行,就必须把磁盘里面的程序读到内存,每个进程占用一些物理内存,但是我们编写程序的时候无法事先知道内存中还有哪些空闲的物理地址可以供我们使用,于是我们引入了虚拟地址的概念,不管我们的程序会占用哪些物理内存地址,我们统一从0开始编址,并且假设每个进程都独立占有4G内存地址空间
但是程序并不知道它不能占用那么多内存,于是假设有2个进程想并发执行,那么我们理论就需要8G内存,但实际上我们的内存是没那么多的,而且程序一般也不需要一下子就占用那么多内存。为了实现让它们看起来确实占有4G内存,我们一部分一部分地读取程序数据,为了能使其从0开始编址,我们利用虚拟内存和物理内存进行转换。
当一个程序需要内存的时候,内核在程序的虚拟地址和内存空闲物理地址之间作一个映射表,当cpu需要操作数据的时候通过映射表查找到对应的数据,这样即使空闲物理地址不连续,也能被充分利用。
但是内存总是有限的,有的时候我们想运行某个进程的时候内存刚好满了,新增一条内存又太昂贵,这个时候我们选择一种折中的方法,在磁盘上开辟出一段空间,格式化成内存能识别的文件系统格式(最好找比较快的磁道),这段空间用作内存,但又不是真正的内存,所以叫做虚拟内存。
当进程想运行的时候先把数据加载到这段空间上,等cpu时间片到了的时候,先在内存中找到暂时不需要运行的程序数据暂存到这段空间,为即将运行的程序腾出内存,然后程序数据加载到内存中运行,同样地,下一个进程要运行的时候,也按照此步骤进行,这个过程我们叫做page out page in。

缓冲和缓存的区别:
buffer:这是为了提高内存和硬盘(或其他i/o设备)的数据交换速度而设计的

根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高整体性能。sync可以手动清空其内容(即写入到磁盘)

cache:这是为了提高cpu和内存之间的数据交换速度而设计的

cpu速度很快,内存虽然也很快但是相对cpu就很慢了,为了调节两个的速度差,我们使cache,cache速度小于cpu,但大于内存,工作时根据程序的局部性原理把可能访问到的数据优先读取到cache,这样cpu访问的数据如果cache里面有则直接读取即可,大大提高了效率。

swap分区:

free :查看内存使用状况
-m:替换成以M为单位显示

fdisk命令中,调整分区类型为82

创建交换分区:
mkswap /dev/sda3

-L LABEL

swapon /dev/sda3

-a:启用所有定义在/etc/fstab文件中的交换设备

swapoff /dev/sda3

回环设备
loopback,使用软件来模拟实现硬件

dd命令:

if=数据来源

of=数据存储目标

bs=#:指定块大小

count=#:指定个数

seek=#:创建数据文件时,跳过的空间大小。

dd if=/dev/sda of=/mnt/mbr.back bs=512 count=1 备份mbr
dd if=/mnt/mbr.back of=/dev/sda bs=512 count=1 还原mbr

cp /etc/inittab /tmp/ 和dd if=/etc/inittab of=/tmp/inittab 的区别
cp命令是通过vfs操作进行整个文件拷贝,而dd则是直接在硬盘中按数据块大小和数据块个数进行拷贝,所以dd命令可以拷贝任意部分的文件,只需调整bs大小和数量即可。

mount 命令,可以挂载iso镜像
mount DEVUCE MOUNT_POINT
-o loop:挂载本地回环设备

文件系统的配置文件/etc/fstab
OS在初始时,会自动挂载词文件中定义的每个文件系统

要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率(每多少天做一次完整备份) 文件系统检测次序(只有根可以为1)
proc /proc proc defaults 0 0
LABEL=mydata /data ext3 defaults 0 0
/root/swap swap swap defaults 0 0
fuser:验证进程正在使用的文件或套接字
-v:查看某文件上正在运行的进程

-k:

-m

fuser -km FILE:终止正在访问此文件的所有进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swap