linux 内核机制
别说郁闷
手机开发
展开
-
inux内核之进程管理详解
转载:https://blog.csdn.net/heliangbin87/article/details/774419081、进程描述符(1)进程与线程 进程是处于执行期的程序以及相关资源的总称。线程在linux上称为轻量级进程,没有独立的地址空间,一个进程下的所有线程共享地址空间、文件系统资源、文件描述符、信号处理程序等。 (2)进程描述符task_struct ...转载 2018-06-27 14:34:36 · 420 阅读 · 0 评论 -
idr机制--integer ID management
最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制。 所谓IDR,其实就是和身份证的含义差不多,我们知道,每个人有一个身份证,身份证只是 一串数字,从数字,我们就能知道这个人的信息。同样道理,idr的要完成的任务是给要管理的对象分配一个数字,可以通过这个数字找到要管理的对象。 ID --------------------转载 2012-11-22 09:21:26 · 533 阅读 · 0 评论 -
Linux-Android启动之Init进程前传
Linux-Android系统的启动做了一些分析,下面的一篇文章侧重讲述Linux启动过程中函数Start_kernel()被调用之前的一些分析,同时也对函数Start_kernel()之后的代码流程作了概述,我希望关于Linux-Android系统的启动的专题能够继续地写下去,哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,现行谢过。转载 2012-08-28 11:39:45 · 528 阅读 · 0 评论 -
linux work queue及并发可管理工作队列
2012-01-03 17:11 80人阅读 评论(0)收藏 举报并发可管理工作队列的出现慢工作机制为什么说是“提供过内核中还曾短暂出现过慢工作机制 (slow work mechanism)”,原因是在 mainline内核中,曾经出现过慢工作机制 (slow work mechanism),但随着并发管理工作队列 (cmwq) 的出现,它已经全部被 cm转载 2012-04-16 12:15:03 · 1645 阅读 · 0 评论 -
idr机制
感谢原创作者分享此文,不过我忘了出处,还请见谅。 idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁。现在,在内核的很多地方都可以找到idr的身影。idr机制适用在那些需要把某个整数和特定指针关联在一起的地方。举个例子,在I2C总线中,每个设备都转载 2012-04-13 17:08:41 · 654 阅读 · 0 评论 -
Linux内存模型之bootmem分配器
简介:bootmem分配器是系统启动初期的内存分配方式,在耳熟能详的伙伴系统,slab系统建立前内存都是利用bootmem分配器来分配的,伙伴系统框架建立起来后,bootmem会过度到伙伴系统,bootmem大致思想就是收集内存中的可用内存,然后建立bit位图,然后需要的内存从这些空闲内存中分配,分配了就标记占用,当然这种分配方式很低效,但是由于只占用启动阶段很少一部分,所以也大可接受了,好了,废转载 2012-04-12 16:56:31 · 1146 阅读 · 0 评论 -
Linux Call Trace原理分析
Linux Call Trace原理分析本文介绍了在Linux环境下根据EABI标准进行call trace调试的一般性原理.本文所说的call trace是指程序出问题时能把当前的函数调用栈打印出来。本文只介绍了得到函数调用栈的一般性原理,没有涉及Linux的core dump机制。下面简单介绍powerpc环境中如何实现call trace。内核态cal转载 2012-04-12 17:21:42 · 808 阅读 · 0 评论 -
gpiolib kernel doc
============================================作者:yuanluluhttp://blog.csdn.net/yuanlulu版权没有,但是转载请保留此段声明============================================自己翻译的内核gpiolib文档,是2.6.38版本的。原文在:http:/转载 2012-03-22 17:33:49 · 928 阅读 · 0 评论 -
linux 内核源特殊用法
1 前言Linux内核源码主要以C语言为主,有一小部分涉及汇编语言,编译器使用的是Gcc。初次看内核源码,会遇到一些难以理解、晦涩的代码;而恰恰是这些晦涩的代码,在内核源码中经常出现。把一些晦涩、常见的代码看懂后,大家会发现看内核代码越来越顺利。本文以x86_64架构中的Linux 2.6.32-71.el6(RHEL 6)源码为例,选择一些经常出现且晦涩的源码进行解释,选择的源转载 2012-03-19 10:55:26 · 811 阅读 · 0 评论 -
内存管理
页帧管理层次化的页帧管理页帧 用4K小页管理动态内存 (内存管理的最小存储单元) 找空闲页方便。 磁盘与内存传输方便。 页帧描述符 (page) flags:FIXME: 添加细节 高几位表示该页所属的node(UMA,只占1bit),所属的zone(2bit) node号在32-bit的NUMA中占6位, 6转载 2012-03-17 18:02:47 · 637 阅读 · 0 评论 -
linux slub分配器浅析
在《linux内存管理浅析》中提到内核管理自己使用的内存时,使用了SLAB对象池。SLAB确实是比较复杂,所以一直以来都没有深入看一看。不过现在,linux内核中,SLAB已经被它的简化版--SLUB所代替。最近抽时间看了一下SLUB的代码,略记一些自己的理解。尽管SLUB是在内核里面实现的,用户态的对象池其实也可以借鉴这样的做法。SLUB的总体思想还是跟SLAB类似,对象池里面的转载 2012-03-17 18:00:16 · 775 阅读 · 0 评论 -
.常见的Linux内核中内存分配
文章转载自http://ceeu.qianrushi.com.cn/article.asp?id=30545 1.原理说明 Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示四级页表分别为: * 页全局目录(Page Global Dire转载 2012-03-17 17:44:21 · 1494 阅读 · 0 评论 -
kmalloc()和__get_free_pages()
在Linux内核中对应进程内存区域的数据结构是: vm_area_struct, 内核将每个内存区域作为一个单独的内存对象管理,相应的操作也都一致。采用面向对象方法使VMA结构体可以代表多种类型的内存区域--比如内存映射文件或进程的用户空间栈等,对这些区域的操作也都不尽相同。vm_area_strcut结构比较复杂,关于它的详细结构请参阅相关资料。我们这里只对它的组织方法做一点补充说明。vm_转载 2012-03-17 14:20:52 · 1933 阅读 · 0 评论 -
Linux内核中的内存屏障
前言 之前读了关于顺序一致性和缓存一致性讨论的文章,感觉豁然开朗。对linux内核中出现的种种同步和屏障,想做一点总结。 缓存一致性 之前一直认为linux中很多东西是用来保证缓存一致性的,其实不是。缓存一致性绝大部分是靠硬件机制实现的,只有在带lock前缀的指令执行时才与cache有一点关系。(这话说得绝对,但我目前看来就是这样)我们更多的时候是为了保证顺序一致性。转载 2012-12-24 12:26:44 · 461 阅读 · 0 评论 -
内核抢占
Sailor_forever sailing_9806@163.com 转载请注明http://blog.csdn.net/sailor_8318/archive/2008/09/03/2870184.aspx 【摘要】本文详解了Linux内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性。然后分析了禁止内核抢转载 2012-12-11 14:50:32 · 646 阅读 · 0 评论 -
Linux内核进程调度schedule深入理解
Linux内核进程调度schedule深入理解 一.说明本文以linux-2.4.10 为例主要分析Linux 进程调度模块中的schedule 函数及其相关的函数。另外相关的前提知识也会说明。默认系统平台是自己的i386 架构的pc。二.前提知识在进行schedule 分析之前有必要简单说明一下系统启动过程,内存分配使用等。这样才能自然过渡到schedule 模块。首先是转载 2012-12-11 14:51:20 · 948 阅读 · 0 评论 -
Linux进程管理与调度-之-目录导航
http://blog.csdn.net/gatieme/article/details/51456569转载 2017-10-24 14:32:50 · 465 阅读 · 0 评论 -
ARMv8 與 Linux的新手筆記
http://loda.hala01.com/2014/12/armv8-%E8%88%87-linux%E7%9A%84%E6%96%B0%E6%89%8B%E7%AD%86%E8%A8%98/转载 2017-04-20 15:11:28 · 424 阅读 · 0 评论 -
Linux 和对称多处理
转载:http://www.ibm.com/developerworks/cn/linux/l-linux-smp/在 SMP 系统上发挥 Linux 的功能M. Tim Jones, 顾问工程师, Emulex简介: 如主流中央处理器(CPU)供应商所证明的那样,多核处理器随时准备着占领桌面和嵌入式市场。多处理带来了更高的性能,也同时带来了新的问题。本文将转载 2013-01-16 17:13:48 · 492 阅读 · 0 评论 -
Linux 下多核CPU知识
1. 在Linux下,如何确认是多核或多CPU:#cat /proc/cpuinfo如果有多个类似以下的项目,则为多核或多CPU:processor : 0......processor : 12. Linux下,如何看每个CPU的使用率:#top -d 1之后按下1. 则显示多个CPUCpu0 : 1.0%us,转载 2013-01-17 09:39:53 · 1100 阅读 · 0 评论 -
linux regulator
Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过regulator关闭其电源供应;或者降低提供给该模块的电压、电流大小。Regulator的文档在KERNEL/Documentation/Power/Regulator中。 Regulator与模块转载 2012-12-17 16:51:57 · 488 阅读 · 0 评论 -
preempt注释
早期的Linux核心是不可抢占的。它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。非自愿的强制性调度只能发生在每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空间的前夕。但是,如果在系统空间发生中断或异常是不会引起调度的。这种方式使内核实现得以简化。但常存在下面两个问题:如果这样的中断发生在内核中,本次中断返回是不会引起调度的,而要到最初使CPU从转载 2012-12-17 10:13:28 · 581 阅读 · 0 评论 -
Freezing of tasks [Kernel Documents]
Freezingof tasks(C)2007 Rafael J. Wysocki , GPL翻译: Arethe Qin I. 什么是任务冷冻?任务冷冻是一种在系统休眠或者系统挂起期间控制用户空间进程和一些内核线程的机制。II. 它是如何工作的?每个任务都有4个标志用于任务冷冻机制,P转载 2012-12-26 09:46:17 · 712 阅读 · 0 评论 -
rcu机制
本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用。一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对转载 2012-12-24 16:48:07 · 537 阅读 · 0 评论 -
rcu锁机制
一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就转载 2012-12-25 09:43:45 · 655 阅读 · 0 评论 -
[译文]What is RCU, Fundamentally?
http://lwn.net/Articles/262464/ December 17, 2007Paul E. McKenney, IBM Linux Technology CenterJonathan Walpole, Portland State University Department of Computer Science王旭 [gnawux(at)gm转载 2012-12-24 16:49:21 · 578 阅读 · 0 评论 -
kernel panic 调试
kernel panic错误表现kernel panic 主要有以下几个出错提示: Kernel panic-not syncing fatal exception in interrupt kernel panic - not syncing: Attempted to kill the idle task! kernel panic - not syncing: killing转载 2012-12-11 15:16:27 · 1024 阅读 · 0 评论 -
Kernel panic 息分析方法(转自高人)
Kernel panic 息分析方法(转自高人) Oops: 0000 [#1] PREEMPT SMP Modules linked in: capidrv kernelcapi isdn slhc ipv6loop dm_multipath snd_ens1371 gameport snd_rawmidi snd_ac97_codecac9转载 2012-12-11 15:15:23 · 1296 阅读 · 0 评论 -
LINUXLinux启动流程
1 Bootloader对于一般的ARM处理器,CPU上电或复位执行第一条指令所在地址,即第一段程序Bootloader的开始地址,Bootloader一般存于Nor-flash(XIP),支持芯片内执行。Bootloader的功能可总结为:1)初始化CPU时钟,内存,串口等。2)设置Linux启动参数。3)加载Linux内核镜像。Android源码位于根目录下的/bootable文件夹。转载 2012-03-29 16:12:58 · 558 阅读 · 0 评论 -
SD/MMC卡块设备驱动程序
SD/MMC 卡组成的存储系统是许多嵌入设备的主要存储设备,相当于PC机的硬盘,在嵌入设备上的SD/MMC卡控制器通过MMC协议来解析命令控制SD/MMC卡的操作。SD/MMC卡上有一些寄存器来控制卡的状态及读写操作。MMC协议规定的寄存器有:CID寄存器,128位,是卡的鉴别寄存器,存有卡的鉴别信息;RCA寄存器是16位,存有卡的本地系统的相对地址,在初始化时由控制器动态指定。DSR寄存器是16转载 2012-03-29 16:07:55 · 1953 阅读 · 1 评论 -
实战Linux Bluetooth编程
文章来源:http://blog.chinaunix.net/u3/104073/showart_2081838.html实战Linux Bluetooth编程(一) 协议栈概述Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API记录下来。这几天又想,这样还不够,不如把Li转载 2012-02-03 16:43:43 · 1369 阅读 · 0 评论 -
Linux终端设备驱动
文章来源:http://blog.chinaunix.net/u3/94284/showart_1981110.html在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。14.1终端设备 在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来转载 2012-02-03 16:40:20 · 1308 阅读 · 0 评论 -
Linux--根文件系统的挂载过程分析
前言:本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件转载 2012-02-02 11:37:20 · 474 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
如何调整Linux内核启动中的驱动初始化顺序【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处,内核编译转载 2011-08-19 17:34:30 · 583 阅读 · 0 评论 -
Linux I2C 驱动阅读的碰到的一些网上没有提到的东西 (现在有了)
由于公司的需要,在写I2C程序,原来从头到尾自己写一个IIC驱动是一件很简单的事情,但想完美的我还是想把我的驱动和内核的I2C子系统连接起来,I2C本身很简单,S3C2410无操作系统不用300行就搞定,但I2C子系统却把这么简单的代码变得非常庞大,非常难懂,结构错综复杂。转载 2011-09-09 14:24:50 · 1041 阅读 · 0 评论 -
dma_alloc_writecombine
先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可转载 2011-08-08 17:41:56 · 3161 阅读 · 1 评论 -
Linux Kernel: 简介HZ, tick and jiffie
Linux核心幾個重要跟時間有關的名詞或變數,底下將介紹HZ、tick與jiffies。HZLinux核心每隔固定週期會發出timer interrupt (IRQ 0),HZ是用來定義每一秒有幾次timer interrupts。舉例來說,HZ為1000,代表每秒有转载 2011-08-01 12:15:34 · 1861 阅读 · 0 评论 -
What’s the jiffy?
在学习linux源码时,对jiffy这个概念比较迷惑。查了一些资料,这个还是讲得比较好的,与君共享。What’s the jiffy?在电气中,jiffy是指交流电的周期。如果我们打开翻译软件输入jiffy,会得到意思:一会儿,瞬间。而在计算机领域呢?我在这里引用转载 2011-08-01 12:12:00 · 517 阅读 · 0 评论 -
Linux内核定时器
定时器的使用非常方便,只需要执行一些初始化的操作,设置一个超时时间,指定超时发生时执行的函数,然后激活定时器就可以了。它的处理和工作队列还是有点类似的。其实,在Linux内核开发中,很多的操作都是类似的。还有一点需要注意的,内核定时器并不是周期运行,它在超时后自动销毁。因此,如果转载 2011-08-01 15:28:24 · 520 阅读 · 0 评论 -
linux驱动中的并发控制
1.linux 内核中发生竞态的几种情况:a) 对称多处理器的多个CPUb) 单CPU内进程与抢占它的进程(2.6内核以后支持内核抢占)。c) 中断与进程之间。2.linux内核中的互斥机制:a) 中断屏蔽:中断屏蔽一般不单独使用,一般和自旋锁配合使用。因为这几个函数,只能禁用本原创 2011-07-23 13:00:30 · 705 阅读 · 0 评论