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

news2024/11/15 8:31:49

目录

前言

一.进程的概念 

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

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. 信号

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】网络层协议 -- IP协议

文章目录 1. 网络层做了什么事2. IP协议的简介3. IP协议格式4. 分片与组装5. 网段划分6. 特殊的IP地址7. IP地址的数量限制8. 私网IP地址和公网IP地址9. 路由 1. 网络层做了什么事 保证数据可靠地从一台主机到另一台主机 当双方在进行基于TCP的网络通信时,要保证将数…

redis高级篇2 springboot+redis+bloomfilter实现过滤案例

一 bloomfilter的作用 1.1 作用 Bloomfilter:默认是有0组成bit数组和hash函数构成的数据结构,用来判断在海量数据中是否存在某个元素。 应用案例:解决缓存穿透。Bloomfilter放在redis前面,如果查询bf中没有则直接返回&#xff0…

opencv中轮廓相关属性

一、介绍 findContours() :The function retrieves contours from the binary image。 二、代码 void main() {Mat src imread("match00.bmp", IMREAD_GRAYSCALE);Mat mask;threshold(src, mask, 128, 255, cv::THRESH_BINARY_INV);Mat element cv::g…

tcl学习之路(一)(Vivado与Tcl)

学习第一步:安装tcl编译软件 点击这里进入activestate的官网,下载你喜欢的操作系统所需的安装包。这里我下载的是windows下的安装包。一步一步安装即可。   那么,安装后,我们可以在开始的菜单栏处看到三个应用程序。      …

Python爬取微博相册, 批量下载

xpath插件解析到所有图片的url地址 xpath下载地址: https://www.crxsoso.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl 快捷键: CtrlShiftX 不会xpath语法可以看这里: https://www.w3school.com.cn/xpath/xpath_syntax.asp //div[class"woo-box-item-inlineBl…

P1090 [NOIP2004 提高组] 合并果子

题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出&#xff0…

图解TCP 三次握手和四次挥手的高频面试题(2023最新版)

大家好,最近重新整理了一版 TCP 三次握手和四次挥手的面试题(2023最新版)。 ----- 任 TCP 虐我千百遍,我仍待 TCP 如初恋。 巨巨巨巨长的提纲,发车!发车! img TCP 基本认识 TCP 头格式有哪些…

[VRTK4.0]获取指针,并提供有效无效位置

学习目标: 演示如何将场景中的游戏对象设置为弯曲指针的无效目标。 流程: 紧接上篇,我们已经创建了一个曲线,并且使用 OpenXR 指针姿势来确保指针方向始终与 OpenXR 控制器的正确方向匹配。 接下来我们要实现如何将场景中的游戏对…

web-6-深入理解JSP:探索其核心概念和特性

JSP 今日目标: 理解 JSP 及 JSP 原理 能在 JSP中使用 EL表达式 和 JSTL标签 1,JSP 概述 JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS…

计算机视觉:卷积层的参数量是多少?

本文重点 卷积核的参数量是卷积神经网络中一个重要的概念,它决定了网络的复杂度和计算量。在深度学习中,卷积操作是一种常用的操作,用于提取图像、语音等数据中的特征。卷积神经网络的优势点在于稀疏连接和权值共享,这使得卷积核的参数相较于传统的神经网络要少很多。 举例…

leetcode每日一题Day2——344. 反转字符串

✨博主:命运之光 🦄专栏:算法修炼之练气篇(C\C版) 🍓专栏:算法修炼之筑基篇(C\C版) 🐳专栏:算法修炼之练气篇(Python版) …

WEB:mfw

背景知识 Git泄露 Githack使用 命令执行漏洞 题目 这里页面里有Git,猜测是Git泄露 先用dirsearch扫一下 确实存在.git目录,可以尝试访问一下 使用Githack来下载并恢复.git文件 这里记得使用的时候关闭杀毒软件 结果会自动保存 点进去先看一下flag这个…

Flyway——修改表名称与序列名称

文章目录 前言脚本修改表名称修改序列 前言 开发中一次偶然的机会,Oracle 12c 更换为 11g ,需要对表名称的长度和序列长度做限制要求。 11g相对12c而言,表名称与序列名称的长度,不能超过30个字符。 在开发中做了更改,…

fixed-视频倍速

首先fn12打开开发者模式 然后进入console控制台 document.getElementsByTagName(“video”)[0].playbackRate 3 数字3 就是多少倍速 可以替换想要的倍速 直接快进到 最后 let video document.getElementsByTagName(‘video’) for (let i0; i<video.length; i) { video[…

Linux虚拟机安装tomcat(图文详解)

目录 第一章、xshell工具和xftp的使用1.1&#xff09;xshell下载与安装1.2&#xff09;xshell连接1.3&#xff09;xftp下载安装和连接 第二章、安装tomcat1.1&#xff09;关闭防火墙&#xff0c;传输tomcat压缩包到Linux虚拟机12&#xff09;启动tomcat 第一章、xshell工具和xf…

韦东山Linux驱动入门实验班(5)LED驱动---驱动分层和分离,平台总线模型

前言 &#xff08;1&#xff09;前面已经已经详细介绍了LED驱动如何进行编写的代码。如果韦东山Linux驱动入门实验班&#xff08;4&#xff09;LED驱动已经看懂了&#xff0c;驱动入门实验班后面的那些模块实验&#xff0c;其实和单片机操作差不太多了。我就不再浪费时间进行讲…

Netty各组件基本用法、入站和出站详情、群聊系统的实现、粘包和拆包

Netty Bootstrap和ServerBootstrapFuture和ChannelFutureChannelSelectorNioEventLoop和NioEventLoopGroupByteBuf示例代码 Channel相关组件入站详情出站详情对象编解码ProtoBuf和ProtoStuffnetty实现群聊系统粘包和拆包TCP协议特点举个例子 Bootstrap和ServerBootstrap Boots…

【管理设计篇】聊聊分布式配置中心

为什么需要配置中心 对于一个软件系统来说&#xff0c;除了数据、代码&#xff0c;还有就是软件配置&#xff0c;比如操作系统、数据库配置、服务配置 端口 ip 、邮箱配置、中间件软件配置、启动参数配置等。如果说是一个小型项目的话&#xff0c;可以使用Spring Boot yml文件…

Nginx解决文件服务器文件名显示不全的问题

Nginx可以搭建Http文件服务器&#xff0c;但默认的搭建会长文件名显示不全&#xff0c;比如如下&#xff1a; 问题&#xff1a;显示不全&#xff0c;出现...&#xff0c;需要进行解决 这里使用重新编绎nginx的方式&#xff0c;见此文&#xff1a; https://unix.stackexchange…

CS5265国产Typec转HDMI音视频转换芯片可替代RTD2172

集睿致远/ASL推出的CS5265是一款高性能Type-C/DP1.4至HDMI2.0b转换器IC&#xff0c;设计用于将USB type c源或DP1.4源连接至HDMI2.0b接收器。CS5265集成了DP1.4兼容接收机和HDMI2.0b兼容发射机。此外&#xff0c;CC控制器还用于CC通信&#xff0c;以实现DP Alt模式。DP接口包括…