By kernux TopSec α-lab一 漏洞概述这个漏洞是今年5月份爆出来的,漏洞影响范围非常广。受影响的Linux系统可能被直接DOS,精心设计可以获取根权限。该漏洞主要产生于内核的 Futex系统调用。Futex是快速用户空间mutex的意思,它是glibc中的互斥量实现的基础。内核空间...
分类:
其他好文 时间:
2015-04-20 18:19:23
阅读次数:
231
wait和notify是通过对对象进行锁,来实现同步和互斥。
wait和notify函数需要在一段的同步代码中,即在 synchronized的代码段中。
简单的示例代码。
static class TestThread {
public Boolean locked = false;
public void run() {
long last = System.cu...
分类:
编程语言 时间:
2015-04-20 14:58:28
阅读次数:
214
1. 产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。2. 线程死锁产生的必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(资源固有属性,无法破坏)(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(一次性将...
分类:
编程语言 时间:
2015-04-20 00:09:40
阅读次数:
189
import "sync"import "sync/atomic"import "time"import "runtime"1.runtime.Gosched()表示让CPU把时间片让给别人,下次某个时候继续恢复执行该goroutine,自己一般是阻塞了,这是一个很高级的sleep,我们经常会遇到要...
分类:
其他好文 时间:
2015-04-18 11:25:50
阅读次数:
266
题意:
赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。
经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!
我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。
假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。
atm想计算一下有多少种不同的可能的垒骰子方式...
分类:
编程语言 时间:
2015-04-17 23:52:54
阅读次数:
186
并发和竞争发生在两类体系中: 对称多处理器(SMP)的多个CPU 内核可抢占的单CPU系统 访问共享资源的代码区域称为临界区(critical sections),临界区需要以某种互斥机制加以保护。在驱动程序中,当多个线程同时访问相同的资源(critical sections)时(驱动程序中的全局....
分类:
系统相关 时间:
2015-04-17 22:04:47
阅读次数:
230
互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持。Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方法。线程首先acquire一个条件变量,然后判断一些条件。如果条件不满...
分类:
编程语言 时间:
2015-04-17 21:50:58
阅读次数:
173
多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。先来看第一段代...
分类:
编程语言 时间:
2015-04-17 21:49:03
阅读次数:
189
前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量同步机制解决了生产者与消费者问题。让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。Python的Queue模块中提供了同步的、线程安全的队列类...
分类:
编程语言 时间:
2015-04-17 21:47:38
阅读次数:
148
上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码:# encoding: UTF-8import threadingimport timeclass MyT...
分类:
编程语言 时间:
2015-04-17 20:27:26
阅读次数:
162