进程间通信IPC,进程;程序;线程区别
•并发的目的
–提高系统效率
–简化程序设计
•多线程是实现并发的一种有效手段
–多进程并发(多任务操作系统中)
–多线程并发:一个进程可以通过运行多个线程来并发地执行多项任务
l进程:内核级的实体
•包含代码、数据、堆,PCB(进程管理、内存管理、文件管理信息)等
•进程结构存在于内核空间,用户程序须通过系统调用进行访问或改变
l线程:用户级的实体
•线程结构驻留在用户空间,能够被普通的用户级函数组成的线程库直接访问
•线程独有:寄存器(栈指针,程序计数器)、栈等
•一个进程中的所有线程共享该进程的状态
进程互斥
进程间关系
进程同步
例如
可以用信号量
进程通信目的
进程间通信的发展
匿名管道;有名管道;
进程间通信的分类
文件锁互斥,实现读写锁
system V ;posix 消息队列 共享内存 信号量
互斥量 条件变量 读写锁 posix
IPC(Inter-Process Communication,进程间通信)
IPC对象的持续性
内核自举
IPC关系目前有
互斥 同步 死锁
三个进程互相等待也不释放自己的资源就会发生死锁;
死锁产生的必要条件
一般不破坏互斥条件
防止死锁办法:
银行家算法类比避免死锁
产生死锁的例子
都在等待右叉子的出现,就出现了死锁;
信号量
PV原语
P原语伪代码,原子性操作
PCB进程控制块(Processing Control Block)
V原语
临界区
x为临界资源
程序
进程是动态的;短暂的;堆栈段+PCB(进程控制块(Processing Control Block))
程序是静态的;数据段;永久的;
一个进程只能对应一个程序
一个程序可以对应多个进程
32位每个进程有4GB地址空间
线程优点
线程缺点
posix使用N:M混合线程模型。