我是靠谱客的博主 高大音响,最近开发中收集的这篇文章主要介绍计算机操作系统基础(二)---进程管理之进程实体,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

引言

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

一、为什么需要进程

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

有了操作系统,这些资源都可以很便捷的被管理。那么假设在没有操作系统的时代,这些计算机资源又是如何被管理的呢?
在没有配置OS之前,资源只属于当前运行的程序,且计算机只能运行一个程序,那么这个时候, 因为某些资源,当前运行的程序不可能完全合理的去利用,因此就引入了多道程序的概念,也配置了相关的OS。有了操作系统之后呢,进程就出现了,进程的作用就是合理的隔离资源、运行环境、提升资源利用率

进程是系统进行资源分配和调度的基本单位(有了多道程序的概念,操作系统就可以对每个程序进行资源的分配)
进程作为程序独立运行的载体、保障程序正常执行(因为有多道程序的概念,所以在计算机中就可能会有多个进程共同的使用某一个物理设备,比如存储器。那么进程在这里面就是发挥运行资源隔离的作用)
进程的存在,使得操作系统资源的利用率大幅度提升(这个也是依赖于多道程序设计的概念)

因此,基于上边的原因,操作系统需要进程来更合理、更高效的运行

二、进程的实体

主存中的进程形态

在主存里边,进程也是一段连续的存储空间,这个空间称作进程控制块,在进程控制块中有一些重要的信息:比如标识符、状态、优先级、程序计数器、内存指针、上下文数据、IO状态信息、记账信息等等的一些重要的信息
image

标识符唯一标记一个进程的符号,用于区别其他进程。比如我们常见的进程ID,就是这个唯一的标识符

状态:标记进程的进程状态。如运行态或者阻塞状态

程序计数器:进程即将被执行的下一条指令的地址

内存指针:程序代码或者进程数据相关指针。内存指针可能有多个,分别指向程序具体的逻辑代码,或者执行进程数据相关的地址

上下文数据:这个是进程控制块中比较重要的区域,这个区域存储的是进程执行时处理器存储的数据(在处理器中有寄存器以及高速缓存,那么这些数据就是进程的上下文数据)

IO状态信息:被进程IO操作所占用的文件列表(在Linux当中,所有的信息都是以文件的形势存在的,比如我们操作的磁盘、操作的内存或者文件,都是以文件的形式存储在IO状态信息中)

记账信息:进程所使用的CPU时间,或者时钟数总和

上边的进程控制块信息,总结起来可以归结为下边四类:
image
这些就是主存中进程的形态

进程控制块(PCB)

进程控制块是进程里面最重要的内容,那么什么是进程控制块呢

  • 用于描述和控制进程运行的通用数据结构(每一个进程都有进程控制块)
  • 记录进程当前的状态和控制进程运行的全部信息
  • PCB是使得进程能够独立运行的基本单位(也就是说每一个进程都依赖进程控制块去被操作系统所调度,或者说被控制)
  • PCB是操作系统进行调度经常会被读取的信息,所以PCB是常驻内存的,存放在系统专门开辟的PCB区域内

进程与线程

进程(Process)与线程(Thread)的区别

image

对于进程,它里边可能有多个线程在执行,也就是说进程与线程是一对多的关系,一个进程可以有多个线程

那么进程里边的线程又是怎样定义的呢?

线程是操作系统进行运行调度的最小单位(回忆一下什么是进程:进程是系统进行资源分配和调度的基本单位),一个是调度的最小单位,一个是调度的基本单位,意思就是:操作系统对进程的调度,实际上是对进程里边线程的调度

线程包含在进程之中,是进程中实际运行工作的单位,也就是说,在进程里边实际运行逻辑的是进程里边的线程,而不是进程
一个进程可以并发多个线程,每个线程去执行不同的任务。如果把一个进程比作是一个比较大的任务,那么多个线程就可以分别完成这个进程里边不同的任务,这样多个线程运行起来比较快,这也是一个线程里边有多线程的好处

在前边介绍了,进程是操作系统进行资源分配的基本单位,也就是说一个进程是有相当的资源的,而线程是不拥有资源的,而是共享进程的资源,所以线程共享进程的资源

image

假设现在一个进程里边有三个线程,线程1、线程2、线程3,这三个线程都是使用线程所分配的资源的,也就是说这三个线程共同使用进程的资源

对比进程和线程:
image

因为进程需要管理多个进程以及分配相关的资源,所以它的系统开销是比较大的。通信,对于进程来说是进程间的通信(IPC),而对于线程,它是通过读写同一个进程的数据进行通信。举个例子,比如说一个进程里边有两个线程,线程1可以在进程资源里边的某一个区域写【我处理完成之后,数据等于多少】,接下来,线程2也可以读取该区域,把对应数据读取出来,此时线程1和线程2就是通过读写进程数据进行通信的

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践

image

站在了巨人的肩膀上学习,向前辈致敬
参考:https://coding.imooc.com/class/355.html

最后

以上就是高大音响为你收集整理的计算机操作系统基础(二)---进程管理之进程实体的全部内容,希望文章能够帮你解决计算机操作系统基础(二)---进程管理之进程实体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部