电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理

上传人:子 文档编号:51925010 上传时间:2018-08-17 格式:PPT 页数:18 大小:2.35MB
返回 下载 相关 举报
电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理_第1页
第1页 / 共18页
电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理_第2页
第2页 / 共18页
电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理_第3页
第3页 / 共18页
电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理_第4页
第4页 / 共18页
电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理》由会员分享,可在线阅读,更多相关《电子科技大学网络编程课件第二讲——客户-服务器软件中的并发处理(18页珍藏版)》请在金锄头文库上搜索。

1、第二讲 客户/服务器软件中的并发处理电子科技大学计算机学院并发的概念网络中的并发服务器软件中的并发客户软件中的并发操作系统的并发功能一个并发例子程序计算机通信与网络编程电子科大计算机学院并发有真正的并发(并行: Parallelism )和表面 上的并发(并发并发:Concurrency)(一般采用分时 机制)计算机网络编程电子科大计算机学院并发模型并发模型并行模型并行模型单个网络各个机器之间许多成对进程好像独立使 用网络资源(通道,机器等)一个计算机系统中存在并发(分时)一组机器上所有的客户之间存在并发电子科大计算机学院互联网互联网C 1C 2C4 C5C 3计算机网络编程单个服务器必须并发

2、处理多个传入请求并发服务器可以让多个远程用户同时使用同一个 服务,实现起来比较复杂本章其余部分主要介绍术语和概念;涉及其它问 题:算法,设计,运行规则等在后续各章介绍电子科大计算机学院C3 C4互联网互联网服 务 器C 1C 2计算机网络编程单台机器中的各个客户,一组机器上的所有客户之 间也可以存在并发。(图3.1)要使客户软件并发执行,一般并不需要程序员为此 特别花功夫。(因为现代操作系统一般允许用户并 发地执行客户程序)电子科大计算机学院计算机网络编程多进程操作系统进程的概念:进程定义了一个计算的基本单元,它 是一个执行某一个特定程序的实体,它拥有独立的 地址空间、执行堆栈、文件描述符等。

3、线程:一个进程可包含多个线程,线程特点: 轻型实体(基本不拥有系统资源) 独立调度和运行的基本单位 可并发执行 共享进程资源电子科大计算机学院计算机网络编程操作系统每次只将很小一段时间(时间片, timeslicing)分给一个线程使用。单个CPU在任一时刻只能执行一个线程。操作系统通过在所有正在执行的线程间快速切换 CPU,使得计算机看上去好像在同时执行多个计算计算机通信与网络编程电子科大计算机学院#include #include pid_t fork(void) 返回:父进程中返回子进程的进程ID 子进程返回0 出错返回1fork后,父子进程具有相同的数据空间、 代码空间、堆栈、所有的文

4、件描述字;但相互之间互不影响计算机通信与网络编程电子科大计算机学院#include #include #include #inlcude int sum; void main(void) int i;sum = 0;for(i=1; i #include #include #inlcudeint sum; int main(void) int i;sum = 0;fork() ; for(i=1; i #include #include #inlcude int mul,sum; int main(void) int i,pid;sum = 0;mul = 1;if(pid=fork() 0)

5、 for(i=1; i int execl(const char *path, const char *arg, .);系统调用execl执行另一个程序。但调用execl并 不创建新进程,所以前后的进程ID并未改变, execl只是用另一个新程序替换了当前进程的正文 、数据、堆栈; path 是要执行的二进制文件或脚本的完整路径。 arg是要传给程序的完整参数列表,包括arg0,一般是执 行程序的名字。 最后一个参数可为NULL。计算机通信与网络编程电子科大计算机学院int mul; int main(void) int i,pid;mul = 1;if(pid=fork() 0)execl(

6、“./sum“,“./sum“,NULL);else if (pid = 0) for (i=1; i=5; i+) printf(“The value of i is %dn“,i);fflush(stdout);mul *= i;printf(“The multiplex is %dn“,mul);elseexit(1);exit(0); 计算机通信与网络编程电子科大计算机学院OS的时间分片机制保证快速切换线程切换的时候,会发生上下文切换 上下文:线程的执行环境 切换的开销设计协议软件的时候,需要设法将上下文切换的 次数减到最少 保证并发处理的好处比上下文切换的开销多 服务器的设计策略包括

7、:非并发,单线程进 程并发,多线程进程并发计算机通信与网络编程电子科大计算机学院某些OS允许单个线程控制并发的输入输出操作线程使用select询问操作系统I/O设备的情况例子: 用户从TCP接收数据并且显示,还允许用户从键盘输入 命令控制显示。 两个输入:TCP连接, 键盘 总是等着一个输入,会阻塞 使用select询问输入是否就绪计算机通信与网络编程电子科大计算机学院并发可以减少网络客户的服务等待服务器中的并发需要编程实现fork和execve的使用操作系统中的并发实现:时间分片并发的代价:上下文切换Select调用允许单个的进程管理并发I/O计算机通信与网络编程电子科大计算机学院The f

8、flush function flushes a stream. If the file associated with stream is open for output, fflush writes to that file the contents of the buffer associated with the stream. If the stream is open for input, fflush clears the contents of the buffer. fflush negates the effect of any prior call to ungetc against stream. Also, fflush(NULL) flushes all streams opened for output. The stream remains open after the call. fflush has no effect on an unbuffered stream. 也就是说如果是输出流,就把流缓冲区的内容写到 和这个流关联的文件 里。如果是输入流,就把和输入关联的流缓冲区的 内容清除。当然,它只对有缓冲区的流有作用,如果是unbuffered stream,没有影响。 计算机通信与网络编程电子科大计算机学院

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号