当前位置: 首页 > news >正文

关于进程与进程调度

目录

  • 什么是进程
  • 进程管理
  • 进程的结构体(PCB)里的属性
  • 并行与并发

什么是进程

一个运行起来的程序就是进程.
比如文件名是以 exe 结尾的就是一可执行文件(程序)
在这里插入图片描述
双击QQ.exe文件, 这个程序就跑起来了, 它在系统中形成了一个进程, 那我们怎么看到进程呢?
可以打开任务管理器, 点开进程就可以看到了:
在这里插入图片描述

进程管理

我们可以看到上面有100多个进程, 那它们有是如何被管理的呢?
其实就是两步:

  1. 描述一个进程 : 使用 结构体 / 类, 把一个进程有哪些信息表示出来.
  2. 组织这些进程 : 使用一定的数据结构来把这些 结构体 / 对象 放到一起.

进程的结构体(PCB)里的属性

  1. pid 就像我们的身份证一样, 每个进程也需要有唯一的身份标识.
  2. 内存指针 当前这个进程使用的内存是哪一部分
  3. 文件描述符表

进程每次打开一个文件, 就会产生一个"文件描述符", 标识这个被打开的文件
一个进程可能打开多个文件, 对应一组"文件描述符"
把这些文件描述符放到顺序表这样的结构里, 就构成了"文件描述符表".

  1. 有一组属性是专门来描述和CPU资源相关的, 这些属性都是辅助进行, 是进程调度.
  1. 进程状态
    简单认为进程有两种状态:
    就绪态: 该进程已近准备好, 可以随时上CPU执行.
    阻塞态: 该进程暂时无法上CPU执行.
  2. 进程的优先级
    进程之间的调度不一定是公平的, 有些进程会优先调度.
  3. 进程的上下文
    就行当于是个存档记录, 描述了进程执行到了哪里, 进程在离开CPU的时候就会把当前运行的中间结果存档, 等下次进程在CPU上执行的时候, 再读档, 从上次的结果开始继续执行.
  4. 进程的记账信息
    统计了每个进程在CPU上执行的次数, 可以作为调度的参考依据.

操作系统往往使用 双向链表 来存储PCB

  1. 创建一个进程就是创建一个节点.
  2. 删除一个进程就是把这个节点给删了.
  3. 遍历进程列表, 就是在遍历链表.

并行与并发

并行:
同一时刻, 两个核心同时执行两个进程, 此时这两进程就是 “并行” 执行的.

并发:
一个核心先执行进程1, 执行一会儿后再去执行进程2, 再执行一会儿后去执行进程3…此时这里的切换速度如果足够快, 那么看起来这些进程1,2,3就是同时 “执行” 的. 这便是并发.

因为并发与并行完全是操作系统自身控制的, 我们感受不到, 所以在很多时候我们都把 并行+并发 统称为并发.

http://www.lryc.cn/news/35688.html

相关文章:

  • Redis常用命令及数据类型参数
  • (七十四)大白话深入探索多表关联的SQL语句到底是如何执行的?(2)
  • 销售使用CRM系统集成Excel的五个技巧
  • 过来人告诉你:Java学到什么程度可以找工作?
  • 【Linux】目录结构
  • 37.Java进阶之实现动态编译
  • 【Python百日进阶-Web开发-Vue3】Day549 - Vue3 商城后台 09:Veux4-01基本概念
  • GitLab 解析:为什么市场正在转向一体化 DevSecOps 平台?(附Forrester完整报告下载)
  • ThreadLocal的内部结构和源码探究
  • Linux文件系统(下)
  • 合并链表相关的练习
  • FFmpeg介绍及入门知识
  • ASA材料3D打印服务 抗紫外线材料3D打印服务 抗紫外线模型制作-CASAIM中科院广州电子
  • MySQL workbench数据表和数据结构
  • 网络与信息安全岗位介绍—售后工程师
  • Nowcoder .链表分割
  • 猿创征文 | re:Invent 朝圣之路:“云“行业风向标
  • mysql的distinct和group by的区别
  • Web前端:前端开发人员的职责有哪些?
  • BatchNorm1d的复现以及对参数num_features的理解
  • 【专项训练】动态规划-1
  • 软测面试了一个00后,绝对能称为是内卷届的天花板
  • 赢球票问题
  • Go语言基础之Error接口
  • Sqoop详解
  • C++ 之指针
  • 数据结构与算法---JS与栈
  • HDLBits: 在线学习 SystemVerilog(二十三)-Problem 158-162(找BUG)
  • 国外SEO升级攻略:如何应对搜索引擎算法变化?
  • X.509证书