0
点赞
收藏
分享

微信扫一扫

进程的概念(详解)

洛茄 2022-04-03 阅读 47
linux

首先我们来讨论下,进程和程序的区别,有些人说进程就是存储在内存的程序,其实这样的说法是不正确的,其实进程是程序加PCB(数据管理模块),就是进程信息被存放在一个加控制模块的数据结构中,可以理解为进程属性集合。

接下来我们来学习下一个重要的函数:fork函数

fork函数其作用就是创建一个子进程,首先我们创建一个子进程的方法有两种,一个是cmd or run command fork ,在操作系统的角度上讲,上面建立的进程方式没有什么不同。

fork的本质是创建进程,那么它是不是一定会导致系统里多一个进程呢,其实进程就是与进程相关的内核数据结构+数据代码和相应的数据(task_struct),所以,创建之后是会在系统中多一个进程的。

那么所创建的子进程是什么,有什么?所谓的子进程在默认的情况下,会继承父进程的代码和数据,内核的数据结构也会以父进程为模板创建,其实也就是说,内核的数据结构大部分都是个父进程一样的。那么问题来了,既然都一样,是不是我们创建的一个子进程是不是要和父进程干一样的活,其实不是的,因为fork()函数有返回值,其返回值类型为pid_t,我们可以理解为整数,所以这个可以让我们子进程和父进程做不一样的事,所以子进程返回的父进程的ID,父进程返回的是0。

接下来,我们再讨论下进程状态的意义:

其意义在于我们操作系统可以快速判断进程完成特定的功能,比如调度,其本质也是一种分类。

具体状态有 R 运行态(不一定正在占据CPU,也可能是放在了运行队列中)

                     S (sleep) 当我们完成某种任务的时候,任务条件不具备,需要进行某种等待

                    D(disk sleep)  和S状态差不多。唯一不同就是不可中断

                        T 暂停状态

                        t 追踪状态

                        x 死亡状态:回收进程——进程相关的内核数据结构+代码和数据。

                        z 僵尸状态 :为什么要有僵尸状态?因为需要辨别出退出死亡原因

介绍几个代码  pid+ -1  显示命令

kill -19 +pid 杀死进程

kill -9+恢复进程

举报

相关推荐

0 条评论