- 1
- 0
- 约1.28万字
- 约 42页
- 2016-12-31 发布于北京
- 举报
第四章、多进程并发服务器 多进程并发服务器模型 进程与fork函数 第1版多进程并发服务器 信号机制与Wait函数 第2版多进程并发服务器 测试用例 1. 多进程并发服务器模型 迭代服务器的缺陷 Chap3.echo测试用例中,多用户的情况 连接建立后,没有accept,连接在哪里? 这是功能上的一个缺陷 Why? listen函数队列 accept从已完成队列的对头摘取新套接字 对客户端的服务是一个串行的过程 多进程并发服务模型 采用多进程的方式引入并行 目的是:使得每个客户端都能够得到一个进程的服务 进程与fork函数 2. 进程与fork函数 进程的概念 在传统的操作系统中,进程是资源的所有者,是CPU时间片调度的基本单位 在现代操作系统中,引入线程概念后。进程弱化为资源的所有者,而线程称为调度的基本单元,一个进程可以容纳多个线程。 本章采用一个进程内只含有一个线程的模型 关于Unix进程的基本操作与模型,请参考《Unix环境高级编程》一书,本章并不展开。 进程的创建,需要调用fork函数 fork函数 函数原型 #include unistd.h pid_t fork(void); fork系统调用创建了一个子进程,子进程基本上是父进程的一个拷贝,这包括可执行代码、堆栈、堆等。 Unix通常采用copy-on-write的方式实现fork,父子进程通过共享虚拟内存的页表,只有当父子进程修改它的页表时,才会做拷贝动作。 子进程会继承父进程打开的文件描述符,还会父进程的用户组、进程组、当前的工作目录、执行环境等。 但是,子进程拥有自己的PID、子进程的信号处理函数也会按照缺省方式初始化、子进程不会继承父进程的定时器,子进程的信号量也会被初始化。 fork函数返回一个整型的PID,父进程得到的是子进程的PID,子进程得到的是0。由此可判断当前进程是父进程还是子进程。 多进程并发服务器模板 pid_t pid; int listenfd, connfd; listenfd = socket(…); bind… listen… for (;;) { connfd = accept(listenfd, …); if ((pid = fork()) == 0) { close(listenfd); /* serve the client */ close(connfd); return 0; } close(connfd); } 父进程为什么要关闭connfd?子进程为什么要关闭listenfd? 父子进程共享打开的文件,因此父子进程都可以对已打开的文件进行操作。如果父进程不关闭connfd,会产生什么后果?如果子进程不关闭listenfd,会产生什么后果? 父进程关闭connfd,会不会引起四分节的TCP断连过程?不会,因为引用计数的存在。如何了解文件的引用计数?inotify(Linux)/kqueue(FreeBSD、Mac osx) 套接口在父子进程的变化 3. 第1个版本多进程并发服务器 int main(int argc, char *argv[]) { try { Address4 addr; TcpSocket sock, sock1; char buf[BUFFER_SIZE]; size_t ret; addr.hports(LISTEN_PORT); addr.setAny(); sock.serve(addr); while (true) { sock.accept(sock1); if (Process::fork() == 0) { sock.close(); while(true) { if ((ret = sock1.read(buf, BUFFER_SIZE)) == 0) return 0; ret = sock1.write(buf, ret); } } sock1.close(); } catch (Exception e) { cerr exception caught: e.what() File: e.file() , Line: e.lineno() endl; } return 0; } 功能测试 多客户端测试 问题 4. 信号与wait函数 defunct,死人,已过时的(google翻译) fork的服务进程没有终止?确实是正常终止了,但是父进程没有正确处理子进程发送的SIGCHLD信号。 信号是外部通知事件,也称为软中断。它一般是异步的
您可能关注的文档
最近下载
- 【高考真题】2022年新高考物理真题试卷——湖南卷(含答案).pdf VIP
- 毕业设计论文-江苏工程职业技术学院.doc VIP
- 新人教版八年级物理下册第七章练习题.docx VIP
- 2022电网企业文化、电力与能源战略题库.pptx VIP
- 索尼A7RM3A使用说明书+入门帮助指南【完整电子版】.pdf VIP
- 【武汉市生鲜农产品的冷链物流发展现状、问题及对策探究16000字(论文)】 .pdf
- 2026版教师职称-山西-山西教师职称(基础知识、综合素质、高中信息技术)历年参考题库含答案解析5套.docx VIP
- 2020-2021学年江苏省淮安市淮阴中学八年级(上)期末物理试卷含解析.doc VIP
- 变压器油中溶解气体在线监测装置.docx VIP
- 2026年春新版二年级道德与法治下册教学计划(含教学进度表).pdf VIP
原创力文档

文档评论(0)