Linux 学习之路 -- 进程篇 2 -- 进程简介

一、简单介绍

在我们写完程序后,由编译器形成二进制的文件,而这个文件在磁盘中存放,磁盘在外设中,如果我们要执行程序,就必需要把程序加载到内存。我们可以打开任务管理器,就可以发现我们的电脑会运行很多的程序,那这么多程序,操作系统肯定就需要进行对这些程序管理。操作系统该如何对这些程序进行管理呢? 根据先描述,再组织的过程进行建模,我们就可以用一个结构体对程序进行管理。这里结构体里面包括"状态、优先级、标识符等等",当我们把进程加载到内存后,我们就可以在内存中创建一个结构体,用来描述程序,而这个结构体就叫PCB(process ctrl block,进程控制块,在Linux中称为task_struct),我们再把结构体用指针链接起来,这样操作系统就可以通过PCB对程序进行管理。

这里我们就可以把进程这样描述: 进程 = 内核数据结构 + 可执行的程序。

2.粗略的了解

这里我们可以通过一个用一个runqueue 结构体来对进程进行管理,里面用一个PCB指针来指向内存中的PCB,CPU就可以通过runqueue 来找到对应对内存中PCB,再通过PCB来找到对应的可执行程序,然后就能运行程序。所以未来我们的对进程的管理就是PCB的管理,跟可执行程序每半毛钱关系。

那PCB中包含了什么东西呢?下面用张图来解释

后面我将一一解释task_struct 中的内容

希望本文能对各位读者有些许帮助,如果文中有不当之处,还望各位大佬指正,谢谢!!!

相关推荐
三品吉他手会点灯5 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
sakiko_5 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
生信碱移6 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
星幻元宇VR8 小时前
VR航空航天科普设备【VR时空直升机】
科技·学习·安全·生活·vr
_李小白8 小时前
【android opencv学习笔记】Day 2: Mat类(图片数据结构体)
android·opencv·学习
harder3219 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
程序猿乐锅10 小时前
【Tilas|第三篇】多表SQL语句
数据库·经验分享·笔记·学习·mysql
徐某人..10 小时前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
AOwhisky10 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
光影少年11 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs