
linux内核
文章平均质量分 68
知了112
记录自己成长每一步。加油!
展开
-
[linux中断]——内核抢占
1,禁止内核抢占的函数是preempt_disable(),允许内核抢占的方法是preempt_disable()转载 2014-06-08 15:16:51 · 762 阅读 · 0 评论 -
[Linux同步]读写信号量
以下内容转自: 信号量一,信号量和自旋锁的区别信号量与自旋锁有一定的区别,信号量在无法得到资源时,内核线程处于睡眠阻塞状态,而自旋锁处于忙等待状态。因此,如果资源被占用时间很短时,使用自旋锁较好,因为它可节约调度时间。如果资源被占用的时间较长,使用信号量较好。二,信号量相关的API信号量的相关API函数定义功能说明sema_ini转载 2015-07-05 08:27:27 · 663 阅读 · 0 评论 -
Linux Per-cpu变量
1,Linux per-cpu变量的作用当创建一个per-CPU变量时,系统中的每个处理器都会获得它自己对这个变量的拷贝(副本).存取per-CPU变量时几乎不需要加锁,因为每个处理器使用的都是它自己的拷贝2,Linux per-cpu变量的使用在编译的时候声明一个per-cpu变量编译期间创建一个per-CPU变量: DEFINE_PER_CPU(in原创 2015-08-09 14:14:37 · 1861 阅读 · 0 评论 -
linux SMP系统学习笔记
一,一个cpu在另外一个cpu上运行指定的函数int smp_call_function_single(int cpu, smp_call_func_t func, void *info, int wait)smp_call_function_single()函数,在一个指导的cpu上运行一个函数。 } else {原创 2015-08-09 14:42:50 · 8635 阅读 · 1 评论 -
linux proc文件系统节点
8,/proc/pid>/ 目录下各个文件的含义,以com.android.chrome为例cmdline: com.android.chromeenviron: 这是个比较有用的文件,里面记录了当前进程的一些环境变量exe: 这个就是气这个进程的执行文件,bin文件fd目录: 该目录下记录的是该进程打开的所有文件的文件描述符limit转载 2015-07-18 15:21:49 · 1204 阅读 · 0 评论 -
cpu hotplug的流程
以下内容参考: http://loda.hala01.com/2011/08/android-筆記-linux-kernel-smp-symmetric-multi-processors-開機流程解析-part3-linux-多核心啟動流/1,cpu hotplug机制Linux Kernel支援CPU hotplug机制,并可透过全域变数cpu_hotplug_disabled决定处理器转载 2015-07-18 14:51:06 · 9282 阅读 · 0 评论 -
Linux Zram的概念
linux zram技术 zram就是在发生swap事件的时候,不要把置换的页面置换到外部存储中,直接置换到一块内存中压缩起来,这样发生swap事件的时候所花费的时间就是压缩和解压的时间,这样可以大大提高性能。ZRAM是以块设备的形式注册进内核的,在高通平台其文件路径是:LINUX/android/kernel/drivers/staging/zram/zram_drv.c转载 2015-07-18 15:08:19 · 2266 阅读 · 0 评论 -
Linux Cgroups概念
以下转自:linux cgroupCgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。Cgroup的相关概念1.任务(task)。在cgroups中,任务就是系统的一个进程。2.控制族群(control g转载 2015-07-18 15:06:21 · 674 阅读 · 0 评论 -
匿名内存
1,匿名内存的概念匿名内存是指那些在文件系统里没有相对应的”储备文件“的那些内存,堆和栈空间的内存都属于匿名内存。匿名内存的用途:当一个程序很久没有运行的时候,需要要将程序占用的堆 栈交换到swap分区,而程序打开的文件则不需要放到swap分区,因为打开的文件直接可以放到其文件系统,swap分区还包括堆栈中的一些状态和变量数据等2,A转载 2015-07-18 15:19:46 · 2955 阅读 · 0 评论 -
[linux中断]——软中断机制
一,linux软中断的概念软中断(softirq)常常表示可延迟函数的所有种类,目前linux上使用的软中断个数是有限的,linux最多注册32个,目前使用了10个,在interrupt.h中中断上下文:表示内核当前正在执行一个中断处理程序或者一个可延迟函数。软中断(即使同一类型的软中断)可以并发运行在多个CPU上,因此软中断是可重入函数必须使用自旋锁保护其数据结构。一原创 2014-10-22 11:36:56 · 1709 阅读 · 0 评论 -
[linux]linux内核时间管理基础
一,linux时间管理基础http://blog.youkuaiyun.com/droidphone/article/details/7975694http://blog.youkuaiyun.com/smilingjames/article/details/6205540linux所有时间基础都是以低层硬件为基础的,低层硬件有GPT和cpu local timer,比如GPT的时钟源为13M HZlinux原创 2014-06-24 16:30:18 · 1005 阅读 · 0 评论 -
[计算机基础]ARM-Linux系统调用
1,系统调用的概念:是用户空间访问内核的唯一手段,系统调用依靠软件中断实现,每个系统调用被赋予一个系统调用号,用来指明要执行哪个系统调用。2,系统调用的实现:系统调用是通过软中端(SWI)实现的,SWI指令SWI指令的格式为:SWI{条件} 24位的立即数SWI指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在SWI的异常处理程序中提供相应的原创 2014-04-26 15:06:53 · 574 阅读 · 0 评论 -
[linux内核]linux内核编程规范
1,__attrubte__关键字的作用点击打开链接__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。struct str_struct{ __u8 a; __u8 b; __u8 c; __u16 d;} __原创 2014-03-12 10:49:18 · 971 阅读 · 0 评论 -
[linux驱动]proc学习笔记(一)
1,在/proc文件系统下创建节点的APIhttp://www.cnblogs.com/ziziwu/archive/2011/10/20/2218975.html struct proc_dir_entry *create_proc_entry (const char *name, mode_t mode, struct proc_dir_entry *parent); 其中参数原创 2014-05-23 17:05:06 · 981 阅读 · 0 评论 -
linux各个内核配置选项的含义以及配置
1,linux各个内核配置选项的含义转载 2014-08-19 10:37:51 · 1009 阅读 · 0 评论 -
[linux]内核同步的方法
内核同步介绍概念:内核同步重要的原因:linux支持多处理器,2.6引入了抢占式内核临界区:指访问和操作共享数据的代码段竞争条件:如果两个线程有可能处于同一临界区中同时运行内核同步的方法:1,原子变量2,加锁造成并发的原因:1,linux支持多处理器2,2.6引入了内核抢占3,中断4,内核线程睡眠使得调度程序调度另外一个进程确定哪些数据不需要被访原创 2014-03-06 20:19:56 · 1595 阅读 · 0 评论 -
[linux中断]中断下半部分——tasklet
2,Tasklet机制1)声明自己的Tasklet既可以使用中定义的两个宏中的一个DECLARE_TASKLET或DECLARE_TASKLET_DISABLED来静态创建tasklet,前者把创建的tasklet的引用计数器设置为0,该tasklet处于激活状态。另一个把引入计数器设为1,所以该tasklet处于禁止状态。还可以使用tasklet_init()动态创建一个ta原创 2014-05-06 11:19:30 · 941 阅读 · 0 评论 -
[linux]linux中断下半部分——工作队列
工作队列工作队列可以把工作推后,交由一个内核线程去执行,工作队列运行在进程上下文中,工作队列运行重新调度甚至睡眠内核驱动程序一般将下半部分交给内核缺省的工作者线程去做驱动中使用工作队列的步骤1,声明一个work_struct结构体struct work_struct work;2,动态创建一个由work指向的工作,处理函数为funcINIT_WORK(struct wo原创 2014-03-11 11:42:36 · 956 阅读 · 0 评论 -
[LINUX内核编程]学习笔记(一)
linux内核使用bitmap相关 1,声明一个bitmap数组,可以表示100个bit,数组名字是bitmap DECLARE_BITMAP(bitmap,100) 相关宏定义如下: #define DECLARE_BITMAP(name,bits) unsigned long name[BITS_TO_LONGS(bits)] #define BITS_TO_LONG原创 2014-05-26 14:42:07 · 1031 阅读 · 0 评论 -
[LINUX内核编程]学习笔记(二)
linux内核————队列原创 2014-11-04 19:34:20 · 854 阅读 · 0 评论 -
[linux中断]——其它
1,如何禁止当前CPU上的所有中断原创 2014-10-26 14:23:07 · 670 阅读 · 0 评论 -
[Linux中断]中断数据结构以及ARM处理中断流程
1,中断相关的数据结构 在linux kernel中,对于每一个外设的IRQ都用struct irq_desc来描述,我们称之中断描述符(struct irq_desc)在linux kernel中,使用struct irq_desc来描述一个外设的中断,我们称之中断描述符,具体代码如下:http://www.wowotech.net/irq_subsystem/irq_han原创 2015-07-18 15:13:25 · 677 阅读 · 0 评论