Linux进程1

目录

1.多进程

1.1多进程的概念

2.多进程相关概念

2.1进程和程序的区别

2.2进程的组成

2.3进程的种类

2.4什么是PID?

2.5几个特殊PID的进程

2.6查看进程的命令

2.7进程的状态及切换

2.7.1进程的状态

3.多进程的原理及相关API

3.1多进程创建的过程

3.2多进程创建的API

3.3多进程创建实例(不关注返回值)

3.4多进程的创建实例(关注返回值)

3.5父子进程执行流程

3.6父子进程内存空间问题

3.7多进程实例练习

3.8进程号获取getpid/getppid

3.9进程的退出exit/_exit

3.10进程资源回收wait/waitpid


1.多进程

1.1多进程的概念

进程:进程就是程序的一次执行的过程。进程又可以理解为一个正在执行的任务。进程是分配资源的最小单位,进程只要被创建出来就会分配0-3G的用户空间,所以0-3G的空间有多份。而内核空间只有一份。例如文件描述符就是每个进程所特有的。如果在进程中使用标准IO,缓冲区也在这个空间中。进程是一个动态执行的过程,它是具有生命周期的。当程序执行的时候进程被创建,当程序执行结束的时候进程被销毁。进程是被内核创建的,在内核中通过task_struct(pcb)结构体代表进程。当一个程序开始执行的时候内核使用task_struct结构体定义一个变量,并会将它放到正在运行的队列上。

2.多进程相关概念

2.1进程和程序的区别

程序:通过gcc编译生成的可执行文件就是程序,程序是静态的,没有生命周期的概念,程序在磁盘存储。

进程:程序的一次执行过程就是一个进程。进程是动态的,具备生命周期。进程也是分配资源的最小单位。

​ 进程是运行在内存上。

2.2进程的组成

进程组成三个部分:进程控制块(PCB),数据段,文本段。

2.3进程的种类

进程的种类分为三种:交互进程、批处理进程、守护进程。

交互进程:交互进程是有shell控制的,通过shell能够和用户进行交互。

​                  例如文本编辑器就是交互进程

批处理进程:在linux内核中批处理进程又一个专门的队列维护。优先级相等

​                    较低。例如gcc在编译程序的时候就是批处理进程。

守护进程:守护进程是后台运行的进程,脱离某个终端,它随着系统的运行而运行,

​                 随着系统的终止为终止。例如:windows上的各种服务就是守护进程

2.4什么是PID?

PID(进程号):在系统上运行的每个程序都有一个唯一的编号,就是进程号。进程号

                           是一个大于等于0的数值。进程号可以通过如下的方式查看。

在进程号对应的目录下可以看到进程的状态信息

2.5几个特殊PID的进程

0号进程(idle):在操作系统启动的时候,最先执行的进程就是0号进程。如果

​                          操作系统中没有其他的进程执行了,就执行这个进程idle(空闲)

1号进程(init):1号进程的的父进程是0号进程,它是内核中(kernel_thread)创

​                          建的进程,它的主要工作就是初始化各种硬件的,当初始化完各种硬

​                          件之后它可以为孤儿进程回收资源。

2号进程(kthreadd):2号进程是调度器进程,主要负责进程的调度执行的过程,它也

​                                   是内核中(kernel_thread)创建。

2.6查看进程的命令

1.查看进程的父子关系
linux@ubuntu:/proc/sys/kernel$ ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 08:59 ?        00:00:02 /sbin/init auto noprompt
root          2      0  0 08:59 ?        00:00:00 [kthreadd]
root          3      2  0 08:59 ?        00:00:00 [rcu_gp]
root          4      2  0 08:59 ?        00:00:00 [rcu_par_gp]
root          6      2  0 08:59 ?        00:00:00 [kworker/0:0H-kb]
root          9      2  0 08:59 ?        00:00:00 [mm_percpu_wq]
root         10      2  0 08:59 ?        00:00:00 [ksoftirqd/0]

2.查看进程的各种信息
linux@ubuntu:/proc/sys/kernel$ ps -ajx
  PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND
     0      1      1      1 ?            -1 Ss       0   0:02 /sbin/init 
     0      2      0      0 ?            -1 S        0   0:00 [kthreadd]
     2      3      0      0 ?            -1 I<       0   0:00 [rcu_gp]
     2      4      0      0 ?            -1 I<       0   0:00 [rcu_par_gp]
     2      6      0      0 ?            -1 I<       0   0:00 [kworker/0:0H-kb]
     2      9      0      0 ?            -1 I<       0   0:00 [mm_percpu_wq]

SID:会话ID
PGID:组ID
PPID:父进程ID
PID :进程ID
在新打开一个终端的时候,就相当于创建一个会话。
一个会话包括多个进程组,其中只有一个前台进程组和多个后台进程组
一个进程组内可以有很多进程,这些进程又可以有父子关系
TTY:如果没有终端与之对应就是一个?
TPGID:如果是-1就代表的是守护进程
 STAT:进程的状态
    
3.top、htop动态查看进程信息
进程 USER      PR  NI    VIRT    RES    SHR �  %CPU %MEM     TIME+ COMMAND               
  2064 linux     20   0 1044348 159348  37172 S   0.7  4.0   0:22.68 node                  
    11 root      20   0       0      0      0 I   0.3  0.0   0:07.59 rcu_sched             
   322 root       0 -20       0      0      0 I   0.3  0.0   0:00.79 kworker/2:1H-kb       
  1150 root      20   0  187972  13664  11144 S   0.3  0.3   0:06.46 vmtoolsd              
  4034 linux     20   0   44716   4120   3344 R   0.3  0.1   0:00.24 top                   
     1 root      20   0  225644   9316   6576 S   0.0  0.2   0:02.09 systemd      

4.通过进程名查看PID
  pidof a.out
 3935 3892
         
5.给进程发信号的命令
linux@ubuntu:~/work$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值