04 2013 档案

摘要:存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制。主要内容:同步的概念同步的方法-加锁死锁锁的粒度1. 同步的概念了解同步之前,先了解另外2个概念:临界区 - 也称为临界段,就是访问和操作共享数据的代码段。竞争条件 - 2个或2个以上线程在临界区里同时执行的时候,就构成了竞争条件。所谓同步,其实防止在临界区中形成竞争条件。如果临界区里是原子操作(即整个操作完成前不会被打断),那么自然就不会出竞争条件。但在实际应用中,临界区中的代码往往不会那么简单,所以为了保持同步,引入了锁机制。2. 同步的方法-加锁为了给临界区加锁,保证临界区数据的同步 阅读全文
posted @ 2013-04-24 17:56 wang_yb 阅读(5352) 评论(5) 推荐(1) 编辑
摘要:在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。主要内容:中断下半部处理实现中断下半部的机制总结中断下半部的实现中断实现示例1. 中断下半部处理那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部?这里有一些经验可供借鉴:如果一个任务对时间十分敏感,将其放在上半部如果一个任务和硬件有关,将其放在上半部如果一个任务要保证不被其他中断打断,将其放在上半部其他所有任务,考虑放在下半部2. 实现中断下半部的机制实现下半部的方法很多,随着内核的发展,产生了一些新的方法,也淘汰了一些旧方法。目前使用最多的是以下3中方法2.1 软中断 阅读全文
posted @ 2013-04-23 11:18 wang_yb 阅读(13772) 评论(3) 推荐(8) 编辑
摘要:中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。主要内容:什么是中断中断类型中断相关函数中断处理机制中断控制方法总结1. 什么是中断为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制。没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理时就处理,否则就跳过。当硬件忙碌的时候,CPU很可能会做许多无用功(每次轮询都是跳过不处理)。中断机制是硬件在需要的时候向CPU发出信号,CPU暂时停止正在进行的工作,来处理硬件请求的一种机制。2. 中断类型中 阅读全文
posted @ 2013-04-19 11:38 wang_yb 阅读(10783) 评论(0) 推荐(5) 编辑
摘要:委托是.net中实现回调机制的一种重要技术,尤其在编写服务端程序的时候,更是频繁使用委托。主要内容:委托本质委托链动态委托1. 委托本质委托本质其实就是一个类,基本上在可以定义类的地方都可以定义委托,C#中委托的写法其实只是C#的语法糖。如下定义个委托:using System;namespace delegate_test{ internal delegate int Sum(int a, int b);}用ILSpy可以发现对应的IL代码如下:.class private auto ansi sealed delegate_test.Sum extends [mscorlib]... 阅读全文
posted @ 2013-04-18 20:52 wang_yb 阅读(1234) 评论(2) 推荐(0) 编辑
摘要:内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构。利用这4个基本的数据结构,可以在编写内核代码时节约大量时间。主要内容:链表队列映射红黑树1. 链表链表是linux内核中最简单,同时也是应用最广泛的数据结构。内核中定义的是双向链表。1.1 头文件简介内核中关于链表定义的代码位于: i... 阅读全文
posted @ 2013-04-16 13:21 wang_yb 阅读(22397) 评论(10) 推荐(6) 编辑
摘要:主要内容:区别的介绍代码演示区别建议1. 区别的介绍我们在平时的编码中javascript中经常会用到[return false;]语句来阻止事件的向上传递,其实[return false;]语句包含了2层意思:阻止触发事件的元素的默认动作(比如说一个link(<a href="http://www/baidu.com"></a>),它的默认动作就是迁移到baidu首页)阻止触发事件的元素向上传递事件由于[return false;]包含了2个意思,所以在使用时首先要明确上面的2个阻止是否符合我们的预期。如果我们在只想阻止元素的默认动作或者只想阻止元 阅读全文
posted @ 2013-04-11 16:37 wang_yb 阅读(4682) 评论(0) 推荐(2) 编辑