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

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小时

原文地址:https://www.cnblogs.com/Hdywan/p/7823555.html