首页 > 其他分享 >20211301 学习笔记5

20211301 学习笔记5

时间:2023-10-15 18:24:23浏览次数:43  
标签:record 文件系统 笔记 学习 索引 20211301 磁盘 挂载 节点

20211301 学习笔记5

教材知识点总结

11.1 EXT2文件系统

  • EXT2:linux的默认文件系统

  • EXT3:扩展,增加了日志文件

  • EXT4:磁盘块的分配

11.2 EXT2文件系统数据结构

  • 创建虚拟磁盘:创建指定个块和索引节点的文件系统,可以在虚拟磁盘也可以在真实设备上

  • 虚拟磁盘布局:

  • 超级块:容纳整个文件系统的信息

  • 常用块:小文件系统1kb,大文件系统4kb

  • 块组件描述符:将磁盘块分为几个组,每组用一个块组件描述符结构来描述,指向块组的快位图、索引节点位图、索引节点起始块。

  • 块位图:Bmap 位图用来表示某种项的位序列,分配和回收项

  • 索引节点位图:一个索引节点用来代表一个文件的数据结构

  • 索引节点:每个文件都用一个128字节的唯一索引节点结构体表示

直接块:指向直接磁盘块
间接块:指向一个包含256个块编号的磁盘块,每个块指向1个磁盘块
双重间接块:指向一个指向256个块的快,每个块指向256个磁盘块

  • 数据块:紧跟在索引节点块后面

  • 目录条目:包含dir——entry结构(可扩充结构,不含终止NULL)

  • 邮差算法:线性地址转换为街区地址

  • 邮差算法应用:

  • 索引节点:将索引节点号转换为磁盘上的索引节点

11.10

  • 三级文件系统:支持文件系统的挂载、卸载和文件保护

  • 挂载算法mount filesys mount_point可将某个文件系统挂载在mount——point目录上,允许文件系统包含其他文件系统作为现有文件系统的一部分

  • 卸载算法:卸载文件系统操作可卸载已经挂载的文件系统,将挂载文件与挂载点分开

  • 交叉挂载点:挂载必须修改函数,遍历一个路径名可能出现交叉

向下遍历:跟随指针来定位挂载表条目,将根索引节点放入内存,然后在挂载设备的根索引节点下搜索x
向上遍历:向上级目录遍历,会与挂载点交叉,切换根目录

  • 文件保护:通过文件索引节点的权限位实现文件保护

  • 实际uid:当某进程执行setuid程序时,该程序打开文件的setuid位,有效uid就变成了uid

  • 有效uid: 简单起见,忽略

  • 文件锁定:允许进程对一个文件设置文件锁,防止在更新文件时出现竟态条件

代码实现

  • 用一个c程序实现linux中who的功能
#include <stdio.h>
#include <stdlib.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>

int main() {
    struct utmp current_record;
    int utmpfd;
    int reclen = sizeof(current_record);

    if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1) {
        perror(UTMP_FILE);
        exit(1);
    }

    while (read(utmpfd, &current_record, reclen) == reclen) {
        if (current_record.ut_type == USER_PROCESS) {
            printf("%-8.8s", current_record.ut_user);
            printf(" ");
            printf("%-8.8s", current_record.ut_line);
            printf(" ");
            long t = current_record.ut_time;
            printf("%12.12s", ctime(&t) + 4);
            printf(" ");
            #ifdef SHOWHOST
            printf("(%s)", current_record.ut_host);
            #endif
            printf("\n");
        }
    }

    close(utmpfd);
    return 0;
}
  • 交叉挂载
int dev;
if(pathname[0]=='\')
  dev = root->dev;
else
  dev = runnig->cwd->dev;
int ino=getino(pathname,&dev)
  • man-k用法

苏格拉底提问









参考网站

https://zhuanlan.zhihu.com/p/585475479#目录

标签:record,文件系统,笔记,学习,索引,20211301,磁盘,挂载,节点
From: https://www.cnblogs.com/pengqiqi/p/17765517.html

相关文章

  • 2023-2024-1 20231402《计算机基础与程序设计》第3周学习总结
    2023-2024-120231402《计算机基础与程序设计》第3周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第3周作业这个作业的目标自学计算机科学概论第2章,第3章,《C语言程序设计》第2章......
  • SQL的学习
    关键字系统提供的特殊含义的单词或者字母例如intvarchar标识符注释--单行注释/* */ 多行注释存储过程的变量定义分类MySQL用户变量--全局变量set@变量=初始值使用sql语句中直接用局部变量是定义存储过程和函数里面的变量,只有在begin和end之间有效declare......
  • 学习笔记5
    目录知识点归纳第11章EX2文件系统数据结构苏格拉底挑战问题与解决方案实践过程知识点归纳第11章EX2文件系统数据结构Linux一直将EXT2作为默认文件系统。EXT3是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,他将文件系统的变更记录在日志中。日志可在文件系统崩溃时更快地......
  • Linux系统第四章文件权限读书笔记
    基本权限UGO:     1.UGO权限的含义:UGO是Linux文件权限管理中的基本概念,表示用户(User)、组(Group)、其他人(Others)。这三个范围定义了文件或目录的访问权限,控制着谁可以执行何种操作。User(用户):这是文件或目录的所有者。用户权限是最重要的,因为他们拥有最高级别的控制权......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第三周学习总结
    目录作业信息教材学习内容总结1.《计算机科学概论》第二章,第三章2.《c语言程序设计》第二章作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《计算机科学概论》第二章,第三章并完成云班课测试;2.学习《C语言程......
  • 解决uboot ping不通的硬件问题--Apple的学习笔记
    一,前言之前uboot偶尔第一次上电会ping通一次,之后就ping不通,我以为电源问题,好像也不是,然后我又认为是交叉网线问题,我用的可能是直连网线,之前用的交叉网线头子坏了我就丢了。于是网上买了新的交叉网线,到货后依然ping不通,而且一次都不行了。难道代码有问题,于是用了我之前的uboot代码,结......
  • python学习——回归模型
    从本篇开始记录一下我在研究生阶段的学习作业之成人死亡率预测(回归模型)1实验介绍1.1实验背景成年人死亡率指的是每一千人中15岁至60岁死亡的概率(数学期望)。这里我们给出了世界卫生组织(WHO)下属的全球卫生观察站(GHO)数据存储库跟踪的所有国家健康状况以及许多其他相关因素。要......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第三周学习总结
    2023-2024-120231320《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第三周作业)这个作业的目标<自学《计算机基础与......
  • 学习笔记5
    EXT2文件系统EXT2(TheSecondExtendedFileSystem)是Linux的标准文件系统,一直以来被广泛使用。EXT3是EXT2的扩展版本,增加了一个日志系统。文件系统背景Linux标准文件系统:EXT2是Linux的标准文件系统,多年来一直被广泛使用。EXT3的扩展:EXT3是EXT2的扩展版本,主要增加了一个日......
  • springboot的学习--bean的作用域
    bean默认会在springboot项目运行即容器启动时被创建,我们可以用@Lazy注解来延迟初始化,该注解可以将bean对象的创建延迟到第一次使用时创建 我们也可以使用@Scope注解来配置作用域,如果不配置,一般是@Scope(”singleton")默认单例,而使用@Scope("prototype")配置可以在每次使用该bean的......