Linux软件高级编程-进程基本概念--day6

本文详细解释了进程的概念,包括其作为程序执行过程的特性,以及与之相关的系统命令如top、nice、kill等。文章还涵盖了进程的创建机制、内存映射、调度算法,以及进程结束与消亡的处理方式,如僵尸进程和孤儿进程,最后介绍了wait函数的作用。
摘要由CSDN通过智能技术生成

1.进程:

           程序:

                  存放在外存的一段数据组成的文件

           进程:

                  是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡

2.进程相关命令:

           1)top:

                       动态查看当前系统中所有进程信息(根据CPU占用率排序)

                   PID:唯一识别进程的ID号(>0)

                   优先级:Linux系统中数据高,优先级高(-20 --- 19);
                                  Windows系统中数值高,优先级高

                   进程状态:

                            R:运行态/就绪态

                            S:睡眠态/可唤醒等待态

                            D:不可唤醒等待态

                            T:暂停态

                            Z:僵尸态

                            X:结束态

             2)nice :

                      以指定优先级来运行进程

                      eg:nice  -n  优先级  要执行的集成任务

                   renice:重新设定一个正在运行的进程的优先级

                      eg:renice  -n  优先级  进程PID

             3)kill:

                      杀死指定的进程任务  

                      eg:kill  -9  进程PID

                   killall:杀死进程名对应的所有进程任务

                      eg:killall  -9  进程名

             4)ps  -ef:

                       查看当前时刻所有进程的信息

                   PPID:父进程的ID号

                   ps  -ef  grep  a.out

             5)pstree:

                        查看进程树

             6)ps  -aus:

                        查看当前时刻的进程信息

             7)./a.out  &:

                        将a.out放在后台执行

             8)jobs:

                        查看一个终端下后台执行的所有任务

             9)fg  编号:

                        将后台任务放到前台执行

3.进程的创建

           32bits

           一个进程在运行时,操作系统会为该进程分配0 -- 4G虚拟内存空间,分为文本段、数据段、系统数据段

             文本段:

                        也称文本区,存放代码和指令

             数据段:

                        也称数据区,可以细分为

                        1)字符串常量区

                        2)未初始化全局变量/静态变量

                        3)已初始化全局变量/静态变量

             系统数据段:

                        包含堆区和栈区

4.进程中蓄奴地址和物理地址的关系

        1)0  ---  4G虚拟内存空间只有一个

        2)实际物理地址中每个进程空间独立

        3)通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行

5.进程的调度

       1)常见的调度算法

              1.先来先执行,后来后执行

              2.高优先级调度算法

              3.时间片轮转调度算法

              4.多级队列反馈调度算法

              5.负载均衡调度算法

                 时间片:1.CPU在一个任务中的运行时间称为一个时间片

        2)宏观并行,微观并行

        3)进程的状态

                  R        运行态、就绪态

                  S        睡眠态/可唤醒等待态

                  D        不可唤醒等待态 

                  T         暂停态  

                  Z         僵尸态

                  X         结束态

6.进程相关的函数接口

      1.进程的创建 

              fork

              功能:创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程

              参数:void 缺省

              返回值:成功子进程返回0
                            父进程返回子进程的PID

                            失败返回-1

              父进程调用fork创建子进程,子进程拷贝父进程的文本段、数据段、系统数据段

              getpid

                        pid_t getpid(void);

                功能:

                       获得调用进程的PID号
      
             

              getppid

                        pid_t getppid(void);

                 功能:

                        获得调用进程的PPID

       2.进程的结束

            exit

              void  exit(int  status);

              功能:

                      让进程结束

              参数:

                      status:进程结束的状态

               返回值:

                      缺省

               exit在主函数中使用和return效果一致exit会刷新缓存区

           _exit

               void exit(int status);

               功能:
                       让进程直接结束

               参数:
                       status:进程结束的状态

               返回值: 
                       缺省

7.进程的消亡

   1.僵尸态

               进程代码执行结束,空间没有被回收,称为僵尸进程

   2.如何避免产生僵尸进程

               1)让父进程先结束

               2)让父进程回收子进程空间

   3.孤儿进程

               进程的父进程先结束,此时该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进程空间

8. wait函数

          pid t wait(jnt *wstatus);

          功能:

                   回收子进程空间

          参数:

                   wstatus:存放子进程结束状态空间的首地址

          返回值:

                   成功返回回收到的子进程PID失败返回-1

wait函数的作用

          1)wait函数具有阻塞作用

          2)wait函数具有同步作用

  WIFEXITED(wstatus)
  进程是否正常退出 

  WEXITSTATUS(wstatus)
  进程结束状态值

  WIFSIGNALED(wstatus)
  进程是否被信号杀死

  WTERMSIG(wstatus)
  获得杀死进程的信号编号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值