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

进程概念

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

在冯诺依曼体系结构中,计算机由输入设备、输出设备、运算器、控制器和存储器 组成。我们使用计算机的时候,实际就是数据在这些硬件中传递的过程。

硬件的行为由驱动 控制,驱动又由更上层的操作系统 控制。操作系统又会向上层提供系统调用接口 ,使用户可以通过系统调用逐级向下控制硬件行为。
操作系统负责与硬件交互,管理所有的软硬件资源,并给用户程序提供一个良好的执行环境 ,所以操作系统在计算机中起着承上启下的重要作用:

毋庸置疑,因为有着许多程序的执行,我们的计算机才能运转起来,这其中正在执行的程序就被称为进程。而操作系统就是通过管理这些进程来管理软硬件资源的

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

基本概念

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

描述与组织进程

进程的信息被描述在数据控制块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过滤掉即可

总结

关于进程的一些基本概念就介绍完了

这篇文章只是进程的开始,后面会更详细的介绍进程的相关知识,欢迎持续关注哦

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

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

希望与大家共同进步哦

相关推荐
东方佑2 小时前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
zhougl9963 小时前
html处理Base文件流
linux·前端·html
泥土编程4 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
wirepuller_king7 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
在野靡生.8 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~8 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
我没想到原来他们都是一堆坏人8 小时前
利用vmware快速安装一个可以使用的centos7系统
linux·虚拟机
x-cmd9 小时前
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
android·linux·开发语言·c++·web·音乐播放器·脚本语言
weitinting9 小时前
Ali linux 通过yum安装redis
linux·redis
myloveasuka9 小时前
[Linux]从硬件到软件理解操作系统
linux·开发语言·c++