Linux进程【1】进程概念(超详解哦)

2023-09-21 00:27:37

引言(操作系统如何管理)

在冯诺依曼体系结构中,计算机由输入设备、输出设备、运算器、控制器和存储器组成。我们使用计算机的时候,实际就是数据在这些硬件中传递的过程。
硬件的行为由驱动控制,驱动又由更上层的操作系统控制。操作系统又会向上层提供系统调用接口,使用户可以通过系统调用逐级向下控制硬件行为。
操作系统负责与硬件交互,管理所有的软硬件资源,并给用户程序提供一个良好的执行环境,所以操作系统在计算机中起着承上启下的重要作用:
在这里插入图片描述
毋庸置疑,因为有着许多程序的执行,我们的计算机才能运转起来,这其中正在执行的程序就被称为进程。而操作系统就是通过管理这些进程来管理软硬件资源的

在管理这些进程时,其实只需要将这些进程的属性数据组织为一个结构体,再对这些结构体进行管理即可。而不需要管理这些进程对应的大量代码。从操作系统的角度来讲,进程也可以被定义为程序属性结构体和对应代码的集合

基本概念

前面已经介绍过进程的定义了,对于操作系统,它是程序属性结构体和对应代码的集合:

描述与组织进程

进程的信息被描述在数据控制块PCB(process control block) 中的,即进程属性的集合;

Linux中,描述进程的结构体为task_struct,是PCB的一种。其中包含着进程的各种信息。其中大致包括:

  • 标示符:描述本进程的唯一标示符,用来区别其他进程;
  • 状态:任务状态,退出代码,退出信号等;
  • 优先级:相对于其他进程的优先级;
  • 程序计数器:程序中即将被执行的下一条指令的地址;
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针;
  • 上下文数据:进程执行时处理器的寄存器中的数据;
  • I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表;
  • 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等;

在Linux中,所有运行在系统中的进程都是使用链表来组织在内核中的

查看进程

进程的信息可以使用ls/proc系统文件夹中查看:
在这里插入图片描述
也可以使用ps axj查看全部进程以及一些进程的信息:
在这里插入图片描述

进程pid与ppid

pid是进程的标识符,即进程的编号,在任何时候都是唯一的只有当一进程终止并回收后,该编号才会被重新使用。
ppid是该进程父进程的pid,子进程由父进程创建,在子进程结束后要向父进程发出信号。

getpid与getppid

getpid可以获取该进程的pidgetppid可以获取该进程父进程的pid

我们可以通过一个死循环,其中不停的打印该进程的pidppid,来观察:
在这里插入图片描述
在这里插入图片描述

在进程运行时,我们也可以使用ps axj 在通过管道让grep筛选后,来查找该进程的一些基本信息
在这里插入图片描述

这里虽然查找到了我们的testproc进程,但是也多出了一个grep --color=auto testproc,这是因为grep要能执行查找的操作,它本身也要是一个进程,自然就会被筛选到并打印出来
想要不显示这条,只需要-v过滤掉即可
在这里插入图片描述

总结

关于进程的一些基本概念就介绍完了
这篇文章只是进程的开始,后面会更详细的介绍进程的相关知识,欢迎持续关注哦

如果大家认为我对某一部分没有介绍清楚或者某一部分出了问题,欢迎大家在评论区提出

如果本文对你有帮助,希望一键三连哦

希望与大家共同进步哦

更多推荐

面向过程与面向对象、面向对象三大特性的介绍和示例

面向过程:将问题分解成一个个详细的步骤,然后通过函数实现每一个步骤,并依次调用特点:1、适合解决简单的问题,不需要过多的协作和抽象2、关注问题的解决步骤而不是问题的本质3、代码复用性低,扩展性差,不易维护4、只有封装,没有继承和多态面向对象:通过分析问题,分解出一个个对象,然后通过不同对象之间的调用和相互协作来解决问题

论如何在Android中还原设计稿中的阴影

每当设计稿上注明需要添加阴影时,Android上总是显得比较棘手,因为Android的阴影实现方式与Web和iOS有所区别。一般来说阴影通常格式是有:X:在X轴的偏移度Y:在Y轴偏移度Blur:阴影的模糊半径Color:阴影的颜色何为阴影但是在Android中却比较单一,只有一个度量单位:Elevation,作为在An

ELK 企业级日志分析系统 ELFK

一、概述ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。使用ELK日志文件系统的原因:日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过

ELK集群部署

目录ELKElasticsearch集群部署部署Elasticsearch软件安装Elasticsearch-head插件ELKLogstash部署ELKKiabana部署Filebeat+ELK部署ELKElasticsearch集群部署Node1节点(2C/4G):node1/192.168.233.30Elast

浅谈C++|STL之list+forward_list篇

一.list基本概念功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由—系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间

阿里云无影云电脑详细介绍:价格、使用和功能优势说明

什么是阿里云无影云电脑?无影云电脑(原云桌面)是一种快速构建、高效管理桌面办公环境,无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景,阿里云百科分享无影云桌面的详细介绍、租用价格、云电脑的优势、使用场景、网络架构、无影云电脑与云服务器的区别以及关于无影云电脑的常见问题解答FAQ:目录阿里云无

华为云云耀云服务器L实例评测|用PHP从数据库到后端到前端完整实现一个中秋节祝福语项目

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。🏆本文已收录于PHP专栏:PHP进阶实战教程,评测专区。🎉欢迎👍点赞✍评论⭐收藏文章目录🚀一、前言🚀二、

TCP详解之重传机制

TCP详解之重传机制TCP实现可靠传输的方式之一,是通过序列号与确认应答。在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但在错综复杂的网络,并不一定能如上图那么顺利能正常的数据传输,万一数据在传输过程中丢失了呢?所以TCP针对数据包丢失的情况,会用重传机制解决。接下来说说常

【C++】C++11(列表初始化和右值引用)

前言:C++的发展其实并不是一蹴而就的,他经历了很多阶段,本章开始,我们将进入C++11的学习。我们大致来看一下C++的发展历程:当然在这些之中还发行了其他的版本,C++还在不断的向后发展。但是:现在公司主流使用还是C++98和C++11。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新

尚硅谷wepack课程学习笔记

为什么需要使用打包工具?开发时使用的框架、es6语法、less等浏览器无法识别。需要经过编译成浏览器能识别的css、js才可以运行。打包工具可以帮我们编译,号可以做代码压缩、兼容处理、性能优化。常见的打包工具有什么?vite、webpack、glup、gruntwebapck最基本的使用?是一个静态资源打包工具,以一个

@Valid注解的作用及@Valid注解与@Validated的区别

1.@Valid注解导入依赖<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId></dependency><dependency><groupId>org.hibernate.validator</g

热文推荐