• 进程调度的基本关系


    1.什么是进程(process)

    简单来说就是:一个程序跑起来就是一个进程
    一个应用没跑起来叫做程序,跑起来了就叫作进程.
    在这里插入图片描述

    在这里插入图片描述

    打开任务资源管理器就可以看到有哪些程序在运行,即进程;进程也可以叫做任务(task);
    进程是操作系统资源分配的基本单位
    在这里插入图片描述

    举个例子:小明要开一个纺织厂,纺织厂里面又有许多条生产线,而一个纺织厂就相当于一个进程,即小明所拥有的资源
    在这里插入图片描述


    2.进程的特性

    1.进程是非常重要的"软件资源"

    进程是由操作与系统进行管理的,管理主要是描述进程 (进程有哪些属性特征) +组织 (将这些进程串起来)

    描述+组织=>调度

    描述:主要使用结构体来描述进程我们把他叫做PCB(进程控制块)
    组织:通过一个双向链表,把多个PCB串在一起
    创建一个进程,本质上就是创建一个PCB结构体对象,并将它插入链表中;
    销毁一个进程,本质上就是把链表上的PCB结点删除
    在任务管理器上查看到的进程列表,本质上就是遍历这个PCB链表;


    2.PCB(进程控制块)描述了哪些进程特征

    在这里插入图片描述

    操作系统里面有一个很重要的模块调度器,就是负责让有限的CPU来调度执行很多进程;
    在这里插入图片描述

    3.并行和并发

    下面来描述一个非常容易混淆的概念
    因为cpu的资源不好分割,但是我们的现在CPU都是多核心CPU,本质上是希望这些进程可以"同时运行",“分时复用”
    下面就有个很容易混淆的概念:并行和并发

    并行:微观上是同一时刻,两个核心上的进程同时执行(因为一个核心同一时刻只能运行一个进程)
    并发:微观上同一时刻只能运行一个进程,但是一个核心可以在多个进程之间进行快速切换,从而在宏观给我们一种多个进程同时运行的错觉


    4.进程的虚拟地址空间和进程间通信

    另外,程序获取的内存空间并非真正的内存空间,而是虚拟内存空间,主要是为了防止地址越界,一个程序的崩溃从而导致另外一个程序的崩溃:
    如图所示:
    在这里插入图片描述


    问题:
    既然进程之间的地址都是虚拟的,那么各个进程之间如何进行数据交互的呢?
    实际上,进程之间的通信方式有很多,但是核心思想都是一样的.即搞一个多个进程都能访问到的"公共空间",基于这个公共空间来进行数据的交互

  • 相关阅读:
    LeetCode538:把二叉搜索树转换为累加树
    使用Minio构建文件服务
    计算机网络学习任务
    Redis集群-主从复制、哨兵
    使用yum install和reposync下载rpm安装包以及wget和curl下载文件
    flask get请求
    作业-11.15
    HTML5+CSS3+JS小实例:涟漪特效按钮
    皮革行业S2B2C系统网站数据化智能分析,驱动运营快速增长
    汽车诊断协议UDS概述
  • 原文地址:https://blog.csdn.net/weixin_64634186/article/details/127992617