Linux 同步方法剖析
在学习 Linux® 的过程中,您也许接触过并发(concurrency)、临界段(critical
section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的
锁定机制,包括原子运算符(atomic operator)、自旋锁(spinlock)、读/写锁(
reader/writer lock)和内核信号量(kernel semaphore)。 本文还探讨了每种机制最适
合应用到哪些地方,以构建安全高效的内核代码。
本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6.23 版内核的许多
可用方法提供了应用程序接口(API)。但是在深入学习 API 之前,首先需要明白将要解
决的问题。
developerWorks 上 Tim 的更多 剖析... 系列
Linux 文件系统剖析
Linux 网络堆栈剖析
Linux 内核剖析
Linux slab 分配器剖析
Tim 的所有 Anatomy of... 文章
并发和锁定
当存在并发特性时,必须使用同步方法。当在同一时间段出现两个或更多进程并且这些进
程彼此交互(例如,共享相同的资源)时,就存在并发 现象。
在单处理器(uniprocessor,UP)主机上可能发生并发,在这种主机中多个线程共享同一
个 CPU 并且抢占(preemption)创建竞态条件。抢占 通过临时中断一个线程以执行另一
个线程的方式来实现 CPU 共享。竞态条件 发生在两个或更多线程操纵一个共享数据项时
,其结果取决于执行的时间。在多处理器(MP)计算机中也存在并发,其中每个处理器中
共享相同数据的线程同时执行。注意在 MP 情况下存在真正的并行(parallelism),因为
线程是同时执行的。而在 UP 情形中,并行是通过抢占创建的。两种模式中实现并发都较
为困难。
Linux 内核在两种模式中都支持并发。内核本身是动态的,而且有许多创建竞态条件的方
法。Linux 内核也支持多处理(multiprocessing),称为对称多处理(SMP)。可以在本
文后面的 参考资料 部分学到更多关于 SMP 的知识。
临界段概念是为解决竞态条件问题而产生的。一个临界段 是一段不允许多路访问的受保护
的代码。这段代码可以操纵共享数据或共享服务(例如硬件外围设备)。临界段操作时坚
持互斥锁(mutual exclusion)原则(当一个线程处于临界段中时,其他所有线程都不能
进入临界段)。
临界段中需要解决的一个问题是死锁条件。考虑两个独立的临界段,各自保护不同的资源
。每个资源拥有一个锁,在本例中称为 A 和 B。假设有两个线程需要访问这些资源,线程
X 获取了锁 A,线程 Y 获取了锁 B
相关文档:
准备工作:
用到的perl 扩展组件(modules)在上篇贴出.( win32::odbc 模块
)下载组件后按照Readme文件安装倒响应目录.配置好相应的odbc数据源.
程序实现:
使用
use
Win32::ODBC;
语句包含应使用的模块是win32::odbc,写出数据库
连接字符串
$DSN = "DSN =
My DSN ......
本人初学linux,在领导督促和工作压力下,按照前人部署手册和强大搜索引擎帮助下,用lvs和mon实现的nat负载均衡,vs是suse 10.2,realserver是windows2003的IIS部署。
1 安装
1.1 网络拓扑图
1.1 检查内核是否支持lvs选项
&nbs ......
一、在sun公司门户上下载对应版本的java sdk
我下载的是jdk-6u6-linux-i586-rpm.bin版本
二、给下载文件赋权限
1、一般需要root权限,在$提示符下输入su,然后输入密码,即可进入root模式。提示符为#
2、#chmod 755 jdk-6u6-linux-i586-rpm.bin
3、#./jdk-6u6-linux-i586-rpm.bin
4、#rpm -ivh jdk-6u6-linux-i586-r ......
在终端显示窗口运行yast命令,出现图形界面
software-->software management
左侧Filter-->Package Group-->Productivity-->Networking-->Other-->telnet server
选择确定,会提示插入suse linux cd4,放入光盘后确定直到安装完成
开启telnet服务
#chkconfig telnet on
#rcxinetd restart
如果root用 ......
刚学完这部分,还没有完全理解,不知道会不会有人看到,很希望能和大家一起讨论。靠着自己的理解写的,不知道会不会出错,O(∩_∩)O~
(一)linux系统引导过程:“内核代码装入内存执行--->出现"login:"的过程”
IBM Pc使用固化在ROM中的bios程序来启动程序。刚开机时,除了r ......