文章分类 - web高并发服务器
Linux 高并发Web服务器
摘要:1. Linux / Unix 上的五种 IO 模型 在Linux下进行网络编程时,服务器端编程经常需要构造高性能的IO模型,常见的IO模型有五种: 1、同步阻塞式 I/O(BIO, Blocking IO): 在调用该类I/O函数读取数据时,直到读取数据完毕才会返回,否则进程/线程就阻塞到当前函数
阅读全文
Linux网络编程 I/O多路复用—epoll
摘要:1. 关于epoll epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的
阅读全文
Linux网络编程 I/O多路复用——select和poll
摘要:0. I/O多路复用 所谓I/O就是对socket提供的内存缓冲区的写入和读出。多路复用就是指程序能同时监听多个文件描述符。 之前的学习中写了多进程和多线程版的简单服务器模型,但是有个问题:每次新来一个客户端TCP连接请求,就需要新建一个进程或线程来与之进行信息传输,但是如果连接的客户端太多,就会出
阅读全文
Linux网络编程 使用socket实现简单服务器——多进程&多线程版本
摘要:1.多进程版 服务端 #include<stdio.h> #include<arpa/inet.h> #include<unistd.h> #include<string.h> #include<stdlib.h> #include<signal.h> #include<wait.h> #inclu
阅读全文
Linux网络编程 Socket
摘要:预备知识 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分。 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接
阅读全文
Linux多线程开发
摘要:1.线程 线程概述 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程
阅读全文
Linux多进程开发
摘要:1.进程概述 程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程: 二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释文件中的其他信息。(ELF可执行连接格式) 机器语言指令:对程序算法进行编码。 程序入口地址:标识程序开始执行时的起始指令位置。
阅读全文