首页 > 其他分享 >第四周学习笔记

第四周学习笔记

时间:2022-09-25 22:45:58浏览次数:56  
标签:文件 调用 int 分区 笔记 st 学习 描述符 四周

第7章 文件操作——教材知识点归纳

7.1文件操作级别
(1)硬件级别:
fdisk:讲盘进行分区
mfks:格式化磁盘分区
fsck:检查和维修系统
2)操作系统内核中的文件系统函数:其中前缀k表示内核函数
3)系统调用:用户模式程序使用系统调用来访问内核函数
4)I/O库函数:使用库函数进行文件操作
5)用户命令:使用unix/linux命令来执行文件操作
6)sh脚本:比系统调用方便,但需要手动输入命令,比较繁琐
7.2文件I/O操作

7.3低级别文件操作
1)分区:一个块存储设备分为几个逻辑单元,称为分区
在Linux下创建一个名为mydisk的虚拟磁盘映像文件,并在磁盘映像文件上运行fdisk

2)格式化分区:为特定的文件系统准备好分区
3)挂载分区:创建一个虚拟磁盘映像,在vdisk上运行fdisk来创建一个分区p1

7.3低级别文件操作
磁盘可以被划分成多个逻辑单元,称为分区。操作系统引导程序可以从不同的分区引导不同的操作系统。有主引导记录(MBR)。MBR可以将硬盘分为多个区,扩展分区在扩展分区区域内形成一个链表,对应多个分区。
fdisk将一个存储设备进行分区。而仅仅使用fdisk完成的分区并不能使用,还需要格式化分区。格式化分区的作用是为特定的文件系统准备分区,来存储文件。使用的是mkfs命令。

7.4-7.5 ext2文件系统
Linux使用的默认文件系统就是ext2。ext2文件系统总共有1440个块,每个块大小1KB。其中B0是引导块,文件系统不使用,它用于容纳引导操作系统时使用的引导程序。
B1是超级块,用于容纳关于整个文件系统的信息。

Block#0:引导块—容纳从磁盘应道操作系统的引导程序。

Block#1:超级块—用于容纳关于整个文件系统的信息。

Block#2:块组描述符块—EXT2将磁盘块分成几个组,每组由8192个块,每组用一个块组描述符结构体描述。

Block#8:块位图—表示磁盘块或者索引节点的位序列,用于分配和回收项。

Block#10:索引(开始)节点块
第七章实践
fdisk实践
创建分区


打印分区表,显示所有文件系统类型的十六进制唯一值

第8章 使用系统调用进行文件操作——教材知识点归纳

8.1-8.2系统调用和I/O库函数
操作系统中,进程以两种不同的方式运行:内核模式(Kmode)和用户模式(Umode)。Umode权限有限,特殊权限的操作需要在Kmode下进行。系统调用(System Call)机制允许进程进入Kmode,执行更高权限的操作。

Linux系统调用手册页保存在/usr/man/目录中,Ubuntu保存在/usr/share/man目录。
8.3使用系统调用进行文件操作
系统调用由程序发出,每个系统调用是一个库函数,汇集系统调用参数,最终向内核发出系统调用。
stat 获取文件状态信息
open 打开一个文件进行读、写、追加
close 关闭打开的文件描述符
read 读取打开的文件描述符
write 写入打开的文件描述符
lseek 重新定位文件描述符的读/写偏移量
dup 将文件描述符复制到可用的最小描述编号中
dip2 将oldfd复制到newfd中,如果newfd一打开,先将其关闭
link 将新文件硬链接到旧文件
unlink 减少文件的链接数;如果链接数达到零,则删除文件
symlink 为文件创建一个符号链接
readlink 读取符号链接文件的内容
umask 设置文件创建掩码;文件权限为 (mask&~umasl)
8.4常用的系统调用
常用文件操作:

int stat(char *filename, struct stat *buf);获取文件状态信息
int open(char *file, int flags,int mode);打开一个文件进行读、写
int close(int fd);关闭打开的文件描述符
int read(int fd, char buf[], int count);读取
int write(int fd, char buf[], int count);写入
8.5链接文件
硬链接文件命令:

In oldpath newpath

软连接文件命令:

in -s oldpath newpath
8.6 stat结构体
所有的stat系统调用都以stat结构体形式返回信息
struct stat {
mode_t st_mode; //文件相应的模式。文件,文件夹等
ino_t st_ino; //inode节点号
dev_t st_dev; //设备号码
dev_t st_rdev; //特殊设备号码
nlink_t st_nlink; //文件的连接数
uid_t st_uid; //文件全部者
gid_t st_gid; //文件全部者相应的组
off_t st_size; //普通文件。相应的文件字节数
time_t st_atime; //文件最后被訪问的时间
time_t st_mtime; //文件内容最后被改动的时间
time_t st_ctime; //文件状态改变时间
blksize_t st_blksize; //文件内容相应的块大小
blkcnt_t st_blocks; //伟建内容相应的块数量
};
8.7open-close-lseek系统调用
文件在C程序中都是以描述符的形式管理。通过文件管理,可以对文件进行读取、写入。

int lseek(int fd, int offset, int whence);将文件描述符的直接偏移量重新定义。

8.8~8.10 read()系统调用、write系统调用
read()将n个字节从打开的文件描述符读入用户控件中的buf[]。如果失败则返回-1。
write()将n个字节从buf写入,以打开文件描述符方式中的写、读写或追加的形式完成,返回值为实际写入的字节数,通常等于n。
通过使用read()、write()系统调用,可以实现文件的复制。
第八章实践内容
参照例题8.1,完成了用mkdir()系统调用来创建新目录
代码如下:

运行截图:

遇到的问题并解答

问题1:为什么会出现系统调用的效率比库函数要低很多?
解答:系统调用会影响系统的性能。执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减小这种开销的好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。

标签:文件,调用,int,分区,笔记,st,学习,描述符,四周
From: https://www.cnblogs.com/gtgtgt/p/16729259.html

相关文章

  • 笔记本
    笔记本本隐私政策更新时间:2022年8月生效时间:2021年8月广州菁宏信息科技有限公司非常注重保护用户(“您”)的个人信息及隐私,我们深知个人信息对您的重要性,并将按照法律法规要......
  • 《Unix/Linux系统编程》第四周学习笔记
    《Unix/Linux系统编程》第四周学习笔记文件操作(第7章)文件操作级别硬件级别:硬件级别的文件操作包括:`fdisk`:将硬件、U盘或SDC盘分区。`mkfs`:格式化磁盘分区,为系统做好......
  • Day11 多线程的学习,线程一些方法的使用
    Day11多线程的学习线程休眠sleep的使用sleep可以模拟网络延迟和倒计时。模拟网络延迟在线程中使用Thread.sleep()方法,能够放大问题的发生性,能更好的把握问题所在。比......
  • 【Coel.学习笔记】特殊的图 - 仙人掌与圆方树
    你是什么仙人?引入仙人掌是一种特殊的无向图,它的任意一条边至多只出现在一条简单回路(每个点只出现一次的回路是简单回路,特殊地,自环不算简单回路)。这里借用一下[SHOI2006......
  • 《JavaScript高级程序设计》Chapter03学习笔记
    Chapter03JavaScriptLanguageSyntax类C区分大小写,标识符可以字母、下划线(_)、美元符号($)开头语句以分号(;)结尾:虽然不加分号也是被允许的,但会导致性能的降......
  • 第七、八章学习笔记
    第七章   文件操作第七章的主要内容是文件操作,主要包括以下几个方面:文件操作级别文件I/O操作低级别文件操作EXT2文件系统简介一、知识点归纳以及自己最有收获......
  • 第七、八章笔记
    ......
  • 学期(如2022-2023-1) 学号(如:20221320) 《计算机基础与程序设计》第四周学习总结
    学期(如2022-2023-1)学号(如:20221320)《计算机基础与程序设计》第四周学习总结作业信息 作业属于课程<班级的链接>([2022-2023-1-计算机基础与程序设计](https://edu.cnblog......
  • 9月25学习总结
    第一周总结一、typora软件与markdown语法1.typora软件typora是一个文本编辑器,文本阅读器,是现今最火爆的文本编辑器。Typora中格式,字体,主题样式都是可以根据自己的喜好......
  • verilog学习
    可综合/不可综合可综合:语法结构能与实际硬件电路对应起来不可综合:语法结构不能与实际硬件电路对应起来可综合语句:input、output、parameter、reg、wire、always、assign......