操作系统第二章
第二章:进程与线程(Processes and Threads)
一、基本概念
- Multiprogramming(多道程序设计) 一种操作方式,允许多个程序交替运行在同一个处理器上,提高CPU利用率。
- Concurrency(并发性) 指多个程序或任务看似同时运行,提高系统的响应能力和吞吐量。
二、进程(Process)
1. 进程的定义
进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。
2. 进程的创建方式(Process Creation)
- 系统初始化(System Initialization)
- 调用系统调用(如
fork()
) - 用户请求(User request)
- 批处理作业启动(Batch job initiation)
3. 进程的终止方式(Process Termination)
- 正常退出(Normal exit,主动)
- 错误退出(Error exit,主动)
- 致命错误(Fatal error,被动)
- 被其他进程杀死(Killed by another process,被动)
4. 进程状态(Process States)
- 运行态(Running)
- 就绪态(Ready)
- 阻塞态(Blocked)
5. 进程实现(Process Implementation)
操作系统为每个进程维护一个进程控制块(PCB,Process Control Block),内容包括:
- 进程标识(PID)
- 进程状态信息
- 进程控制信息(如寄存器值、资源分配等)
三、线程(Thread)
1. 用户级线程(User-Level Threads, ULT)
优点:
- 可在任何操作系统上运行
- 线程切换速度远快于进程切换
- 可扩展性更强
缺点:
- 系统调用阻塞时,整个进程中的所有线程都会被阻塞(因为内核不知道线程的存在)
2. 线程与进程的比较(Thread vs Process)
特性 | 进程(Process) | 线程(Thread) |
---|---|---|
定义 | 执行程序的基本单位,拥有独立资源 | 执行路径,隶属于进程 |
所属关系 | 相互独立 | 线程共享进程资源 |
切换开销 | 大 | 小 |
通信方式 | 进程间通信(IPC) | 共享内存,通信简单快速 |
故障影响 | 相互独立,互不影响 | 一个线程崩溃可能影响整个进程 |
四、顺序进程模型
- 顺序进程是指从头到尾连续、不被中断地执行的一段程序。
- 上下文切换(context switch)如果要显式保存/恢复状态,就会破坏顺序模型。
五、系统调用方式
1. 阻塞系统调用(Blocking Call)
- 调用如
read()
,write()
,fread()
,getc()
时,调用进程会进入阻塞状态直到操作完成。 - 简单、容易编程,但会造成等待。
2. 非阻塞系统调用(Non-Blocking Call)
- I/O 调用立即返回,调用者可以继续执行。
- 操作完成时,操作系统通过中断通知进程。
- 实现复杂,适合高并发编程。
六、中断(Interrupt)
- 指CPU在检测到某种紧急或预定事件后,暂停当前执行任务,转而处理该事件的过程。
- 中断处理完毕后,CPU会继续原来的工作。
- 实现系统响应外设、异常等关键机制。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Totoroの旅!
评论