进程是什么?
就是一个运行中的程序的实例!!!
为什么要引入进程?
在多道程序同事运行的背景下,进程之间需要共享系统资源,因此会导致各程序在执行过程中出现相互制约的关系,程序的执行会表现出间断性的特征。
这些特征都是在程序的执行过程中发生的,是一种动态的过程
传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,换言之,就是我们没有办法从程序的字面上看到他是何时执行,何时停顿,也无法看到他跟其他执行程序的关系。
所以,为了解决这些问题,为了深刻描述程序动态执行过程的性质,更好的支持和管理多道程序的并发执行,我们引入了进程的概念。
进程是由什么组成的?
1. PCB(process control block),一块数据结构,存放系统资源数据,比如分配多少内存,进程PID,进程UID等
2. 程序段,就是我们码农写的代码块
3. 数据段,用来存放运行程序产生的变量,中间变量等
什么是多道程序设计?
多道程序设计, 是指把一个以上的程序存放在内存中, 并且同时处于运行状态, 这些程序共享 CPU 和其他计算机资源。
主要优点如下
1. CPU 的利用率高。在单道程序环境下, 程序独占计算机资源, 当程序等待 I / O 操作时, CPU 空闲, 造成 CPU 资源的浪费。在多道程序环境下, 多个程序共享计算机资源,当某个程序等待 I / O 操作时, CPU 可以执行其他程序, 这大大地提高了 CPU 的利用率。
2. 设备利用率高。在多道程序环境下, 内存和外设也由多个程序共享, 无疑也会提高内存和外设的利用率。
3. 系统吞吐量大。在多道程序环境下, 资源的利用率大幅度提高。减少了程序的等待时间, 提高了系统的吞吐量。
进程是如何解决问题的?
进程把能够识别程序运行的程序运行态的一些变量(上面讲到的内存大小,进程PID等)放到PCB中,通过这些变量,操作系统可以更好的了解当前进程的状况,可以选择在适当的时候进行进程的切换(了解就绪态,运行态,阻塞态切换机制),这样一来可以避免一些资源的浪费,甚至划分了更小的调度单位——线程,来提高操作系统的并发度,更好的利用时间片等资源。