第七、八章学习笔记

信息安全系统设计与实现

第七章 文件操作

文件操作级别

硬件级别:fdisk(为硬盘、U盘、SDC盘分区)mkfs(格式化分区)fsck(检查和维修)碎片整理

操作系统内核中的文件系统函数

系统调用

I/O库函数

用户命令

sh脚本

文件I/O操作

低级别文件操作

1. 分区

2. 格式化分区

3. 挂载分区

EXT2文件系统简介

1. EXT2文件系统数据结构

2. 超级块

3. 块组描述符

4. 位图

5. 索引节点

6. 目录条目

编程示例

1. 显示超级块

2. 显示位图

3. 显示根索引节点

4. 显示目录条目

编程项目:将文件路径名转换为索引节点



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

系统调用

系统调用手册页

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

常用的系统调用

链接文件

1. 硬链接文件

2. 符号链接文件

stat系统调用

1. stat文件状态

2. stat结构体

3. stat与文件索引节点

4. 文件类型和权限

5. opendir-readdir函数

6. readlink函数

7. ls程序

open-close-lseek系统调用

1. 打开文件和文件描述符

2. 关闭文件描述符

3. lseek文件描述符

read()系统调用

write()系统调用

文件操作实例程序

1. 显示文件内容

2. 复制文件

3. 选择性复制文件

编程项目:使用系统调用递归复制文件

1. 提示和帮助

2. 实例解决方案

学习心得

拓展学习

每一个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用进程调用 write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于 套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假设套接口是阻塞的,这是通常的缺省设置。内核将不从write 系统调用返回,直到应用进程缓冲区中的所有数据都拷贝到套接口发送缓冲区。因此从写一个TCP套接口的write调用成功返回仅仅表示我们可以重新使用应 用进程的缓冲区。它并不告诉我们对端的 TCP或应用进程已经接收了数据。
TCP取套接口发送缓冲区的数据并把它发送给对端TCP,其过程基于TCP数据传输的所有规则。对端TCP必须确认收到的数据,只有收到对端的ACK,本端TCP才能删除套接口发送缓冲区中已经确认的数据。TCP必须保留数据拷贝直到对端确认为止。
任何UDP套接字也有缓冲区大小,不过它仅仅是可写到该套接字的UDP数据报的大小上线,如果一个应用进程写一个大于套接字发送缓冲区大小的数据报,内核将返回一个EMSGSIZE错误,既然UDP是不可靠的,他不必保存应用进程数据的副本因此不需一个真正的缓冲区。(应用进程的数据在沿协议栈向下传递时,通常被复制到某种格式的一个内核缓冲区中,然而当数据被发送后,这个副本被数据链路层丢弃了)

posted @ 2021-10-10 21:31  dky20191311  阅读(32)  评论(0编辑  收藏  举报