
Linux开发
文章平均质量分 75
zhaqiwen
这个作者很懒,什么都没留下…
展开
-
Linux的I/O机制
Linux的I/O机制经历了一下几个阶段的演进: (1)同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。 (2)同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。 (3)异步阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数转载 2012-07-10 14:51:03 · 1348 阅读 · 0 评论 -
异步I/O机制
对于服务器程序,I/O是制约系统性能最关键的因素。对于需要处理大量连接的高并发服务器程序,异步I/O几乎是不二的选择。Linux和Windows都为异步I/O构建了大量的基础设施。本文总结了一下Linux和Windows下的异步I/O模型,并给出了一些使用这些模型的例子。 一般来说,服务器端的I/O主要有两种情况:一是来自网络的I/O;二是对文件(设备)的I/O。Wind转载 2012-07-10 14:56:35 · 4002 阅读 · 0 评论 -
使用sendfile() 提高网络文件发送性能
我们平时通过网络发送文件时会用到的两个系统调用: read(file, tmp_buf, len); write(socket, tmp_buf, len); 调用过程示意图如下: 在用户空间调用 read() 读取文件时发生两次内存拷贝: DMA引擎将文件读取到内核的文件缓冲区 调用返回用户空间时将内核的文件缓冲区的数据复制到用户空间的缓冲区 接着调用 wr转载 2012-07-16 14:10:29 · 1288 阅读 · 0 评论 -
Linux多线程编程
前言 线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题: 是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能: 1)有一int型全局变量g_Flag初始值为0; 2) 在主线称中起动线程1,打印“this is thread转载 2012-07-16 11:27:52 · 852 阅读 · 0 评论 -
Linux Netlink机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火转载 2012-08-10 16:41:54 · 758 阅读 · 0 评论 -
浅谈服务器编程
第一部分 编程模型 1、服务器编程模型 关于server编程模型,大师stevens在他的《UNP》一书中已经做了详细论述,这里不再重复,这里主要讲一下我的一些理解。 从线程的角度,可以分为两类,一是单线程,一是多线程。先来看单线程模型。 1.1、单线程模型 整个进程只有一个线程,由于只有一个线程,所以要实现高性能,必须与“non-blocking IO + IO m转载 2012-09-19 00:31:33 · 1939 阅读 · 0 评论 -
千万级并发实现的秘密:内核不是解决方案,而是问题所在
原文连接:The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution 既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能。不,现在系统已经在用你可能不熟悉甚至激进的方式支持千万级别的并发连接。 要知道它是如转载 2014-12-16 09:44:06 · 1306 阅读 · 0 评论