> 文章列表 > 进程的介绍

进程的介绍

进程的介绍

文章目录

  • 一.进程的概念
    • 1.1概念
    • 1.2进程的组成
      • 1.2.1 PCB中描述进程的特征
  • 二.进程的虚拟地址空间
  • 三.进程间的通信
  • 引入线程

一.进程的概念

1.1概念

百科的介绍:
百科的介绍
换句话说,一个跑起来的程序,就是一个进程,也就是在操作系统中运行的exe程序就是一个进程,如下图的进程列表
进程的介绍
进程是操作系统对一个正在运行的程序的抽象,同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位

而线程是操作系统调度执行的基本单位

1.2进程的组成

进程是一个重要的"资源管理",是由描述+组织构成的,
描述:使用结构体来描述进程属性(PCB(进程代码块))
组织:通过双向链表,来把多个PCB给串到一起

1.2.1 PCB中描述进程的特征

  1. pid 进程的身份标识符(唯一的数字)
  2. 内存指针 (指向自己的内存是那些)
  3. 文件描述符表 (硬件上的文件等其他资源)
  4. 进程调度的相关属性

详细的介绍的进程调度的相关属性

  1. 进程的状态
  • 就绪状态
  • 运行状态
  • 阻塞状态
  1. 优先级
  2. 上下文
    操作系统在进行进程切换的时候,就要把进程执行的"中间状态"记录下,保存好,下次这个进程再上CPU运行的时候,就可以恢复上次的状态好继续往下执行(读档,存档)
  3. 记账信息
    操作系统,统计每个进程在CPU上占用的时间和执行的指令的数目,根据这个来决定下一阶段如何调度

二.进程的虚拟地址空间

内存管理----虚拟地址空间
程序中所获取的内存地址,并非是真的物理内存的地址,而是经过了一层抽象,虚拟出来的地址(内存的特性:随机访问(闪现))

虚拟地址空间:程序中所取到内存地址,并非是真正的物理内存的地址,而是经过了一层抽象,虚拟的地址

先来介绍未引入虚拟地址的模式
在这里插入图片描述

如果代码不小心出不bug了,可能会导致访问的内存越界
像上面的图片,进程1访问的内存越界到进程2时候,就把进程2搞崩溃了

针对进程使用的内存空间,进行’"隔离"引入了虚拟地址空间,代码里不再直接使用真实的物理地址,而是使用虚拟的地址(由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换)
如下图:
在这里插入图片描述

一旦进程1访问越界了,操作系统发现后,此时就直接向进程反馈一个错误(具体来说是发送一个(SIGN SEGEMNT FAUL信号,引起进程的崩溃)

三.进程间的通信

虽然进程进行隔离,但是也引入了新的问题,进程之间也需要进行数据的交互,如此,进程之间就需要有进行"信息交换"的需求.进程间通信的需求就应运而生。
简单来说,需要搞一多个进程都能访问到"公共空间",基于这个公共空间进行交互数据即可.
其中公共空有很多具体的体现形式(不作过多介绍)

  1. 管道
  2. 共享内存
  3. 文件
  4. 网络
  5. 信号量
  6. 信号

引入线程

一个进程要完成内核的事情,它必须有一个运行在它的地址空间的线程。此线程负责执行该进程地址空间的代码。每个进程至少拥有一个在它的地址空间中运行的线程。一个进程要完成内核的事情,它必须有一个运行在它的地址空间的线程。此线程负责执行该进程地址空间的代码。每个进程至少拥有一个在它的地址空间中运行的线程。