并发进程之间的关系
- 在内存中同时存在的若干个进程/线程,由操作系统的调度程序采用适当的策略将他们调度至cpu上运行,同时维护他们的状态队列。
- 多个并发进程/线程从宏观上是同时在运行;
- 从微观的角度看,他们的运行过程是走走停停;
- 并发的进程/线程是交替执行(Interleaving);
- Linux 操作系统中的进程和线程是有区别的,但 Linux 采用了一种独特的方式来处理它们,这种方式与其他操作系统(如 Windows)不同。在 Linux 中,进程(Process)和线程(Thread)都是通过任务(task)来实现的。Linux 使用了一个统一的任务结构体 task_struct 来表示进程和线程。这意味着,从内核的角度看,进程和线程都是任务,但它们的行为和属性有所不同。
- 并发进程之间的关系
- 独立关系
- 并发进程分别在自己的变量集合上运行
- 交互关系
- 并发进程执行过程中需要共享或是交换数据
- 交互的并发进程之间又存在着竞争和协作的关系
- 这句话的意思是在涉及多个并发进程的系统中,这些进程之间不仅会相互竞争资源(如CPU时间、内存等),同时也需要相互协作,以完成一些共同的任务或目标。简单来说,就是这些并发运行的进程在争夺资源的同时,还需要通过某种方式(例如消息传递、信号量等)来协同工作,以确保整个系统的高效和协调运行。
竞争与协作
- 竞争(RACE condition)
- 协作(cooperation)
- 有数据交互。
异步与同步
- 异步
- Asynchronous means RANDOM
- 异步是随机的。,因为交替执行产生的一种错误,结果不确定对不对
- 会引发竞争条件(Race Condition):一种这样的情况:多个进程并发操作同一个数据导致执行结构依赖于特定的进程执行顺序。
- 同步
- (同步是在进程之间有数据交互共享的变量,需要做一个同步,就是一方还没做完一件事情,另一方还需要waiting)
- Process Synchronization means a mechanism(机制) to maintain the consistency(一致性) of data shared in cooperative(合作) processes.
- synchronization tool kits
- mutex lock(互斥锁):解决竞争问题
- Semaphore(信号量)