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

一、简单介绍

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

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

2.粗略的了解

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

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

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

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

相关推荐
今天也要学习吖2 小时前
Azure TTS Importer:一键导入,将微软TTS语音接入你的阅读软件!
人工智能·学习·microsoft·ai·大模型·aigc·azure
楼田莉子3 小时前
C++算法学习专题:滑动窗口
开发语言·数据结构·c++·学习·算法·leetcode
小晶晶京京3 小时前
day38-HTTP
网络·网络协议·学习·http
炸膛坦客3 小时前
C++ 学习与 CLion 使用:(四)常量和变量,包括字面常量和符号常量
开发语言·c++·学习
zheshiyangyang3 小时前
uni-app学习【pages】
前端·学习·uni-app
livemetee4 小时前
Flink2.0学习笔记:使用HikariCP 自定义sink实现数据库连接池化
大数据·数据库·笔记·学习·flink
fanzhix5 小时前
线性回归学习
学习·机器学习·线性回归
艾莉丝努力练剑6 小时前
《递归与迭代:从斐波那契到汉诺塔的算法精髓》
c语言·学习·算法
lingggggaaaa6 小时前
小迪安全v2023学习笔记(七十讲)—— Python安全&SSTI模板注入&项目工具
笔记·python·学习·安全·web安全·网络安全·ssti
夏婵语冰8 小时前
实用R语言机器学习指南:从数据预处理到模型实战(附配套学习资源)
开发语言·学习·r语言