[操作系统] 进程的详细认识----从概念到调度

目录

前言

一.进程的概念

二.进程和程序之间的关系

2.1二者的关系

2.2资源的占用

三.进程的任务

四.进程的管理

五.PCB中的信息

5.1pid进程标识

5.2内存指针

5.3文件描述符表

六.进程的调度

6.1CPU的简单认识

6.2调度的方式

6.3PCB中调度相关属性

七.进程的通信与隔离

总结


🎁个人主页tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主

🎥 本文由 tq02 原创,首发于 CSDN🙉

🎄 本章讲解内容:进程的讲解

🎥学习专栏: C语言 JavaSE MySQL基础

前言

操作系统是一种软件,它管理计算机硬件和软件资源,并提供给用户和其他软件程序使用计算机的接口。它充当计算机系统的核心,为用户和应用程序提供一个友好的环境。而本文讲解的是操作系统当中最为核心的概念----进程

一.进程的概念

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程 可以说是计算机科学中最重要和最成功的概念之一。

进程 是操作系统对一个正在运行的程序的一种抽象,换言之:进程就是正在运行的程序

注: 每个进程都有自己的内存空间、程序计数器、寄存器和打开的文件等资源。

进程特征: 动态性、并发性、独立性、异步性、结构性


二.进程和程序之间的关系

2.1二者的关系

程序是指一些exe的可执行文件,只存在于硬盘当中,例如:

程序变成进程的详细过程 :双击程序,操作系统就会把可执行文件中的数据和指令,加载到内存中,并且CPU会去执行指令,完成一系列相关的工作,从而运行起来变为进程

进程的查看:点开任务管理器,就可以看见目前有多少进程正在运行。

注:一个程序可以多次运行,而每一次运行都会创建一个进程。

进程的状态有:运行、就绪、阻塞、创建、结束


2.2资源的占用

程序也就是exe可执行程序,占用的是硬盘空间。

进程,是程序的运行,需要消耗CPU的资源、内存资源、硬盘、网络带宽等。

在操作系统内部,进程 是操作系统进行硬件资源分配的基本单位


三.进程的任务

操作系统使用进程来管理计算机系统中运行的程序。进程是程序的执行实例,它包含了程序的代码、数据和执行状态。操作系统通过进程来分配系统资源、调度进程执行、保护进程和协调进程间的通信。

进程的主要任务包括:

  1. 进程创建:当一个程序被执行时,操作系统会创建一个新的进程来运行该程序。这涉及到为进程分配唯一的标识符和初始化进程的执行环境。

  2. 进程调度:操作系统根据一定的调度算法,决定哪些进程能够获得CPU的执行时间,并且在多个进程之间进行切换。调度算法可以根据进程的优先级、等待时间等因素来进行决策。

  3. 进程同步与通信:多个进程可能需要相互协作完成任务,因此操作系统提供了各种机制用于进程间的同步和通信。例如,信号量、互斥量、管道、消息队列等。

  4. 进程挂起与恢复:操作系统可以将一个正在执行的进程暂停,

四.进程的管理

进程为什么需要管理?一台计算机有很多进程,而如果不进行管理,则会发生混乱

管理步骤:描述和****组织

描述 :会使用一个专门的 结构体 记录一个进程里面的各个属性。

解析:结构体 ,便是C语言的结构体,并且为了描述进程的结构体,有一个专门术语:PCB(进程控制块)。
组织:使用一系列的数据结构,把多个进程进行一个有效的组织,方便进行遍历,查找等

解析 :在Linux中,数据结构通常会使用双向链表的方式:

  • 当查看进程列表时,本质便是遍历这个链表
  • 创建一个进程时,就是创建了一个PCB,并且插入到链表上
  • 销毁一个进程,就是讲一个PCB结构体从链表上删除并释放

额外补充:为什么是C语言的结构体,因为操作系统主要由C/C++来实现。

五.PCB中的信息

问:PCB是进程控制块,专门用于描述进程,可是它又具有什么信息呢?

答:操作系统使用进程控制块(PCB)来跟踪和管理每个进程的状态,主要有pid进程标识、内存指针、文件描述表

5.1pid进程标识

同一个系统,同一个时刻,虽然运行的是同一个程序,但进程不一样,因此pid用于区分每一个进程。

例如:一个微信会有那么多进程存在,因此为了更好区分,使用pid进行标识。

5.2内存指针

表示了该进程,对应的内存资源,而内存资源主要存储:exe中可执行加载的 指令 和 数据

而且还需要保存一些在运行过程中的中间结果之类的数据

5.3文件描述符表

内存指针与内存资源有关,而文件描述符表则是与硬盘资源有关。

每一个进程都会有一个文件描述符表,作用:记录当前进程正在使用哪些文件。


六.进程的调度

进程调度是操作系统中的一个重要概念,它决定了在多道程序环境下,哪个进程将获得CPU的使用权。进程调度的目标是提高系统资源的利用率和响应性能。

6.1CPU的简单认识

在讲解进程的调度前,我们先来讲解一下CPU,进程是需要在CPU上执行指令的,可是CPU只有1个,进程却有很多,那又怎么办呢?答案:轮着使用

在早期,CPU是单核 的,所以同一个时刻只能允许一个进程运行,但是在后期,CPU不断的优化,虽然还是一个CPU,但是已经是多核了,也就是说,同一个时刻允许多个进程运行。

而现在八核十六线程、六核十二线程等的CPU,又是什么意思呢?意思就是在核的基础上又分成了2个 ,一个核可以允许2个线程的运行。而至于线程可以想象为简略版的进程


6.2调度的方式

进程的调度有2种方式,并行并发

并行: 同一时刻,N个进程同时在N个CPU核心上运行

并发: 两个进程在轮着在CPU上运行,串行执行


注:由于CPU切换过程速度极快,因此微观上并发是串行执行,但宏观上,进程是同时执行

操作系统在调度进程时,可能是按照并行也可能是按照并发来调度,由于速度过快,导致我们无法感知。因此通常会用并发 来代指 并发并行

6.3PCB中调度相关属性

在PCB中关于进程调度的相关属性,是描述了进程对应CPU资源的使用情况。

属性有:状态、优先级、上下文、记账信息

状态 主要有2种:阻塞状态就绪状态。状态可以相互转换哦

  1. 就绪状态:进程已经随时做好了在CPU上执行的准备了。
  2. 阻塞状态:进程并没有准备好在CPU上执行,也称睡眠状态

优先级:指两个进程执行时,谁先谁后执行。但执行的顺序不是指谁先运行,而是为每个进程分配一个优先级,优先级高的进程先执行。

上下文: 进程是一个接一个(串行)执行,但是进程一次运行不完(例如:后台应用),因此为了保证下次CPU执行时,可以从上次运行到的位置进行往后运行,相当于存档和读档, 因此上下文记录的是进程在执行过程中,CPU的寄存器对应的数据

记账信息:统计每个进程都分别执行了多久,分别执行了哪些命令,分别排了多久的队,给进程的调度提供指导依据。

七.进程的通信与隔离

进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备" 隔离性(Isolation)",但是要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行"信息交换"的需求,也就是通信.

**隔离:**进程就相当于一个个通道,在这些通道中分配资源,当其中一个进程崩溃,并不会影响其他进程。进程之间的独立性就依仗于虚拟内存地址。通过虚拟内存地址使其具有隔离性。

通信: 相互隔离的进程之间有时也需要交互,交互的过程就是通信。主流操作系统提供的进程通信机制有如下:
1. 管道 2. 共享内存 3. 文件 4. 网络 5. 信号量 6. 信号

总结

我们不但需要学习进程,还要明白什么是线程,线程相当于进程的孩子,可以执行程序,但是依靠的是父亲(进程)的资源。而线程的学习,才是目前最重要的,进程只是为了更好的了解什么是线程

相关推荐
冬天vs不冷几秒前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c1 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
✿ ༺ ོIT技术༻1 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
摸鱼也很难4 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops4 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛5 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程6 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo7 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07137 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos