摘要:
http://www.embexperts.com/viewthread.php?tid=31两者最大区别:信号量可以允许多个线程进入临界区,而互斥体只允许一个线程进入临界区。本贴将描述信号量与互斥体之间的细微区别以及在实际的代码设计中如何使用它们。信号量在2.6.26中的定义如下:struct semaphore { spinlock_t lock; unsigned int count; struct list_head wait_list;};从以上信号量的定义中,可以看到信号量底层使用到了spin lock的锁定机制,这个spin lock... 阅读全文
posted @ 2014-04-10 16:44
bitbit
阅读(7833)
评论(1)
推荐(0)
摘要:
Linux aio是Linux下的异步读写模型。Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性。对于文件的读写,即使以O_NONBLOCK方式来打开一个文件,也会处于"阻塞"状态。因为文件时时刻刻处于可读状态。而从磁盘到内存所等待的时间是惊人的。为了充份发挥把数据从磁盘复制到内存的时间,引入了aio模型。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。I/O 模型在深入介绍 AIO API 之前,让 阅读全文
posted @ 2014-04-10 11:09
bitbit
阅读(1974)
评论(0)
推荐(0)
摘要:
前段时间在自研的基于iSCSI的SAN上跑mysql,CPU的iowait很大,后面改用Native AIO,有了非常大的改观。这里简单总结一下Native AIO的实现。对于以IO为最大瓶颈的数据库,native AIO几乎不二的选择,仅仅依靠多线程,显然无法解决磁盘和网络的问题。1 API 与data structAIO的主要接口:System callDescriptionio_setup( )Initializes an asynchronous context for the current processio_submit( )Submits one or more asynchr 阅读全文
posted @ 2014-04-10 11:07
bitbit
阅读(4437)
评论(0)
推荐(0)
浙公网安备 33010602011771号