select、poll、epoll都是IO多路复用的机制,但是他们的机制有很大的区别
1、select
select机制刚开始的时候,需要把fd_set从用户空间拷贝到内核空间,并且检测的fd数是有限制的,由FD_SETSIZE设置,一般是1024。
检测的时候,根据timeout,遍历fd_set表,把活跃的fd(可读写或者错误),拷贝到用户空间,
再在用户空间依次处理相关的fd。...
分类:
系统相关 时间:
2015-01-20 20:35:55
阅读次数:
1199
原文:http://www.cnblogs.com/yanhaidong/archive/2011/02/11/2339050.htmlIO是基于缓存区来做的,所谓的输入和输出就是从缓存区中移入和移出数据。以IO输入为例,首先是用户空间进程向内核请求某个磁盘空间数据,然后内核将磁盘数据读取到内核空间...
分类:
其他好文 时间:
2015-01-17 06:21:48
阅读次数:
137
当开发linux内核特性的时候,将必要的详细信息暴露给用户空间的程序是一个比较好的习惯,因为这增强了内核的扩展性。通常来说,软件开发者必须面对这样一个任务:寻找一种好的方法使得用户空间和内核空间进行交互。...
分类:
Web程序 时间:
2015-01-14 20:02:20
阅读次数:
446
Linux内存管理 - PAGE_OFFSET理解
PAGE_OFFSET 代表的是内核空间和用户空间对虚拟地址空间的划分,对不同的体系结构不同。比如在32位系统中3G-4G 属于内核使用的内存空间,所以 PAGE_OFFSET = 0xC0000000。在X86-64架构下是ffff880000000000。可以看到内核程序可以可以访问从PAGE_OFFSET
之...
分类:
系统相关 时间:
2015-01-10 18:15:18
阅读次数:
1121
常用的内核内存分配函数
1)_get_free_pages是最原始的内存分配方式,至二级从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。_get_free_pages在实现上只是封装了alloc_pages函数,而alloc_pages分配的长度为1
2)Kmem_cache_alloc是基于slab分配器的一种内存分配方式,适用于反复分配释放同...
分类:
系统相关 时间:
2015-01-10 08:54:01
阅读次数:
509
BondingvsTeam在centos7上配置bonding,遇到了不少坑。看了redhat的官方博客后,才知道centos7引入了teamdriver。Centos7之前系统提供给用户的是bondingdriver来实现链路聚合,实际上bonding适用于大多数应用。Bondingdriver的架构是由内核空间完全控制、管理。Teamdriver又是..
分类:
其他好文 时间:
2014-12-30 11:55:46
阅读次数:
522
从普通的函数调用到操作系统内核空间的访问
首先通过了解认识函数的原理来体会函数的调用
1)函数
首先什么是函数,函数是用于完成特定任务的程序代码自包含单元
(这里的自包含单元听着可能不懂,其实就是代码段{}花括号里面的每条代码,以分号结尾的集合,它们是为了完成某种特定的功能而去编写的程序)那么在为什么要使用函数,一般来说,函数的使用可以省略代码的重复编写,这里就涉及到函数的调用...
分类:
其他好文 时间:
2014-12-29 09:01:37
阅读次数:
188
转载:http://blog.csdn.net/joker0910/article/details/6608266copy_from_user函数目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0。从用户空间拷贝数据到内核中时必须非常小心,如果用户空间的数据地址是个非法的地址...
分类:
其他好文 时间:
2014-12-27 18:46:17
阅读次数:
141
1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块:(1)用户空间:用户空间中又包含了,用户的应用程序,C库(2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码2.Linux体系结构要分成用户空...
分类:
系统相关 时间:
2014-12-22 21:06:16
阅读次数:
210
针对IO,总是涉及到阻塞、非阻塞、异步、同步以及select/poll和epoll的一些描述,那么这些东西到底是什么,有什么差异?
一般来讲一个IO分为两个阶段:
等待数据到达把数据从内核空间拷贝到用户空间
现在假设一个进程/线程A,试图进行一次IO操作。
A发出IO请求,两种情况:
1)立即返回
2)由于数据未准备好,需要等待,让出CPU给别的线程,自己s...
分类:
其他好文 时间:
2014-12-18 16:57:48
阅读次数:
573