linux同步论
1 同步概要
在计算机中或生活中,经常遇到这样一种情况:多个访问者对同一个资源进行访问、操作,这里面涉及到的一个关键内容就是如何同步,即怎么保证该次访问的内容是所期待的。简单的例子,甲希望访问一个资源,该资源更新日期为昨天,但乙却在甲访问前的插了一脚,对资源做了修改,那么甲访问到的就不是所期待的内容了,后续的操作可能就会出现问题。这个例子可能不太合适,你可能会说,那甲应该每次访问的都期待最新的不就好了吗?所以说这个例子不太合适,有没有更好的?我可以理解的?
在这个简单的例子中,同步涉及到的几个关键点是:
- 共享资源:大家所争夺的资源;
- 并发访问:大家同时对该资源进行访问操作,这是多CPU同时对这一个资源进行操作;
- 抢占访问:我期待没人在我之前对资源进行了修改,但我却无法保证,多任务的情况下就是这样。
本文主要总结一些同步方法,其中包括linux内核同步机制和一些思考。
2 linux内核中的同步方法
2.1 介绍
理论上,共享资源称之为临界资源,该资源位于临界区,必须保证对临界区的操作是原子的,即一个时刻只能有一个用户在临界区,对临界资源进行访问操作。当无奈的发生了这种不可能出现的情况时,我们称之为竞争条件。内核同步就是为了解决并发和竞争条件。
2.2 同步机制
这是我能想到的第一个方法就是锁:我把资源锁起来,你们谁都别想用,除非我解锁。请记住,锁的不是代码,是我们宝贵的临界区资源。锁的实现采用了原子操作,这点保证了加锁和开锁的安全,也就是说,在加锁的瞬间,你是没机会先一步溜进去的。因为世界是多变的,造成内核中的锁也有很多种,每种锁都有自己的特点,虽然是句废话,但不得不说,不弄清楚这些个特点,很有可能造成无法挽回后果—死锁。
2.2.1 自旋锁
锁如其名,当请求这把锁的时候,发现已经有人抢先一步,那后来者就自旋在那,相当于忙等,不干活,这太浪费了,正因为这,需要自旋锁:
- &nb
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
前些天自己在Linux下搭建了ftp服务,今天又加深了学习,总结如下:
1、ftp开机自动运行:开机自动运行有几种方法,其中可以用命令chkconfig vsftpd on,这样开机后就自动运行了。
相应的想关闭的话chkconfig vsftpd off
2、ssh服务开机自动运行:同上命令为:chkconfig sshd on;chkconfig ssh ......
1 嵌入式Linux系统启动时序
目前,嵌入式系统的硬件平台和应用方向区别很大,但总体启动流程一致的。这里的系统启动是指从用户执行上电/复位操作,到系统开始提供用户可接收的服务水平所需要的过程。典型的上电/复位时序如表1所列。
2 Linux快速启动方法
目前,一些Linux的发行版本已经对启动速度进行了优化。如果利用 ......