linux驱动编程核心理论之并发控制
驱动编程核心理论之并发控制
并发,竟态的理解:也就是Linux的东西在时间和空间被同时使用导致的问题
Linux系统提供的解决方案:
中继屏蔽
原子操作
自旋锁
信号量
1,中断屏蔽
首先这个依赖于CPU,CPU一般提供屏蔽中断的打开中断的功能,中断屏蔽使得中断和进程之间的并发
不再发生,同时进程调试也依赖于中断,内核抢占的进程间并发也就可以避免
使用方法
local_irq_disable()//屏蔽中断
...
critical section()//临界区
...
local_irq_enable()//打开中断
这种方法只能解决单个CPU的问题
注意 : 长时间中断屏蔽很危险,比较适合和自旋锁联合使用
local_irq_save(flags) 禁止中断同时保存目前CPU的中断信息位
local_irq_restore(flags) 打开中断同时恢复中断信息位
底半部操作
local_bh_disable()
local_bh_enable()
2,原子操作
原子操作是指在执行过程中不会被的代码路径所中断的操作。待理解
分为两类,针对位的操作和整型变量的操作
针对整型变量的原子操作的相关函数
void atomic_set(atomic_t *v, int i);//设置原子变量的值为i
atomic_t v = ATOMIC_INIT(0);//定义原子变量v并初始化为0
atomic_read(atomic_t *v);//返回原子变量的值
void atomic_add(int i, atomic_t *v);//原子变量增加i
void atomic_sub(int i, atomic_t *v);//原子变量减少i
void atomic_inc(atomic_t *v);//原子变量自增加1
void atomic_dec(atomic_t *v);//原子变量自减少1
操作并测试函数
int atomic_inc_and_test(atomic_t *v);
int atomic_dec
相关文档:
前些天在自己的本本上装了虚拟机,并安装了redhat5,一切搞定之后发现打开中文网页不能正常显示。启初以为是系统编码问题,可更改了系统编码后问题依然存在,而且系统的文字也变成乱码。看来不是简单的缺省编码问题,一定是系统没有中文包的原因。于是乎跑到网上搜寻中文包地址,发现redhat5光盘中带有这些包。好了,废话不 ......
一、
1、备份
使用root帐户备份。
[root@fedora /]# tar -zcvpf
/backup/fedora10_backup/20090301backup.tar.gz / --exclude=misc
--exclude=sys --exclude=proc --exclude=data --exclude=home
--exclude=files --exclude=backup --exclude=tmp --exclude=var
tar -zcvpf &nbs ......
宿主机:Windows XP Professinoal SP2
VMware:Red Hat Linux 9
网络:ADSL局域网512M
所用软件:
VMware-workstation-6.0.0-45731.exe
Red Hat Linux 9
安装过程:
1.安装VMware-workstation-6.0.0-45731.exe
2.开启VMware.安装Linux.
安装时可直接用硬盘iso文件.
VMware=>VM=>Settings=> ......
#!/bin/bash
#Key Words:linux0.11 bochs harddisk bash
#mount hdimg name:hdimage-devel
#mount point:/mnt/initrd
hdimg=hdimage-devel
mpoint=/mnt/initrd
if [ "$1" == "mount" ]
then
#mount hdimg
echo "$1 START"
&n ......