Linux Kernel
文章平均质量分 51
lihaoweiV
这个作者很懒,什么都没留下…
展开
-
proc 进程信息解析
<br />proc 进程信息解析/proc//maps <br />查看进程的虚拟地址空间是如何使用的。 <br />该文件有6列,分别为: <br />地址:库在进程里地址范围 <br />权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有; <br />偏移量:转载 2011-03-24 20:27:00 · 3544 阅读 · 0 评论 -
自旋锁使用的注意点
1. 自旋锁保护的临界区里,不能有引起睡眠的函数,如kmalloc,copy_from_user等。 因为如果某进(线)程获得锁并进入了临界区,但它却在临界区里睡着了,那么别的需要这把锁的进(线)程将可能要等待一段很久的时间,最坏的情况是死锁。 所以,在自旋锁里的临界区代码应是原子性的,不可睡眠的。2. 在LDD3里说到这样的一种情况: 在单CPU环境里,如果某进(线)程获原创 2012-08-14 11:27:01 · 1473 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(七)
源出处:http://www.startos.com/linux/tips/2011011921499_7.html5.3 手工休眠的具体函数执行流 特殊睡眠要求程序员手动处理所有上面的步骤. 它是一个繁琐的过程, 包含相当多的易出错的样板式的代码. 程序员如果愿意还是可能用那种方式手动睡眠。 (1)创建和初始化一个等待队列。常由宏定义完成: DEFINE_转载 2012-08-10 15:11:49 · 1755 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(六)
源出处: http://www.startos.com/linux/tips/2011011921499_6.html4.2 wake_up 的实现细节 \kernel \sched.c /* * The core wakeup function. Non-exclusive wakeups (nr_exclusive == 0) just转载 2012-08-10 15:10:57 · 1802 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(五)
源出处:http://www.startos.com/linux/tips/2011011921499_5.html/** * wait_event_interruptible - sleep until a condition gets true * @wq: the waitqueue to wait on * @condition: a C expres转载 2012-08-10 15:09:48 · 886 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(四)
源出处:http://www.startos.com/linux/tips/2011011921499_4.html2.3.3 prepare_to_wait和finish_wait /* * Used to distinguish between sync and async io wait context: * sync i/o typical转载 2012-08-10 15:08:50 · 1216 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(三)
源出处:http://www.startos.com/linux/tips/2011011921499_3.html在决定调用sleep_on系列函数到真正调用schedule系列函数期间,若等待的条件为真,若此时继续schedule,相当于丢失了一次唤醒机会。因此sleep_on系列函数会引入竞态,导致系统的不安全。 另外对于interruptible系列函数,其返转载 2012-08-10 15:08:06 · 1507 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(二)
源出处:http://www.startos.com/linux/tips/2011011921499_2.html全局或者在栈中定义一个wait_queue_t类型变量的同时对其初始化,这保证了系统的可靠性,避免因用户忘记初始化时导致的问题。通用的初始化宏,tsk为任意指针。分两步: 1) 内部宏__WAITQUEUE_INITIALIZER初始化相应成员;当wq内嵌在别的结构转载 2012-08-10 15:07:21 · 1434 阅读 · 0 评论 -
解析Linux内核的同步与互斥机制(一)
源出处:http://www.startos.com/linux/tips/2011011921499.html1 休眠与同步 一个驱动当它无法立刻满足请求应当如何响应? 一个对 read 的调用可能当没有数据时到来, 而以后会期待更多的数据。或者一个进程可能试图写, 但是你的设备没有准备好接受数据, 因为你的输出缓冲满了。调用进程往往不关心这种问题; 程序员只希望调用 read转载 2012-08-10 15:06:25 · 942 阅读 · 0 评论 -
git rebase 的活用
转载请注明出处:Alvin Lee的博客:http://blog.csdn.net/lihaoweiVgit rebase 命令的功能很强大, 在《git 权威指南》一书里,改变提交(commit)的顺序,书中教了一种很复杂的方法,运用了git reset ... git cherry-pick...等等命令。但如果用git rebase 命令,则一下就搞定。以下面的例子来讲解原创 2012-07-12 14:21:04 · 14036 阅读 · 1 评论 -
LINUX 标准 错误号(ERRNO)
此内容位于头文件: include/asm-generic/errno.h#ifndef _ASM_GENERIC_ERRNO_H#define _ASM_GENERIC_ERRNO_H#include #define EDEADLK 35 /* Resource deadlock would occur */#define E原创 2012-05-14 18:47:59 · 1563 阅读 · 0 评论 -
杂记,整理
MMU的作用: 提供虚拟地址和物理地址的映射, 内存访问权限保护和Cache缓存控制等硬件支持。TLB: Translation Lookaside Buffer,转换旁路缓存,TLB是MMU的核心部件,它缓存少量的虚拟地址与物理地址的转换关系,是转换表的cache,因此也经常被称为"快表"TTW: Translation Table Walk, 转换表漫游,当TLB中没有缓冲对应的地址转原创 2012-03-20 09:22:33 · 705 阅读 · 0 评论 -
Linux内核通知链 notifier chain
源出处:http://fangjian0518.blog.163.com/blog/static/5591965620118295401816/1.内核通知链表简介(引用网络资料) 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知转载 2011-11-14 12:21:16 · 2422 阅读 · 0 评论 -
内核空间与用户空间
转载请注明出处:http://blog.csdn.net/lihaoweiV 李浩炜的CSDN博客为什么要分开内核空间和用户空间,它们的特点是什么?操作系统为了保护资源不受非法访问,所以必须在CPU中实现不同的操作模式或权限级别。从大体的角度来说,可分为内核空间和用户空间,它们有自己的内存映射(即地址空间)。应用程序是在用户空间执行的,它的权限只能访问用户空间的内存,如原创 2011-11-04 13:26:07 · 822 阅读 · 0 评论 -
git 的那些事儿 -- 命令
•git status输入当前工作区状态,比如,有哪些文件被修改了?这些文件现在是处于工作区?暂存区?它还会提示你用什么命令可擦除,或往下一阶段添加。如果你不想看这么多信息,只想知道有哪些文件被改了,简洁一点,那用•git status -s用git status -s 查看不同的时候, 位于第一列的“M”表示 本地分支与暂存区的文件相比有不同, 位于第二列的“M”表示 暂存区与工原创 2011-11-03 19:14:27 · 848 阅读 · 0 评论 -
内核映射
<br />转载自:<br />http://ericxiao.cublog.cn/<br /><br /><br />一:引子<br /><br />我们在前面分析过,在linux内存管理中,内核使用3G—>4G的地址空间,总共1G的大小。而且有一部份用来做非连续空间的物理映射转载 2011-03-02 16:01:00 · 3095 阅读 · 0 评论 -
文件映射
<br />= 映射内存 =映射内存提供了一种使多个进程通过一个共享文件进行通信的机制。尽管可以将映射内存想象为一个有名字的共享内存,您始终应当记住两者之间有技术层面的区别。映射内存既可以用于进程间通信,也可以作为一种访问文件内容的简单方法。 映射内存在一个文件和一块进程地址转载 2011-03-24 20:30:00 · 1649 阅读 · 0 评论 -
linux内核常用头文件作用简介
与framebuffer相关的宏定义如FB_EVENT_BLANK, extern一些常用的函数如fb_blank(), 结构体定义如 struct fb_fix_screeninfo,fb_var_screeninfo 定义了一些用于判断某一个字符是否为大写字母、小写字母、数字、控制字符、标点符号等宏,如,isdigit(c)判定参数c是否为数字,此外还有大小写转换宏,如tolower(c)原创 2012-08-10 13:42:55 · 5329 阅读 · 0 评论