自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pumpkinhill的专栏

学习 分享

  • 博客(12)
  • 收藏
  • 关注

转载 进程上下文与中断上下文

进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬

2014-11-08 14:34:04 450

原创 linux内核同步(5)--其它同步方法

其他的同步方法:完成变量DKL大内核锁禁止抢占顺序和屏障等 禁止抢占        由于内核的可抢占性,意味着一个任务与被抢占的任务可能会在同一个临界区内运行。为避免这种情况,内核抢占代码会使用自旋锁作为非抢占区域的标记。即如果一个自旋锁被持有,内核便不能进行抢占。        但是有一种情况,不需要自旋锁,但是仍需要关闭内核抢占:

2014-11-08 14:31:06 523

原创 linux内核同步(4)--信号量

任务获取一个已经被占用的信号量,信号量将其推进一个等待队列,然后让其睡眠,CPU去执行其他代码。当持有信号量的进程将信号释放,处于等待队列汇总的任务被唤醒,并获取信号量。         信号量会引起睡眠,所以在中断上下文中不能使用信号量。一般在进程上下文中使用。一个进程占用信号量的同时不能同时占用自旋锁,因为占用信号量会引起睡眠,而占用自旋锁是不允许睡眠的。信号量

2014-11-08 14:30:20 502

原创 linux内核同步(3)--自旋锁

自旋锁最多只能由一个可执行线程执有,因此其可以防止多于一个的执行线程同时进入临界区。自旋锁因为占用处理器资源,所以不应该被长时间执有。与自旋锁相比,信号量会有两次明显的上下文切换,阻塞的线程要换出与换入,因此执有自旋锁的时间最好要小于两次上下文切换耗时。         自旋锁可以用在中断处理程序中,但是信号量不可以,因为会信号量会导致中断睡眠。在中断中使用spin_lock时,一

2014-11-08 14:29:33 675

原创 linux内核同步(2)--原子操作

内核同步方法主要有:原子操作、自旋锁、读写自旋锁、信号量、读写信号、完成变量等。内核提供了两组原子操作接口:一是对整数进行操作;而是对位进行操作。在linux支持的所有体系接口上都实现了这两组接口:要么支持简单的原子操作;要么为单步执行提供锁内存总线的指令。在include\linux\types.h中对原子变量atomic_t进行了定义:[cpp] view plai

2014-11-08 14:28:21 459

原创 Linux内核同步-基本概念

在linux内核中,为驱动等内核模块提供了互斥与同步的内核机制。如果运行的系统中自始至终只有一个执行路径,那么无须考虑互斥与同步的问题。现在的系统不仅支持多进程而且自持多处理器。当多个执行路径并发执行时需要保证对共享资源的安全访问。一般来讲,互斥是对资源的排他性安排,而同步则要对进程执行的先后顺序做出妥善的安排。我们对共享的资源进行访问的代码段称为临界区(critical section),而导致

2014-11-08 14:27:16 413

原创 USB hub驱动分析

最近在调试usb 功能设备驱动程序,包括hid类设备和audio等。发现很多问题都卡在了HUB的分离处理传输上,不知道是主机控制器兼容性的问题还是配置不对,在周期传输中hub总会出现各种各样的问题。趁着周末好好把hub这块基本的流程看一下。       硬件上主要就是hub芯片了,host接口直接引到上行端口,然后分4路引出:直接外接设备。另外MiniAB接口通过OTG转接线分为Adevi

2014-11-08 14:11:56 3324 1

转载 Linux procfs详解

1.0 proc文件系统总览 在类Unix系统中体现了一种良好的抽象哲学,就是几乎所有的数据实体都被抽象成一个统一的接口--文件来看待,这样我们就可以用一些简单的基本工具完成大量复杂的操作。在Linux中存在着一类 特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中应用最广泛的一种伪文件系统。 proc

2014-11-08 14:05:36 511

原创 在cubieboard2双卡版上从零构建Android4.2.2系统

板子买了一段时间,终于有时间可以玩玩了,论坛上找浪费了很多时间。把虚拟机环境搭建起来,编译好镜像就可以直接使用烧写工具烧写到TF卡上了。由于买的是双TF卡插槽,没有nand,所以只能在TF卡上制作镜像了。制作过程参考官方文档,好好总结一下,一来以后自己再做时图懒图方便,二来可以方便后来人。主要可以分为一下几个步骤:一、搭建编译环境可以在XP或win7系统上安装虚拟机,在虚拟

2014-11-08 14:04:57 1344

原创 Github使用学习笔记

1.注册

2014-11-02 17:46:37 393

转载 定位Oops的具体代码行

(来自Linus Torvalds的讨论:https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111又,http://kerneltrap.org/Linux/Further_Oops_Insights)             例如这

2014-10-30 15:26:33 568

转载 USB协议深入理解

0. 基本概念       一个【传输】(控制、批量、中断、等时):由多个【事务】组成;       一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。       USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。

2014-10-30 09:56:58 640

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除