进程、线程、以及它们之间的区别与联系
一、进程简介
1.1 进程概念的引入
计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念。当内存中多个程序存在时,如果不对人们熟悉的“程序”的概念加以扩充,就无法刻画多个程序共同运行时系统呈现出的特征。
多道程序设计:是指允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。
也就是说,内存中多个相互独立的程序均处于开始和结束之间。
从宏观上看是并行的,多道程序都处于运行过程中,但尚未运行结束;
从微观角度上看是串行的,各道程序轮流的占用CPU交替的执行。
引入多道程序设计技术可以提高CPU的利用率,充分发挥计算机硬部件的并行性。
多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以便是和反映系统中的情况,所以引入了进程这一概念。
1.2 程序是什么
说起进程,就不得不说下程序。先看定义:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。
而进程则是在处理机上的一次执行过程,它是一个动态的概念。这个不难理解,其实进程是包含程序的,进程的执行离不开程序,进程中的文本区域就是代码区,也就是程序。
1.3 进程是什么
1.3.1 进程的概念
进程的定义: 进程是据有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
从原理角度上看:进程是支持程序执行的一种系统机制,它对处理器上运行程序的活动规律进行抽象。
从实现角度看:进程是一种数据结构,用来准确的刻画运行程序的状态和系统动态变化状况。
简单的来讲进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个 “执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
1.3.2 进程的类型
- 系统进程:操作系统用来管理资源的进程,当系统进程处于运行态时,CPU处于管态,系统之间的关系由操作系统负责。
- 用户进程:操作系统可以独立执行的的用户程序段,当用户进程处于运行态时,CPU处于目态,用户进程之间的关系由用户负责。
1.3.3 进程控制块
- 进程的三个组成部分
a. 程序
b. 数据
c. 进程控制块(PCB):为了管理和控制进程,系统在创建每个进程时,都为其开辟一个专用的存储区,用以记录它在系统中的动态特性。系统根据存储区的信息对进程实施控制管理。进程任务完成后,系统收回该存储区,进程随之消亡,这一存储区就是进程控制块
PCB随着进程的创建而建立,撤销而消亡。系统根据PCB感知一个进程的存在,PCB是进程存在的唯一物理标识(这一点可以类比作业控制块JCB)
- 进程控制块的内容
PCB在不同的语言中,可能用不同的数据结构表示。为了系统管理和控