进程、进程调度、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月前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
20天前
|
存储 算法 调度
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
|
1月前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度
操作系统是计算机系统的核心,负责管理和控制硬件资源、提供用户接口以及执行程序。其中,进程管理是操作系统的重要组成部分,它涉及到进程的创建、调度、同步和通信等方面。本文将深入探讨进程管理的基本概念、进程调度算法以及进程间的同步和通信机制。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程管理的基本技能。
46 11
|
26天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
|
25天前
|
负载均衡 算法 调度
深入理解操作系统:进程管理与调度
在数字世界的心脏,操作系统扮演着至关重要的角色。它如同一位精明的指挥家,协调着硬件资源和软件需求之间的和谐乐章。本文将带你走进操作系统的核心,探索进程管理的艺术和调度策略的智慧。你将了解到进程是如何创建、执行和消亡的,以及操作系统如何巧妙地决定哪个进程应该在何时获得CPU的青睐。让我们一起揭开操作系统神秘的面纱,发现那些隐藏在日常计算背后的精妙机制。
|
27天前
|
调度 开发者
深入理解操作系统之进程调度
在计算机科学领域,操作系统是核心的一环,它管理着计算机硬件资源,并提供接口供上层软件运行。本文将通过深入浅出的方式,探讨操作系统中至关重要的一个概念——进程调度。我们将从基础理论出发,逐步展开讲解进程调度的原理和实现,并配以实际代码示例,旨在帮助读者更好地理解和掌握这一主题。文章不仅适合初学者建立基础,也适合有一定基础的开发者深化理解。
|
1月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第40天】在数字世界中,操作系统是连接硬件与软件的桥梁,它管理着计算机资源和提供用户服务。本文将深入探讨操作系统中的进程管理与调度策略,揭示它们如何协调多任务运行,保证系统高效稳定运作。通过代码示例,我们将展示进程创建、执行以及调度算法的实际应用,帮助读者构建对操作系统核心机制的清晰认识。
|
1月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
42 3
|
1月前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
71 4
|
1月前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####

相关实验场景

更多