2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结

2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结

教材学习内容总结

理解虚拟存储器的概念和作用

  • 虚拟存储器(Virtual Memory),是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完善交互,它为每个进程提供一个大的,一致的,私有地址空间。通过一个清晰的机制,虚拟存储器提供了三个要重的能力:
  • 作用
    (1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效的利用了主存;

(2)它为每个进程提供了一致的地址空间,从而简化了存储器管理;

(3)它保护每个进程的地址空间不被其他进程破坏。

理解地址翻译的概念

地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。
1071551-20171204224935488-2101289991.png

理解存储器映射

  • 定义:
    Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容的过程叫做存储器映射。
  • 使用mmap函数的用户级存储器映射
    1.创建新的虚拟存储器区域
 #include <unistd.h>
   #include <sys/mman.h>
   void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
                                  成功返回指向映射区域的指针,若出错则为-1

参数含义:

  • start:这个区域从start开始
  • fd:文件描述符
  • length:连续的对象片大小
  • offset:距文件开始处的偏移量
  • prot:访问权限位,具体如下:
  • PROT_EXEC:由可以被CPU执行的指令组成
  • PROT_READ:可读
  • PROT_WRITE:可写
  • PROT_NONE:不能被访问
  • flag:由描述被映射对象类型的位组成,具体如下:
  • MAP_ANON:匿名对象,虚拟页面是二进制0
  • MAP_PRIVATE:私有的、写时拷贝的对象
  • MAP_SHARED:共享对象

    掌握动态存储器分配的方法

    -.堆:动态存储器分配维护着一个进程的虚拟存储器区域,称为堆。
    假设它是一个请求二进制0的区域,紧接在未初始化的bss区域后开始,并向上(更高的地址)生长。有一个变量brk指向堆的顶部
  • 分配器的两种基本风格:
    a.显示分配器-malloc和free
    b.隐式分配器/垃圾收集器
  • malloc和free函数:
    .系统调用malloc函数,从堆中分配块:
    ````
    .#include <stdlib.h>
    void *malloc(size_t size);
    // 返回:成功则为指针,指向大小至少为size字节的存储器块,失败则为NULL
    //系统调用free函数来释放已分配的堆块:

    include <stdlib.h>

    void free(void *ptr);
    // 无返回值
    //ptr参数必须指向一个从malloc、calloc或者reallov获得的已分配块的起始位置。

理解垃圾收集的概念

  • 垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配块,这些块被称为垃圾,自动回收堆存储的过程叫做垃圾收集。
  • 垃圾收集器将存储器视作一张有向可达图,只有当存在一条从任意根节点出发并到达p的有向路径时,才说节点p是可达的,而不可达点就是垃圾。

    了解C语言中与存储器有关的错误

    1.间接引用坏指针
    常见错误——scanf错误
    2.读未初始化的存储器
    常见错误——假设堆存储器被初始化为0
    3.允许栈缓冲区溢出
    常见错误——缓冲区溢出错误
    4.假设指针和它们指向的对象是相同大小的
    在远处起作用action at distance
    5.造成错位错误
    6.引用指针,而不是它所指向的对象
    7.误解指针运算
    8.引用不存在的变量
    9.引用空堆块中的数据
    10.引起存储器泄露

教材学习中的问题和解决过程

上周考试错题总结

  • 有关Socket端口和Linux命令,下面说法正确的是()
    A .
    可以用 echo /etc/services查看
    B .
    使用 netstat -pan|grep 80可以查看哪些进程占用了80端口
    C .
    可以使用lsof -i:80查看哪里些进程占用了80端口
    D .
    可以用sudo /etc/init.d/service start|stop|restart 启动|停止|重启系统服务
    E .
    可以用netstat -pa 查看所有的服务端口(LISTEN,ESTABLISHED)
    F .
    ps -aux | grep pid 可以查看绑定某端口的进程号为pid的进程的详细情况
    正确答案: A B C D E F
  • 有关Web服务器的说法,正确的是()
    A .
    Web服务器可以提供静态和动态内容
    B .
    Web服务器返回的静态内容由URL标识
    C .
    /.../app?150&21传递的内容由app可执行文件产生,150和21是调用参数
    D .
    最小的URL后缀“/”,会被扩展成类似“/index.html”的默认主页
    正确答案: A B C D

  • 有关套接字接口函数open_clientfd()、open_listenfd(),下面说法正确的是()
    A .
    这两个函数中open_clientfd()只可以用于客户端编程
    B .
    这两个函数中open_clientfd()可以用于客户端和服务器端编程
    C .
    这两个函数中open_listenfd()只可以用于服务器端编程
    D .
    open_clientfd()中的port参数是客户端的端口
    E .
    open_clientfd()中的port参数是服务器端的端口
    F .
    open_clientfd()返回的clientfd可以有Unix I/O接口读写
    G .
    open_listenfd()返回的listenfd可以有Unix I/O接口读写
    正确答案: A C E F

    结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

其他(感悟、思考等,可选)

xxx
xxx

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90

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

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

转载于:https://www.cnblogs.com/l97----/p/7967927.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值