首页 > 代码库 > 20145311 《信息安全系统设计基础》第十三周学习总结

20145311 《信息安全系统设计基础》第十三周学习总结

20145311 《信息安全系统设计基础》第十三周学习总结

教材学习内容总结

第十一章 网络编程

客户端-服务器编程模型

一个应用是由一个服务器进程和一个或多个客户端进程组成
服务器进程 -> 管理某种资源 -> 通过操作这种资源来为它的客户端提供某种服务
基本操作:事务
一个客户端-服务器事务由四步组成:
    当一个客户端需要服务时,向服务器发送一个请求,发起一个事务。
    服务器收到请求后,解释它,并以适当的方式操作它的资源。
    服务器给客户端发送一个相应,并等待下一个请求。
    客户端收到响应并处理它。

客户端和服务器都是进程

网络

对主机而言,网络是一种I/O设备:从网络上接收到的数据从适配器经过I/O和存储器总线拷贝到存储器,典型地是通过DMA(直接存储器存取方式)传送。
物理上,网络是一个按照地理远近组成的层次系统:最低层是LAN(局域网),最流行的局域网技术是以太网。
以太网段
    包括一些电缆和集线器。每根电缆都有相同的最大位带宽,集线器不加分辩地将一个端口上收到的每个位复制到其他所有的端口上,因此每台主机都能看到每个位。
    每个以太网适配器都有一个全球唯一的48位地址,存储在适配器的非易失性存储器上。
    一台主机可以发送一段位:帧,到这个网段内其它任何主机。每个帧包括一些固定数量的头部位(标识此帧的源和目的地址及帧长)和数据位(有效载荷)。每个主机都能看到这个帧,但是只有目的主机能读取。
    使用电缆和网桥,多个以太网段可以连接成较大的局域网,称为桥接以太网。这些电缆的带宽可以是不同的。
    多个不兼容的局域网可以通过叫做路由器的特殊计算机连接起来,组成一个internet互联网络。
互联网重要特性:由采用不同技术,互不兼容的局域网和广域网组成,并能使其相互通信。其中不同网络相互通信的解决办法是一层运行在每台主机和路由器上的协议软件,消除不同网络的差异。
协议提供的两种基本能力
    命名机制:唯一的标示一台主机
    传送机制:定义一种把数据位捆扎成不连续的片的同一方式

IP地址

htonl函数将32位整数由主机字节顺序转换成网络字节顺序。
ntohl函数将32位整数从网络字节顺序转换成主机字节。
htons函数和ntohs为16位的整数执行相应的转换。
可以使用hostname -i来确定自己主机的点分十进制地址

网络的层次系统的最低层时LAN(局域网),其技术为以太网,每个以太网适配器都有一个全球唯一的48未地址。

第十二章 并发编程

并发编程

并发:逻辑控制流在时间上重叠
并发程序:使用应用级并发的应用程序称为并发程序。
三种基本的构造并发程序的方法:
    进程,用内核来调用和维护,有独立的虚拟地址空间,显式的进程间通信机制。
    I/O多路复用,应用程序在一个进程的上下文中显式的调度控制流。逻辑流被模型化为状态机。
    线程,运行在一个单一进程上下文中的逻辑流。由内核进行调度,共享同一个虚拟地址空间。

用信号量同步线程

共享变量引入了同步错误的可能性。
线程i的循环代码分解为五部分:
    Hi:在循环头部的指令块
    Li:加载共享变量cnt到寄存器%eax的指令,%eax表示线程i中的寄存器%eax的值
    Ui:更新(增加)%eax的指令
    Si:将%eaxi的更新值存回到共享变量cnt的指令
    Ti:循环尾部的指令块。

线程安全性

四个不相交的线程不安全函数类以及应对措施:

不保护共享变量的函数——用P和V这样的同步操作 保持跨越多个调用的状态的函数——重写 返回指向静态变量的指针的函数——①重写;②使用加锁-拷贝技术。

竞争

竞争发生的原因: 一个程序的正确性依赖于一个线程要在另一个线程到达y点之前到达它的控制流中的x点。也就是说,程序员假定线程会按照某种特殊的轨迹穿过执行状态空间,忘了一条准则规定:线程化的程序必须对任何可行的轨迹线都正确工作。 消除方法:
动态的为每个整数ID分配一个独立的块,并且传递给线程例程一个指向这个块的指针

死锁:一组线程被阻塞了,等待一个永远也不会为真的条件。

本周代码托管

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

这周的学习内容主要是网络这一方面以及线程的知识,网络编程的知识在web编程这门课上已经学到了许多,

线程大致看了一下,感觉有些抽象,概念性的东西比较多。

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 100/100 1/2 10/10
第二周 150/200 2/4 8/18
第三周 200/250 1/5 5/23
第五周 50/300 1/6 9/32
第六周 20/320 1/7 8/40
第七周 20/340 1/8 6/46
第八周 60/400 2/10 6/52
第九周 80/480 1/11 8/60
第十周 60/540 2/13 6/66
第十一周 80/620 1/14 6/72
第十二周 50/670 1/15 5/77
第十三周 50/720 1/16 6/83

参考资料

      • 《深入理解计算机系统V2》学习指导
      • 教材导读与每周考试重点
      • 2016-2017-1 《信息安全系统设计基础》教学进程
      • ...

20145311 《信息安全系统设计基础》第十三周学习总结