认证空间官方网站,苏州网页设计方法,手机网站加百度地图,网址之家2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结 教材学习内容总结 重要知识点 I/O#xff1a;在主存和外部设备#xff08;例如磁盘存储器、终端和网络#xff09;之间复制数据的过程。输入操作#xff1a;从I/O设备复制数据到主存。输出操作#xff1a;从… 2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结 教材学习内容总结 重要知识点 I/O在主存和外部设备例如磁盘存储器、终端和网络之间复制数据的过程。输入操作从I/O设备复制数据到主存。输出操作从主存复制数据到I/O设备。Unix I/O Unix I/O所有I/O设备都被模型化为文件而所有的输入和输出都被当作对相应文件的读和写来执行这种将设备优雅地映射为文件的方式允许Linux内核引出一个简单、低级的应用接口称为Unix I/O。执行过程打开文件用描述符内核打开文件返回的小的非负整数来标识这个文件程序只需记住这个描述符。终端shell在每个进程开始时打开三个文件标准输入0、标准输出1和标准错误2。改变当前的文件位置对每个打开的文件内核保持一个文件位置k字节偏移量初始为0。读写文件读从文件复制字节到内存写从内存复制字节到文件关闭文件关闭打开的文件释放它们的内存资源。文件 普通文件包含任意数据。文本文件只含有ASCII或Unicode字符的普通文件二进制文件所有其他文件。目录包含一组连接的文件。套接字用来与另一个进程进行跨网络通信的文件。路径名绝对路径名以一个斜杠开始表示从根节点开始的路径。相对路径名以文件名开始表示从当前工作目录开始的路径。打开和关闭文件 [x] 打开或创建新文件open函数格式如图所示filename文件名flags参数mode参数指定了新文件的访问权限位[x] 关闭打开的文件close函数格式如图所示读和写文件 格式如图所示 read函数从描述符为fd的当前文件位置复制最多n个字节到内存位置buf。返回值表示的是实际传送的字节数量。write函数从内存位置buf复制至多n个字节到描述符fd的当前文件位置。用RIO包健壮地读写 RIO包主要提供无缓冲的输入输出函数用于将二进制数据读写到网络和从网络读写二进制数据。带缓冲的输入函数用于从文件中读取文本行和二进制数据。RIO的无缓冲的输入输出函数rio_readn 和 rio_writen函数使用格式如下RIO的带缓冲的输入输出函数rio_readlineb函数从一个内部读缓冲区复制一个文本行当缓冲区变空时会自动地调用read重新填满缓冲区。rio_readnb:rio_readn带缓冲区的版本。rio_readinitb函数从文件rp读出下一个文本行包括\n将它复制到内存位置usrbuf并且用null字符来结束这个文本行使用格式如图所示。RIO读程序的核心是rio_read函数。读取文件元数据 stat和fstat函数检索到关于文件的信息文件的元数据。使用格式如图所示。stat函数以文件名作为输入并填写stat数据结构中的各个成员。fstat函数以文件描述符作为输入。读取目录内容 以readdir系列函数来读取目录的内容。 opendir函数: 以路径名为参数返回指向目录流的指针。使用格式如图所示readdir函数:调用返回指向流dirp中下一个目录项的指针如果没有更多目录项则返回null。closedir函数:关闭并释放其所有资源。共享文件 内核用三个相关的数据结构来表示打开的文件 描述符表它的表项是由进程打开的文件描述符来索引。文件表所有的进程共享这一张表。v-node表没有共享文件并且每个描述符对应一个不同的文件。多个描述符也可以通过不同的文件表表项来引用同一个文件。I/O重定向 工作过程 使用dup2函数:复制描述符表项oldfd到描述符newfd覆盖描述符表表项new-fd以前的内容。使用过程如图所示。标准I/O及函数的使用 I/O包的总结如图所示 指导原则 只要有可能就使用I/0。不要使用scanf或rio_readlineb来读二进制文件。对网络套接字的I/O使用RIO函数。建议在网络套接字上不要使用标准I/O函数来进行输入和输出而要使用健壮的RIO函数。教材学习中的问题和解决过程 问题当学习到教材635页时看到如图的fork不太懂fork是什么意思 解决方案自己查阅了一下百度看到了关于fork函数的资料。它的功能是创建一个子进程。 父进程调用fork系统调用然后陷入内核进行进程复制如果成功 1则对调用进程即父进程来说返回值为刚产生的子进程pid因为进程PCB没有子进程信息父进程只能通过这样获得。 2对子进程刚产生的新进程则返回0 这时就有两个进程在接着向下执行 如果失败则返回0调用进程继续向下执行 ------详情请见fork函数的介绍 代码托管 statistics.sh脚本的运行结果截图 上周考试错题总结 错题1有关缓存的说法正确的是 A .LRU策略指的是替换策略的缓存会选择最后被访问时间距现在最远的块 B .不同层之间以字节为传送单元来回复制 C .缓存不命时决定哪个块是牺牲块由替换策略来控制 D .空缓存的不命中叫冲突不命中 答案AC 解析我漏选了C教材P423中介绍了决定哪个块是由缓存的替换策略来控制的。 例如随机替换策略的缓存会随机选择一个牺牲块。 LRU替换策略的缓存会选择最后被访问的那个块。 错题2有关RAM的说法正确的是 A .SRAM和DRAM掉电后均无法保存里面的内容。 B .DRAM将一个bit存在一个双稳态的存储单元中 C .一般来说SRAM比DRAM快 D .SRAM常用来作高速缓存 E .DRAM将每一个bit存储为对一个电容充电 F .SRAM需要不断刷新 G .DRAM被组织为二维数组而不是线性数组 答案ACDEG 解析我漏选了C和D。 SRAM比DRAM要快成本也高。SARM也用作高速缓存存储器既可以在芯片上也可以在芯片下。 其他感悟、思考等可选 本周主要学习了Unix I/O模型及它的系统级函数了解了Linux内核的三个数据结构及其文件的打开方式。第一次接触了描述符的概念且描述符的表项指向打开文件表中的表项而打开文件表中的表项又指向v-node表中的表项。还了解标准I/O库经过书中的了解标准I/O库的确是优于I/O库的选择。 学习进度条 代码行数新增/累积博客量新增/累积学习时间新增/累积重要成长目标5000行30篇400小时第一周200/2002/220/20第二周300/5002/418/38第三周500/10003/722/60第四周300/13002/930/90尝试一下记录「计划学习时间」和「实际学习时间」到期末看看能不能改进自己的计划能力。这个工作学习中很重要也很有用。 耗时估计的公式 YXX/N YX-X/N训练次数多了X、Y就接近了。 参考软件工程软件的估计为什么这么难软件工程 估计方法 参考资料 《深入理解计算机系统V3》学习指导转载于:https://www.cnblogs.com/20165203-xyx/p/9904790.html