
Linux内核
文章平均质量分 86
风之谷呼呼
这个作者很懒,什么都没留下…
展开
-
insmod[转]
在Linux下,驱动程序是内核的一部分,运行在内核态下,你可以将驱动静态的和内核编译在一起,这样的缺点是内核会比较大,而且如果驱动出错,会导致整个系统崩溃;也可以以module的方式编译,在需要的时候动态的载入。如果你编译过内核,应该记得在make menuconfig中,选项前面是可以选择和的,就分别表示"编译到内核中"和"编译成模块"。.下面介绍下模块,一个简单的“helloworld转载 2014-07-30 10:38:35 · 531 阅读 · 0 评论 -
linux内核学习(20)设备模型第二层之一
linux内核学习(20)设备模型第二层之一 2010-12-30 11:31:39| 分类:Linux_内核| 标签:|举报|字号大中小 订阅 设备模型第二层也是非常重要的一层,为各种设备打好了基础,由于我之前在分析的过程中发现,如果每个细节都一起抠,可能很难将设备模型的概貌理解清楚,因此,我将采用从整体到局部的方法分析设备模型第二层,还是因转载 2014-08-07 20:32:52 · 370 阅读 · 0 评论 -
Linux设备模型分析之device(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.youkuaiyun.com/liuhaoyutz内核版本:3.10.1 一、device定义device结构体定义在include/linux/device.h文件中:[cpp] view plaincopyprint?598/** 599 * struct device - The basic device structure 600 *转载 2014-08-07 20:33:58 · 827 阅读 · 0 评论 -
Linux设备模型(总线、设备、驱动程序和类)之一:bus_type
Linux设备模型(总线、设备、驱动程序和类)之一:bus_type 分类: Linux驱动 2010-03-08 10:34 2017人阅读 评论(0) 收藏 举报 linuxstructeachfile数据结构null http://blog.转载 2014-08-07 20:34:01 · 477 阅读 · 0 评论 -
linux内核部件分析(八)——设备驱动模型之bus
http://blog.youkuaiyun.com/qb_2008/article/details/6851394 前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/bas转载 2014-08-07 20:33:01 · 777 阅读 · 0 评论 -
同步中断 和 异步中断
中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的。外部中断,就是通常所讲的“中断”(interrupt)。对于执行程序来说,这种“中断”的发生完全是异步的,因为不知道什么时候会发生。CPU对其的响应也完全是被动的,可以通过“关中断”指令关闭对其的响应。由软件产生的中断一般是由专设的指令,如X86中的“INT n”在程序中有意产生的,转载 2014-09-18 17:50:01 · 4620 阅读 · 0 评论 -
kvm qemu内幕介绍
====================================目录1 硬件虚拟化技术背景2 KVM的内部实现概述 2.1 KVM的抽象对象 2.2 KVM的vcpu 2.3 KVM的IO虚拟化 2.3.1 IO的虚拟化 2.3.2 VirtIO3 KVM-IO可能优化地方 3.1 Virt-IO的硬盘优化 3.2 普通设备的直接分配转载 2014-09-19 14:42:22 · 457 阅读 · 0 评论 -
在炼数成金报名的课程!加油!
openstack --15周原创 2014-08-10 23:35:00 · 1666 阅读 · 0 评论 -
linux内核学习(1)
2014-09-04编译linux内核环境:windows7 VMware 10原创 2014-09-04 16:13:40 · 623 阅读 · 0 评论 -
linux下的daemon进程
http://www.cublog.cn/u3/100661/showart_2091898.html#include int daemon(int nochdir,int noclose) 在创建精灵进程的时候,往往需要将精灵进程的工作目录修改为"/"根目录 并且将标准输入,输出和错误输出重定向到/dev/null daemon的作用就是当参数nochdir为0转载 2014-09-20 15:47:38 · 454 阅读 · 0 评论 -
linux内核探秘4---文件系统(最简单的文件系统aufs)
http://blog.chinaunix.net/uid-27052262-id-3259907.html http://blog.youkuaiyun.com/rstevens/article/details/1824785原创 2014-10-12 21:27:29 · 2023 阅读 · 0 评论 -
JFreeChart 项目实例
最近利用JFreeChart和MySQL数据库做了一个JSP网页,展现Android Martet全球12个国家的TOP800游戏排名的曲线走势准备知识,请先阅读我先前写的博客JFreeChart学习示例Linux JSP连接MySQL数据库需导入jar包如下:完整代码:[java] view plaincopyprint?转载 2014-11-30 14:06:12 · 569 阅读 · 0 评论 -
Linux IP代理筛选系统
上一篇博客,介绍了Linux 抓取网页的实例,其中在抓取google play国外网页时,需要用到代理服务器代理的用途其实,除了抓取国外网页需要用到IP代理外,还有很多场景会用到代理:通过代理访问一些国外网站,绕过被某国防火墙过滤掉的网站使用教育网的代理服务器,可以访问到大学或科研院所的内部网站资源利用设置代理,把请求通过代理服务器下载缓存后,再传回本地,提高访问速度黑客发转载 2014-11-30 14:08:29 · 1009 阅读 · 0 评论 -
MSI(message signaled interrupt)
MSI是什么? MSI(Message Signaled Interrupts)是一种中断方式, 依靠设备将一小段中断描述数据写入特定地址【注一】来通知CPU中断的产生。 MSI从PCI 2.2开始支持, 在PCI 3.0中得到扩展. 支持更多中断以及拥有独立配置各个中断能力的MSI-X则从PCI 3.0开始被支持.MSI的优点: 1. 相对于基于引原创 2014-12-23 23:35:51 · 5004 阅读 · 0 评论 -
成为Linux内核高手的四个方法
http://blog.jobbole.com/54833/ 我曾经问别人如何开始内核编程的学习,他们基本上都说:①如果你不需要了解内核是如何为你工作的,你为何要尝试呢?②你应该订阅Linux内核邮件列表,然后努力去理解。③如果你不去编写针对Linux内核的代码,你就是在浪费时间。这些对我一点儿帮助都没有。所以我在这里列举了一些可行的方法,他们是有关操作系统和Linux内核是怎样在你的转载 2014-12-28 15:49:24 · 617 阅读 · 0 评论 -
来着豆瓣经典点评《深入理解linux内核>>
曾几何时,我们为调试成功第一段汇编小程序而欢欣鼓舞,为写完C语言小程序通宵达旦,为自己的数据结构解决了一个实际问题而踌躇满志。再后来我们学习了计算机组成原理或者高级点的计算机系统结构,学习过操作系统的实现和设计,看过算法导论...但好像一切又渐渐变得遥远了,虽然书本上的一切也都感觉上能理解,但总是朦朦胧胧觉得缺少点什么,或许是觉得所有的知识都是断断续续的,感觉很多知识是无本之源。但这本书拂去了一切转载 2014-12-28 15:50:50 · 3483 阅读 · 0 评论 -
来自豆瓣点评《深入理解linux内核》
这里没法插图片,完整版(带图片和一些格式调整)见 http://www.manio.org/cn/scheduling-of-linux-view-of-society/ 注:我看的是影印版,写得很好。 Linux内核是一个无比复杂的系统,要想看清大致的脉络也非易事。其实,可以把运行中的Linux想像成一个人类的社会,当中的进程就是社会中的人。人有生老病转载 2014-12-28 15:52:56 · 1764 阅读 · 0 评论 -
Linux内核探索之路——关于方法
Linux内核探索之路 ——给那些想从LiNuX内核找点乐趣的人。 一个不能回避的尴尬问题:研究Linux内核是不是必须要通过研读那些错综复杂的“邪恶”代码,才能真正理解它? 关于方法“术业转载 2014-12-28 15:34:17 · 484 阅读 · 0 评论 -
《深入理解Linux内核》-文件系统学习心得
内核中要注意的是各种结构体,结构体之间的联系和各个函数以及函数之间的调用关系,参数的传递和函数的功能。内核中数据结构的字段无外乎包括三种字段:属性字段,调用方法,指向其它结构的指针。具体如下图所示: http://blog.sina.com.cn/s/blog_63deb2630100j80w.html 文件系统文件结构:包括索引节点和数据,文件系统使用索引节点来记录转载 2014-12-28 15:46:39 · 1447 阅读 · 0 评论 -
linux内存布局及页面映射
在Linux系统中,以32bit x86系统来说,进程的4GB内存空间(虚拟地址空间)被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G。 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。 每个进程的用户空间存放用户的程序和代码(堆栈,数据区,代码区等),因为是虚拟地址,所以每个进程的用户空间是完全独立的,互不影响。用户进程有自己的进程页原创 2014-12-29 20:58:42 · 4836 阅读 · 0 评论 -
虚拟地址到物理地址的映射
虚拟地址和物理地址========================================= CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit, 内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内转载 2014-12-29 22:54:26 · 4223 阅读 · 0 评论 -
进程虚拟地址空间中的虚拟内存区域(vma)---可执行程序与虚拟地址空间的映射关系
http://www.cnblogs.com/zszmhd/archive/2012/08/29/2661461.html http://www.cnblogs.com/chengxuyuancc/archive/2013/04/17/3026920.html http://www.cnblogs.com/bizhu/archive/2012/10/17/2727518.html转载 2014-12-29 23:21:39 · 767 阅读 · 0 评论 -
linux驱动虚拟地址和物理地址的映射
【ioremap】在ARM中,设备的寄存器或者存储块的这部分空间属于内存空间的一部分,我们称之为IO内存。 在内核中访问IO内存之前,我们只有IO内存的物理地址,这样是无法通过软件直接访问的,需要首先用ioremap()函数将设备所处的物理地址映射到内核虚拟地址空间(3GB~4GB)。然后,才能根据映射所得到的内核虚拟地址范围,通过访问指令访问这些IO内存资源。 在将I/O内存转载 2014-12-29 22:53:14 · 1304 阅读 · 0 评论 -
编写属于你的第一个Linux内核模块
曾经多少次想要在内核游荡?曾经多少次茫然不知方向?你不要再对着它迷惘,让我们指引你走向前方……内核编程常常看起来像是黑魔法,而在亚瑟 C 克拉克的眼中,它八成就是了。Linux内核和它的用户空间是大不相同的:抛开漫不经心,你必须小心翼翼,因为你编程中的一个bug就会影响到整个系统。浮点运算做起来可不容易,堆栈固定而狭小,而你写的代码总是异步的,因此你需要想想并发会导致什么。而除了所有这一切之外转载 2015-01-02 13:19:00 · 565 阅读 · 0 评论 -
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说linux内核编程4部曲之二:增加linux内核系统调用linux内核编程4部曲之三:修改O(1)调度算法linux内核编程4部曲之四:模块编程一、编译环境 ubuntu 5.10,要编译的内核源码版本2.6.12 二、下载并解压源代码 首先从linux内核的官网www转载 2015-05-20 15:07:13 · 735 阅读 · 0 评论 -
linux内核编程4部曲之三:修改O(1)调度算法
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说linux内核编程4部曲之二:增加linux内核系统调用linux内核编程4部曲之三:修改O(1)调度算法linux内核编程4部曲之四:模块编程 一、实验目的 修改O(1)调度程序,使交互性非常强的程序(IO密集型)在时间片用完后,不放置到活动数组,而放入过期数组(与O(1)调度实现相反)转载 2015-05-20 15:08:34 · 1165 阅读 · 0 评论 -
linux内核编程4部曲之二:增加linux内核系统调用
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说linux内核编程4部曲之二:增加linux内核系统调用linux内核编程4部曲之三:修改O(1)调度算法linux内核编程4部曲之四:模块编程 本文,承接上面一篇linux内核编译,增加系统调用后,需要重新编译内核。一、实验目的 增加加减乘除系统调用,并测试系统调用和用户调用的转载 2015-05-20 15:08:15 · 1025 阅读 · 0 评论 -
Linux2.6 内核的 Initrd 机制解析
Linux2.6 内核的 Initrd 机制解析 李 大治 (dazhi.li@gmail.com), 软件工程师 简介: Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然转载 2015-05-20 16:49:26 · 636 阅读 · 0 评论 -
linux内核编程4部曲之四:模块编程
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说linux内核编程4部曲之二:增加linux内核系统调用linux内核编程4部曲之三:修改O(1)调度算法linux内核编程4部曲之四:模块编程 一、实验要求 添加系统调用加减乘除,并通过模块加载,实现加减乘除。二、增加系统调用 按照实验一的步骤增加系统转载 2015-05-20 15:08:59 · 766 阅读 · 0 评论 -
Linux内核编译中遇到的Kconfig,.confi和Makefile的关系
最近在学习设备驱动程序,编写完之后进行编译之前,要在Kconfig和Makefile文件里面添加一些内容,参考了其他的源码,发现源码树目录下几乎都有Kconfig和Makefile文件,并且在内核编译之前,要使用make menuconfig(或者xconfig)生成配置文件。那么到底这些文件对于内核的编译有什么作用?它们之间是怎么样的关系,网上参考了一些文章,然后自己实地操作了一番,现简原创 2015-05-21 14:05:43 · 2233 阅读 · 0 评论 -
Linux设备模型之kobject
Linux设备模型之kobject阿辉原创,转载请注明出处http://www.cnblogs.com/helloahui/p/3677192.html参考文档:LDD3-ch14、内核文档Documentation/kobject.txt,本文中使用到的代码均摘自Linux-3.4.75---------------------------------------------转载 2015-10-20 11:01:16 · 794 阅读 · 0 评论 -
一个IO传奇的一生-1
http://alanwu.blog.51cto.com/3652632/1286553前言前几天同事提议写一篇文章来仔细分析一下一个IO从创建到消亡的整个过程,我觉得这个想法很好,一个IO从创建到消亡经历了千山万水,从软件到硬件涉及到很多很多的技术。一个看似简单的IO读写操作,其实汇集了从计算机软件技术、硬件技术、电子技术、信号处理等各个方面的内容。所以,我想把IO的一生通过自己转载 2016-05-24 20:00:49 · 963 阅读 · 0 评论 -
一个IO传奇的一生-4
块设备buffer cache机制 在EXT3文件IO踏上新的征程之前,需要介绍一位EXT3文件IO的同伴,他们即将踏上相同的旅程。只不过这位同伴没有经历过EXT3文件系统的精彩,却领略了另外一番略有差别的风情。这位同伴是在块设备写操作时创建诞生的,我们可以称它为块设备IO。在很多�22>.writepages = generic_writepages,.releasepage转载 2016-05-24 20:04:16 · 819 阅读 · 0 评论 -
一个IO传奇的一生-5
块设备层分析无论是经过EXT3文件系统还是块设备文件,最终都要通过writeback机制将数据刷新到磁盘,除非用户在对文件进行读写的时候采用了DirectIO的方式。为了提高性能,文件系统或者是裸设备都会采用Linux的cache机制对数据读写性能进行优化,因此都会采用writeback回写机制将数据写入磁盘。通过上述分析我们已经知道�%8ss="as3 plain">{/* 获取转载 2016-05-24 20:04:36 · 947 阅读 · 0 评论 -
一个IO传奇的一生-6
IO调度器 当IO旅行到调度器的时候,发现自己受到的待遇竟然很不一样,有些IO倚仗着特权很快就放行了;有些IO迟迟得不到处理,甚至在有些系统中居然饿死!面对这样的现状,IO显然是很不高兴的,凭什么别人就能被很快送到下一个旅程,自己需要在调度器上耗费青春年华?这里是拼爹的时代,人家出身好,人家是读请求,人家就可以很快得到资源。咱们是写请求,出生贫寒�">* may now be merg转载 2016-05-24 20:05:17 · 1062 阅读 · 0 评论 -
wanthelaping--1.1QEMU用户态框架
本节首先分析Qemu的初始化top level流程;从而引出Qemu各大功能模块的描述。最后分析Qemu与内核态KVM的通讯接口。1.1.1Main的主流程main– (vl.c function main)a) module_call_init(MODULE_INIT_QOM);--设备驱动初始化和注册 type_init(x86_cpu_register_types)(tar转载 2016-05-24 20:16:02 · 1064 阅读 · 0 评论 -
kvm--虚拟机运行
1、基本原理KVM虚拟机通过字符设备/dev/kvm的ioctl接口创建和运行,相关原理见之前的文章说明。虚拟机的运行通过/dev/kvm设备ioctl VCPU接口的KVM_RUN指令实现,在VM和VCPU创建好并完成初始化后,就可以调度该虚拟机运行了,通常,一个VCPU对应于一个线程,虚拟机运行的本质为调度该虚拟机相关的VCPU所在线程运行。虚拟机(VCPU)的运行主要任务是要进行上下转载 2016-05-18 12:30:19 · 703 阅读 · 0 评论 -
select(poll)实现代码实现分析(基于kernel 3.10.0)
分析转自网上。针对kernel3.10.0的代码重新注释,对其中的错误进行了修正上层要能使用select()和poll()系统调用来监测某个设备文件描述符,那么就必须实现这个设备驱动程序中struct file_operation结构体的poll函数,为什么?因为这两个系统调用最终都会调用驱动程序中的poll函数来初始化一个等待队列项, 然后将其加入到驱动程序中的等待队列头,这样就可以在硬转载 2016-05-18 13:30:37 · 722 阅读 · 0 评论