Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux I/O Scheduler--Noop

Linux I/O Scheduler--Noop

每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request。I/O调度器的基本目的是将请求按照它们对应在块设备上的扇区号进行排列,以减少磁头的移动,提高效率。在前面讨论递交I/O请求的时候可以发现,每个request_queue都有一个request的队列,队列里的请求将按顺序被响应。实际上,除了这个队列,每个调度器自身都维护有不同数量的队列,用来对递交上来的req...
CMake的使用练习

CMake的使用练习

cmake是一个跨平台的开源的编译工具,它能够生成make文件,然后通过make命令编译C++,当然,其他make支持的语言也可以编译。此处不详述了。这里有一个cmake实践的博客,根据该文档可以一步步的熟悉cmake的用法,链接 http://www.linuxidc.com/Linux/2012-12/75894.htm。通过自己建一个工程来学习cmake是最好的方式。在linux命令行下,管理一个C++工程是一个很繁琐的事情。cmake的出现,很好的...
C++中sizeof如何计算类和struct的大小

C++中sizeof如何计算类和struct的大小

突然想到sizeof的计算,于是写程序计算了一下,环境是32位的Ubuntu12.04,编译器为g++。计算sizeof的规则大致如下:空的class和struct大小为1. 如果在类和struct中有成员变量的话,就不考虑这个为空时的1.如果class和struct中有成员变量,则计算方式是将成员变量对齐之后累加。各成员变量存放的 起始地址相对于起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。继承的话则将父类的大小加入到本类中来。如果类中有虚函数...
Ubuntu下Hello World驱动实现全过程

Ubuntu下Hello World驱动实现全过程

今天是一个值得纪念的日子,我也不知道我花了多长时间才编译成功!在编写这个驱动的过程中,真的体会到驱动编程不是那么简单的~,现在有点小小的激动,真的,很不容易啊~我把整个过程在重复一遍吧!在编写这个驱动的过程中参考了网上的很多文档,最终的结果是弄的我头都晕了,每个人写的都不一样,其实我现在还有一些概念不是很清楚。1:到底丫的什么是内核源码树?2:为什么要编译内核源码树?1:内核源码树我现在的理解就是整个linux内核源代码,它是编译驱动的前提。Ubuntu系...
Linux I/O Scheduler--Deadline

Linux I/O Scheduler--Deadline

一、原理Deadline调度器对一个请求的多方面特性进行权衡来进行调度,以期即能满足块设备扇区的顺寻访问又兼顾到一个请求不会在队列中等待太久导致饿死。试想当应用程序频繁访问文件的一部分而此时如果有另一个远端的请求,那么这个请求将会在很长一段时间内得不到响应,这显然是不合理的。Deadline调度器为了兼顾这两个方面,引入了四个队列,这四个队列可分为两类,每一类都由读和写两种队列组成。一类队列用来对请求按起始扇区序号进行排序,通过红黑树来组织,称为sort_...
Python中yield的用法

Python中yield的用法

yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的)。yield是一个表达式,是有返回值的.当一个函数中含有yield时,它不再是一个普通的函数,而是一个生成器.当该函数被调用时不会自动执行,而是暂停,见第一个例子:例1:>>> def mygenerator(): ... print "start..." ... yield 5 ...>>...
<< 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 >>