这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天 2. 什么是进程,线程,彼此有什么区别
进程的上下⽂切换不仅包含了虚拟内存、栈、全局变量等⽤户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。对于线程,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据;****
进程是资源(包括内存、打开的⽂件等)分配的单位,线程是 CPU 调度的单位****
线程共享数据,那么在线程之间数据传递的时候,就不需要经过内核了,能减少并发执⾏的时间和空间开销,切换较快****
2. 多进程、多线程的优缺点 ⭐⭐⭐⭐****
进程独立,数据传输麻烦,消耗资源。****
线程数据共享,但是同步与加锁比较麻烦。****
3. 什么时候用进程,什么时候用线程 ⭐⭐⭐
4. 多进程、多线程同步(通讯)的方法 ⭐⭐⭐⭐⭐****
进程:****
管道:管道这种通信⽅式效率低,不适合进程间频繁地交换数据,也在内核中****
消息队列:保存在内核中的消息链表,⼀是通信不及时,⼆是附件也有⼤⼩限制,消息队列不适合⽐较⼤数据的传输,消息队列通信过程中,存在⽤户态与内核态之间的数据拷⻉开销****
共享内存:⼀块虚拟地址空间来,映射到相同的物理内存中****
修改冲突****
改进方式信号量:主要⽤于实现进程间的互斥与同步,⽽不是⽤于缓存进程间通信的数****
据。****
信号:对于异常情况下的⼯作模式,就需要⽤「信号」的⽅式来通知进程。****
线程:****
同步:就是并发进程 / 线程在⼀些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程 / 线程同步。****
互斥:由于多线程执⾏操作共享变量的这段代码可能会导致竞争状态 , 因此我们将此段代码称为临界区( critical section ),它是访问共享资源的代码⽚段,⼀定不能给多线程同时时执⾏。****
加锁:互斥****
信号量:互斥,同步(信号量是操作系统提供的⼀种协调共享资源访问的⽅法,通常信号量表示资源的数量)****