【进程概念】

目录

  • 什么是在计算机运行的程序
  • 这么多运行的程序计算机是如何管理的
    • 先描述
    • 再组织

什么是在计算机运行的程序

对于一个在磁盘可执行的二进制文件,也可叫做可执行程序。对于一个可执行的程序,程序有自己的代码和数据。一旦运行起来,就会在计算机内部运作起来。
根据冯诺依曼体系,一个程序要被运行起来,先是要加载到内存当中,然后再到CPU调度。当代计算机中,能运行一个程序,就能运行多个程序,然后每个二进制的可执行文件程序都像在自己干自己的事情,互不干扰。这就是在计算机运行的程序。

这么多运行的程序计算机是如何管理的

先描述

当程序加载到内存的时候,计算机的操纵系统(OS)必然会对这个程序进行管理,操作系统是通过对程序对象的先描述,抽象成一个对象,这个对象就是一个进程(process),所以程序运行起来就是操作系统的一个进程(操作系统创建一个进程来运行这个程序)。操作系统对程序的管理转而变为对进程的管理,进程有程序的代码和数据。实际上在磁盘的程序在运行之前,是把代码和数据拷贝到内存当中,而程序依据再磁盘保存着,所以说运行的程序其实是操作系统中运行的进程。然后这些进程在合适的时机会被CPU调度。

再组织

对程序拷贝到内存的代码和数据进行描述完成后,操作系统要对这些进程管理,再linux系统当中,会以一个叫task_struct的结构体对象对进程进行管理,task_struct包含着进程的属性,task_struct就是操作系统管理进程的控制块,包含着进程的许多属性(process contorl block),然后task_struct以某种数据结构类型相互联系起来。再以一个struct runqueue的运行队列结构体管理。
进程包含(代码 + 数据 + 进程控制数据结构)
如果一个在磁盘可执行的文件已经加载到内存有进程一直在运行,如果进程还没结束,把磁盘的可执行文件删除,该进程还能运行,因为该进程是拷贝可执行文件的数据和代码,虽然已经删除可执行文件,但依旧运行。如果终止想重新执行就不可以。

struct task_struct {volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */prio_array_t *array;//有该进程被cpu调度的优先级pid_t pid;//有进程的id编号pid_t tgid;struct mm_struct *mm, *active_mm;//进程的内存地址空间int exit_code, exit_signal;//进程的退出码和退出信息struct task_struct *next_task, *prev_task;////...........................................//该进程的一系列属性。包括形成该进程的文件路径和其他文件信息
}
//操作系统也是软件,上述结构体就是操作系统管理进程的task_struct
struct task_struct *next_task, *prev_task;

操作系统通过这种双链表的形式组织管理这些进程控制块。
在这里插入图片描述

当新的程序执行的时候,操作系统再次创建进程,把进程通过链表的链入规则连接到运行队列,如果进程结束,则task_struct在链表上删除,然后重新连接。

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

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

相关文章

Linux ip route命令

理解ip route命令 ip route是Linux系统中的一个非常常用的命令,它用于配置和管理Linux的路由表。通过ip route命令,管理员可以查看、添加、删除或修改Linux系统的路由表,从而决定数据包如何在网络中传输。例如,当一台Linux机器需要…

Error: A JNI error has occurred, please check your installation and try again

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【Redis服务搭建】

目录 Redis的修改配置启动以及参数调优Redis的常用基本操作Redis运维监控命令Redis的配置的动态更新和写入Redis的多用户管理Redis的慢日志Redis禁用危险命令和压测工具Redis持久化存储1.Redis的RDB持久化存储2.Redis的AOF持久化存储 Redis的主从复制redis的哨兵实现主从自动切…

基于支持向量机的航迹追踪,基于支持向量机的航迹追踪,基于SVM的航迹矫正

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于支持向量机的航迹追踪,基于支持向量机的航迹追踪,基于SVM的航迹矫正(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/downloa…

深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘

前言: 在Linux系统中,文件和目录的权限管理是一项至关重要的任务。它决定了哪些用户或用户组可以对文件或目录执行读、写或执行等操作。传统的Linux权限模型基于用户、组和其他的概念,但随着时间的推移,这种模型在某些情况下显得…

GIT中对子仓库的使用方法介绍

git 子仓库 主仓库中添加子仓库 git submodule add <url> <path>更新子代码代码 git submodule update --init克隆含有子仓库的仓库 git clone --recurse-submodules <url>主仓库中删除子仓库 1、进入包含子仓库的父仓库的根目录 2、使用以下命令将子仓…

RISC-V知识总结 —— 指令集

资源1: RISC-V China – RISC-V International 资源2: RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture 资源3: RV32I, RV64I Instructions — riscv-isa-pages documentation 1. 指令集架构的类型 在讨论RISC-V或任何处理器架构时&…

OpenLayers多要素旋转平移缩放及olext深度定制化

目录 1.前言2.olext官方示例3.重写Transform.js4.自定义样式5.自定义选中机制6.拓展思考6.1包围框的角度问题6.2不选中要素如何平移 7总结 1.前言 首先OpenLayers本身是支持旋转、平移、缩放的。olext 只是在 OpenLayers 的基础上又做了一层封装&#xff0c;使得看起来比较好看…

函数栈帧的创建及销毁(超详解)

目录 1.预备知识 1.1内存区的划分 1.2认识相关寄存器和汇编指令 1.2.1寄存器 1.2.2相关汇编指令 2.测试前 2.1测试代码及环境 2.2 main函数也是被其他函数调用的 3.函数栈帧的创建 4.进入函数内部 5.形参与实参 6.call/jump add函数 7.函数栈帧的销毁 7.1保存…

使用transformer来训练自己的大模型实现自定义AI绘图软件的详细操作步骤

使用transformer来训练自己的大模型实现自定义AI绘图软件的详细操作步骤&#xff01;下面的步骤是非常细致的&#xff0c;如果你有一台自己的GPU算力还算可以的服务器主机&#xff0c;想自己训练AI大模型。可以按照如下步骤开展操作。 要使用 Transformer 框架训练属于自己的大…

哪种游泳耳机品牌更好?2024四款甄选高评分榜单好物!

在繁忙的都市生活中&#xff0c;游泳已经成为了许多人释放压力、保持健康的重要方式。而随着科技的进步&#xff0c;游泳耳机也逐渐走进了人们的视野&#xff0c;让音乐与游泳完美结合&#xff0c;为游泳爱好者带来了全新的运动体验。然而&#xff0c;在琳琅满目的游泳耳机市场…

MQL5交易参数转化为JSON

文章目录 MQL交易参数转化为json的意义MQL交易参数转化为json的代码实现MqlTradeRequest 结构体转化为JSONJSON解析为MqlTradeRequest 结构体 MQL交易参数转化为json的意义 MQL交易参数转化为JSON的好处是可以方便地在不同的系统之间进行数据传输和交互。 易于阅读和编写&#…

matlab|计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

1 主要内容 该程序参考《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》模型&#xff0c;主要实现的是计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度模型。通过引入碳捕集电厂–电转气–燃气机组协同利用框架&#xff0c;碳捕集的CO2 可作为电转气原料&#xf…

switch语句中忘写break会发生什么?(企业真题)

switch语句中忘写break会发生什么 会发生case穿透,不会再和case后的常量值进行比较&#xff0c;会直接执行执行语句直到结束或碰到break

Sora——探索AI视频模型的无限可能

Sora - 探索AI视频模型的无限可能 Sora作为OpenAI发布的一款AI视频模型&#xff0c;其探索的无限可能性表现在多个方面。首先&#xff0c;从技术的角度来看&#xff0c;Sora将文本生成图像的技术扩展到了视频领域&#xff0c;实现了从文字描述到视频内容的自动生成。这种技术突…

学习JAVA的第四天(基础)

目录 方法 方法的定义 方法的调用 参数 注意事项 方法的重载 练习 面向对象 类和对象 定义类的注意事项 封装 private关键字 this关键字 构造方法 标准的Javabean类 创建一个对象时&#xff0c;虚拟机做了什么&#xff1f; 方法 方法含义&#xff1a;方法是程序…

【洛谷 P8753】[蓝桥杯 2021 省 AB2] 小平方 题解(数学+暴力枚举)

思路 首先&#xff0c;定义一个长整型变量ans来存储满足条件的数的数量&#xff0c;初始化为0。然后&#xff0c;从标准输入读取一个整数n。 计算n的一半&#xff0c;存储在双精度浮点变量mid中。这是因为我们要找的是平方后除以n的余数小于n的一半的数。 接下来&#xff0c…

Linux下出现ERROR: 1 Can‘t create/write to filexxxxxx

此类问题大多都是权限问题&#xff0c;将根目录的读写权限设置为最高即可解决 案例&#xff0c;ubantu中安装mysql&#xff0c;出现ERROR: 1 Cant create/write to file /home/utf/server_202402/db/mysql/data/mysql/db.MYI (Errcode: 13) 解决办法&#xff1a;将/home/utf目…

【算法与数据结构】417、LeetCode太平洋大西洋水流问题

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;题目要求雨水既能流向太平洋也能流向大西洋的网格。雨水流向取决于网格的高度。一个比较直接的方式是对…

element ui 安装 简易过程 已解决

我之所以将Element归类为Vue.js&#xff0c;其主要原因是Element是&#xff08;饿了么团队&#xff09;基于MVVM框架Vue开源出来的一套前端ui组件。我最爱的就是它的布局容器&#xff01;&#xff01;&#xff01; 下面进入正题&#xff1a; 1、Element的安装 首先你需要创建…