【Linux】什么是进程?

一个正在执行的程序,我们称之为进程。

然后我们来顺着一条线来思考。

操作系统底层是用C语言编写的,而我们的进程,它会有各种属性,那么各种属性就可以用一个结构体来对进程的各个属性进行描述,然后这个结构体里面,肯定会存在一个指针,指向了我的进程加载在内存对应的代码和数据,而这个描述进程的结构体我们就称之为PCB。

而在Linux里,这个进程的PCB是用一个叫task_struct的结构体描述的

cpp 复制代码
struct task_strcut

{
        进程的ID
        进程的状态
        .........

}

而我们的操作系统肯定不会只是管理一个进程,它肯定要管理很多的进程,那么肯定要有一种特定的数据结构来对进程进行管理,Linux里面,是使用双向链表的形式进行管理,其实就是在task_struct里面添加一个前驱指针和后继指针就可以将它们关联起来。

所以,进程 = 进程PCB + 代码和数据。

相关推荐
caimouse2 分钟前
Reactos 第 5 章 进程与线程 — 5.3 系统调用 NtCreateProcess()
服务器·开发语言
yuanjj884 分钟前
域格ASR平台cat1模块FTP上传、下载
运维·网络
feng_you_ying_li24 分钟前
Linux之线程同步:条件变量和两种生产消费模型
linux·运维·服务器
tianyuanwo29 分钟前
OS运维智能化落地抉择:构建故障诊断AI Skill VS 沉淀领域知识库,谁是核心先手?
运维·人工智能·知识库·skill
Dlrb121131 分钟前
Linux系统编程-线程与多线程模块的封装
linux·线程·互斥锁·线程同步·线程互斥
拾贰_C32 分钟前
【Ubuntu | VSCode | SSH | 远程连接 | Linux】VSCode 怎么实现ssh远程连接
linux·vscode·ubuntu
liulilittle34 分钟前
用户态 TCP 端口转发:对 CUBIC 友好,对 BBR/KCC 收益不大
运维·网络·tcp/ip·计算机网络·信息与通信·tcp·通信
杨了个杨89821 小时前
HAproxy+Keepalive的简介及安装
运维·服务器
一叶知秋dong1 小时前
llama.cpp 启动脚本
linux·服务器·llama
桌面运维家1 小时前
校园机房vDisk IDV云桌面建设方案价格参考
linux·服务器·数据库