2018-2019-120165203《信息安全系统设计基础》第六周学习总结(代码片段)

20165203-xyx 20165203-xyx     2023-01-14     188

关键词:

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读出下一个文本行(包括 ),将它复制到内存位置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/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料































2017-2018-120155232《信息安全系系统设计基础》实验四

2017-2018-120155232《信息安全系系统设计基础》实验四实验1学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章,提交康奈尔笔记的照片(可以多张)实验2在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用... 查看详情

#2017-2018-120155224《信息安全系系统设计基础》实验四

2017-2018-120155224《信息安全系系统设计基础》实验四外设驱动程序设计-1学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章提交康奈尔笔记的照片(可以多张)外设驱动程序设计-2在Ubuntu完成资源中全... 查看详情

#2017-2018-120155224《信息安全系系统设计基础》第四周myod

2017-2018-120155224《信息安全系系统设计基础》第四周MyOD在这里跟老师先道歉,当时我的git没有安装好,后面也一直没有装上,所以程序没有git。要求参考教材第十章内容用LinuxIO相关系统调用编写myod.c用myodXXX实现Linux下od-tx-tcXXX的... 查看详情

筑牢网络安全,联瑞电子为您的信息传输系“安全带”

...;开车要做的第一件事就是系“安全带”,如果我们把信息传输比喻成一辆汽车,那网络安全就是“安全带”,但近年来这根安全带却越来越不牢靠。2020年以来,世界百年格局动荡和全球疫情交织叠加,国际环... 查看详情

信息安全系15级学生课程设计——2018.05小组课题报告(代码片段)

信息安全系15级学生课程设计——2018.05小组课题报告课题:物联网实训·远程安防监控系统一、设计方案及可行性分析1、项目概述本项目需要实现以嵌入式Web服务器为核心的视频监控系统。摄像头采集的到的图像经过压缩后,传... 查看详情

2017-2018-120155215《信息安全系系统设计基础》实验三

1学习使用Linux命令wc(1)基于LinuxSocket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端客户端传一个文本文件给服务器服务器返加文本文件中的单词数上方提交代码附件提交测试截图,至少要测试附件中的两个文件看... 查看详情

信息安全等级合规测评

...是要符合法律、法规、政策及相关规则、标准的约定。在信息安全领域内,等级保护、分级保护、塞班斯法案、计算机安全产品销售许可、密码管理等,是典型的合规性要求。信息安全合规测评是国家强制要求的,信息系统运营... 查看详情

cssweb安全字体系列列表(代码片段)

查看详情

jsonwebtoken-在web应用间安全地传递信息

...规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的1https:/ 查看详情

jsonwebtoken-在web应用间安全地传递信息

...规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的1https://your.awesome-app.... 查看详情

信息安全工程师笔记-移动应用安全需求分析与安全保护工程

...,由相关的服务器构成,负责处理来自App的相关信息或数据。移动应用安全分析移动应用安全威胁主要有以下类型:①移动操作系统平台安全威胁&#x 查看详情

jsonwebtoken-在web应用间安全地传递信息(zhuan)

...规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的1https://your.aw 查看详情

什么是cisp?

CISP即"注册信息安全专业人员",系国家对信息安全人员资质的最高认可。英文为CertifiedInformationSecurityProfessional(简称CISP),CISP系经中国信息安全测评中心实施国家认证。CISP证书涵盖方向:“注册信息安全工程师... 查看详情

信息安全技术实验二网络扫描实验+arp攻击

一、实验目的及要求1、了解扫描技术的工作原理;2、加深对网络底层的理解;3、掌握常用扫描工具的基本用法;4、学习扫描器程序设计的基本方法。(以后再补充)二、实验环境及相关情况(包含使用软件、实验设备、主要... 查看详情

推动系后座安全带,滴滴出行要愚公移山?

...贵”等难题。不过日前来自滴滴出行一封关于“系好后座安全带”的倡议信却告诉我们:共享经济出行还有更大的社会价值。  滴滴出行在21日发布的倡议信中提出:正确使用安全带,在发生意外时可提升60%的生还率。但安全... 查看详情

沿极坐标系的图像信息

】沿极坐标系的图像信息【英文标题】:imageinformationalongapolarcoordinatesystem【发布时间】:2011-04-1710:25:06【问题描述】:我有一组png图像,我想用Python和相关工具进行处理。每个图像代表一个已知尺寸的物理对象。在每幅图像中... 查看详情

软考——系统架构师架构系分软设的区别和联系

...础5分数据库基础6分数据库基础4分数据库基础6分网络与信息安全基础5分网络与信息安全基础4分网络与信息安全基础5分软件工程30分软件工程15分软件工程15分知识产权2分知识产权3分知识产权3分计算机英语5分计算机英语5分计算... 查看详情

浅谈网络安全就业前景

...攻击源头系美国国家安全局(NSA)。网络安全和信息化是事关国家安全和国家发展、事关广大人民群众工作生活的重大战略问题。当今世界,信息技术革命日新月异,对国际 查看详情