linux kernel
文章平均质量分 67
云雷奋发雪月空明
这个作者很懒,什么都没留下…
展开
-
linux kernel books
4: 深入分析Linux内核源码5: LINUX内核源代码情景分析_完整完美版1: LINUX内核设计与实现(第二版)2: Linux内核设计与实现中文原书第3版3: 深入理解Linux内核 第三版 中文版原创 2013-07-10 22:20:08 · 744 阅读 · 0 评论 -
do_mmap_pgoff
mmap 内核实现--do_mmap_pgoff http://blog.chinaunix.net/uid-24774106-id-366143.htmlLinux内核源码阅读之内存映射篇http://blog.csdn.net/f413933206/article/details/5701903进程虚拟地址空间之arch_get_unma原创 2013-08-30 13:38:59 · 2117 阅读 · 0 评论 -
sys_mmap_pgoff
sys_mmap_pgoffSYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, unsigned long, prot, unsigned long, flags, unsigned long, fd, unsigned long, pgoff){ struct file * file = NUL原创 2013-08-30 14:42:48 · 3642 阅读 · 1 评论 -
sys_brk
sys_brkSYSCALL_DEFINE1(brk, unsigned long, brk){ unsigned long rlim, retval; unsigned long newbrk, oldbrk; struct mm_struct *mm = current->mm; unsigned long min_brk; down_write(&mm->mmap_原创 2013-08-30 14:57:09 · 1001 阅读 · 0 评论 -
malloc
malloc实现原理http://blog.csdn.net/vincent_smz/article/details/6338417http://blog.csdn.net/haoel/article/details/6338025原创 2013-08-28 17:07:04 · 900 阅读 · 0 评论 -
Global kva allocator
Global kva allocator 数据结构/*** Global kva allocator ***/#define VM_LAZY_FREE 0x01#define VM_LAZY_FREEING 0x02#define VM_VM_AREA 0x04struct vmap_area { unsigned long va_start; unsigned lon原创 2013-08-30 16:51:52 · 902 阅读 · 0 评论 -
softIRQ tasklet work_queue
Soft Irq、tasklet和work queue并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三者之间的关系。(函数细节将不会在本文中出现,可以参考文献,点这里)(1)上半部和下半部的区别上半部指的是中断转载 2013-08-22 14:07:23 · 1541 阅读 · 0 评论 -
deadlock
死锁形成的原因是不同进程所持有和申请的锁形成了一个环,出现死锁一般表明程序代码中有bug。在Linux内核中,为了避免死锁,有几条措施:1 spin lock获得后不会发生进程调度;2 获取多把spin lock时,所有进程按照锁的地址大小顺序获取;3 要使用多个锁的子系统中,对各种锁的使用会形成一个获取顺序的约定,(可参考mm/rmap.c)4 Linux内核中原创 2013-09-26 13:52:21 · 869 阅读 · 0 评论 -
代码阅读
1: 按照些代码的思路去阅读代码具体说来,写代码是增量式,也就是说,先完成基本框架,再逐步改进添加。阅读的时候,也要抓住这个思想。而不是,一步追求阅读懂全部细节。2:比如一个结构体不可能一下子看懂他的所有字段的意思,刚开始看懂最主要的字段的意义,把主要的流程走通,就行了。一些新的字段,往往是后来为了增加新的功能,逐渐添加进去的。不可能一下子全部看懂。比如对比Linux kern原创 2014-01-21 09:45:34 · 615 阅读 · 0 评论 -
driver links
http://blog.csdn.net/gdt_a20/article/category/822167转载 2014-02-28 17:21:28 · 514 阅读 · 0 评论 -
总线
关于PCI总线了解这些设备,无非是了解其各种寄存器的使用。对于PCI,无非是了解configuration space的各种寄存器的意义。为了省力,总是去百度搜索,google搜索,搜索到各种垃圾文章,一些低手,菜鸟写的文章。结果越看越不懂。而且感到畏惧,认为很难。其实大师设计的东西,都是结构清晰,简单清晰的。所谓unix哲学,就是大道至简。最简答的办法,最直接的办法,实现原创 2014-03-10 15:15:32 · 593 阅读 · 0 评论 -
GPIO源代码分析
参考linux31026\drivers\gpio\gpio-sa1100.clinux31026\drivers\gpio\gpiolib.chttps://lwn.net/Articles/532714/数据结构一个gpio number 对应一个 gpio_descstruct gpio_desc {struct gpio_chip*chi原创 2014-04-02 10:59:18 · 3779 阅读 · 0 评论 -
linux call trace
Manish Sarori says: November 25th, 2008 at 10:20 pmIn the calltrace, does anyone know what the numbers after the + mean (see below)? For example, after __handle_sysrq is 0×58/0xc6. Is this some so转载 2014-04-18 10:47:29 · 1298 阅读 · 0 评论 -
Introduction to Flash Memory -- It is used more as a hard drive than as RAM.
Speed: RAM >> FLASH >> Hard Drive Physical mechanical : FLASH: electronic , no mechanical parts, 20% of the power, one hundred times faster than traditional mechanical hard原创 2014-04-04 09:39:03 · 805 阅读 · 0 评论 -
EEPROM and FLASH
ROM在微机的发展初期,BIOS都存放在ROM(Read Only Memory,只读存储器)中。ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如果发现资料有任何错误,则只有舍弃不用,重新订做一份。ROM是在生产线上生产的,由于成本高,一般只用在大批量应用的场合。原创 2014-04-03 16:40:35 · 1070 阅读 · 0 评论 -
完成量代码分析
结构体D:\linux31026\include\linux\completion.hstruct completion {unsigned int done;wait_queue_head_t wait;};done: 完成计数,0 表示未完成, 大于0表示等待的事件已经完成。wait: 存放等待该事件完成的进程队列。定义/初始化原创 2014-04-04 16:42:54 · 869 阅读 · 0 评论 -
cfs 原理解释
yuzhi两个可以调度的进程A, BA原创 2014-08-28 01:47:18 · 1590 阅读 · 0 评论 -
temporary
http://download.csdn.net/detail/deutschan/2787543原创 2014-09-05 18:05:49 · 735 阅读 · 0 评论 -
linux syscall procedure
1:trap_init traps.c (F:\linux-2.6.32\arch\x86\kernel) set_system_trap_gate(SYSCALL_VECTOR, &system_call);2:entry_32.S (F:\linux-2.6.32\arch\x86\kernel) ENTRY(system_call)S原创 2013-08-28 15:34:20 · 934 阅读 · 0 评论 -
wait && child process && fork
为何要fork()两次来避免产生僵尸进程? 当我们只fork()一次后,存在父进程和子进程。这时有两种方法来避免产生僵尸进程:父进程调用waitpid()等函数来接收子进程退出状态。父进程先结束,子进程则自动托管到Init进程(pid = 1)。 目前先考虑子进程先于父进程结束的情况: 若父进程未处理子进程退出状态,在父进程退出前转载 2013-08-26 10:59:33 · 1008 阅读 · 0 评论 -
傳統BIOS開機流程
傳統BIOS開機流程從你按下主機機殼上的電源鍵,到進入作業系統的期間,儲存於主機板上那顆EEPROM(電氣可抹除暨可程式化唯讀記憶體)裡的BIOS便會開始執行以下的工作:1. 初始化:當電腦打開,CPU會自行重置為初始狀態,準備運作。BIOS boot block(基本輸出輸入系統開機區塊)初始化階段啟動,因為此時系統記憶體中是空的,沒有內容可以執行,所以廠商讓CPU去尋找转载 2013-07-02 15:05:56 · 1059 阅读 · 0 评论 -
JFS
http://www.ibm.com/developerworks/cn/linux/filesystem/jfs/jfslayout/http://www.ibm.com/developerworks/cn/linux/l-jfs/http://www.linux-mag.com/id/1180/http://www.linuxtopia.org/原创 2013-07-09 13:19:55 · 916 阅读 · 0 评论 -
Linux memory: buffer vs cache
"Buffers" represent how much portion of RAM is dedicated to cache disk block. "Cached" is similar like "Buffers", only this time it caches pages from file reading.Buffers are associate转载 2013-08-01 10:01:33 · 1678 阅读 · 0 评论 -
MTRR (Memory Type Range Register) control
MTRR (Memory Type Range Register) control3 Jun 1999Richard Gooch On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers (MTRRs) may be used to contro转载 2013-08-01 11:30:57 · 8780 阅读 · 0 评论 -
剖析程序内存布局
http://duartes.org/gustavo/blog/http://www.360doc.com/content/12/0918/16/7982302_236773349.shtml转载 2013-08-05 10:26:48 · 591 阅读 · 0 评论 -
How to "Build" a Computer
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/index.html操作系统的基本概念转载 2013-08-05 10:57:38 · 692 阅读 · 0 评论 -
linux slub分配器浅析
linux slub分配器浅析在《linux内存管理浅析》中提到内核管理自己使用的内存时,使用了SLAB对象池。SLAB确实是比较复杂,所以一直以来都没有深入看一看。不过现在,linux内核中,SLAB已经被它的简化版--SLUB所代替。最近抽时间看了一下SLUB的代码,略记一些自己的理解。尽管SLUB是在内核里面实现的,用户态的对象池其实也可以借鉴这样转载 2013-08-05 16:09:56 · 617 阅读 · 0 评论 -
内存 cache
Introduction to Caches cache slot 的数据结构SlotsLet's get into more specific details about the cache. In particular, we'll describe an individual slot.A slot consists of the following:转载 2013-08-05 11:43:43 · 995 阅读 · 0 评论 -
real-time scheduler man page
man sche_setscheduler实时调度的一些概念SCHED_SETSCHEDULER(2) Linux Programmer's Manual SCHED_SETSCHEDULER(2)NAME sched_setscheduler, sched_getscheduler - set and get schedulin原创 2013-08-06 10:09:16 · 1373 阅读 · 0 评论 -
CPU Switches from Kernel mode to User Mode on X86 : When and How?
详解转载 2013-08-06 11:10:40 · 2069 阅读 · 0 评论 -
notification chain and timer interrupt
notification chainClass:notifier_blockmember:notifier_call: callback function next: single listnotifier_block --> notifier_block --> ... --> notifier_block --> notifier_block原创 2013-08-07 16:24:53 · 948 阅读 · 0 评论 -
what-is-the-bios-and-what-does-it-do
BIOShttp://forum-en.msi.com/faq/article/what-is-the-bios-and-what-does-it-do原创 2013-08-20 23:30:30 · 911 阅读 · 0 评论 -
MSI
从各处转载,算是原创吧。谢谢原作者。From: http://blog.sina.com.cn/s/blog_6472c4cc0100qxc6.html3.3.2 处理器到PCI处理器到PCI设备的数据传送下文以图3‑2所示的处理器系统为例,说明处理器向PCI设备11进行存储器写的数据传送过程。处理器向PCI设备进行读过程与写过程略有区别,因为存储器写使用P原创 2013-08-21 11:47:29 · 1899 阅读 · 0 评论 -
LKA linux kernel architechture
一本好书就是一个好老师,好师傅,好朋友。LKA就是一本这样的书。1: OS概念,层次2:怎么阅读代码,抓住重点3:翻译,英文学习原创 2013-08-09 16:26:27 · 783 阅读 · 0 评论 -
pthread theory and usage
why pthread开销内存共享于同步调度和协同合作CPU与I/O的重叠协作:例如,一个程序可能分多段对I/O进行长操作,当一个线程正在等待一个I/O系统调用完成时,CPU可以用其它线程进行现有的密集工作;优先级/实时调度:可预定更重要的任务取代或者中断低优先级的任务;异步事件处理:一些不确定次数和持续时间的服务事件是交叉执行的任务。例如,Web服务器可以在应答前原创 2013-08-21 17:28:26 · 878 阅读 · 0 评论 -
mit 6.828
http://pdos.csail.mit.edu/6.828/2012/index.html转载 2013-08-12 22:56:23 · 885 阅读 · 0 评论 -
grub stage 1.5
stage1的代码文件,是源码目录下 stage1/stage1.S,汇编后便成了一个512字节的 img,被写在硬盘的0面0道第1扇区,作为硬盘的主引导扇区。注意,硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT)stage1的工作并不是加载什么 stage1.5或者 stage2,而是加载0面0道第2扇区上的512字节代码至0x8000,然后跳转载 2013-08-24 20:01:20 · 1731 阅读 · 0 评论 -
git command
commandsgit diffgit diff [--options] [--] […]git diff [--options] --cached [] [--] […]git diff [--options] [--] […]This is to view the changes between two arbitrary .原创 2015-05-11 11:37:54 · 657 阅读 · 0 评论