进程、进程调度、PCB(详解)

简介: 进程、进程调度、PCB(详解)

前言:


       在学习多线程的时候我们都要接触进程和线程这样的概念,这篇文章来说一下我对进程的理解。

一、什么是进程


       我们下载的应用在不适用的时候是静态的也就是不运行的,而在我们运行起来的时候他就变成动态的了被加载到我们的进程管理器中。下图就是我们正在运行的程序,也是一个个的进程。只有当程序运行起来的时候才会变成进程

image.png

二、操作系统对进程的调度


       进程里面的属性/信息(状态、PID、CPU、内存、磁盘.....)是通过结构体这样的数据集合,集合起来的我们称作为进程控制块(pcb),并且通过双向链表将这些进程组织在一起形成了我们所看到的进程列表。

       我们在使用qq的时候我们会点击qq将它运行起来这个期间他经历了什么?

       1.操作系统给这个应用分配PID标识码和我们的身份证差不多。

       2. 我们在双击qq图标时候,操作系统会将这个exe文件的操作数据以及应用的重要数据通过操作系统对这些数据分配内存空间从硬盘加载到内存中。

       3.将这些信息交给cpu,cpu收到这些信息通过与操作系统配合将这个进程运行。

三、进程的创建到销毁


**** 进程PCB ****      

为管理进程,操作系统先会创建一个PCB具体内容:

       (1)分配进程身份:操作系统分配pid来区分每一个进程

       (2)内存指针(内存资源):操作系统将文件的核心数据加载到内存中,使用指针来指向一块内存区分每块内存的作用

       (3)文件描述表(文件资源):应用的运行需要对文件进行访问,文件描述表里面记录了打开了哪些文件

       (4)状态:当前进程的运行状态(就绪状态/堵塞状态)

       (5)进程优先级:在各个进程的优先顺序

       (6)进程上下文:当前进程运行到哪里了,接下来继续干那些工作

       (7)进程记账信息:进程在cpu上执行了多久(执行的条数)

**** cpu的情况 ****    

2.1、我们知道一个cpu核心可以运行一个进程,那为什么我们还可以开启那么多的应用一起使用呢?


       进程在cpu上的并发执行的,就像是我这会在码文章的同时我在听歌,两个不是分开的但是同时进行的。PCB中的状态/优先级/上下文/记账信息,这些是有关操作系统的调度,也就是cpu执行的优先级也就是调度,计算机的计算能力很强,所以我们在很短很短的时间先干下工作1再干下工作2在干工作3在我们看来就是同时完成的,这就是对进程的调度,所以一个cpu核心会在一个时间内完成很多的工作。

2.2、为什么进程不会轻易的挤挂其他进程?


       我们了解到了进程在运行之前就会分配内存,但是他都运行起来了分配好了内存怎么对别的进程的内存好像没什么影响?这里有一个虚拟地址空间(不是真实的物理内存地址),会给进程先安排一些空间,然后将这个模拟使用的空间大小去和真正要使用的内存空间去比较大小,通过MMU完成虚拟地址到物理地址之间的映射,如果空间足够就将它放到内存上。就相当于再装修一个屋子,我先测量好他的空间大小看看我的物品是不是可以放进来,如果可以进来就将它放进来,不可以的话就不放进来了防止对其他家具抢空间

image.png

编辑

这种做法增加了进程间的隔离性保障了安全。




相关文章
|
1天前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
16 4
|
2天前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
2天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度策略
【10月更文挑战第29天】本文将带领读者深入探讨操作系统中的核心组件之一——进程,并分析进程管理的重要性。我们将从进程的生命周期入手,逐步揭示进程状态转换、进程调度算法以及优先级调度等关键概念。通过理论讲解与代码演示相结合的方式,本文旨在为读者提供对进程调度机制的全面理解,从而帮助读者更好地掌握操作系统的精髓。
10 1
|
2天前
|
算法 调度 UED
深入理解操作系统中的进程调度
【10月更文挑战第29天】探索进程调度的奥秘,本文将带你深入了解在操作系统中如何管理和控制多个并发执行的程序。从简单的调度算法到复杂的多级反馈队列,我们将逐步揭示如何优化系统性能和提高资源利用率。准备好一起揭开进程调度的神秘面纱吧!
|
7天前
|
算法 大数据 Linux
深入理解操作系统之进程调度算法
【10月更文挑战第24天】本文旨在通过浅显易懂的语言,带领读者深入了解操作系统中的进程调度算法。我们将从进程的基本概念出发,逐步解析进程调度的目的、重要性以及常见的几种调度算法。文章将通过比喻和实例,使复杂的技术内容变得生动有趣,帮助读者建立对操作系统进程调度机制的清晰认识。最后,我们还将探讨这些调度算法在现代操作系统中的应用和发展趋势。
|
1月前
|
算法 调度
深入理解操作系统:进程调度与优先级反转问题
【9月更文挑战第36天】操作系统是计算机科学中的核心概念,它管理着计算机的硬件资源和软件进程。在多任务处理环境中,进程调度是保证系统高效运行的关键机制之一。本文将探讨进程调度的基本概念、调度算法以及它们如何影响系统性能。同时,我们还将讨论优先级反转问题,这是一个在实时系统中常见的问题,它可能导致系统响应时间不可预测。通过分析优先级反转的原因和解决方案,我们可以更好地理解操作系统的设计和优化策略。
|
24天前
|
算法 调度 UED
探索操作系统的心脏:深入理解进程调度
【10月更文挑战第7天】在数字世界的海洋中,操作系统是那艘承载着软件与硬件和谐共处的巨轮。本文将带你潜入这艘巨轮的核心区域——进程调度系统,揭示它如何精准控制任务的执行顺序,保障系统的高效运行。通过深入浅出的语言,我们将一起解码进程调度的奥秘,并借助代码示例,直观感受这一机制的魅力所在。准备好,让我们启航吧!
|
24天前
|
算法 调度 UED
深入理解操作系统的进程调度算法
【10月更文挑战第7天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。它不仅影响系统的性能和用户体验,还直接关系到资源的合理分配。本文将通过浅显易懂的语言和生动的比喻,带你一探进程调度的秘密花园,从最简单的先来先服务到复杂的多级反馈队列,我们将一起见证算法如何在微观世界里编织宏观世界的和谐乐章。
|
2天前
|
算法 调度 开发者
探索操作系统的核心:进程管理与调度
【10月更文挑战第29天】本文深入探讨了操作系统中至关重要的一环——进程管理。通过浅显易懂的语言,我们将了解到什么是进程,进程如何被创建和管理,以及操作系统如何决定哪个进程应该获得CPU时间。文章还将揭示进程调度对系统性能的影响,并分享一些优化技巧。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识。
|
1月前
|
算法 调度 UED
深入理解操作系统的进程调度策略
【9月更文挑战第34天】在计算机科学中,操作系统是硬件与用户之间的桥梁,它管理着系统资源和提供各项服务。本文旨在通过浅显易懂的语言和实际代码示例,揭示操作系统的核心机制之一——进程调度策略。我们将探讨进程调度的目的、常见的调度算法以及它们如何影响系统性能和用户体验。无论你是编程新手还是资深开发者,这篇文章都将帮助你更好地理解并运用这些知识来优化你的应用程序和系统配置。
38 11

相关实验场景

更多