• 进程与进程调度的基本过程


    首先我们要了解一下什么叫做进程

    进程就是运行起来的程序,好比一个exe为后缀名的文件,如果没有双击运行就不是进程,只有双击运行起来了,就称为一个进程。

    在同一时刻,系统中的进程有很多,所以需要操作系统的管理分为两方面

    1.描述:用详细的语言描述清楚一个进程该有的属性和信息

    通过结构体来进行描述的,结构体里面包含了一个进程的各项信息,把结构体里面又起了一个名为(PCB)进程控制块

    2.组织:通过一定的数据结构,把很多用来描述的实体放在一起进行增删改查

    系统中一般会使用双向链表把PCB给组织起来

    创建一个进程,本质上就是创建PCB,并且加入到链表上

    删除一个进程,本质上就是从链表上删除对应的PCB节点

    查看任务管理器,本质上就是在遍历这个链表

    对于不同的系统上面,一个进程可能是一个PCB也可能是多个PCB

    系统管理PCB的链表也不一定是一个

    接下来查看PCB中具体有什么信息也就是进程里面有什么关键的要素

    1.pid(进程的身份标识)在任务管理器中可以看到 如果没有请右键勾选上pid,一个主机在同一时刻这些进程的pid是惟一的,可以通过pid来区分一个进程

    2.内存指针:一个可执行文件双击运行后,操作系统会把文件中的核心数据加载到内存中(核心数据里面带有要执行的指令和指令依赖的数据)那么我们既然要创建内存那一定要给进程分配内存空间才能去保存我们读取的数据,内存空间又分为了很多区域,有的用来放指令,有的用来放数据,还有的用来维护运行的状态等等,而内存指针就指明了哪一块内存该做些什么

    3.文件描述符:每一个进程都可以打开一些文件(文件都是存储在硬盘上的数据) 文件描述符里面就记录了当前进程都打开了哪些文件 以便后序针对这些文件进行读写的操作

    内存指针描述的是进程持有的内存资源     文件描述符描述的是进程持有的文件资源     所以进程也就是操作系统分配资源的基本单位

    以下的属性都是与“进程调度”有关系的(调度指的是CPU资源有限,需要合理安排)

    进程有很多,而于我自己的笔记本CPU只是6核的(同时可以跑6个任务)那这么多个进程如何让这6个CPU分呢 这就称为调度

    所谓的进程调度就是通过‘并行’和‘并发’的方式让计算机可以“同时”执行多个进程(任务)

    这一组属性存在的意义就是为了“进程的调度”

    4.进程状态

    (1).就绪状态 :才能被调用到CPU执行

    (2).阻塞状态:无法被调用到CPU上执行

    5.进程优先级:决定谁先谁后的问题 先被调用的成为主线程 后被调用的成为辅线程

    6.进程上下文:进程在CPU上执行过后,要切换给别的进程,就需要相当于存档,下次遇到就回复之前的状态,相当于读档,然后继续往下执行

    对于进程来说,上下文就是CPU中 的寄存器的值,(寄存器的值就包含了运行的中间结果,需要把这些结果保存到CPU的上下文信息中)

    7.进程记账信息:每个进程在CPU上执行了多久(执行了什么命令,排了多久的队)(统计信息) 为了辅助调度的效果

    执行进程的时候,虽然说有优先级,但是还是不希望让有的进程完全碰不到CPU

  • 相关阅读:
    扬帆牧哲—shopee应该具备的运营思维
    JVM常用工具
    【软件设计】软件开发的核心原则
    Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
    使用Jetpack Compose构建Flappy Musketeer街机游戏
    MySQL业务并发减数量,数量未减
    天天基金股票数据爬取
    输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
    Ansible学习笔记15
    【每日一题】1041. 困于环中的机器人
  • 原文地址:https://blog.csdn.net/m0_63101235/article/details/126310821