一、什么是进程?
1、定义:进程是操作系统分配内存资源的基本单位,也是操作系统独立调度的基本单位,进程受操作系统管理。
2、两个特性:
- 拥有独立的内存资源,进程想要独立运行,必须拥有独立的资源
- 独立调度的基本单位,操作系统根据进程中独立内存中存储的信息(PCB)来对进程进行统一调度。
二、为什么需要进程,进程的由来?
1、早期的计算机只有一块内存,内存中存储着代码,所以一台计算机一生只能干一件事情。
2、老冯(冯诺依曼)提出了”冯诺依曼结构“,想运行不同的程序就可以从外存储器中将这一个程序的代码放到内存储器中。如图:
3、由于CPU的速度远远大于内存,内存的速度远大于硬盘,内存中的唯一一个程序I/O(从硬盘读取数据)的时候,CPU就会空闲.
4、为了让CPU充分发挥作用,操作系统每次加载多个程序到存,当某个程序I/O的时候,就切换到另一个程序。
5、CPU进行程序之间的切换的时候需要记住切换时的状态才行,这个记住自己状态的任务需要交给每个程序自己去做。我们把这些正在运行的程序叫做进程,每个进程中单独的内存来存储自己的各种信息的部分,我们称之为进程控制块(PCB).
6、总结:为了使多个程序并发执行,提高CPU利用率和系统吞吐量引入了进程、
三、引入进程带来的一些问题?
1、某些进程即使不进行I/O运行时间也很长,导致一些进程等待的时间过长,通过分时系统解决:CPU切换速度极快,CPU给每个进程公平的分配时间,时间到了就会切换支另一个进程。
2、内存空间有限,无法装入多个程序,利用局部性原理(一旦程序的某块内存被访问,则他附近的内存也会被访问)来解决:我们先装入程序的某些关键代码,然后利用局部性原理将硬盘中的代码分块装入内存。
3、由于进程之间的空间是独立的,人们觉得进程之间处理数据还是不够高效,于是人们引入了线程来解决问题。
四、操作系统、进程、线程之间的关系?
操作系统通过进程中的PCB信息调度进程,线程的调度由进程控制(根据线程中的代码,此处是我个人理解),同一进程中的所有线程共享这个进程中的内存空间,但是每个线程也有自己独立的内存空间。