网站未备案被阻断怎么做,wordpress首页菜单怎么设置,公司logo素材,wordpress时间调用一、文件存取方法
1. 顺序存取#xff08;Sequential Access#xff09;
原理#xff1a;按记录写入顺序依次访问特点#xff1a;
读操作#xff1a;读取当前位置#xff0c;指针自动前移写操作#xff1a;追加到文件末尾
适用场景#xff1a;磁带设备、日志文件
#merm…一、文件存取方法
1. 顺序存取Sequential Access
原理按记录写入顺序依次访问特点
读操作读取当前位置指针自动前移写操作追加到文件末尾
适用场景磁带设备、日志文件
#mermaid-svg-jHEN2XJhdajB2Avf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .error-icon{fill:#552222;}#mermaid-svg-jHEN2XJhdajB2Avf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jHEN2XJhdajB2Avf .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jHEN2XJhdajB2Avf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jHEN2XJhdajB2Avf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jHEN2XJhdajB2Avf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jHEN2XJhdajB2Avf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jHEN2XJhdajB2Avf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jHEN2XJhdajB2Avf .marker.cross{stroke:#333333;}#mermaid-svg-jHEN2XJhdajB2Avf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jHEN2XJhdajB2Avf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .cluster-label text{fill:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .cluster-label span{color:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .label text,#mermaid-svg-jHEN2XJhdajB2Avf span{fill:#333;color:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .node rect,#mermaid-svg-jHEN2XJhdajB2Avf .node circle,#mermaid-svg-jHEN2XJhdajB2Avf .node ellipse,#mermaid-svg-jHEN2XJhdajB2Avf .node polygon,#mermaid-svg-jHEN2XJhdajB2Avf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jHEN2XJhdajB2Avf .node .label{text-align:center;}#mermaid-svg-jHEN2XJhdajB2Avf .node.clickable{cursor:pointer;}#mermaid-svg-jHEN2XJhdajB2Avf .arrowheadPath{fill:#333333;}#mermaid-svg-jHEN2XJhdajB2Avf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jHEN2XJhdajB2Avf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jHEN2XJhdajB2Avf .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jHEN2XJhdajB2Avf .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jHEN2XJhdajB2Avf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jHEN2XJhdajB2Avf .cluster text{fill:#333;}#mermaid-svg-jHEN2XJhdajB2Avf .cluster span{color:#333;}#mermaid-svg-jHEN2XJhdajB2Avf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jHEN2XJhdajB2Avf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}文件头记录1记录2记录3当前指针记录4文件尾
2. 直接存取Direct Access / Random Access
原理直接定位到任意位置读写操作方式
seek(offset) 移动文件指针read(size)/write(data) 在当前位置操作
磁盘支持通过计算物理地址实现
#mermaid-svg-jAKm0OmprB3iS8qR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jAKm0OmprB3iS8qR .error-icon{fill:#552222;}#mermaid-svg-jAKm0OmprB3iS8qR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jAKm0OmprB3iS8qR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jAKm0OmprB3iS8qR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jAKm0OmprB3iS8qR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jAKm0OmprB3iS8qR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jAKm0OmprB3iS8qR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jAKm0OmprB3iS8qR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jAKm0OmprB3iS8qR .marker.cross{stroke:#333333;}#mermaid-svg-jAKm0OmprB3iS8qR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jAKm0OmprB3iS8qR .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-jAKm0OmprB3iS8qR text.actortspan{fill:black;stroke:none;}#mermaid-svg-jAKm0OmprB3iS8qR .actor-line{stroke:grey;}#mermaid-svg-jAKm0OmprB3iS8qR .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-jAKm0OmprB3iS8qR .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-jAKm0OmprB3iS8qR #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-jAKm0OmprB3iS8qR .sequenceNumber{fill:white;}#mermaid-svg-jAKm0OmprB3iS8qR #sequencenumber{fill:#333;}#mermaid-svg-jAKm0OmprB3iS8qR #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-jAKm0OmprB3iS8qR .messageText{fill:#333;stroke:#333;}#mermaid-svg-jAKm0OmprB3iS8qR .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-jAKm0OmprB3iS8qR .labelText,#mermaid-svg-jAKm0OmprB3iS8qR .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-jAKm0OmprB3iS8qR .loopText,#mermaid-svg-jAKm0OmprB3iS8qR .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-jAKm0OmprB3iS8qR .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-jAKm0OmprB3iS8qR .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-jAKm0OmprB3iS8qR .noteText,#mermaid-svg-jAKm0OmprB3iS8qR .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-jAKm0OmprB3iS8qR .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-jAKm0OmprB3iS8qR .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-jAKm0OmprB3iS8qR .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-jAKm0OmprB3iS8qR .actorPopupMenu{position:absolute;}#mermaid-svg-jAKm0OmprB3iS8qR .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-jAKm0OmprB3iS8qR .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-jAKm0OmprB3iS8qR .actor-man circle,#mermaid-svg-jAKm0OmprB3iS8qR line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-jAKm0OmprB3iS8qR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}ProgramFileseek(offset1024)read(128 bytes)返回第1024-1151字节ProgramFile
3. 索引存取Indexed Access
原理通过索引表查找记录位置工作流程
搜索索引找到记录键获取记录物理地址直接访问该地址#mermaid-svg-5iICaoq1InJCyl0Q {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .error-icon{fill:#552222;}#mermaid-svg-5iICaoq1InJCyl0Q .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5iICaoq1InJCyl0Q .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5iICaoq1InJCyl0Q .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5iICaoq1InJCyl0Q .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5iICaoq1InJCyl0Q .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5iICaoq1InJCyl0Q .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5iICaoq1InJCyl0Q .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5iICaoq1InJCyl0Q .marker.cross{stroke:#333333;}#mermaid-svg-5iICaoq1InJCyl0Q svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5iICaoq1InJCyl0Q .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .cluster-label text{fill:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .cluster-label span{color:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .label text,#mermaid-svg-5iICaoq1InJCyl0Q span{fill:#333;color:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .node rect,#mermaid-svg-5iICaoq1InJCyl0Q .node circle,#mermaid-svg-5iICaoq1InJCyl0Q .node ellipse,#mermaid-svg-5iICaoq1InJCyl0Q .node polygon,#mermaid-svg-5iICaoq1InJCyl0Q .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5iICaoq1InJCyl0Q .node .label{text-align:center;}#mermaid-svg-5iICaoq1InJCyl0Q .node.clickable{cursor:pointer;}#mermaid-svg-5iICaoq1InJCyl0Q .arrowheadPath{fill:#333333;}#mermaid-svg-5iICaoq1InJCyl0Q .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5iICaoq1InJCyl0Q .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5iICaoq1InJCyl0Q .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5iICaoq1InJCyl0Q .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5iICaoq1InJCyl0Q .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5iICaoq1InJCyl0Q .cluster text{fill:#333;}#mermaid-svg-5iICaoq1InJCyl0Q .cluster span{color:#333;}#mermaid-svg-5iICaoq1InJCyl0Q div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5iICaoq1InJCyl0Q :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}找到位置查询记录 ID100搜索索引块位置:0x1200直接访问磁盘块0x1200二、存储空间管理技术
1. 空闲空间管理方法
#mermaid-svg-8Z70rPeWr3eBjvKM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .error-icon{fill:#552222;}#mermaid-svg-8Z70rPeWr3eBjvKM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8Z70rPeWr3eBjvKM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-8Z70rPeWr3eBjvKM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8Z70rPeWr3eBjvKM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8Z70rPeWr3eBjvKM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8Z70rPeWr3eBjvKM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8Z70rPeWr3eBjvKM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8Z70rPeWr3eBjvKM .marker.cross{stroke:#333333;}#mermaid-svg-8Z70rPeWr3eBjvKM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8Z70rPeWr3eBjvKM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .cluster-label text{fill:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .cluster-label span{color:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .label text,#mermaid-svg-8Z70rPeWr3eBjvKM span{fill:#333;color:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .node rect,#mermaid-svg-8Z70rPeWr3eBjvKM .node circle,#mermaid-svg-8Z70rPeWr3eBjvKM .node ellipse,#mermaid-svg-8Z70rPeWr3eBjvKM .node polygon,#mermaid-svg-8Z70rPeWr3eBjvKM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8Z70rPeWr3eBjvKM .node .label{text-align:center;}#mermaid-svg-8Z70rPeWr3eBjvKM .node.clickable{cursor:pointer;}#mermaid-svg-8Z70rPeWr3eBjvKM .arrowheadPath{fill:#333333;}#mermaid-svg-8Z70rPeWr3eBjvKM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8Z70rPeWr3eBjvKM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8Z70rPeWr3eBjvKM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-8Z70rPeWr3eBjvKM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-8Z70rPeWr3eBjvKM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8Z70rPeWr3eBjvKM .cluster text{fill:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM .cluster span{color:#333;}#mermaid-svg-8Z70rPeWr3eBjvKM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8Z70rPeWr3eBjvKM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}空闲空间管理位示图 Bitmap空闲链表空闲区表成组链接
2. 位示图法Bitmap
位示图法是一种用二进制位管理磁盘空间的技术其基本原理如下
数据结构创建一个位数组bit array数组长度等于磁盘总块数映射关系
每个二进制位对应一个磁盘块0 表示空闲块1 表示已分配块
存储位置位示图通常存储在磁盘固定位置如超级块附近
#mermaid-svg-4v5Ed891SJM9CUDx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .error-icon{fill:#552222;}#mermaid-svg-4v5Ed891SJM9CUDx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4v5Ed891SJM9CUDx .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-4v5Ed891SJM9CUDx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4v5Ed891SJM9CUDx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4v5Ed891SJM9CUDx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4v5Ed891SJM9CUDx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4v5Ed891SJM9CUDx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4v5Ed891SJM9CUDx .marker.cross{stroke:#333333;}#mermaid-svg-4v5Ed891SJM9CUDx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4v5Ed891SJM9CUDx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .cluster-label text{fill:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .cluster-label span{color:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .label text,#mermaid-svg-4v5Ed891SJM9CUDx span{fill:#333;color:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .node rect,#mermaid-svg-4v5Ed891SJM9CUDx .node circle,#mermaid-svg-4v5Ed891SJM9CUDx .node ellipse,#mermaid-svg-4v5Ed891SJM9CUDx .node polygon,#mermaid-svg-4v5Ed891SJM9CUDx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4v5Ed891SJM9CUDx .node .label{text-align:center;}#mermaid-svg-4v5Ed891SJM9CUDx .node.clickable{cursor:pointer;}#mermaid-svg-4v5Ed891SJM9CUDx .arrowheadPath{fill:#333333;}#mermaid-svg-4v5Ed891SJM9CUDx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-4v5Ed891SJM9CUDx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-4v5Ed891SJM9CUDx .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-4v5Ed891SJM9CUDx .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-4v5Ed891SJM9CUDx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-4v5Ed891SJM9CUDx .cluster text{fill:#333;}#mermaid-svg-4v5Ed891SJM9CUDx .cluster span{color:#333;}#mermaid-svg-4v5Ed891SJM9CUDx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-4v5Ed891SJM9CUDx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}位示图0空闲1占用0空闲...状态0位01位10位2......?位N磁盘块0磁盘块1磁盘块2...磁盘块N
完整示例16块磁盘的位示图管理
初始状态全空闲
磁盘块号: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
位示图值: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0操作1分配块2、块5、块7
#mermaid-svg-YrZu4uSlH48IsnFR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .error-icon{fill:#552222;}#mermaid-svg-YrZu4uSlH48IsnFR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YrZu4uSlH48IsnFR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-YrZu4uSlH48IsnFR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YrZu4uSlH48IsnFR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YrZu4uSlH48IsnFR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YrZu4uSlH48IsnFR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YrZu4uSlH48IsnFR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YrZu4uSlH48IsnFR .marker.cross{stroke:#333333;}#mermaid-svg-YrZu4uSlH48IsnFR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YrZu4uSlH48IsnFR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .cluster-label text{fill:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .cluster-label span{color:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .label text,#mermaid-svg-YrZu4uSlH48IsnFR span{fill:#333;color:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .node rect,#mermaid-svg-YrZu4uSlH48IsnFR .node circle,#mermaid-svg-YrZu4uSlH48IsnFR .node ellipse,#mermaid-svg-YrZu4uSlH48IsnFR .node polygon,#mermaid-svg-YrZu4uSlH48IsnFR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YrZu4uSlH48IsnFR .node .label{text-align:center;}#mermaid-svg-YrZu4uSlH48IsnFR .node.clickable{cursor:pointer;}#mermaid-svg-YrZu4uSlH48IsnFR .arrowheadPath{fill:#333333;}#mermaid-svg-YrZu4uSlH48IsnFR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YrZu4uSlH48IsnFR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YrZu4uSlH48IsnFR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-YrZu4uSlH48IsnFR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-YrZu4uSlH48IsnFR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YrZu4uSlH48IsnFR .cluster text{fill:#333;}#mermaid-svg-YrZu4uSlH48IsnFR .cluster span{color:#333;}#mermaid-svg-YrZu4uSlH48IsnFR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YrZu4uSlH48IsnFR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}更新后位示图块1:0块0:0块2:1块3:0块4:0块5:1块6:0块7:1其他:0分配请求扫描位示图找到空闲块2,5,7更新位示图
更新后位示图
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0操作2分配3个连续块
#mermaid-svg-ff2omVLQeERlsmDB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ff2omVLQeERlsmDB .error-icon{fill:#552222;}#mermaid-svg-ff2omVLQeERlsmDB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ff2omVLQeERlsmDB .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ff2omVLQeERlsmDB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ff2omVLQeERlsmDB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ff2omVLQeERlsmDB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ff2omVLQeERlsmDB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ff2omVLQeERlsmDB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ff2omVLQeERlsmDB .marker.cross{stroke:#333333;}#mermaid-svg-ff2omVLQeERlsmDB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ff2omVLQeERlsmDB .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-ff2omVLQeERlsmDB text.actortspan{fill:black;stroke:none;}#mermaid-svg-ff2omVLQeERlsmDB .actor-line{stroke:grey;}#mermaid-svg-ff2omVLQeERlsmDB .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-ff2omVLQeERlsmDB .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-ff2omVLQeERlsmDB #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-ff2omVLQeERlsmDB .sequenceNumber{fill:white;}#mermaid-svg-ff2omVLQeERlsmDB #sequencenumber{fill:#333;}#mermaid-svg-ff2omVLQeERlsmDB #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-ff2omVLQeERlsmDB .messageText{fill:#333;stroke:#333;}#mermaid-svg-ff2omVLQeERlsmDB .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-ff2omVLQeERlsmDB .labelText,#mermaid-svg-ff2omVLQeERlsmDB .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-ff2omVLQeERlsmDB .loopText,#mermaid-svg-ff2omVLQeERlsmDB .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-ff2omVLQeERlsmDB .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-ff2omVLQeERlsmDB .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-ff2omVLQeERlsmDB .noteText,#mermaid-svg-ff2omVLQeERlsmDB .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-ff2omVLQeERlsmDB .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-ff2omVLQeERlsmDB .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-ff2omVLQeERlsmDB .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-ff2omVLQeERlsmDB .actorPopupMenu{position:absolute;}#mermaid-svg-ff2omVLQeERlsmDB .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-ff2omVLQeERlsmDB .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-ff2omVLQeERlsmDB .actor-man circle,#mermaid-svg-ff2omVLQeERlsmDB line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-ff2omVLQeERlsmDB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}AppFSBitmap请求3个连续块扫描连续3个0找到块8-10设置位8-101确认更新返回块8,9,10AppFSBitmap
更新后位示图
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0操作3释放块5和块10
#mermaid-svg-5Pj7yrkc7aZUWinR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .error-icon{fill:#552222;}#mermaid-svg-5Pj7yrkc7aZUWinR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5Pj7yrkc7aZUWinR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-5Pj7yrkc7aZUWinR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5Pj7yrkc7aZUWinR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5Pj7yrkc7aZUWinR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5Pj7yrkc7aZUWinR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5Pj7yrkc7aZUWinR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5Pj7yrkc7aZUWinR .marker.cross{stroke:#333333;}#mermaid-svg-5Pj7yrkc7aZUWinR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5Pj7yrkc7aZUWinR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .cluster-label text{fill:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .cluster-label span{color:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .label text,#mermaid-svg-5Pj7yrkc7aZUWinR span{fill:#333;color:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .node rect,#mermaid-svg-5Pj7yrkc7aZUWinR .node circle,#mermaid-svg-5Pj7yrkc7aZUWinR .node ellipse,#mermaid-svg-5Pj7yrkc7aZUWinR .node polygon,#mermaid-svg-5Pj7yrkc7aZUWinR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5Pj7yrkc7aZUWinR .node .label{text-align:center;}#mermaid-svg-5Pj7yrkc7aZUWinR .node.clickable{cursor:pointer;}#mermaid-svg-5Pj7yrkc7aZUWinR .arrowheadPath{fill:#333333;}#mermaid-svg-5Pj7yrkc7aZUWinR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5Pj7yrkc7aZUWinR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5Pj7yrkc7aZUWinR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-5Pj7yrkc7aZUWinR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-5Pj7yrkc7aZUWinR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5Pj7yrkc7aZUWinR .cluster text{fill:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR .cluster span{color:#333;}#mermaid-svg-5Pj7yrkc7aZUWinR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5Pj7yrkc7aZUWinR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}释放块5计算位置:i5设置bit50释放块10计算位置:i10设置bit100
更新后位示图
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0关键技术细节
1. 地址转换计算块号 → 位位置
字节偏移 块号 / 8位偏移 块号 % 8示例访问块13
字节偏移 13 / 8 1 (第二个字节)
位偏移 13 % 8 5
检查第2字节的第5位从0开始计数2. 空间占用计算
假设
磁盘容量1TB块大小4KB
计算过程
总块数 1TB / 4KB 2^30 / 2^12 2^18 262,144 块
位示图大小 262,144 bits / 8 32,768 bytes 32KB位示图法优缺点分析优点缺点✅ 空间效率高仅需约 0.0039% 的额外空间1/256❌ 分配连续空间需线性扫描✅ 状态切换快位操作效率极高❌ 大磁盘中扫描效率低✅ 实现简单数据结构简洁❌ 外部碎片问题仍然存在✅ 随机访问快直接计算位置❌ 需要整个位图载入内存3. 空闲链表法
物理链表实现
#mermaid-svg-zasypugL2zjTaexG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zasypugL2zjTaexG .error-icon{fill:#552222;}#mermaid-svg-zasypugL2zjTaexG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zasypugL2zjTaexG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-zasypugL2zjTaexG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zasypugL2zjTaexG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zasypugL2zjTaexG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zasypugL2zjTaexG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zasypugL2zjTaexG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zasypugL2zjTaexG .marker.cross{stroke:#333333;}#mermaid-svg-zasypugL2zjTaexG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zasypugL2zjTaexG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zasypugL2zjTaexG .cluster-label text{fill:#333;}#mermaid-svg-zasypugL2zjTaexG .cluster-label span{color:#333;}#mermaid-svg-zasypugL2zjTaexG .label text,#mermaid-svg-zasypugL2zjTaexG span{fill:#333;color:#333;}#mermaid-svg-zasypugL2zjTaexG .node rect,#mermaid-svg-zasypugL2zjTaexG .node circle,#mermaid-svg-zasypugL2zjTaexG .node ellipse,#mermaid-svg-zasypugL2zjTaexG .node polygon,#mermaid-svg-zasypugL2zjTaexG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zasypugL2zjTaexG .node .label{text-align:center;}#mermaid-svg-zasypugL2zjTaexG .node.clickable{cursor:pointer;}#mermaid-svg-zasypugL2zjTaexG .arrowheadPath{fill:#333333;}#mermaid-svg-zasypugL2zjTaexG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zasypugL2zjTaexG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zasypugL2zjTaexG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-zasypugL2zjTaexG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-zasypugL2zjTaexG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zasypugL2zjTaexG .cluster text{fill:#333;}#mermaid-svg-zasypugL2zjTaexG .cluster span{color:#333;}#mermaid-svg-zasypugL2zjTaexG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zasypugL2zjTaexG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}空闲链头块3块7块9NULL4. 空闲区表法Extent-Based
原理
空闲区表法Free Space Management with Extent Lists是一种通过记录连续空闲区域来管理磁盘空间的技术特别适合处理连续分配的场景。其核心思想是
数据结构维护一张表格或链表每个表项记录
空闲区的起始块号空闲区的长度连续块数
分配策略当需要空间时在表中查找满足需求的空闲区合并机制释放空间时自动合并相邻空闲区
#mermaid-svg-70semH9yz6iebolg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-70semH9yz6iebolg .error-icon{fill:#552222;}#mermaid-svg-70semH9yz6iebolg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-70semH9yz6iebolg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-70semH9yz6iebolg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-70semH9yz6iebolg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-70semH9yz6iebolg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-70semH9yz6iebolg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-70semH9yz6iebolg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-70semH9yz6iebolg .marker.cross{stroke:#333333;}#mermaid-svg-70semH9yz6iebolg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-70semH9yz6iebolg g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-70semH9yz6iebolg g.classGroup text .title{font-weight:bolder;}#mermaid-svg-70semH9yz6iebolg .nodeLabel,#mermaid-svg-70semH9yz6iebolg .edgeLabel{color:#131300;}#mermaid-svg-70semH9yz6iebolg .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-70semH9yz6iebolg .label text{fill:#131300;}#mermaid-svg-70semH9yz6iebolg .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-70semH9yz6iebolg .classTitle{font-weight:bolder;}#mermaid-svg-70semH9yz6iebolg .node rect,#mermaid-svg-70semH9yz6iebolg .node circle,#mermaid-svg-70semH9yz6iebolg .node ellipse,#mermaid-svg-70semH9yz6iebolg .node polygon,#mermaid-svg-70semH9yz6iebolg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-70semH9yz6iebolg .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-70semH9yz6iebolg g.clickable{cursor:pointer;}#mermaid-svg-70semH9yz6iebolg g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-70semH9yz6iebolg g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-70semH9yz6iebolg .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-70semH9yz6iebolg .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-70semH9yz6iebolg .dashed-line{stroke-dasharray:3;}#mermaid-svg-70semH9yz6iebolg #compositionStart,#mermaid-svg-70semH9yz6iebolg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #compositionEnd,#mermaid-svg-70semH9yz6iebolg .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #dependencyStart,#mermaid-svg-70semH9yz6iebolg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #dependencyStart,#mermaid-svg-70semH9yz6iebolg .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #extensionStart,#mermaid-svg-70semH9yz6iebolg .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #extensionEnd,#mermaid-svg-70semH9yz6iebolg .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #aggregationStart,#mermaid-svg-70semH9yz6iebolg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg #aggregationEnd,#mermaid-svg-70semH9yz6iebolg .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-70semH9yz6iebolg .edgeTerminals{font-size:11px;}#mermaid-svg-70semH9yz6iebolg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}FreeExtentstart_block: intblock_count: intnext: FreeExtent*
完整示例16块磁盘的空闲区表管理
初始状态全空闲
#mermaid-svg-MjdOe1H3yolGwsiO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .error-icon{fill:#552222;}#mermaid-svg-MjdOe1H3yolGwsiO .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MjdOe1H3yolGwsiO .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MjdOe1H3yolGwsiO .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MjdOe1H3yolGwsiO .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MjdOe1H3yolGwsiO .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MjdOe1H3yolGwsiO .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MjdOe1H3yolGwsiO .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MjdOe1H3yolGwsiO .marker.cross{stroke:#333333;}#mermaid-svg-MjdOe1H3yolGwsiO svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MjdOe1H3yolGwsiO .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .cluster-label text{fill:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .cluster-label span{color:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .label text,#mermaid-svg-MjdOe1H3yolGwsiO span{fill:#333;color:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .node rect,#mermaid-svg-MjdOe1H3yolGwsiO .node circle,#mermaid-svg-MjdOe1H3yolGwsiO .node ellipse,#mermaid-svg-MjdOe1H3yolGwsiO .node polygon,#mermaid-svg-MjdOe1H3yolGwsiO .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MjdOe1H3yolGwsiO .node .label{text-align:center;}#mermaid-svg-MjdOe1H3yolGwsiO .node.clickable{cursor:pointer;}#mermaid-svg-MjdOe1H3yolGwsiO .arrowheadPath{fill:#333333;}#mermaid-svg-MjdOe1H3yolGwsiO .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MjdOe1H3yolGwsiO .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MjdOe1H3yolGwsiO .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-MjdOe1H3yolGwsiO .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-MjdOe1H3yolGwsiO .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MjdOe1H3yolGwsiO .cluster text{fill:#333;}#mermaid-svg-MjdOe1H3yolGwsiO .cluster span{color:#333;}#mermaid-svg-MjdOe1H3yolGwsiO div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MjdOe1H3yolGwsiO :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}空闲表头起始块:0 长度:16NULL
操作1分配3个连续块
#mermaid-svg-q7dTXYxfYHB5p2w8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .error-icon{fill:#552222;}#mermaid-svg-q7dTXYxfYHB5p2w8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-q7dTXYxfYHB5p2w8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-q7dTXYxfYHB5p2w8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-q7dTXYxfYHB5p2w8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-q7dTXYxfYHB5p2w8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-q7dTXYxfYHB5p2w8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-q7dTXYxfYHB5p2w8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .marker.cross{stroke:#333333;}#mermaid-svg-q7dTXYxfYHB5p2w8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-q7dTXYxfYHB5p2w8 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-q7dTXYxfYHB5p2w8 text.actortspan{fill:black;stroke:none;}#mermaid-svg-q7dTXYxfYHB5p2w8 .actor-line{stroke:grey;}#mermaid-svg-q7dTXYxfYHB5p2w8 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .sequenceNumber{fill:white;}#mermaid-svg-q7dTXYxfYHB5p2w8 #sequencenumber{fill:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .messageText{fill:#333;stroke:#333;}#mermaid-svg-q7dTXYxfYHB5p2w8 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-q7dTXYxfYHB5p2w8 .labelText,#mermaid-svg-q7dTXYxfYHB5p2w8 .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-q7dTXYxfYHB5p2w8 .loopText,#mermaid-svg-q7dTXYxfYHB5p2w8 .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-q7dTXYxfYHB5p2w8 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-q7dTXYxfYHB5p2w8 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-q7dTXYxfYHB5p2w8 .noteText,#mermaid-svg-q7dTXYxfYHB5p2w8 .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-q7dTXYxfYHB5p2w8 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-q7dTXYxfYHB5p2w8 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-q7dTXYxfYHB5p2w8 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-q7dTXYxfYHB5p2w8 .actorPopupMenu{position:absolute;}#mermaid-svg-q7dTXYxfYHB5p2w8 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-q7dTXYxfYHB5p2w8 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-q7dTXYxfYHB5p2w8 .actor-man circle,#mermaid-svg-q7dTXYxfYHB5p2w8 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-q7dTXYxfYHB5p2w8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}AppFSFreeList请求3个连续块查找足够空闲区找到[0-15]长度16从头部分配3块更新为[3-15]长度13alt[首次适应]返回块0-2AppFSFreeList
更新后空闲表
空闲区1: 起始块3, 长度13操作2再分配5个连续块
#mermaid-svg-Y8YKAeXPow6D5GJ1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .error-icon{fill:#552222;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .marker.cross{stroke:#333333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .cluster-label text{fill:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .cluster-label span{color:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .label text,#mermaid-svg-Y8YKAeXPow6D5GJ1 span{fill:#333;color:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .node rect,#mermaid-svg-Y8YKAeXPow6D5GJ1 .node circle,#mermaid-svg-Y8YKAeXPow6D5GJ1 .node ellipse,#mermaid-svg-Y8YKAeXPow6D5GJ1 .node polygon,#mermaid-svg-Y8YKAeXPow6D5GJ1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .node .label{text-align:center;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .node.clickable{cursor:pointer;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .arrowheadPath{fill:#333333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .cluster text{fill:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 .cluster span{color:#333;}#mermaid-svg-Y8YKAeXPow6D5GJ1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Y8YKAeXPow6D5GJ1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}首次适应请求5块查找策略扫描表项找到3-15长度135分配块3-7更新为起始块8,长度8
更新后空闲表
空闲区1: 起始块8, 长度8操作3释放块0-23块
#mermaid-svg-N25AaWoKFt7qys15 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-N25AaWoKFt7qys15 .error-icon{fill:#552222;}#mermaid-svg-N25AaWoKFt7qys15 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-N25AaWoKFt7qys15 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-N25AaWoKFt7qys15 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-N25AaWoKFt7qys15 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-N25AaWoKFt7qys15 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-N25AaWoKFt7qys15 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-N25AaWoKFt7qys15 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-N25AaWoKFt7qys15 .marker.cross{stroke:#333333;}#mermaid-svg-N25AaWoKFt7qys15 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-N25AaWoKFt7qys15 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-N25AaWoKFt7qys15 .cluster-label text{fill:#333;}#mermaid-svg-N25AaWoKFt7qys15 .cluster-label span{color:#333;}#mermaid-svg-N25AaWoKFt7qys15 .label text,#mermaid-svg-N25AaWoKFt7qys15 span{fill:#333;color:#333;}#mermaid-svg-N25AaWoKFt7qys15 .node rect,#mermaid-svg-N25AaWoKFt7qys15 .node circle,#mermaid-svg-N25AaWoKFt7qys15 .node ellipse,#mermaid-svg-N25AaWoKFt7qys15 .node polygon,#mermaid-svg-N25AaWoKFt7qys15 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-N25AaWoKFt7qys15 .node .label{text-align:center;}#mermaid-svg-N25AaWoKFt7qys15 .node.clickable{cursor:pointer;}#mermaid-svg-N25AaWoKFt7qys15 .arrowheadPath{fill:#333333;}#mermaid-svg-N25AaWoKFt7qys15 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-N25AaWoKFt7qys15 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-N25AaWoKFt7qys15 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-N25AaWoKFt7qys15 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-N25AaWoKFt7qys15 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-N25AaWoKFt7qys15 .cluster text{fill:#333;}#mermaid-svg-N25AaWoKFt7qys15 .cluster span{color:#333;}#mermaid-svg-N25AaWoKFt7qys15 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-N25AaWoKFt7qys15 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}与块8不相邻释放块0-2创建新空闲区起始块0,长度3检查相邻性插入表头新表:0,3-8,8
更新后空闲表
空闲区1: 起始块0, 长度3
空闲区2: 起始块8, 长度8操作4释放块3-75块
#mermaid-svg-sTZnYstAG6xTOGM4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .error-icon{fill:#552222;}#mermaid-svg-sTZnYstAG6xTOGM4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sTZnYstAG6xTOGM4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sTZnYstAG6xTOGM4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sTZnYstAG6xTOGM4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sTZnYstAG6xTOGM4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sTZnYstAG6xTOGM4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sTZnYstAG6xTOGM4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sTZnYstAG6xTOGM4 .marker.cross{stroke:#333333;}#mermaid-svg-sTZnYstAG6xTOGM4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sTZnYstAG6xTOGM4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .cluster-label text{fill:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .cluster-label span{color:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .label text,#mermaid-svg-sTZnYstAG6xTOGM4 span{fill:#333;color:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .node rect,#mermaid-svg-sTZnYstAG6xTOGM4 .node circle,#mermaid-svg-sTZnYstAG6xTOGM4 .node ellipse,#mermaid-svg-sTZnYstAG6xTOGM4 .node polygon,#mermaid-svg-sTZnYstAG6xTOGM4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sTZnYstAG6xTOGM4 .node .label{text-align:center;}#mermaid-svg-sTZnYstAG6xTOGM4 .node.clickable{cursor:pointer;}#mermaid-svg-sTZnYstAG6xTOGM4 .arrowheadPath{fill:#333333;}#mermaid-svg-sTZnYstAG6xTOGM4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sTZnYstAG6xTOGM4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sTZnYstAG6xTOGM4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-sTZnYstAG6xTOGM4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-sTZnYstAG6xTOGM4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sTZnYstAG6xTOGM4 .cluster text{fill:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 .cluster span{color:#333;}#mermaid-svg-sTZnYstAG6xTOGM4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sTZnYstAG6xTOGM4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}左邻块2右邻块8释放块3-7创建新区间3,5检查相邻性与0,3合并:0358 - 0,8与8,8合并:08816 - 0,16
最终空闲表
#mermaid-svg-85SseI21rKiotyZq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-85SseI21rKiotyZq .error-icon{fill:#552222;}#mermaid-svg-85SseI21rKiotyZq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-85SseI21rKiotyZq .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-85SseI21rKiotyZq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-85SseI21rKiotyZq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-85SseI21rKiotyZq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-85SseI21rKiotyZq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-85SseI21rKiotyZq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-85SseI21rKiotyZq .marker.cross{stroke:#333333;}#mermaid-svg-85SseI21rKiotyZq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-85SseI21rKiotyZq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-85SseI21rKiotyZq .cluster-label text{fill:#333;}#mermaid-svg-85SseI21rKiotyZq .cluster-label span{color:#333;}#mermaid-svg-85SseI21rKiotyZq .label text,#mermaid-svg-85SseI21rKiotyZq span{fill:#333;color:#333;}#mermaid-svg-85SseI21rKiotyZq .node rect,#mermaid-svg-85SseI21rKiotyZq .node circle,#mermaid-svg-85SseI21rKiotyZq .node ellipse,#mermaid-svg-85SseI21rKiotyZq .node polygon,#mermaid-svg-85SseI21rKiotyZq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-85SseI21rKiotyZq .node .label{text-align:center;}#mermaid-svg-85SseI21rKiotyZq .node.clickable{cursor:pointer;}#mermaid-svg-85SseI21rKiotyZq .arrowheadPath{fill:#333333;}#mermaid-svg-85SseI21rKiotyZq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-85SseI21rKiotyZq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-85SseI21rKiotyZq .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-85SseI21rKiotyZq .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-85SseI21rKiotyZq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-85SseI21rKiotyZq .cluster text{fill:#333;}#mermaid-svg-85SseI21rKiotyZq .cluster span{color:#333;}#mermaid-svg-85SseI21rKiotyZq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-85SseI21rKiotyZq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}空闲表头起始块:0 长度:16NULL
分配策略对比策略操作方式优点缺点首次适应从表头扫描选择首个足够大的区域分配速度快易产生外部碎片最佳适应扫描整个表选择最小的足够区域减少大空闲区割裂易产生微小碎片最差适应扫描整个表选择最大的空闲区减少微小碎片破坏大空闲区空间占用计算
假设
磁盘容量1TB块大小4KB平均空闲区大小16块
计算
总块数 1TB / 4KB 256M 块
平均空闲区数 256M / 16 16M
表项大小 8字节4字节起始块 4字节长度
总空间 16M × 8B 128MB优缺点分析优点缺点✅ 减少外部碎片❌ 分配时间随表增大而增加✅ 高效管理大文件❌ 小碎片无法利用✅ 支持快速连续访问❌ 需要定期合并操作✅ 实现相对简单❌ 大磁盘中表可能很大5. UNIX成组链接法
成组链接法是UNIX文件系统采用的高效空闲块管理方法核心思想是
分组管理将空闲块分成若干组链式连接每组最后一个块存储下一组信息超级块缓存内存中缓存第一组空闲块信息
#mermaid-svg-maQjY5cRMppsxGR8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .error-icon{fill:#552222;}#mermaid-svg-maQjY5cRMppsxGR8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-maQjY5cRMppsxGR8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-maQjY5cRMppsxGR8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-maQjY5cRMppsxGR8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-maQjY5cRMppsxGR8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-maQjY5cRMppsxGR8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-maQjY5cRMppsxGR8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-maQjY5cRMppsxGR8 .marker.cross{stroke:#333333;}#mermaid-svg-maQjY5cRMppsxGR8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-maQjY5cRMppsxGR8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .cluster-label text{fill:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .cluster-label span{color:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .label text,#mermaid-svg-maQjY5cRMppsxGR8 span{fill:#333;color:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .node rect,#mermaid-svg-maQjY5cRMppsxGR8 .node circle,#mermaid-svg-maQjY5cRMppsxGR8 .node ellipse,#mermaid-svg-maQjY5cRMppsxGR8 .node polygon,#mermaid-svg-maQjY5cRMppsxGR8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-maQjY5cRMppsxGR8 .node .label{text-align:center;}#mermaid-svg-maQjY5cRMppsxGR8 .node.clickable{cursor:pointer;}#mermaid-svg-maQjY5cRMppsxGR8 .arrowheadPath{fill:#333333;}#mermaid-svg-maQjY5cRMppsxGR8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-maQjY5cRMppsxGR8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-maQjY5cRMppsxGR8 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-maQjY5cRMppsxGR8 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-maQjY5cRMppsxGR8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-maQjY5cRMppsxGR8 .cluster text{fill:#333;}#mermaid-svg-maQjY5cRMppsxGR8 .cluster span{color:#333;}#mermaid-svg-maQjY5cRMppsxGR8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-maQjY5cRMppsxGR8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}块102指向块202指向超级块块100,101,102块200,201,202块300,301,302
完整示例12块磁盘的成组链接管理
初始状态3块/组
#mermaid-svg-6dOU6wHyVYrAtcUz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .error-icon{fill:#552222;}#mermaid-svg-6dOU6wHyVYrAtcUz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6dOU6wHyVYrAtcUz .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6dOU6wHyVYrAtcUz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6dOU6wHyVYrAtcUz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6dOU6wHyVYrAtcUz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6dOU6wHyVYrAtcUz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6dOU6wHyVYrAtcUz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6dOU6wHyVYrAtcUz .marker.cross{stroke:#333333;}#mermaid-svg-6dOU6wHyVYrAtcUz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6dOU6wHyVYrAtcUz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .cluster-label text{fill:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .cluster-label span{color:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .label text,#mermaid-svg-6dOU6wHyVYrAtcUz span{fill:#333;color:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .node rect,#mermaid-svg-6dOU6wHyVYrAtcUz .node circle,#mermaid-svg-6dOU6wHyVYrAtcUz .node ellipse,#mermaid-svg-6dOU6wHyVYrAtcUz .node polygon,#mermaid-svg-6dOU6wHyVYrAtcUz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6dOU6wHyVYrAtcUz .node .label{text-align:center;}#mermaid-svg-6dOU6wHyVYrAtcUz .node.clickable{cursor:pointer;}#mermaid-svg-6dOU6wHyVYrAtcUz .arrowheadPath{fill:#333333;}#mermaid-svg-6dOU6wHyVYrAtcUz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6dOU6wHyVYrAtcUz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6dOU6wHyVYrAtcUz .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6dOU6wHyVYrAtcUz .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6dOU6wHyVYrAtcUz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6dOU6wHyVYrAtcUz .cluster text{fill:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz .cluster span{color:#333;}#mermaid-svg-6dOU6wHyVYrAtcUz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6dOU6wHyVYrAtcUz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}块3存储块6存储块9存储块12存储超级块块1,2,3下一组指针:块4块4,5,6下一组指针:块7块7,8,9下一组指针:块10块10,11,12结束标记:0
内存超级块内容空闲块数空闲块列表3[1, 2, 3]操作1分配3个块
#mermaid-svg-PTybhOWboRsIc5vH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PTybhOWboRsIc5vH .error-icon{fill:#552222;}#mermaid-svg-PTybhOWboRsIc5vH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PTybhOWboRsIc5vH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-PTybhOWboRsIc5vH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PTybhOWboRsIc5vH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PTybhOWboRsIc5vH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PTybhOWboRsIc5vH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PTybhOWboRsIc5vH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PTybhOWboRsIc5vH .marker.cross{stroke:#333333;}#mermaid-svg-PTybhOWboRsIc5vH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PTybhOWboRsIc5vH .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-PTybhOWboRsIc5vH text.actortspan{fill:black;stroke:none;}#mermaid-svg-PTybhOWboRsIc5vH .actor-line{stroke:grey;}#mermaid-svg-PTybhOWboRsIc5vH .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-PTybhOWboRsIc5vH .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-PTybhOWboRsIc5vH #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-PTybhOWboRsIc5vH .sequenceNumber{fill:white;}#mermaid-svg-PTybhOWboRsIc5vH #sequencenumber{fill:#333;}#mermaid-svg-PTybhOWboRsIc5vH #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-PTybhOWboRsIc5vH .messageText{fill:#333;stroke:#333;}#mermaid-svg-PTybhOWboRsIc5vH .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-PTybhOWboRsIc5vH .labelText,#mermaid-svg-PTybhOWboRsIc5vH .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-PTybhOWboRsIc5vH .loopText,#mermaid-svg-PTybhOWboRsIc5vH .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-PTybhOWboRsIc5vH .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-PTybhOWboRsIc5vH .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-PTybhOWboRsIc5vH .noteText,#mermaid-svg-PTybhOWboRsIc5vH .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-PTybhOWboRsIc5vH .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-PTybhOWboRsIc5vH .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-PTybhOWboRsIc5vH .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-PTybhOWboRsIc5vH .actorPopupMenu{position:absolute;}#mermaid-svg-PTybhOWboRsIc5vH .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-PTybhOWboRsIc5vH .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-PTybhOWboRsIc5vH .actor-man circle,#mermaid-svg-PTybhOWboRsIc5vH line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-PTybhOWboRsIc5vH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}AppSuperBlockDisk请求分配3块直接分配块1,2,3读取块3内容返回[下一组指针块4]读取块4内容返回块4,5,6信息分配成功超级块更新为空闲数3列表[4,5,6]AppSuperBlockDisk
操作2再分配1个块
#mermaid-svg-7ITXz3LefvYw5MjJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .error-icon{fill:#552222;}#mermaid-svg-7ITXz3LefvYw5MjJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7ITXz3LefvYw5MjJ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7ITXz3LefvYw5MjJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7ITXz3LefvYw5MjJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7ITXz3LefvYw5MjJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7ITXz3LefvYw5MjJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7ITXz3LefvYw5MjJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7ITXz3LefvYw5MjJ .marker.cross{stroke:#333333;}#mermaid-svg-7ITXz3LefvYw5MjJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7ITXz3LefvYw5MjJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .cluster-label text{fill:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .cluster-label span{color:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .label text,#mermaid-svg-7ITXz3LefvYw5MjJ span{fill:#333;color:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .node rect,#mermaid-svg-7ITXz3LefvYw5MjJ .node circle,#mermaid-svg-7ITXz3LefvYw5MjJ .node ellipse,#mermaid-svg-7ITXz3LefvYw5MjJ .node polygon,#mermaid-svg-7ITXz3LefvYw5MjJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7ITXz3LefvYw5MjJ .node .label{text-align:center;}#mermaid-svg-7ITXz3LefvYw5MjJ .node.clickable{cursor:pointer;}#mermaid-svg-7ITXz3LefvYw5MjJ .arrowheadPath{fill:#333333;}#mermaid-svg-7ITXz3LefvYw5MjJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7ITXz3LefvYw5MjJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7ITXz3LefvYw5MjJ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7ITXz3LefvYw5MjJ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7ITXz3LefvYw5MjJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7ITXz3LefvYw5MjJ .cluster text{fill:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ .cluster span{color:#333;}#mermaid-svg-7ITXz3LefvYw5MjJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7ITXz3LefvYw5MjJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}空闲数3分配1块超级块状态分配块4更新超级块空闲数2列表5,6
操作3释放块10,11,12
#mermaid-svg-P3AVKvqIR5xRovHC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-P3AVKvqIR5xRovHC .error-icon{fill:#552222;}#mermaid-svg-P3AVKvqIR5xRovHC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-P3AVKvqIR5xRovHC .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-P3AVKvqIR5xRovHC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-P3AVKvqIR5xRovHC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-P3AVKvqIR5xRovHC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-P3AVKvqIR5xRovHC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-P3AVKvqIR5xRovHC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-P3AVKvqIR5xRovHC .marker.cross{stroke:#333333;}#mermaid-svg-P3AVKvqIR5xRovHC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-P3AVKvqIR5xRovHC .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-P3AVKvqIR5xRovHC text.actortspan{fill:black;stroke:none;}#mermaid-svg-P3AVKvqIR5xRovHC .actor-line{stroke:grey;}#mermaid-svg-P3AVKvqIR5xRovHC .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-P3AVKvqIR5xRovHC .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-P3AVKvqIR5xRovHC #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-P3AVKvqIR5xRovHC .sequenceNumber{fill:white;}#mermaid-svg-P3AVKvqIR5xRovHC #sequencenumber{fill:#333;}#mermaid-svg-P3AVKvqIR5xRovHC #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-P3AVKvqIR5xRovHC .messageText{fill:#333;stroke:#333;}#mermaid-svg-P3AVKvqIR5xRovHC .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-P3AVKvqIR5xRovHC .labelText,#mermaid-svg-P3AVKvqIR5xRovHC .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-P3AVKvqIR5xRovHC .loopText,#mermaid-svg-P3AVKvqIR5xRovHC .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-P3AVKvqIR5xRovHC .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-P3AVKvqIR5xRovHC .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-P3AVKvqIR5xRovHC .noteText,#mermaid-svg-P3AVKvqIR5xRovHC .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-P3AVKvqIR5xRovHC .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-P3AVKvqIR5xRovHC .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-P3AVKvqIR5xRovHC .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-P3AVKvqIR5xRovHC .actorPopupMenu{position:absolute;}#mermaid-svg-P3AVKvqIR5xRovHC .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-P3AVKvqIR5xRovHC .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-P3AVKvqIR5xRovHC .actor-man circle,#mermaid-svg-P3AVKvqIR5xRovHC line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-P3AVKvqIR5xRovHC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}AppSuperBlockDisk释放块10,11,12检查超级块状态添加块10,11,12到列表释放成功将当前组写入新释放块确认写入重置超级块指向新组alt[超级块未满][超级块已满]AppSuperBlockDisk
优缺点分析优点缺点✅ 分配效率高O(1)平均❌ 实现复杂度高✅ 释放操作快速❌ 小规模磁盘不划算✅ 减少磁盘I/O超级块缓存❌ 需维护链式结构✅ 天然抵抗碎片化❌ 极端情况需递归加载
三、文件共享和保护
文件共享机制
软链接与硬链接
硬链接Hard Link
底层原理
在 Linux 文件系统中
每个文件对应一个唯一的 inode索引节点inode 存储文件的元数据权限、大小、时间戳等硬链接是指向同一个 inode 的多个目录项
#mermaid-svg-Valo1GMXhtTxE2D0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .error-icon{fill:#552222;}#mermaid-svg-Valo1GMXhtTxE2D0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Valo1GMXhtTxE2D0 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Valo1GMXhtTxE2D0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Valo1GMXhtTxE2D0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Valo1GMXhtTxE2D0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Valo1GMXhtTxE2D0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Valo1GMXhtTxE2D0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Valo1GMXhtTxE2D0 .marker.cross{stroke:#333333;}#mermaid-svg-Valo1GMXhtTxE2D0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Valo1GMXhtTxE2D0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .cluster-label text{fill:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .cluster-label span{color:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .label text,#mermaid-svg-Valo1GMXhtTxE2D0 span{fill:#333;color:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .node rect,#mermaid-svg-Valo1GMXhtTxE2D0 .node circle,#mermaid-svg-Valo1GMXhtTxE2D0 .node ellipse,#mermaid-svg-Valo1GMXhtTxE2D0 .node polygon,#mermaid-svg-Valo1GMXhtTxE2D0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Valo1GMXhtTxE2D0 .node .label{text-align:center;}#mermaid-svg-Valo1GMXhtTxE2D0 .node.clickable{cursor:pointer;}#mermaid-svg-Valo1GMXhtTxE2D0 .arrowheadPath{fill:#333333;}#mermaid-svg-Valo1GMXhtTxE2D0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Valo1GMXhtTxE2D0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Valo1GMXhtTxE2D0 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Valo1GMXhtTxE2D0 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Valo1GMXhtTxE2D0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Valo1GMXhtTxE2D0 .cluster text{fill:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 .cluster span{color:#333;}#mermaid-svg-Valo1GMXhtTxE2D0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Valo1GMXhtTxE2D0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}file.txtbackup.txt目录AInode 123目录B数据块元数据:链接数2
创建与操作终端命令
# 创建原始文件
$ echo Original Content original.txt# 创建硬链接
$ ln original.txt hardlink.txt# 查看inode信息
$ ls -li
123456 -rw-r--r-- 2 user group 17 Jan 1 10:00 hardlink.txt
123456 -rw-r--r-- 2 user group 17 Jan 1 10:00 original.txt
# ↑ 相同的inode号123456和链接数2# 修改硬链接文件
$ echo New content hardlink.txt# 检查原始文件
$ cat original.txt
Original Content
New content# 删除原始文件
$ rm original.txt# 硬链接仍然有效
$ cat hardlink.txt
Original Content
New content关键特性特性说明inode 相同所有硬链接共享同一 inode文件大小与原文件相同不占用额外空间跨文件系统❌ 不支持链接目录❌ 不允许避免循环引用删除影响减少链接计数仅当计数为0时删除数据权限同步所有硬链接权限始终相同同一 inode使用场景
文件多重备份防止误删同一文件需要在多个位置访问节省空间的副本创建
软链接Symbolic Link / Symlink
底层原理
软链接是独立的文件有自己的 inode内容存储目标文件的路径字符串类似Windows的快捷方式
#mermaid-svg-4AwCyJjwZdSp3UcK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .error-icon{fill:#552222;}#mermaid-svg-4AwCyJjwZdSp3UcK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4AwCyJjwZdSp3UcK .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-4AwCyJjwZdSp3UcK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4AwCyJjwZdSp3UcK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4AwCyJjwZdSp3UcK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4AwCyJjwZdSp3UcK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4AwCyJjwZdSp3UcK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4AwCyJjwZdSp3UcK .marker.cross{stroke:#333333;}#mermaid-svg-4AwCyJjwZdSp3UcK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4AwCyJjwZdSp3UcK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .cluster-label text{fill:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .cluster-label span{color:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .label text,#mermaid-svg-4AwCyJjwZdSp3UcK span{fill:#333;color:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .node rect,#mermaid-svg-4AwCyJjwZdSp3UcK .node circle,#mermaid-svg-4AwCyJjwZdSp3UcK .node ellipse,#mermaid-svg-4AwCyJjwZdSp3UcK .node polygon,#mermaid-svg-4AwCyJjwZdSp3UcK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4AwCyJjwZdSp3UcK .node .label{text-align:center;}#mermaid-svg-4AwCyJjwZdSp3UcK .node.clickable{cursor:pointer;}#mermaid-svg-4AwCyJjwZdSp3UcK .arrowheadPath{fill:#333333;}#mermaid-svg-4AwCyJjwZdSp3UcK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-4AwCyJjwZdSp3UcK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-4AwCyJjwZdSp3UcK .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-4AwCyJjwZdSp3UcK .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-4AwCyJjwZdSp3UcK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-4AwCyJjwZdSp3UcK .cluster text{fill:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK .cluster span{color:#333;}#mermaid-svg-4AwCyJjwZdSp3UcK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-4AwCyJjwZdSp3UcK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}file.txtsymlink.txt内容为目录AInode 123数据块目录BInode 456/path/to/file.txt
创建与操作终端命令
# 创建原始文件
$ echo Source Content source.txt# 创建软链接绝对路径
$ ln -s /home/user/source.txt abs_link.txt# 创建软链接相对路径
$ ln -s source.txt rel_link.txt# 查看链接信息
$ ls -l
lrwxrwxrwx 1 user group 11 Jan 1 10:00 abs_link.txt - /home/user/source.txt
lrwxrwxrwx 1 user group 10 Jan 1 10:00 rel_link.txt - source.txt
-rw-r--r-- 1 user group 15 Jan 1 10:00 source.txt# 访问软链接
$ cat rel_link.txt
Source Content# 删除原始文件
$ rm source.txt# 软链接失效断链
$ cat rel_link.txt
cat: rel_link.txt: No such file or directory# 检查断链状态
$ ls -l rel_link.txt
lrwxrwxrwx 1 user group 10 Jan 1 10:00 rel_link.txt - source.txt # 红色显示关键特性特性说明inode独立于目标文件文件大小等于路径字符串长度跨文件系统✅ 支持链接目录✅ 允许删除影响目标文件删除后失效权限总是 777实际权限由目标决定核心区别对比特性硬链接软链接本质同一文件的多个目录项存储路径的特殊文件inode与目标文件相同独立 inode跨文件系统❌ 不支持✅ 支持链接目录❌ 禁止✅ 允许原始文件删除仍可访问链接数减1链接失效断链文件大小与目标文件相同路径字符串长度路径依赖无相对路径依赖位置更新影响所有链接同步更新链接指向不变目标可更换权限与目标相同总是 lrwxrwxrwx查找命令find . -samefile 文件find -type l -lsLinux 系统视角
#mermaid-svg-3QglSxdZoSWQlpoM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .error-icon{fill:#552222;}#mermaid-svg-3QglSxdZoSWQlpoM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3QglSxdZoSWQlpoM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-3QglSxdZoSWQlpoM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3QglSxdZoSWQlpoM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3QglSxdZoSWQlpoM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3QglSxdZoSWQlpoM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3QglSxdZoSWQlpoM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3QglSxdZoSWQlpoM .marker.cross{stroke:#333333;}#mermaid-svg-3QglSxdZoSWQlpoM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3QglSxdZoSWQlpoM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .cluster-label text{fill:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .cluster-label span{color:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .label text,#mermaid-svg-3QglSxdZoSWQlpoM span{fill:#333;color:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .node rect,#mermaid-svg-3QglSxdZoSWQlpoM .node circle,#mermaid-svg-3QglSxdZoSWQlpoM .node ellipse,#mermaid-svg-3QglSxdZoSWQlpoM .node polygon,#mermaid-svg-3QglSxdZoSWQlpoM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3QglSxdZoSWQlpoM .node .label{text-align:center;}#mermaid-svg-3QglSxdZoSWQlpoM .node.clickable{cursor:pointer;}#mermaid-svg-3QglSxdZoSWQlpoM .arrowheadPath{fill:#333333;}#mermaid-svg-3QglSxdZoSWQlpoM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3QglSxdZoSWQlpoM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3QglSxdZoSWQlpoM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-3QglSxdZoSWQlpoM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-3QglSxdZoSWQlpoM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3QglSxdZoSWQlpoM .cluster text{fill:#333;}#mermaid-svg-3QglSxdZoSWQlpoM .cluster span{color:#333;}#mermaid-svg-3QglSxdZoSWQlpoM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3QglSxdZoSWQlpoM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}Inode表文件A inode文件B inode软链接 inode数据块数据块路径字符串目录fileA → inodeXhardlink → inodeX目录symlink → inodeY
文件保护机制
1. 访问控制矩阵
#mermaid-svg-Mwh9ANwhkKnfs7vD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .error-icon{fill:#552222;}#mermaid-svg-Mwh9ANwhkKnfs7vD .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Mwh9ANwhkKnfs7vD .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .marker.cross{stroke:#333333;}#mermaid-svg-Mwh9ANwhkKnfs7vD svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .cluster-label text{fill:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .cluster-label span{color:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .label text,#mermaid-svg-Mwh9ANwhkKnfs7vD span{fill:#333;color:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .node rect,#mermaid-svg-Mwh9ANwhkKnfs7vD .node circle,#mermaid-svg-Mwh9ANwhkKnfs7vD .node ellipse,#mermaid-svg-Mwh9ANwhkKnfs7vD .node polygon,#mermaid-svg-Mwh9ANwhkKnfs7vD .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .node .label{text-align:center;}#mermaid-svg-Mwh9ANwhkKnfs7vD .node.clickable{cursor:pointer;}#mermaid-svg-Mwh9ANwhkKnfs7vD .arrowheadPath{fill:#333333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Mwh9ANwhkKnfs7vD .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Mwh9ANwhkKnfs7vD .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Mwh9ANwhkKnfs7vD .cluster text{fill:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD .cluster span{color:#333;}#mermaid-svg-Mwh9ANwhkKnfs7vD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Mwh9ANwhkKnfs7vD :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}访问控制矩阵域:用户/进程对象:文件权限:R/W/X
2. 访问控制列表ACL
原理为每个文件维护权限列表结构
#mermaid-svg-Hlri1r4WQjhogWjb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .error-icon{fill:#552222;}#mermaid-svg-Hlri1r4WQjhogWjb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Hlri1r4WQjhogWjb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Hlri1r4WQjhogWjb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Hlri1r4WQjhogWjb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Hlri1r4WQjhogWjb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Hlri1r4WQjhogWjb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Hlri1r4WQjhogWjb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Hlri1r4WQjhogWjb .marker.cross{stroke:#333333;}#mermaid-svg-Hlri1r4WQjhogWjb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Hlri1r4WQjhogWjb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .cluster-label text{fill:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .cluster-label span{color:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .label text,#mermaid-svg-Hlri1r4WQjhogWjb span{fill:#333;color:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .node rect,#mermaid-svg-Hlri1r4WQjhogWjb .node circle,#mermaid-svg-Hlri1r4WQjhogWjb .node ellipse,#mermaid-svg-Hlri1r4WQjhogWjb .node polygon,#mermaid-svg-Hlri1r4WQjhogWjb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Hlri1r4WQjhogWjb .node .label{text-align:center;}#mermaid-svg-Hlri1r4WQjhogWjb .node.clickable{cursor:pointer;}#mermaid-svg-Hlri1r4WQjhogWjb .arrowheadPath{fill:#333333;}#mermaid-svg-Hlri1r4WQjhogWjb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Hlri1r4WQjhogWjb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Hlri1r4WQjhogWjb .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Hlri1r4WQjhogWjb .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Hlri1r4WQjhogWjb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Hlri1r4WQjhogWjb .cluster text{fill:#333;}#mermaid-svg-Hlri1r4WQjhogWjb .cluster span{color:#333;}#mermaid-svg-Hlri1r4WQjhogWjb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Hlri1r4WQjhogWjb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}文件X ACL用户A:RWX用户B:R--组C:R-X
3. UNIX权限模型9-bit
权限位分解
“文件类型”: 1
“所有者权限” : 3
“组权限” : 3
“其他用户” : 3
权限示例
第一位表示文件的类型-代表文件d代表目录-rwxr-xr--↑↑↑↑ ↑↑│||| |└─ 其他读│||| └── 组执行│|│└── 组读││└──── 所有者执行|└───── 所有者写└────── 所有者读[“hardlink → inodeX”]
Directory2[目录] -- EntryC[“symlink → inodeY”]#### 文件保护机制##### 1. 访问控制矩阵mermaid
graph LRA[访问控制矩阵] -- B[域:用户/进程]A -- C[对象:文件]B -- D[权限:R/W/X]2. 访问控制列表ACL
原理为每个文件维护权限列表结构
#mermaid-svg-I8SCFaip7ZtqiXaI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .error-icon{fill:#552222;}#mermaid-svg-I8SCFaip7ZtqiXaI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-I8SCFaip7ZtqiXaI .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-I8SCFaip7ZtqiXaI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-I8SCFaip7ZtqiXaI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-I8SCFaip7ZtqiXaI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-I8SCFaip7ZtqiXaI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-I8SCFaip7ZtqiXaI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-I8SCFaip7ZtqiXaI .marker.cross{stroke:#333333;}#mermaid-svg-I8SCFaip7ZtqiXaI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-I8SCFaip7ZtqiXaI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .cluster-label text{fill:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .cluster-label span{color:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .label text,#mermaid-svg-I8SCFaip7ZtqiXaI span{fill:#333;color:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .node rect,#mermaid-svg-I8SCFaip7ZtqiXaI .node circle,#mermaid-svg-I8SCFaip7ZtqiXaI .node ellipse,#mermaid-svg-I8SCFaip7ZtqiXaI .node polygon,#mermaid-svg-I8SCFaip7ZtqiXaI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-I8SCFaip7ZtqiXaI .node .label{text-align:center;}#mermaid-svg-I8SCFaip7ZtqiXaI .node.clickable{cursor:pointer;}#mermaid-svg-I8SCFaip7ZtqiXaI .arrowheadPath{fill:#333333;}#mermaid-svg-I8SCFaip7ZtqiXaI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-I8SCFaip7ZtqiXaI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-I8SCFaip7ZtqiXaI .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-I8SCFaip7ZtqiXaI .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-I8SCFaip7ZtqiXaI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-I8SCFaip7ZtqiXaI .cluster text{fill:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI .cluster span{color:#333;}#mermaid-svg-I8SCFaip7ZtqiXaI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-I8SCFaip7ZtqiXaI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}文件X ACL用户A:RWX用户B:R--组C:R-X
3. UNIX权限模型9-bit
权限位分解
“文件类型”: 1
“所有者权限” : 3
“组权限” : 3
“其他用户” : 3
权限示例
第一位表示文件的类型-代表文件d代表目录-rwxr-xr--↑↑↑↑ ↑↑│||| |└─ 其他读│||| └── 组执行│|│└── 组读││└──── 所有者执行|└───── 所有者写└────── 所有者读