LOADING

加载过慢请开启缓存,浏览器默认开启

interview OS

2023/3/22 interview OS

1.进程和线程的区别

类别 组成
进程 1.数据段
2.程序段
3.进程控制块PCB
线程 1.寄存器
2.堆.
3.栈

进程切换为什么比线程切换开销大

这是由于进程切换的时候需要切换页表,导致TLB失效,所以此时会比较慢,但线程切换不需要

进程间的通信方式

管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket

最快的是共享内存

2.死锁的四个条件

1.互斥条件:一个资源每次只能被一个进程使用。

2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

3.协程

协程被称为用户态线程,让进程自己来创建对应的线程,来做到并发,关键思想在于控制流和退出

多线程并发控制的手段

手段 特点
互斥锁 一个线程获取到互斥锁后,其他线程就无法访问该资源,直到该线程释放锁为止。
读写锁 读写锁允许多个线程同时读取共享资源,但是只允许一个线程写入共享资源。读写锁适用于读多写少的情况,可以提高程序的并发性能
条件变量 条件变量用于在多个线程之间传递信号
信号量 信号量是一种通用的同步原语,用于管理多个线程之间的共享资源。通过信号量,可以实现多个线程之间的同步和互斥
无锁编程 无锁编程是一种高效的并发编程技术,通过使用 CAS(Compare and Swap)等原子操作来实现对共享资源的访问。与锁相比,无锁编程能够避免锁带来的性能损失和死锁等问题,但需要更加复杂的编程技术。