写点什么

计算机操作系统基础 (二)--- 进程管理之进程实体

用户头像
书旅
关注
发布于: 2020 年 06 月 27 日
计算机操作系统基础(二)---进程管理之进程实体

引言

本文为第二篇,进程管理之进程实体,带着大家熟悉一下为什么要使用进程,以及进程实体是什么



一、为什么需要进程

从上一篇文章中我们知道,操作系统的基本功能就是管理底层的硬件资源,包括以下几个部分



有了操作系统,这些资源都可以很便捷的被管理。那么假设在没有操作系统的时代,这些计算机资源又是如何被管理的呢?

在没有配置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



发布于: 2020 年 06 月 27 日阅读数: 101
用户头像

书旅

关注

公众号:IT猿圈 2019.04.11 加入

还未添加个人简介

评论

发布
暂无评论
计算机操作系统基础(二)---进程管理之进程实体