20211306 密码系统设计与实现课程学习笔记4
任务详情
自学教材第7,8章,提交学习笔记
- 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容
“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。
- 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图
- 实践过程截图,代码链接
- 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)
一、第七章(文件操作)学习总结
摘要:本章讨论文件系统,解释了操作系统中各种操作级别,概述各种操作等
- 文件操作级别
分为五个级别,按照低到高顺序排列如下
- 硬件级别
fdisk:将硬盘、U盘或SDC盘分区
mkfs:格式化磁盘分区,位系统做好准备
fsck:检查和维修系统
碎片整理:压缩文件系统中的文件
- 操作系统内核中的文件系统函数
每个操作系统内核均可为基本文件操作提供支持,前缀k表示内核函数
- 系统调用:用户模式程序使用系统调用来访问内核函数
- I/O库函数:可让用户读写多个数据块
- 用户命令:可以用Unix/Linux命令来执行文件操作
- sh脚本:比系统调用方便,但必须手动输入命令。
- 文件I/O操作
- 低级别文件操作
- 分区
一个块存储设备如硬盘等可以分为几个逻辑单元,各分区均可以格式化为特定的文件系统,也可以安装在不同的操作系统上。分区表位于第一个扇区的字节偏移446处,表有4个条目,每个条目由一个16字节的分区结构体定义
- 格式化分区
- 挂载分区
- EXT2文件系统简介
Linux一直使用EXT2作为默认文件系统。
- EXT2文件系统数据结构
- 超级块
- 块组描述符
- 位图
- 索引节点
- 目录条目
二、第八章(使用系统调用进行文件操作)学习总结
摘要:本章论述如何使用系统调用进行文件操作,解释了系统调用的作用和Linux的在线手册页,展示了如何使用系统调用进行文件操作,说明了如何使用系统调用来显示和复制文件。
- 系统调用
在操作系统中,进程以内核模式和用户模式运行,简称kmode和umode,umode中进程权限十分有限,不能执行任何需要特殊权限的操作,特殊权限的操作必须在kmode下进行。系统调用(syscall)是一种允许进程进入kmode以执行umode不允许操作的机制。
- 系统调用手册页
- 使用系统调用进行文件操作
系统调用必须由程序发出,就像普通函数调用一样
int syscall(int a,int b,int c,int d);
- 常用的系统调用
- 链接文件
在Unix/Linux中,每个文件都有一个路径名,但是Unix/Linux允许使用不同的路径名来表示同一个文件,这些文件叫LINK(链接)文件,有两种类型的链接:硬链接和软链接(符号链接)
- 硬链接文件
硬链接:命令
- 符号链接文件
软链接:命令
- stat系统调用
stat/lsat/fstat系统调用可将一个文件的信息返回。
- stat文件状态
- stat结构体
- stat与文件索引节点
每个文件都有一个独有的索引节点数据结构,包含文件的所有信息
每个索引点在存储设备上都有唯一的索引节点编号。
- 文件类型和权限
- opendir-readdir函数
目录也是一个文件,我们应该能像其他任何普通文件一样,打开一个READ目录,然后读取显示内容。然而根据文件系统不同,目录文件的内容可能不同。POSIX为目录文件指定了以下接口函数。
- ls程序
- read()系统调用
#include <unistd.h>
int read(int fd,void *buf,int nbytes)
- write()系统调用
三、苏格拉底提问GPT