1. 为什么需要进程
我们上一篇专栏也说了,操作系统管理着处理器资源,存储器资源,IO设备资源,文件资源。
那么再没有os的时候,这些资源是怎么处理的呢?
事实上,在没有配置os之前,资源属于当前运行的程序,而在配置了os之后,引入了多道程序设计的概念,让我们从之前的一台电脑只能运行一个任务到可以同时运行多个任务。
而进程,就是搭载着运行这些任务的载体,它做到了合理的隔离资源、运行环境,提升资源利用率。
它是:
(1)系统进行资源分配和调度的基本单位。
(2)作为程序独立运行的载体保障程序保障程序正常执行。
(3)使得操作系统的资源利用率大大提升。
例如说,我们在使用git push的时候就会有进程访问push的程序,和在运行程序的时候也会有进程访问程序,而之前在没有os的时候,只能一次性做一件事情,而进入了进程的概念之后,就变得方便了很多。
2. 进程的实体
(1) 主存中的进程形态
在主存中,进程也是一段连续存储的空间,这个空间,也就称为进程控制块,而在进程控制块中,又分为以下几类:
其中:
标识符:标识符唯一标记一个进程,用于区别其他进程。
状态:标记进程的进程状态,如:运行态或阻塞状态。
程序计数器:指向进程即将被执行的下一条指令的地址。
内存指针:程序代码、进程数据相关指针。
上下文数据:进程执行时处理器存储的数据。
IO状态信息:被进程IO操作所占用的文件列表
记账信息:使用处理器时间、时钟数总和等
(2) 进程控制块(PCB)
- 用于描述和控制进程运行的通用数据结构。
- 记录进程当前状态和控制进程运行的全部信息。
- PCB使得进程是能够独立运行的基本单位。
- PCB是操作系统进行调度经常会被读取的信息
- PCB是常驻内存的,存放在系统专门开辟的PCB区域中
(3)进程与线程
进程(Process) | 线程(Thread) |
---|---|
一个进程可以拥有一个或者多个线程 | 一个线程就是一个线程 |
进程是系统进行资源分配和调度的基本单位 | 线程是操作系统进行运行调度的最小单位 |
进程中包含着若干个线程 | 线程是进程中实际工作的单位 |
进程不存在并发一说 | 一个进程可以并发多个线程 |
进程是资源分配的基本单位 | 线程不拥有资源 |
进程是独立调度的基本单位 | 线程是独立调度的最小单位 |
进程系统的开销大 | 线程系统的开销小 |
进程IPC | 线程会读写同一进程的数据通信 |