20145202 《信息安全系统设计基础》第12周学习总结(2)

课本知识总结

11网络编程

11.1客户端-服务器编程模型

  • 一个应用是由一个服务器进程或者多个客户端进程组成的
  • 客户端-服务器模型中的基本操作是事物,四步
    1.当一个客户端需要服务时,他向服务器发送一个请求,发起一个事务。
    2.服务器接收到以后,解释他,并且以适当的方式操作他的资源。
    3.服务器给客户端发送一个响应,并等待下一个请求。
    4.客户端收到响应并且处理他。

    11.2网络

  • 客户端和服务器通常运行在不同的主机上,并且通过计算机网络的硬件和软件资源来通信。
  • 最流行的局域网技术是以太网。
  • 一个以太网段包括一些电缆和一个叫集线器的小盒子。
  • 多个以太网段可以连接成较大的局域网,成为桥接以太网。
  • 每台路由器对于他所连接到的每个网络都有一个适配器(端口)。
  • 协议有的两种能力:
    1.命名机制
    2.传送机制
  • 一个主机和路由器如何使用互联网协议在不兼容的局域网间传送数据,8个步骤:P617

    11.3全球IP因特网

  • 每台主机都运行实现TCP/IP协议的软件,几乎每个计算机都支持这个协议。
  • TCP和UDP区别:P619
  • 因特网满足以下特性:
    1.主机集合被映射为一组32位的IP地址
    2.这组IP地址被映射为一组成为因特网域名的标识符。
    3.因特网主机上的进程能够通过链接和任何其他因特网主机上的进程通信。
  • TCPIP为任意正整数数据定义了一项统一的网络字节顺序(大端字节顺序)

    11.4套接字接口

  • 套接字接口是一组函数,他们和UnixI/O函数结合起来,用于创建网络应用。往后还有各种函数P625

12并发编程

  • 访问慢速I/O设备:
  • 与人交互:
  • 通过推迟工作以降低延迟
  • 服务多个网络客户端:
  • 在多核机器上进行并发运算
  • 进程:
  • I/O多路复用:
  • 线程:

    12.1基于进程的并发编程

    12.2基于I/O多路复用的并发编程

  • select函数:等待一组描述符准备好读
  • init_pool:初始化池
  • add_client:将客户端添加到池里
  • check_clients:把每一个准备好的链接描述符的一个文本回送回去。

    12.3基于线程的并发编程

  • 线程就是运行在进程上下文中的逻辑流。
  • pthread_create:创建一个新的线程,并带着一个输入变量arg,返回时,参数tid包含新创建的线程ID。
  • 一个线程的终止:P659
  • pthread_join:等待其他函数终止。
  • 在任何一个时间点上,线程是可结合的,或者是分离的。
  • pthread_detach:分离可结合线程tid。
  • pthread_once:允许初始化与线程例程相关的状态。
  • pthread_control:他是一个变量,全局变量或者静态量。

    12.4多线程程序中的共享变量

    P662

    12.5用信号量同步线程

  • 共享变量会引起同步错误。

    12.6使用线程提高并行性

    12.7其他并发问题

    课后题的的学习

2.68

3.67

A:
根据联合体的所有成员相对于基地址的偏移量都为0这一点,加上int占有4个字节,而地址(*next)也占有四个字节,即可做出此题。

e1.p:0

e1.x:4

e2.y:0

e2.next:4

B:
根据联合体的字节补齐和其满足的两个条件即可做出此题。

e1中int *p --4字节 int x---4字节 和为8字节

e2中int y --4字节 union ele *next --4字节 和为8字节

因为两个结构体所占有的字节大小均为8且符合字节补齐规则,所以该联合体结构总共需要8个字节。

C:
在做此题前先明确该联合体中,需要先访问成员才可以访问成员中的变量这一点,即你要获取x,必须要先获得e1,而后进入e1结构体访问x,最终形成e1.x。

1.很明显的movl 8(%ebp),%edx 此语句作用为get up at %edx

2.试着按顺序写出语句,但发现并不能确定每一个语句准确表示的是什么,所以就观察其中有特点的语句进行分析。

3.发现语句中subl (%edx), %eax表示为%eax = eax - (%edx),(%edx)为整数,并且%edx保存的是up,满足条件且偏移量为0的情况只有e2.y即,减数为up->e2.y。同时可得被减数存储在%eax中。

4.题目中有*(up->__)表示一个整数这个信息,再对应联合体结构中仅有int *p满足该条件,并且在汇编代码中,由上一步可知被减数存储在%eax中,可知movl (%eax), %eax是对被减数赋值的语句,可得在此语句之前%eax为地址,并且应该为up->e1.p,即被减数应该为up->e1.p。

5.但再往上看发现第三行的%eax是由(%ecx)获得,并且%ecx由4(%edx)获得,但%edx指向了up->e2.y,所以被减数应该是有4的偏移量,明显的%ecx应该为up->e2.next,对应的%eax为up->e2.next->e1.p。

6.最终只剩下得数的表示了,明显对应的是movl %eax,4(%ecx)这条语句,%ecx为up->e2.next,%ecx+4应该为up->e2.next->e1.x,即得数为up->e2.next->e1.x。

最终的结果:

up->e2.next->e1.x = *(up->e2.next->e1.p) - up->e2.y

4.47

取值:icode:ifun<-----M1[pc]=D:0 #题目中的已知条件

  valP<-----pc+1             #这个指令只有表明指令类型的一个字节,所以下一条指令的地址只需要加上1.

译码:valA<----R[%ebp] #因为本条leave指令相当于 rrmovl %ebp,%esp;popl %esp;所以读取%ebp的地址值是必须的。

  valB<----R[%esp]          #因为popl %esp;所以读取%esp的地址值是必须的。

执行:valE<-----valB+4 #弹栈需要将栈顶指针%esp增加4.

访存:valM<----M4[valA] #将%ebp的值读入存储器

写回:R[%esp]<----valE #栈顶指针下移

  R[%ebp]<----valM         #将栈顶的值放入%esp中

更新PC:PC<----valP #下一条指令的地址

思路:前提:leave相当于rrmovl %ebp,%esp;popl %ebp;参照了书上popl指令在顺序中的计

算。在这道题中思考明白了一个问题,就是rrmovl rA,%esp;与pushl rA;的区别。前者是将rA的地址复制到栈顶指针指向的位置,指针并不移动,后者是将rA的地址压入栈,指针地址值减去4,指针上移。

6.31

7.11

  • 3、4行是数据段,开始于存储器地址0x08049448的位置,总的存储器大小是0x194字节,从文件偏移的0x448处开始的0xe8个字节初始化。
  • 在加载之前,未初始化的全局变量不会在目标文件中分配存储空间,但是在加载之后,像.bss中的符号等数据需要占用空间,所以剩下的字节对应运行时将被初始化为0的.bss数据.

8.10

A. 调用一次,返回两次: fork

B. 调用一次,从不返回: execve, longjmp

C. 调用一次,返回一次或者多次: setjmp

9.13

A.虚拟地址:0x0040

13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 1 0 0 0 0 0 0

B.地址翻译

参数 值

VPN 0x01

TLB索引 0x01

TLB标记 0x00

TLB命中 No

缺页 Yes

PPN -

10.6

输出 fd2 = 4

因为已经有0 1 2被打开,fd1是3,fd2是4,关闭fd2之后再打开,还是4。

10.7

int main(int argc, char **argv)
{
int n;
rio_t rio;
char buf[MAXBUF];

Rio_readinitb(&rio, STDIN_FILENO);
while((n = Rio_readnb(&rio, buf, MAXBUF)) != 0)Rio_writen(STDOUT_FILENO, buf, n);

}

12.18

XXXX

遇到的问题

第一次出现这个框,还以为虚拟机炸了

现在虚拟机没问题但是小键盘不能用了,只要用小键盘输入数字的话就会出现这种情况

代码的学习

XXXX

代码托管

http://git.oschina.net/tuolemi/haha

学习进度条

转载于:https://www.cnblogs.com/tuolemi/p/6154918.html

20145202 《信息安全系统设计基础》第13周学习总结(2)相关推荐

  1. 20135219洪韶武——信息安全系统设计基础第五周学习总结

    信息安全系统设计基础第五周学习总结 学习任务:教材第四章[处理器体系结构] 学习时间:10小时  一.教材知识点梳理[4.1-4.3] 1.ISA[指令集体系结构] 一个处理器支持的指令和指令的字节级 ...

  2. # 2017-2018-1 20155224 《信息安全系统设计基础》第九周学习总结

    2017-2018-1 20155224 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 存储器 随机访问存储器(RAM): 静态RAM:用来作为高速缓存存储器,每个位存储在一个 ...

  3. 2018-2019-1 20165206 《信息安全系统设计基础》第九周学习总结

    - 2018-2019-1 20165206 <信息安全系统设计基础>第九周学习总结 - 教材学习内容总结 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组.每个字节都有一 ...

  4. 20135203齐岳 信息安全系统设计基础第十三周学习总结

    20135203齐岳 信息安全系统设计基础第十三周学习总结 学习计时:8/9共小时(计划/实际) 读书:4/5 代码:1/1 作业:1/1 博客:2/2 第十二章 并发编程 一.学习目标 掌握三种并发 ...

  5. # 20155337 2017-2018-1 《信息安全系统设计基础》第一周学习总结

    20155337 2017-2018-1 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 1.1信息就是位+上下文 hello.c程序是以字节序列的方式储存在文件中的.每个字节都 ...

  6. 20145227《信息安全系统设计基础》第一周学习总结

    20145227<信息安全系统设计基础>第一周学习总结 学习内容总结 Linux是一个操作系统.如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命 ...

  7. 2018-2019 20165203 《信息安全系统设计基础》第一周学习总结

    2018-2019-1 20165203 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 编译:gcc [选项] [文件名] 选项参数表 参数 对应功能 -E 仅执行编译预处理 ...

  8. 2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结

    2018-2019-1 20165221 <信息安全系统设计基础>第一周学习总结 教材学习总结 有关vim 打开方式:vim [文件名] 按i会进入insert模式,可以对代码进行编辑 按 ...

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

    2017-2018-1 20155209 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 计算机系统就是由可以看到的硬件和系统内的软件组成的,然后用来运行应用程序. 我们平时使用 ...

  10. 20145307《信息安全系统设计基础》第二周学习总结

    20145307<信息安全系统设计基础>第二周学习总结 教材学习内容总结 vim编辑器 Vim的6种基本模式:Vim具有6种基本模式和5种派生模式普通模式(Normal mode) Vim ...

最新文章

  1. [转贴]电阻电容的封装形式如何选择
  2. 语言中什么时候加大括号_日本留学语言学校申请季你知道是几月吗?从什么时候开始准备...
  3. SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
  4. Java 编程的动态性,第3部分: 应用反射--转载
  5. 前端学习(672):if-else
  6. ToolBar组件的使用
  7. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
  8. 请问asp.net网页里能显示tiff格式的图片吗?
  9. 怎么使用QQ音乐api搭建个人音乐站点
  10. nginx转发https网页加载http图片乱码问题
  11. Cocos 环境搭建 流程~~~~~
  12. C语言中,求三个数中最大数
  13. 面临裁员潮,更快找到新工作的秘诀
  14. HTML5及CSS3基础知识(持续更新)
  15. c++,全局函数做友名
  16. SAMBA 基础及实战
  17. cmnet和cmwap的访问
  18. 友盟的Common的包下载失败,报错Forbidden
  19. 拓嘉启远电商:拼多多平价不盈利吗
  20. springMVC中 Controller层为什么可以用map来传输数据

热门文章

  1. 从Unity引擎过度到Unreal4引擎
  2. Unity 垂直同步VSync
  3. wow服务器维护公告四号,魔兽世界5月7日更新内容 wow5.7大服务器实装维护公告
  4. 如何查询专利是否侵权
  5. 自私基因的生物计算机模拟
  6. eve战巡族伤害_EVE了解你的敌人——三级战巡
  7. java基础56 HTML5的标签知识(网页知识)
  8. CUDA:在NPP中实现流域规划实例
  9. 广州php快板老师牛,老师快板“打出”最牛评语
  10. 响铃:子弹短信后新产品不断,社交媒体还有创业“口子”吗?