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

操作系统中的进程是什么?(详细讲解进程调度相关PCB信息)

目录

1.进程调度是什么

2.操作系统的管理

2.1.描述:

2.2.组织:

3.PCB块中的信息

3.1pid标识

3.2内存指针

3.3文件描述符

4.进程调度相关的

4.1进程状态

4.1.1就绪状态

4.1.2阻塞状态

4.2进程优先级

4.3进程上下文

4.4进程记账信息


1.进程调度是什么

进程调度是一组操作系统提供的API,通常是用C的风格来编写的,应用程序必须调用这些API才能够完成一些基础的工作,从而让CPU更高效的利用.

2.操作系统的管理

操作系统通过

2.1.描述:

表示清楚进程的信息(这里面先不考虑线程,可以理解为系统通过一种特殊的结构体来描述进程的属性和信息,称之为PCB块[进程控制块])

2.2.组织:

操作系统通过一定的数据结构来组织PCB块,系统通常会使用链表的结构进行组织

3.PCB块中的信息

3.1pid标识

pid标识是进程的一种身份认证号,就好像我们每个人都有身份证号一样

3.2内存指针

这个简单理解为指向进程可使用的内存空间就好了

3.3文件描述符

每个进程都可以打开一些文件,这个就是描述进程可以打开哪些文件的,也就是持有的资源文件

4.进程调度相关的

进程调度其实是通过"并行" 和 "并发" 的方式让计算机可以执行多个进程

并行:就是多核心的CPU上面,每个CPU都执行一个进程,这样就可以同时执行多个进程了

并发:就是一个CPU上面多个进程交互执行,交互时间短,从而让人感觉上是一起执行的

4.1进程状态

4.1.1就绪状态

就是相当于你辅导员说下午要做核酸,然后你中午吃完饭也没睡觉,就在那等着消息,辅导员一通知做核酸,你就可以直接去做核酸,这种随时待命的状态就是就绪状态

4.1.2阻塞状态

阻塞状态就相当于你中午睡了个午觉,手机静音,这时候不管怎么样,辅导员联系不上你,你就不执行他需要你完成的任务,这种就叫阻塞状态

总结:就绪状态的进程可以被CPU调用,阻塞状态的进程不能被CPU调用

4.2进程优先级

系统中的进程是有优先级的,同时两个进程需要上CPU,要有个先后顺序的,就好像,你室友喊你打游戏,你辅导员请你去办公室喝茶,那这两件事情对于你来说,就有个优先级,肯定把辅导员晾着,游戏不能耽误,这种情况就是打游戏的优先级大于辅导员请喝茶的优先级

并且在进程创建的时候,我们是可以通过一些系统调用来干预优先级的,但是我们设置完之后,不一定就先执行,如果三个进程优先级都是4,那么这三个进程的执行顺序就是随机的

4.3进程上下文

这个就类似于你在玩游戏,辅导员说要喊你去,给你发奖学金,你就会先把你的游戏存档,这个存档就叫做进程上下文.

CPU执行任务时"并发"和"并行"一起使用的,所以有时候并发执行的时候,当CPU再次回到这个进程上的时候,我们需要保证能够读取到上次进程的进行程度

4.4进程记账信息

这个就好像你去教室上课,你们老师很喜欢一些同学,但是为了给你们加平时分,就会用一些手段给你加分

在CPU中也一样,虽然进程有优先级,但是并不希望有的进程没机会执行,所以会适当给这些优先级低的进程一些安排一些时间上CPU

5.进程的虚拟地址空间

进程中还有一个特别重要的概念叫做虚拟地址空间

系统会给每一个进程安排一些虚拟地址空间,通过映射来并进行判断是否合法,然后再放到内存中去

根据这张图来理解

两个虚拟地址空间指向的那个浅紫色的盒子叫做MMU,这张图很好的诠释了各个部件间的联系和作用

有了虚拟地址空间就让进程有了"隔离性",那我们的进程是不是就不能有联系了呢?

并不是,系统又引入了一个叫做进程间通信的东西,核心原则基本就是找一个多个进程都能访问的地址空间或者文件,然后基于公共的资源进行数据的交互就可以了 

 

相关文章:

  • Java并发 JUC工具类:Semaphore详解
  • Android 开发框架——Glide 图片加载框架
  • CentOS 7 安装教程(基于虚拟机安装)
  • IOC理论
  • nginx官网下载,安装时隐藏版本号、响应头信息、容器信息
  • 【量化交易】 量化因子 风险类因子
  • 基于springboot的张仲景药房(药店)管理系统
  • SpringBoot线上项目隐藏Swagger接口文档
  • 网课查题接口 搜题公众号对接题库教程 (附赠题库接口)
  • Aptos VS Sui,盘点两大 Move 系新公链的创新异同
  • vulnhub DriftingBlues: 6
  • 【JVM基础】虚拟机栈
  • 单调栈专题
  • msf编码免杀
  • 【牛客刷题】每日一练——回文字符串
  • [译]CSS 居中(Center)方法大合集
  • 2017年终总结、随想
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • es6--symbol
  • Java基本数据类型之Number
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python_网络编程
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 浮动相关
  • 近期前端发展计划
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何实现 font-size 的响应式
  • 通信类
  • 王永庆:技术创新改变教育未来
  • 我的业余项目总结
  • 数据库巡检项
  • #Linux(Source Insight安装及工程建立)
  • #pragma pack(1)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二十三)Flask之高频面试点
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)原始图像数据和PDF中的图像数据
  • *** 2003
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *Django中的Ajax 纯js的书写样式1
  • *上位机的定义
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET Reactor简单使用教程
  • .NET/C# 的字符串暂存池
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @31省区市高考时间表来了,祝考试成功
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择