1. 进程和线程的基本概念
进程具有以下两个特点:
- 资源所有权:进程总是具有对一些资源的控制权和所有权,这些资源包括进程所占用的内存、I/O通道、I/O设备和文件等
- 调度/执行:进行执行时会有一个或者多个程序的执行路径,不同进程的执行过程会交替进行,所以进程具有执行状态和优先级,是可以被操作系统调度和分派的实体。
线程可以看成是进程中的一条执行路径,我们通常说进程是资源调度的基本单位,而线程是CPU调度的基本单位。
相比与进程,线程有以下优点:
- 在已有进程中创建和终止一个线程所花的时间都比进程的创建和终止少得多
- 同一进程内的线程间切换的时间也少于进程切换的时间
- 独立进程之间的通讯需要内核的接入,但同一进程中的多个线程共享内存和文件,因此它们无需调用内核就可以互相通信
多线程的例子:
- 前台和后台工作:APP中,一个线程用于显示图形界面,而当用户点击一个下载按钮的时候,会开启另一个线程在后台下载文件,这个在用户的感觉中,APP的图形界面不会因为下载任务而阻塞
- 异步处理:比如为了避免掉电带来文件未保存的损失,可以创建一个线程周期性的进行备份
Q: 讲讲进程和线程的区别?
Q:Chrome浏览器打开不同的窗口是进程还是线程?
Chrome同时运行着很多进程,浏览器本身是一个进程,一个标签页是一个进程,一个扩展程序又是一个进程,目的是为了提高稳定性,某个网页卡死不会影响其他网页,但是缺点就是太占内存了。
2. 进程控制块 PCB
表示进程状态的数据结构
Q: 进程控制块保存了哪些数据?
- 进程标识符
- 进程的状态(就绪-运行-阻塞)
- 进程的优先级
- 程序计数器
- 内存指针(程序代码和进程相关数据的指针,以及与其他进程共享内存块的指针)
- 上下文数据(进程执行时寄存器中的数据)
- I/O 状态信息
- 记账信息(处理器时间总和、使用的时钟数总和、时间限制、记账号)
3. 进程的状态模型
4. 进程的用户模式和内核模式
用户模式:非特权模式
内核模式:特权模式,某些指令只能在特权模式下运行,如读取或改变控制寄存器的指令、原始 I/O 指令和内存管理相关的指令,还有部分内存区域只能在特权模式下才能访问。内核模式下,软件会完全控制处理器及其所有指令、寄存器和内存。
Q:为什么要分成两种模式?
主要是为了保护操作系统和重要的操作系统表(如进程控制块)不受用户程序的干扰