关于进程、线程

进程:家庭,家庭间数据独立、地址独立,通信必须通过内核调度

线程:家庭成员,家庭成员间数据共享

一. 进程间通信(IPC):管道、有名管道、消息队列、信号量、共享内存、信号、套接字(网络通信)

1. 信号:类似在软件层面上的中断,一个进程接收到一个信号与处理器接收到一个中断请求可以说是一样的(异步),来源:硬件来源(键盘或者其他硬件故障)、软件来源

2. 信号量:类似计数器,处理进程或线程同步问题,特别是对临界资源(某一时刻只能由一个进程或线程操作的资源)的访问同步问题

3. 消息队列:存放在内核的消息链表中

4. 共享内存:分配一块能被其他进程访问的内存。需要其他互斥锁、信号量等同步机制。保持共享区域,直到通信完毕。

5. 管道:单向传递数据,半双工;只用于有亲缘关系(父子进程、兄弟进程)的进程间通信;

6. 命名管道:半双工,服务器和一个或多个客户进程之间通信的单向或双向管道,可以在不相关的进程之间和不同计算机之间使用。

7. 套接字:用于不同主机间的进程通信。

二. 线程间通信:锁机制、信号量机制、信号机制

1. 锁机制:包括互斥锁、条件变量、读写锁。

2. 信号量机制:无名线程信号量和命名线程信号量。

3. 信号机制:类似进程间的信号处理

三. 进程/线程间同步机制

临界区、互斥量、信号量和事件四种方式

1. 临界区:同一时间只允许一个线程抢占临界区资源,其他线程挂起只有等待该线程退出后才能进行抢占。(同一进程)

2. 互斥量:拥有互斥对象的线程可以同一时间访问同一共享资源。(跨进程)

3. 信号量:允许同一时刻多个线程同时访问同一资源,但是线程数目有限。(跨进程)

4. 事件:通知操作实现线程同步。(跨进程)

原文地址:https://www.cnblogs.com/embeddedking/p/9611151.html