
linux kernel
文章平均质量分 80
Am_111
这个作者很懒,什么都没留下…
展开
-
浅析arm(kernel-2.6.13)自旋锁与信号量
浅析arm(kernel-2.6.13)自旋锁与信号量在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关。如果内核抢占也不存在,那么自旋锁会在编译时被完全剔除出内核。我的是s3c2440 armv4的单核。这个内核被配置为可抢占的。# Kernel Features#CONFIG_PREEMPT=y自旋锁的实现:spin_lock的定义如下:#define spin_lock(lo转载 2011-06-26 21:17:00 · 1738 阅读 · 0 评论 -
Android/Linux Kernel 記憶體管理-入門筆記
這是一篇寫給自己看的筆記,牽涉的範圍是Android/Linux Kernel上下層的記憶體管理機制,由於牽涉到基礎,核心與使用者空間的Framework,這系列的文章會分為幾個單元,依據筆者自己的時間安排,逐一分享出來,並希望對各位有所助益.相對於整理Kernel 排程,FileSystem,與相關核心模組的知識,重新再去彙整Kernel記憶體機制的Topics,會發現表現上看似簡單的Mal转载 2013-03-13 11:03:42 · 3442 阅读 · 0 评论 -
CACHE & TLB (三)
source code以ARM926EJ-S为例分析,主要的代码位于arch/arm/mm/cache-arm926.s和arch/arm/mm/proc-arm926.s1. cache和tlb的定义 #ifdef MULTI_CACHE ENTRY(\name\()_cache_fns) .long \name\()_flush_ic原创 2013-03-12 09:56:09 · 3465 阅读 · 0 评论 -
CACHE & TLB(二)
四.虚拟高速缓存 1.虚拟高速缓存的概念 2.别名和歧义的概念 歧义:(ambiguity) 在高速缓存建立映射表之后,如果虚拟地址和物理地址的映射关系发生变化,而从虚拟高速缓存来看,虚拟地址不变,所以依然会命中而直接返回,从原创 2013-03-11 15:15:38 · 4739 阅读 · 0 评论 -
CACHE & TLB (一)
一.unix内核简单回顾(内存相关) 1. 当使用传统的分时调度策略的时候,在用户级执行的进程总会被分到时间片内执行,从而让所有的进程公平的共享CPU,在内核态执行的进程却不会分入时间片内执行,只有当前的内核进程明确允许的情况下,才能切换到内核级执行另一个进程。 2. 线程的开销比进程小主要体现在线程共享进程的地址空间。linux内核原创 2013-03-08 12:12:47 · 2773 阅读 · 0 评论 -
Transcendent memory(TMEM)
By Jonathan CorbetJuly 8, 2009 Making the best use ofavailable memory is one of the biggest challenges for any operating system.Throwing virtualization into the mix adds both new challenges (balan原创 2012-12-17 18:55:59 · 2940 阅读 · 0 评论 -
Cleancache and Frontswap
Dan Magenheimer's transcendent memory patch was examined here last July. This patch creates a special class of memory which is not directly accessible to the rest of the kernel, allowing a number of原创 2012-12-12 15:29:52 · 2042 阅读 · 0 评论 -
Something about Mutex
最近打开内核Mutex debug选项,出现一些Mutex Warning,重新审查和学习了一点东西,记录一下。目前在学习SMP相关的东西,已经开始,坚持!一.Mutex Slowpath & Fastpath1. Can someone help me to understand what is the difference between> >> > fastpath> >原创 2012-08-26 23:00:08 · 1832 阅读 · 0 评论 -
Linux中断处理体系结构分析(一)
异常,就是可以打断CPU正常运行流程的一些事情,比如外部中断、未定义指令、试图修改只读的数据、执行swi指令(Software Interrupt Instruction ,软件中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。操作系统中经常通过异常来完成一些特定的功能。其中的中断也占有很大的一部分。例如下面的这几种情况:当CPU执行转载 2011-06-28 00:00:00 · 2222 阅读 · 0 评论 -
BUG_ON && WARN_ON
BUG_ON && WARN_ON一.BUG_ONLinux中BUG_ON,WARN_ON用于调试,比如14 #define BUG_ON(condition) do { / 15 if (unlikely((condition)!=0)) / 16 BUG(); / 17 } while(0)如果觉得该condition原创 2011-06-27 21:13:00 · 6812 阅读 · 0 评论 -
linux中断处理体系结构分析(二)
1.中断处理的体系结构 我们知道编写设备驱动程序一定要用到中断处理函数,这在驱动程序的编写中,占据很重要的一部分。在响应一个特定的中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupt handler)或中断服务例程(interrupt service routine ,ISP).产生中断的每个设备都有一个相应的中断处理程序,中断处理程序通常不和特定的设备关联,而转载 2011-06-28 00:07:00 · 2544 阅读 · 0 评论 -
ARM系统中, 当crash发生时的back trace调试输出
在ARM target board上, 如果发生异常,如内存访问越界等情况,有时会非常难debug到底是哪里出错,近来看了一下back trace回溯的功能及实现,在这里做个笔记。 首先,back trace要涉及到一堆寄存器, 不过不用担心, 实际上没你想象的那么难。 在linux kernel的代码中可以看到关于ARM寄存器的定义,在这里列一下:linux/include/asm-arm/pr转载 2011-06-27 21:07:00 · 3121 阅读 · 0 评论 -
linux中断 下半部
Linux中断体系 下半部一.Softirq二.Tasklet三.Tasklet_action 一.softirq为了提高中断的响应速度,很多操作系统都把中断分成两个部分,上半部分和下半部分(bottom half).上半部分通常是响应中断,并把中断所得到的数据保存到下半部,耗时的操作一般都会留到下半部去处理。在softirq_init()中会注册两个常用类型的软中断,原创 2011-06-28 00:39:00 · 4398 阅读 · 0 评论 -
关于MIPS平台的asid_cache debug的总结
最近遇到一个非常有意思的问题,MIPS平台的CPUHOTPLUG会有一定的概率导致应用程序出现段错误,花了几天的时间排除了一大堆问题后,最后定位到了MIPS公司的一段代码上,竟然是在trap_init里又对asid_cache进行了初始化!在网上很少有关于asid的内容,有也讲的不详不尽,今天写完了文档,决定把它贴出来!欢迎一起讨论。 ====================转载 2013-03-20 16:05:19 · 2839 阅读 · 0 评论