进程控制简介, 什么是进程,PID ,三个特殊的进程PID = 0/1/2(进程控制)【linux】(zi)

进程环境

核心点:

  • 进程控制
  • 进程关系
  • 守护进程
  • Linux操作系统可以运行C/C++ java其他等任何语言的程序。
  • 编程语言有各种各样的区分
  • 文字编码形式的程序---------> 机器指令
  • 被CPU执行的时候对于CPU来说没有区别。
  • 程序在linux平台运行起来之后都演变为进程都是相同的运行过程。
  • 启动过程相同

进程控制

进程控制能解决什么问题呢?

  • 1.有OS的时候进程具体是如何启动起来的?
  • 2.在我们双击图标或者在命令行执行./a.out后程序如何运行起来?
  • 我们前面说过通过内核exec加载程序后,程序即运行起来
  • 实际并不那么简单
  • 3.程序如何运行起来演变为进程?
  • 4.有OS支持的时候 main函数return或者使用exit、_exit
  • 所返回的只到底返回给了谁?返回又有什么意义呢?
  • 5.程序如何实现多进程?在什么样的情况下程序才会涉及到多进程?
  • 6.有OS的时候,OS的进程非常多,多进程之间有什么关系?
  • 守护进程:后台进程,平时看不见的,但是一直运行在后台
  • 后台进程大多都是守护进程
  • 7.如何做出一个自己的守护进程?
  • …………

什么是进程

将程序代码从硬盘上拷贝到内存上,在内存上的动态运行程序就是进程。
对比进程和程序:

在这里插入图片描述

多进程并发运行

  • 有OS的时候会有很多进程在运行,这些进程都是并发运行
  • 什么是并发运行?
  • CPU轮换的执行,当前执行程序一个短暂的时间片
  • 保存现场等待CPU再次执行,切换到另一个进程
  • 然后不断循环往复
  • 时间片比较短
  • 宏观上我们会感觉到所有的进程都是在同时运行的。
  • 微观上CPU每次只能执行某一个进程的执行。
  • 多核CPU可以是实现进程并行和并发同时存在的。

PID

什么是PID?

  • OS下面运行的进程很多,为了更好的管理进程
  • 为每一个进程分配一个惟一的编号(非负整数)
  • 如果当前进程结束了,这个PID就可以被重复使用。

我们在linux平台PID查看:
命令:ps -aux
在这里插入图片描述

windows平台PID查看:
在这里插入图片描述

  • PID的唯一性,我们就可以在创建文件的时候加入PID来保证文件名的唯一性

  • PID放在那里?

  • OS管理进程,会为每一个进程创建一个进程控制块

  • 在linux平台就是task_struct 结构体变量

  • 里面存放了所有该进程的管理信息。

  • PID放在task_struct 结构体变量中。

三个特殊的进程

PID分别是0,1,2会在OS启动之后一直运行直到关机OS结束运行。

PID == 0的进程

  • 我们在进程PID查看的时候是查看不到PID为0的进程
  • 这个进程也被称为调度进程
  • 功能就是实现进程间的调度和切换
  • 根据调度算法让CPU轮换的执行所有进程
  • PC里面放下一个进程指令地址
  • PC执行不同的进程时,CPU就去执行不同的进程,是实现进程切换
  • PID为0的进程是怎么来的?
  • OS启动之后,最后有一部分代码会持续运行,就是PID==0的进程
  • 什么是系统进程?
  • 是操作系统代码的一部分,由OS演变过来的进程。

PID == 1的进程

作用

  • 1.初始化,也被称为init进程
  • 去读取各种系统文件,使用文件中的数据来初始话OS的启动
  • 让操作系统进入多用户状态,也就是让OS支持多用户登录
  • 2.托管孤儿进程
  • 我们在后面博客会详细说明。
  • 3.原始父进程
    在这里插入图片描述
  • linux平台和windows平台下面
  • 几乎所有的进程都是通过父进程生出来的
  • PID == 1的进程就是原始父进程
  • PID == 1的进程怎么运行起来的呢?
  • 这个进程不是由OS演变而来的,不属于OS的代码
  • 是一个独立的程序,程序代码放在/sbin/init下面
  • OS运行起来之后,OS去回调init程序
  • 将代码加载到内存,这个程序就运行起来了。
  • 运行起来之后通过父进程生子进程来运行其他进程。

PID == 2的进程

  • 页精灵进程,专门负责虚拟内存的请页操作
  • 什么是精灵进程?
  • 精灵进程也叫做守护进程,我们在后面守护进程会进行熟悉说明
  • 什么是换页操作?
  • OS支持虚拟内存机制的时候,加载应用程序到内存,并不会进行完整代码的拷贝,只会拷贝当前进程要运行的部分代码。当这部分代码运行完毕之后,会再去拷贝另一部分需要运行的代码到内存中,拷贝的时候是按照一页一页来进行操作的,每一页是4096字节。
  • PID == 2的进程是怎么运行起来的?
  • 与调度进程一样,是一个系统进程,代码属于操作系统的一部分
  • OS运行的时候会把这段代码留在内存中继续运行。
发布了163 篇原创文章 · 获赞 94 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43648751/article/details/104478501