文章目录
- 前言
- 一、进程以及查看指令
- 二、查看进程
前言
进程是什么?进程应该如何描述?进程又该如何管理?进程如何查看?
一、进程以及查看指令
一个正在运行的程序,加载到内存中的程序是进程也叫做任务,用任务资源管理器可以查看正在运行的任务(进程)
写一个程序,使它一直运行起来,这样这个可执行程序就成了一个进程
进进程信息该怎么描述?
进程信息和一般也没什么两样,都是要将其描述为一个结构体集合,用结构体描述起来,里面有一个进程的字段信息。进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。操作系统可以同时运行多个进程,但是各个进程都不一样,它如何做到同时运行,就像是在电脑上可以同时挂起多个软件一样,他们几乎是同时运行的,在我们用户的角度来看!虽然各个进程不一样,但是他们其中包含的信息都是照着一个模板来的,这个进程拥有的信息,每个进程都有,只是具体内容不相同罢了!这样也就要涉及到操作系统管理进程了,那么操作系统应该如何管理进程?和操作系统管理软硬件资源一样,先将它们的信息描述起来,然后通过数据结构将一个个进程组织起来,实现对进程的管理。六字真言:先描述,再组织。操作系统对进程的管理转换为对数据结构的增删查改。其实对于描述信息有特定数据结构控制块,多数操作系统统称为为PCB(process control block)不过在linux操作系统下的PCB是task_struct。在电脑开机时,操作系统会加载到内存,内存为操作系统分配一个空间,操作系统会为每一个京城形成一个描述进程信息的进程控制块(task_struct),任何进程真正加载到内存,形成真正进程时然后将自己的信息填充进task_struct中,并将自己的代码和数据写入,这样一个真正的进程就在操作系统上形成了。一个进程不仅仅包含自己的属性信息还包括自己的代码以及数据
PCB是进程属性的集合。辨别一个事物和对象时,都是通过属性认识的,当属性积累到一定程度时,这些描述属性信息的集合就是一个个目标对象了,而进程所有属性信息的集合就是一个个进程控制块,我们人认识这个世界都是通过一个个属性认识的。描述进程的属性信息有哪些?这可就太多了:进程标识符(描述一个进程的唯一标识符,用来区别其他进程),进程状态(每个进程都有对应的状态,工作,休闲休眠,就如人一样,在每时每刻每个人可能有不同的状态),进程优先级(进程运行,是放在cpu上运行,而cpu只有一个,资源那么少,进程很多,就注定了进程之间存在竞争关系,那么就会有谁先谁后访问cpu资源问题),程序计数器(程序中即将被执行的下一条指令的地址),内存指针(包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针),上下文数据(进程执行时处理器的寄存器中的数据),I/O状态信息(包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表)
等等,描述一个进程信息很多。
进程=内核PCB数据结构对象(描述进程的所有属性值)+自己的代码和数据
就像高考填报志愿之后,高校会将填报本校的学生的基本信息拿到,虽然人还没有到我学校,但是你已经是我学校的学生了,因为描述你的所有属性信息我都已经得到,只待我自己进入到这个学校我就是一个严格意义上的大学生了,而在人还没有到学校时候已经人到了学校之后,学校对于我的管理都只是对于描述我属性信息的管理。反例:如学校保安是不是学校学生?不是!虽然人是在学校了,但是描述他的基本信息没有给学校学生管理系统中,尽管自己代码和数据都在操作系统中但是若没有描述自己属性的结构体是构不成一个进程的
进程的代码和数据加载到内存进入操作系统,进程怎么找到自己对应的代码和数据,这就在它的属性字段中有一个指针信息,他会指向自己的代码和数据,这样保证搞不丢,还有每一个进程pcb中还有一个属性为PCB结构体指针,可以将一个个PCB结构体连接组织起来就可以让操作系统实现对进程管理
Linux下进程管理
Linux中描述进程的结构体是task_struct,task_struct是Linux内核中的一种数据结构类型,它里面包含着进程的所有属性信息!
二、查看进程
进程可以通过指令查看
ps axj查看所有的进程
第一行是描述进程的相关属性,查看进程信息还可以通过ls /proc系统文件夹查看
proc是一个系统文件夹,在这文件夹下蓝色数字是每一个进程对应的唯一标识符(PID)
用proc查看进程看的时候不是进程的名称,而是要查看进程的PID才行。我运行一个./myprocess程序,用ps axj查看进程对应属性,再通过管道过滤出想要进程的信息 ps axj|head -1&& ps axj|grep (可执行程序名)
出现了两个myprocess命令的文件,是这样的,由于管道也是一个可执行程序,在执行它是会把它认为是一个在运行的进程,所有管道文件过滤myprocess的指令也会被显示出来。
然后ls /proc会这个文件夹下会找到PID为12306的数字
最后再明确查看proc目录下的这个pid为12306这个进程
出现的cwd(current work dir)是当前我这个进程的工作目录(路径),exe是当前进程下的哪个可执行程序。理解当前工作目录下,就如一个人他在哪里工作会有具体的地址,然后它工作用的电脑是放在它工作的地方,是在它当前的工作路径下。我产生的价值,做出来的东西是在我处的地方!