当前位置: 首页 > news >正文

磁盘与文件系统管理之五

虚拟内存:

    进程要想运行,就必须把磁盘里面的程序读到内存,每个进程占用一些物理内存,但是我们编写程序的时候无法事先知道内存中还有哪些空闲的物理地址可以供我们使用,于是我们引入了虚拟地址的概念,不管我们的程序会占用哪些物理内存地址,我们统一从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:终止正在访问此文件的所有进程。



















本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1739581 ,如需转载请自行联系原作者



相关文章:

  • SQL Server 2008 存储结构之DCM、BCM
  • 网络管理员的基本素质
  • 一步一步学会puppet(二)--模块和类
  • DHCP用户类选项配置
  • [Unity3d]安卓无法加载assetbundle的问题
  • jquery.idTabs使用方法
  • Windows Workflow Foundation学习资源
  • lvs-nat负载均衡模式
  • 第2章 网络文档
  • Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • linux如何开启telnet服务
  • Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法
  • 图的操作
  • linux命令:编译安装软件包(举例安装tengine nginx)
  • exif信息对照
  • Node + FFmpeg 实现Canvas动画导出视频
  • python学习笔记 - ThreadLocal
  • - 概述 - 《设计模式(极简c++版)》
  • 聊聊flink的TableFactory
  • 使用agvtool更改app version/build
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 责任链模式的两种实现
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #{} 和 ${}区别
  • #FPGA(基础知识)
  • #NOIP 2014# day.2 T2 寻找道路
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (06)Hive——正则表达式
  • (1)Nginx简介和安装教程
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (层次遍历)104. 二叉树的最大深度
  • (第二周)效能测试
  • (多级缓存)多级缓存
  • (过滤器)Filter和(监听器)listener
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)手动添加用户和文件的特殊权限
  • (算法二)滑动窗口
  • (转)winform之ListView
  • (转)可以带来幸福的一本书
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .Net Core和.Net Standard直观理解
  • .NET Micro Framework初体验
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @Transactional 竟也能解决分布式事务?
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [BZOJ] 3262: 陌上花开
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计