概述
引言
本文为第二篇,进程管理之进程实体,带着大家熟悉一下为什么要使用进程,以及进程实体是什么
一、为什么需要进程
从上一篇文章中我们知道,操作系统的基本功能就是管理底层的硬件资源,包括以下几个部分
有了操作系统,这些资源都可以很便捷的被管理。那么假设在没有操作系统的时代,这些计算机资源又是如何被管理的呢?
在没有配置OS之前,资源只属于当前运行的程序,且计算机只能运行一个程序,那么这个时候, 因为某些资源,当前运行的程序不可能完全合理的去利用,因此就引入了多道程序的概念,也配置了相关的OS。有了操作系统之后呢,进程就出现了,进程的作用就是合理的隔离资源、运行环境、提升资源利用率
进程是系统进行资源分配和调度的基本单位(有了多道程序的概念,操作系统就可以对每个程序进行资源的分配)
进程作为程序独立运行的载体、保障程序正常执行(因为有多道程序的概念,所以在计算机中就可能会有多个进程共同的使用某一个物理设备,比如存储器。那么进程在这里面就是发挥运行资源隔离的作用)
进程的存在,使得操作系统资源的利用率大幅度提升(这个也是依赖于多道程序设计的概念)
因此,基于上边的原因,操作系统需要进程来更合理、更高效的运行
二、进程的实体
主存中的进程形态
在主存里边,进程也是一段连续的存储空间,这个空间称作进程控制块,在进程控制块中有一些重要的信息:比如标识符、状态、优先级、程序计数器、内存指针、上下文数据、IO状态信息、记账信息等等的一些重要的信息
标识符:唯一标记一个进程的符号,用于区别其他进程。比如我们常见的进程ID,就是这个唯一的标识符
状态:标记进程的进程状态。如运行态或者阻塞状态
程序计数器:进程即将被执行的下一条指令的地址
内存指针:程序代码或者进程数据相关指针。内存指针可能有多个,分别指向程序具体的逻辑代码,或者执行进程数据相关的地址
上下文数据:这个是进程控制块中比较重要的区域,这个区域存储的是进程执行时处理器存储的数据(在处理器中有寄存器以及高速缓存,那么这些数据就是进程的上下文数据)
IO状态信息:被进程IO操作所占用的文件列表(在Linux当中,所有的信息都是以文件的形势存在的,比如我们操作的磁盘、操作的内存或者文件,都是以文件的形式存储在IO状态信息中)
记账信息:进程所使用的CPU时间,或者时钟数总和
上边的进程控制块信息,总结起来可以归结为下边四类:
这些就是主存中进程的形态
进程控制块(PCB)
进程控制块是进程里面最重要的内容,那么什么是进程控制块呢?
- 用于描述和控制进程运行的通用数据结构(每一个进程都有进程控制块)
- 记录进程当前的状态和控制进程运行的全部信息
- PCB是使得进程能够独立运行的基本单位(也就是说每一个进程都依赖进程控制块去被操作系统所调度,或者说被控制)
- PCB是操作系统进行调度经常会被读取的信息,所以PCB是常驻内存的,存放在系统专门开辟的PCB区域内
进程与线程
进程(Process)与线程(Thread)的区别
对于进程,它里边可能有多个线程在执行,也就是说进程与线程是一对多的关系,一个进程可以有多个线程
那么进程里边的线程又是怎样定义的呢?
线程是操作系统进行运行调度的最小单位(回忆一下什么是进程:进程是系统进行资源分配和调度的基本单位),一个是调度的最小单位,一个是调度的基本单位,意思就是:操作系统对进程的调度,实际上是对进程里边线程的调度
线程包含在进程之中,是进程中实际运行工作的单位,也就是说,在进程里边实际运行逻辑的是进程里边的线程,而不是进程
一个进程可以并发多个线程,每个线程去执行不同的任务。如果把一个进程比作是一个比较大的任务,那么多个线程就可以分别完成这个进程里边不同的任务,这样多个线程运行起来比较快,这也是一个线程里边有多线程的好处
在前边介绍了,进程是操作系统进行资源分配的基本单位,也就是说一个进程是有相当的资源的,而线程是不拥有资源的,而是共享进程的资源,所以线程共享进程的资源
假设现在一个进程里边有三个线程,线程1、线程2、线程3,这三个线程都是使用线程所分配的资源的,也就是说这三个线程共同使用进程的资源
对比进程和线程:
因为进程需要管理多个进程以及分配相关的资源,所以它的系统开销是比较大的。通信,对于进程来说是进程间的通信(IPC),而对于线程,它是通过读写同一个进程的数据进行通信。举个例子,比如说一个进程里边有两个线程,线程1可以在进程资源里边的某一个区域写【我处理完成之后,数据等于多少】,接下来,线程2也可以读取该区域,把对应数据读取出来,此时线程1和线程2就是通过读写进程数据进行通信的
在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践
站在了巨人的肩膀上学习,向前辈致敬
参考:https://coding.imooc.com/class/355.html
最后
以上就是高大音响为你收集整理的计算机操作系统基础(二)---进程管理之进程实体的全部内容,希望文章能够帮你解决计算机操作系统基础(二)---进程管理之进程实体所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复