首页 > 系统相关 >第四周Linux教材第七、八章学习笔记——文件操作、系统调用

第四周Linux教材第七、八章学习笔记——文件操作、系统调用

时间:2023-10-01 18:56:18浏览次数:39  
标签:文件 八章 分区 系统 文件系统 调用 Linux 教材 Block

第七章

7.1  文件操作级别

文件操作分5个级别(从低到高):

(1)硬件级别

文件操作包括:fdisk——将硬盘、U盘或SDC盘分区;

                         mkfs——格式化磁盘分区,为系统做好准备;

                         fsck——检查和维修系统;

                         碎片整理——压缩文件系统中的文件。

(2)操作系统内核中的文件系统函数:每个系统操作内核均可为基本文件操作提供支持。Unix系统内核中的函数有(前缀k表示内核函数):

 (3)系统调用:用户模式程序使用系统调用来访问内核函数。

   

 此程序可读取文件的1024字节,但编译后显示出现错误:

 (4)I/O库函数:系统调用可让用户读/写多个数据块,这些数据快只是一系列字节。

C语言提供了一系列标准的库函数,提高了运行效率。

 除了读/写内存位置的sscanf()/sprintf()函数之外,所有其他的I/O库函数都建立在系统调用之上,也就是说,它们最终会通过系统内核发出实际数据传输的系统调用。

(5)用户命令:用户可以使用Unix/Linux命令来执行文件操作,而不是编写程序。

用户命令的示例有:mkdir , rmdir , cd , pwd , ls , link , unlink , rm , cat , cp , mv , chmod ……

每个用户命令实际上是一个可执行程序(cd除外),通常会调用I/O库函数,而I/O库函数再发出系统调用来调用相应的内核函数。用户命令的处理顺序为:

 (6)sh脚本:虽然比系统调用方便,但是要手动输入命令。sh脚本广泛应用于Linux系统编程。除了sh之外,Perl和Tel等其他脚本语言也使用广泛。

7.2  文件I/O操作

下图为文件I/O操作示意图:

 7.3  低级别文件操作

 7.3.1  分区

一个块存储设备,如硬盘、U盘、SD卡等,可以分为几个逻辑单元,称为分区。各分区均可以格式化为特定的文件系统,也可以安装在不同的操作系统上。分区表位于第一个扇区的字节偏移446(0xIBE)处,该扇区称为设备的主引导记录(MBR)。表有4个条目,每个条目有一个16字节的分区结构体定义,即:

 也可形成扩展分区链表:

 在Linux下创建一个名为mydisk的虚拟磁盘映像文件并在磁盘映像文件上运行fdisk:

 编写一个C程序,虚拟磁盘映像的分区和扩展分区,其格式与fdisk相同显示:

(1)访问MBR中的分区表:

 (2)假设P4是start_sector=n的扩展类型(类型=5)。

 (3)扩展分区形成一个“链表”,以一个NULL“指针”结束。

 7.3.2  格式化分区

 7.3.3  挂载分区

(1)用dd命令创建一个虚拟磁盘映像:

(2)在vdisk上运行fdisk来创建一个分区P1:

 创建分区P1,将分区表写入vdisk并退出fdisk:

 (3)创建循环设备并读进程:

 (4)格式化 /dev/loop1,它是一个EXT2文件系统:

该分区的大小是63488个扇区。4KB块的扇区大小是63488 / 8=7936。

 (5)挂载循环设备:

 (6)访问作为文件系统一部分的挂载设备:

 (7)设备使用完毕后,使用命令umount /mnt 将其卸载。

(8)循环设备使用完毕后,使用命令losetup -d /dev/loop1 将其断开。

7.4  EXT2文件系统简介

 创建一个包含简单EXT2文件系统的虚拟磁盘:

 这种EXT2文件系统的布局如图:

  • Block#0:引导块——文件系统不会使用它,它用于容纳从磁盘引导操作系统的引导程序。
  • Block#1:超级块——用于容纳关于整个文件系统的信息。

    

  • Block#2:块组描述符块——EXT2将磁盘块分成几个组,每个组有8192个块,每组用一个块组描述符结构体描述。
  • Block#8:块位图——用来表示某种项的位序列。
  • Block#9:索引节点位图——一个索引节点就是用来代表一个文件的数据结构。
  • Block#10:索引(开始)节点块——每个文件都用一个128字节的独特索引点结构体表示。

第八章

8.1  系统调用

8.2  系统调用手册页

8.3  使用系统调用进行文件操作

 成功创建newdir文件:

8.4  常用的系统调用

8.5  链接文件

有两种类型的链接:硬链接、软连接(或符号链接)

8.5.1  硬链接

ln  olspath newpath对应的系统调用为link(char *oldpath, char *newpath)

8.5.2  软连接

命令ln -s oldpath newpath对应的系统调用是symlink(char *oldpath,char *newpath)

8.6  stat系统调用

利用man 2 stat命令显示stat系统调用手册页:

 向ChatGpt请求苏格拉底式询问

 学习总结

有关文件操作的知识点还需加强记忆,系统调用这一章还有许多不理解的地方,还需进行深入学习。

标签:文件,八章,分区,系统,文件系统,调用,Linux,教材,Block
From: https://www.cnblogs.com/20211115fyq/p/17739128.html

相关文章

  • Linux第五周技术博客
    这周我们学习Linux用户的管理我们需要了解普通用户和超级管理员的区别,用户命令的增删改查,普通用户于超级管理员之间的切换,普通用户之间的切换,普通用户的配置文件操作Linux系统是一个多用户多任务的分时操作系统,每个进程都有一个特定的文件,文件为一个特定的用户拥有。每一个用户......
  • 一键部署可视化Linux内核与驱动调试环境
    dockerrun-itd--privileged--name"linux-driver-debug-test"registry.cn-hangzhou.aliyuncs.com/loongenclave/linux-driver-debug:latest哔哩哔哩视频......
  • Linux系统中驱动面试分享
    1、驱动程序分为几类?字符设备驱动块设备驱动网络设备驱动2、字符设备驱动需要实现的接口通常有哪些open、close、read、write、ioctl等接口。3、主设备号与次设备号的作用主设备号和次设备号是用来标识系统中的设备的,主设备号用来标识设备的类型,次设备号用来标识具体的设备,以便系统......
  • 2023-2024-1 20211211《信息安全系统设计与实现》(上)第七、八章读书笔记
    教材第七、八章读书笔记第七章知识点归纳1文件操作级别-(1)硬件级别:-(2)操作系统中的文件系统函数-(3)系统调用-(4)I/O库函数-(5)用户命令-(6)sh脚本2文件I/O操作-(1)文件I/O操作示意图-(2)用户模式下的程序执行操作3低级别文件操作-(1)分区-(2)格式化分区-(3)挂载分区4EXT......
  • Linux第三周技术博客
    这周我们开始学习Linux文件管理首先我们来学习Linux文件目录与路径,Windows系统以多根的方式组织文件,它可以有多个根目录。而Linux系统所有的文件都在根目录/下,其中箭头指向真实存在的文件。如果用户想要查看根目录下的文件用ls命令,输出结果中不同颜色代表不同的文件类型,蓝色代......
  • 信息安全系统设计与实现课程第七、八章学习笔记
    一、知识点归纳1.1、文件操作级别文件操作分为五个级别,按照从低到高的顺序排列如下:(1)硬件级别:硬件级别的文件操作包括:fdisk:用于将硬盘、U盘或SD卡等存储设备分区。mkfs:用于格式化磁盘分区,为文件系统做好准备。fsck:用于检查和维修文件系统的一致性。碎片整理:用于压缩......
  • linux 设置环境变量
    当我们在Linux下执行一个命令时,报-bash:XXXX:commandnotfound,这和Windows是相同的道理,都是环境变量惹的祸,就是说你的命令的执行文件不在/usr/bin或者/etc/init.d中,他就找不到执行该命令的文件来执行.思路是将该应用的bin目录放入到profile文件中就OK了 1......
  • 苍穹外卖-第八章来单提醒
    1.SpringTask1.1介绍SpringTask是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码为什么要在Java程序中使用SpringTask?应用场景:信用卡每月还款提醒银行贷款每月还款提醒火车票售票系统处理未......
  • wordpress搭建-AlmaLinux
    yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.sh==================================================================Congratulations!Installedsuccessfully!========================面板账......
  • linux中awk命令对fastq格式的碱基质量体系进行判断
     001、[root@pc1test]#lsa.fastq[root@pc1test]#head-n4a.fastq##测试fastq格式数据@SRR12342886.11/1TCTTCAAAAATTTCTCACAGCTTGTTGTGATCCACACAGTCAAAGGCTTTAAGTGTAGTCAGTGAAGCAGAAGTGGATATTTTTCTGGAATTCCCTTGCTTTCTCTGTGATCCAAGGGATTTGATCTCTGGTTCCTCTG......