首页 > 其他分享 >第四周学习总结

第四周学习总结

时间:2023-10-01 18:11:25浏览次数:26  
标签:总结 char 调用 文件 int 学习 描述符 四周 链接

自学教材第7,8章,提交学习笔记(10分),评分标准如下

1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分)

“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”

核心是要求GPT:“请你以苏格拉底的方式对我进行提问”

然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”

如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”

GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。


2. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)
3.   实践过程截图,代码链接(2分)
4.    其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)

一、课本第七、八章内容总结

第七章 文件操作

1.文件操作级别

(1)硬件级别:
  fdisk:将硬盘、U盘或SDC盘分区。
  mkfs:格式化磁盘分区,为系统做好准备。
  fsck:检查和维修系统。
  碎片整理:压缩文件系统中的文件。

(2)操作系统内核中的文件系统函数:

  每个操作系统内核均可为基本文件操作提供支持。

(3)系统调用:

  之前学习过的open()、read()、close()等函数。

(4)I/O库函数:

  除sscanf()/sprintf()函数外都建立在系统调用之上。

    FILE mode I/O:fopen(),fread(); fwrite(),fseek(),fclose(),fflush()

    char mode I/O:gete(), getchar(),ugete(); putc(),putchar()

    line mode I/O:gets(),fgets0; puts(),fputs()

    formatted I/O:scanf(),fscanf(),sscanf(); printf(),fprintf(),sprintf()

(5)用户命令:

  用户命令实际上是一个可执行程序。

(6)sh脚本:

  用sh语言编写的程序

2.文件I/O操作

  整个I/O操作的大致流程为

 双线上半部分为内核空间,下半部分为用户空间。以下为用户模式下的操作:

①首先用I/O操作语句打开一个读写文件流。

②在用户空间中创建一个FILE结构体,向内核发出系统调用,返回文件描述符。

③从结构体中复制数据。

④读取复制数据,再复制到结构体中。

3.低级别文件操作

(1)分区

一个块存储设备可以分为几个逻辑单元,称为分区。

分区表位于第一个扇区的字节偏移446处,成为设备的主引导记录(MBR)。如果某分区是扩展类型,则可以划分为更多分区,每个扩展分区的第一个扇区是一个本地MBR。

(2)格式化分区

fdisk是一个交互程序,允许用户创建、检查和修改分区。但它只是将一个存储设备划分为多个分区。为了存储文件,必须先为特定的文件系统准备好分区,该操作习惯上称为格式化磁盘或磁盘分区。在Linux中,可以通过以下语句实现:

  mkfs -t TYPE [-b bsize] device nblocks

4.EXT2文件系统简介

EXT2是Linux的默认文件系统。

(1)数据结构

在Linux下,我们可以通过以下两个语句创建一个包含简单EXT2文件系统的虚拟磁盘。
  dd if=/dev/zero of=mydisk bs=1024 count=1440
  mke2fs -b 1024 mydisk 1440

得到的EXT2文件系统有1440个块,每个块大小为1KB。可以直接作为虚拟(软)磁盘。

(2)超级块

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

(3)块组描述符

Block#2:将磁盘块分为几个组,每组用一个块组描述符结构体描述。

(4)位图

块位图:用来表示某种项的位序列。

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

(5)索引节点

每个文件用一个独特索引节点结构体表示。

第五部分为编程示例。

第八章 使用系统调用进行文件操作

1.使用系统调用进行文件操作

系统调用必须由程序发出。它们的用法就像普通函数调用一样。每个系统调用都是一个库函数,它汇集系统调用参数,并最终向操作系统内核发出一个系统调用。例如:
      int syscall(int a,int b,int c,int d);
其中,第一个参数a是系统调用编号,b、c、d是对应内核函数的参数。

2.常用的系统调用

stat:获取文件状态信息

open:打开一个文件进行读写追加

close:关闭打开的文件描述符

read:读取打开的文件描述符

write:写入打开的文件描述符

lseek:重新定位文件描述符的读写偏移量

dup:将文件描述符复制到可用的最小描述符编号中

dup2:将oldfd复制到newfd中,如果newfd已打开,先将其关闭

int dup2(int oldfd, int newfd)

link:将新文件硬链接到旧文件 int link(char *oldPath,char *newPath)

unlink:取消某个文件的链接;如果文件链接数为0,则删除文件 int unlink(char *pathname)

symlink:创建一个符号链接 int symlink(char *target,char *newpath)

readlink:读取符号链接文件的内容 int readlink(char *path, char *buf,int bufsize)

umask:设置文件创建掩码;文件权限为(mask&~umask) int umask(int umask)

3.链接文件

使用不同路径名来表示同一个文件,叫做链接文件。

(1)硬链接文件

link(char *oldpath,char *newpath)

创建从newpath到oldpath的路径。

(2)符号链接文件

软链接命令:symlink(char *oldpath,char *newpath)

创建软链接或符号链接。

4.stat系统调用

可将一个文件的信息返回。不需要拥有文件的访问权限即可获取该信息。

所有stat调用都以stat结构体形式返回信息,其中包含以下字段:

 5.open-close-lseek系统调用

open()打开一个文件进行读、写或追加。它会返回一个进程可用的最小文件描述符,用于后续的read()、write()、seek()和close()系统调用。

close()关闭指定的文件描述符fd,可重新用它来打开另一个文件。

在Linux中,off_t可定义为u64。当打开某个文件进行读或写时,它的RW-指针被初始化为0,这样就可以从文件的开头开始读/写。每次读/写n个字节后,RW-指针就会前进n个字节进行下一次读/写。lssek()将RW-指针重新定位到指定的偏移量,允许从指定的字节位置开始下一次读/写。

二、苏格拉底问答

1.EXT2

 

 

 

 

2.系统调用

 

 

 

 

标签:总结,char,调用,文件,int,学习,描述符,四周,链接
From: https://www.cnblogs.com/liTCabcAbc/p/17739082.html

相关文章

  • Min-Max 容斥学习笔记
    前言某次考试不会这个被打爆了,现在觉得可能有学习的必要。Min-Max容斥我们现在有一个全集\(U\),设\(\min(S)\)为集合\(S\)中的最小值,\(\max(S)\)为最大值。\[\max(S)=\sum_{T\subseteqS}(-1)^{|T|+1}\min(T)\\\min(S)=\sum_{T\subseteqS}(-1)^{|T|+1}\max(T)\\\]然......
  • 打了一整天の搜索 总结帖
    观前提示:本帖会更新,但也会咕咕咕,有问题记得踢我一脚前言:今天集训了一天,全是搜索题,收(sheng)获(xin)颇(ju)丰(pi),真是美好的一天呢(笑)好了,现在正式进入我们的总结帖Part1搜索优化提起搜索优化,很多人其实不屑一顾。但是相比各种难度容易上天的算法,搜索的优化其实是非常简单,易......
  • 学习笔记:GCN
    本文第一部分摘抄自一篇知乎上的回答如何理解GraphConvolutionalNetwork(GCN)?,第二部分是对Kipf这篇GCN论文的学习笔记。目前还没必要都那么细,就“不求甚解”,只知道咋用吧。1不止Kipf的GCNKipf在2017年发S的EMI-SUPERVISEDCLASSIFICATIONWITHGRAPHCONVOLUTIONALNETWORKS......
  • salesforce零基础学习(一百三十二)Flow新功能: Custom Error
    本篇参考:https://help.salesforce.com/s/articleView?id=sf.flow_ref_elements_custom_error.htm&type=5https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_triggers_order_of_execution.htm我们针对这些次salesforce的releasenote可以看出来,sa......
  • 动手学深度学习_4 多层感知机
    frompixiv多层感知机原理隐藏层严格一点来讲:我们需要隐藏层是因为线性是一个很强的假设,线性模型在有些情况会不适用或者出错。一个形象的例子:就如同上面图片中展示的XOR问题,如果我们现在想要将绿和红球分开,如果只用一条"线性",我们会发现我们是做不到的,起码要两条及以......
  • yzy第四次学习笔记
    第七章:文件操作文件操作级别硬件级别:硬件级别的文件操作包括:fdisk:将硬件、U盘或SDC盘分区。mkfs:格式化磁盘分区,为系统做好准备。fsck:检查和维修系统。碎片整理:压缩文件系统中的文件。操作系统内核中的文件系统函数:点击查看代码kumount(),kumount()
......
  • Fastapi 框架知识点总结
    【一】引入为什么Fastapi火【二】Starlette,Pydantic与FastAPI框架是什么关系?Starlette介绍Pydantic介绍三者之间的联系【三】Pydantic使用方法介绍类模型的定义及使用递归模型ORM操作【四】Fastapi环境搭建及初步使用Fastapi环境搭建注意不同版本的包......
  • SpringCloud微服务学习笔记(二)【Feign,Gateway,Docker】
    Feign先来看我们以前利用RestTemplate发起远程调用的代码:存在下面的问题:•代码可读性差,编程体验不统一•参数复杂URL难以维护Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。基......
  • 20211105李宜时《信息安全系统设计与实现》第四周学习总结
    第七第八章学习笔记学习笔记:文件操作和系统调用文件操作级别文件操作通常可以分为三个级别:低级别文件操作:直接访问文件的二进制数据,通常由操作系统提供支持。文件I/O操作:使用高级别的API(如C的stdio库)来读取和写入文件。文件系统操作:使用文件系统调用访问和管理文件,如POSIX......
  • C语言学习记录---数组1
    BIT-4-数组一维数组的创建和初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用二维数组在内存中的存储数组越界数组作为函数参数数组的应用实例1:三子棋数组的应用实例2:扫雷游戏1.一维数组的创建和初始化。1.1数组的创建数组是一组相同类型元素......