文章目录
进程与线程
1、什么是进程、线程,有什么区别?
-
进程:进程是操作系统进行资源分配和调度的基本单位。它是运行中的程序的实例,拥有独立的地址空间和系统资源。
-
线程:线程是进程中的一个执行流,是CPU调度和执行的最小单位。一个进程可以包含多个线程,它们共享进程的地址空间和资源。
-
区别
- 进程间相互独立,有自己的地址空间和系统资源;线程共享所属进程的资源和地址空间。
- 进程间通信(IPC)复杂,线程间通信简单,因为它们共享相同的内存空间。
- 创建进程的开销比创建线程大,因为需要更多的资源分配和初始化。
- 进程的创建和销毁涉及更多的资源管理,而线程则相对较轻量。
2、多进程、多线程的优缺点
-
多进程
- 优点:稳定性高,一个进程崩溃不会影响其他进程;可以利用多核处理器并行处理。
- 缺点:资源开销大,进程间通信复杂,上下文切换开销大。
-
多线程
- 优点:资源共享,通信简单,上下文切换开销小;适合于I/O密集型任务。
- 缺点:一个线程崩溃可能影响整个进程;不适合CPU密集型任务,因为线程间切换可能导致效率降低。
3、什么时候用进程,什么时候用线程
- 用进程:需要高稳定性和隔离性,或者要运行完全独立的程序,或者要利用多核处理器进行大量并行计算。
- 用线程:需要高效的并发执行,任务是I/O密集型,或者需要在单一进程内实现多任务并发。
4、多进程、多线程同步(通讯)的方法
- 多进程同步:通常使用信号量、互斥锁、共享内存、管道、消息队列等。
- 多线程同步:可以使用互斥锁、信号量、条件变量、读写锁、原子操作等。
5、进程线程的状态转换图
- 进程通常有以下几种状态:创建、就绪、运行、阻塞(等待I/O)、终止。
- 线程的状态转换与进程类似,但线程的创建和销毁通常不涉及整个程序的地址空间和资源。
6、父进程、子进程
- 父进程:创建子进程的进程。
- 子进程:由父进程创建的进程,继承了父进程的资源和属性,但拥有自己的地址空间和系统资源。
7、说明什么是上下文切换?
- 上下文切换:当CPU从一个进程或线程切换到另一个进程或线程时,需要保存当前进程或线程的状态(称为上下文),并加载新进程或线程的状态。这个过程包括保存寄存器、程序计数器和其他处理器状态,然后加载下一个要执行的进程或线程的状态。上下文切换是多任务操作系统中的常见操作,但频繁的上下文切换会降低系统性能。