摘要: 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。 为了让进程完成一定的工作,进程必须至少包含一个线程。 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间 阅读全文
posted @ 2017-05-07 12:43 浪_花 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 在 Linux下,每个信号的名字都以字符 SIG 开头,每个信号和一个数字编码相对应,在头文件 signum.h 中,这些信号都被定义为正整数。信号名定义路径:/usr/include/i386-linux-gnu/bits/signum.h 要想查看这些信号和编码的对应关系,可使用命令:kill 阅读全文
posted @ 2017-05-07 12:25 浪_花 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能: 都需要访问/使用同一种资源 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务 这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题 阅读全文
posted @ 2017-05-07 12:22 浪_花 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 为什么需要互斥锁? 在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在此刻使用打印机打印东西,如果不做任何处理的话,打印出来的东西肯定是错乱的。 下面我们用程序模拟一下这个过程,线程一需要打印“ 阅读全文
posted @ 2017-05-07 12:20 浪_花 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 读写锁基本原理 当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资 阅读全文
posted @ 2017-05-07 12:15 浪_花 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操 阅读全文
posted @ 2017-05-07 12:04 浪_花 阅读(847) 评论(0) 推荐(0) 编辑
摘要: 在 POSIX 标准中,信号量分两种,一种是无名信号量,一种是有名信号量。无名信号量一般用于线程间同步或互斥,而有名信号量一般用于进程间同步或互斥。它们的区别和管道及命名管道的区别类似,无名信号量则直接保存在内存中,而有名信号量要求创建一个文件。这里我们学习有名信号量的使用。 1)创建一个有名信号量 阅读全文
posted @ 2017-05-07 12:00 浪_花 阅读(3465) 评论(0) 推荐(1) 编辑