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

2017-2018-1 20155308

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

教材学习内容总结

  • 客户端一服务器模型中的基本操作是事务,由四步组成:
  1. 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。
  2. 服务器收到请求后,解释它,并以适当的方式操作它的资源。
  3. 服务器给客户端发送一个响应,并等待下一个请求。
  4. 客户端收到响应并处理它。
  • 套接字接口 (socket interface) 是一组函数,它们和 Unix I/O 函数结合起来,用以创建网络应用。

  • 函数:

  1. socket函数
  2. connect函数
  3. open_clientfd函数
  4. bind函数
  5. listen函数
  6. open_listenfd函数
  7. accept函数
  • 全球IP因特网
  1. TCP/IP协议族
  2. 混合使用套接字接口函数和UnixI/O函数进行通信
  3. 世界范围的主机集合
  • 检索并打印一个DNS主机条目:
#include "csapp.h"
int main(int argc, char **argv) 
{
    char **pp;
    struct in_addr addr;
    struct hostent *hostp;
    if (argc != 2) {
    fprintf(stderr, "usage: %s <domain name or dotted-decimal>\n", 
        argv[0]);
    exit(0);
    }
    if (inet_aton(argv[1], &addr) != 0) 
    hostp = Gethostbyaddr((const char *)&addr, sizeof(addr), AF_INET); 
    else                                
    hostp = Gethostbyname(argv[1]);
    printf("official hostname: %s\n", hostp->h_name);
    for (pp = hostp->h_aliases; *pp != NULL; pp++)
    printf("alias: %s\n", *pp);
    for (pp = hostp->h_addr_list; *pp != NULL; pp++) {
    addr.s_addr = ((struct in_addr *)*pp)->s_addr;
    printf("address: %s\n", inet_ntoa(addr));
    }
    exit(0);
}

  • 基于线程的并发编程

线程有自己的线程上下文,包括一个唯一的整数线程ID、栈、栈指针、程序计数器、通用目的寄存器和条件码。所有运行在一个进程里的线程共享该进程的整个虚拟地址空间。

  • 基于进程的并发编程

构造并发服务器的自然方法就是,在父进程中接受客户端连接请求,然后创建一个新的子进程来为每个新客户端提供服务。

因为父子进程中的已连接描述符都指向同一个文件表表项,所以父进程关闭它的已连接描述符的拷贝是至关重要的,而且由此引起的存储器泄露将最终消耗尽可用的存储器,使系统崩溃。

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

  • 问题一: 检索并打印一个DNS主机条目时出现了csapp.h没有导入的情况:


    然后我上网寻找了一下下载csapp.h的步骤:


    加入之后重新运行,又出现了这个问题:

    接着调整之后成功了

  • 问题二:进程和线程的区别和联系?

    进程和线程的关系

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。

(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。

(3)处理机分给线程,即真正在处理机上运行的是线程。

(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

上周考试错题总结

  • (多选题)假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是(ADF)

A.若t==0 ,则ZF=1

B.若t<0, 则CF=1

C.若t<0, 则SF=1

D.若(a<0==b<0)&&(t<0!=a<0),则OF=1

E.若(a<0==b<0)&&(t<0 != a<0), 则CF=1

F.leaq指令不影响条件码寄存器

G.cmp指令不影响条件码寄存器

  • (多选题)从程序员角度看进程状态有(ACD)
    A.运行

B.就绪

C.停止

D.终止

  • (多选题)以下代码是将void decode1(long xp, long yp,long*zp)反汇编的结果,下面说法正确的是( C)

A.从汇编代码看出,decode1的参数先入栈的是zp

B.从汇编代码看出,decode1的参数先入栈的是xp

C.函数功能等价于 t=x; x=y; y=z; z=t;

D.函数功能等价于 x=y; y=z; z=x;

  • (单选题)进程提供给应用程序的关键抽象让我们的程序感觉独占了处理器和内存。(C)提供了独占处理器的假象

A.地址空间

B.虚拟内存

C.逻辑控制流

D.指令控制流

  • (多选题)有关异常,下面说法正确的是(CD)

A.系统中的异常由异常名唯一确定

B.异常表中存放的是异常处理程序

C.异常表的起始地址存放在异常表基址寄存器中

D.异常处理程序运行在内核模式下

本周代码托管截图

本周结对学习情况

  • 20155316
  • 一起温习了第十一章,学习了第十二章。

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

本周的作业比较多,感觉课上的作业做的不好,课下又有很多的东西,得好好学习了。。。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 2000行 30篇 800小时
第八周 200/200 2/5 30/85
  • 计划学习时间:20小时
  • 实际学习时间:30小时
  • 改进情况:学习时间增加了。
posted @ 2017-11-12 22:16  郝文菲20155308  阅读(206)  评论(0编辑  收藏  举报