进程:资源分配的基本单位,切换耗费资源多,操作系统含多个进程,进程含多个线程。分配不同内存空间。
线程:调度执行的基本单位,切换快速,共享地址空间,通信方便。资源利用率好,需要考虑互斥与同步;同一类线程共享代码和数据空间,但是有独立运行栈和程序计数器。不给分配空间,除了cpu,共享资源。
通信方式
1、线程共享地址
1)锁机制,互斥锁(排他,防止并发修改)、条件变量(以原子方式阻塞进程,直到满足条件为止,与互斥锁共用)、读写锁(多个线程同时读共享数据,写操作互斥);
2)信号量机制semaphore,无名信号量和命名信号量;
3)信号机制signal,计数器,控制共享资源的同步。
线程通信主要用于线程同步,无数据交换机制
2、进程通信:
1)管道pipe,半双工,数据单向流动,只能在父子进程之间,会发生阻塞,存满则写阻塞,写会读阻塞;
2)有名管道namedpipe,半双工,允许非父子通信;
3)信号量semophore,计数器,控制多个进程共享资源,作为锁,同一进程内不同线程之间同步。
4)消息队列messagequeue,消息链表,存放在内核由消息队列标识符标识,克服信号传递信息少,管道只承载吴格式字节流等。
5)信号sinal,通知接收进程,某个事件已发生。
6)共享内存sharememory,映射一段能在其他进程访问的内存,多个进程共享。
7)套接字socket,不同设备及其间的进程通信。