进程的概念(详解)

首先我们来讨论下,进程和程序的区别,有些人说进程就是存储在内存的程序,其实这样的说法是不正确的,其实进程是程序加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+恢复进程

查看进程PPID的命令:ps axj | head -1 && ps ajx | +进程的PID号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值