2017-2018-1 20155338 《信息安全系统设计基础》第8周学习总结
教材学习内容总结
网络编程
当一个客户端需要服务时,向服务器发送一个请求,发起一个事务。
服务器收到请求后,解释它,并以适当的方式操作它的资源。
服务器给客户端发送一个相应,并等待下一个请求。
客户端收到响应并处理它。
客户端和服务器都是进程.
并发编程
现代操作系统提供了三种基本的构造并发程序的方法:
1、进程。每个逻辑控制流都是一个进程,由内核来调度和维护。因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信(IPC)机制。
2、I/O 多路复用。在这种形式的并发编程中,应用程序在一个进程的上下文中显式地调度它们自己的逻辑流。逻辑流被模型化为状态机,数据到达文件描述符后,主程序显式地从一个状态转换到另一个状态。因为程序是一个单独的进程,所以所有的流都共享同一个地址空间。
3、线程。线程是运行在一个单一进程上下文中的逻辑流,由内核进行调度。是其他两种方式的混合体,像进程流一样由内核进行调度,而像I/O多路复用流一样共享同一个虚拟地址空间。
关于进程的优劣:
优点:一个进程不可能不小心覆盖两一个进程的虚拟存储器。
缺点:独立的地址空间使得进程共享状态信息变得更加困难。进程控制和IPC的开销很高。
Web服务器
客户端和服务器之间一个交互用的是基于文本的应用级协议——HTTP
Web服务和常规文件检索服务区别
Web内容可以用一个叫做HTML的语言来编写。
5.2Web内容
以两种不同方式向客户端提供内容
1、服务静态内容
2、服务动态内容
HTTP事务
响应
HTTP请求(方法:GET POST OPTIONS HEAD PUT DELETE TRACE)
HTTP响应
服务动态内容
客户端如何将程序参数传递给服务器
服务器如何将参数传递给子进程
服务器如何将其他信息传递给子进程
子进程将它的输出发送到那儿
基于线程的并发编程
(1)创建线程
pthread_create函数创建一个新的线程,并带着一个输入变量arg,在新线程的上下文中运行线程例程f。能用attr参数来改变新创建线程的默认属性。
当 pthreadcreate 返回时,参数 tid包含新创建线程的ID。新线程可以通过调用 pthreadself 函数来获得它自己的线程 ID.
(2)分离线程
默认情况下,线程被创建成可结合的。为了避免存储器泄漏,每个可结合线程都应该要么被其他线程显式地收回,要么通过调用 pthread_detach 函数被分离。
pthreaddetach 函数分离可结合线程 tid. 线程能够通过以 pthreadself()为参数的 pthread_detach 调用来分离它们自己。
(3)初始化线程
pthread_once 函数允许你初始化与线程例程相关的状态。
(4)终止线程
当顶层的线程例程返回时,线程会隐式地终止。 通过调用 pthreadexit函数,线程会显式地终止。如果主线程调用 pthreadexit,它会等待所有其他对等线程终止,然后再终止主线程和整个进程,返回值为 thread_return。
代码托管
结对及互评
本周结对学习情况
- [20155307](他完成了课上测试,所以没有写博客)
- 结对学习内容
- 并发编程
- Web服务器
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 15篇 | 200小时 | |
第一周 | 150/150 | 1/1 | 17/17 | |
第二周 | 70/220 | 1/2 | 12/29 | |
第三周 | 100/320 | 1/3 | 10/39 | |
第四周 | 100/420 | 1/4 | 10/59 | |
第五周 | 80/500 | 2/6 | 22/81 | |
第六周 | 300/800 | 2/8 | 30/111 | |
第七周 | 200/1000 | 1/9 | 25/136 | |
第八周 | 500/1500 | 2/11 | 30/166 |
-
计划学习时间:25小时
-
实际学习时间:30小时