Linux 进程

1. 进程:

一个独立的可调度的任务
执行一个程序所分配的资源的总称
进程是程序的一次执行过程
进程是动态的,包括创建、调度、执行和消亡

2. 进程包含三个段:
1)“数据段”存放的是全局变量、常数以及动态数据分配的数据空间(如malloc函数取得的空间)等。
2)“正文段”存放的是程序中的代码
3)“堆栈段”存放的是函数的返回地址、函数的参数以及程序中的局部变量

3. 进程的类型:
1)交互进程:交互进程既可以在前台运行,也可以在后台运行。
      该类进程经常与用户进行交互,需要等待用户的输入,当接收到用户的输入后,该类进程会立刻响应。
      该类型进程是shell控制和运行的
2)批处理进程:该类进程不属于某个终端,它被提交到一个队列中以便顺序执行
3)守护进程:该类进程在后台运行。它一般在Linux启动时开始执行,系统关闭时才结束。

4. 进程的运行状态:
1)运行态:此时进程或者正在运行,或者准备运行。

2)等待态:此时进程在等待一个事件的发生或某种系统资源。
  可中断:处在这种状态下的进程可以被信号中断,接收到信号或被显示地唤醒呼叫,唤醒之后,进程将转变为运行态。
  不可中断:它不会处理信号,只有在它所等待的事件发生时,进程才被显示的唤醒。

3)停止态:此时进程被中止。
4)死亡态:这是一个已终止的进程,但还在进程向量数组中占有一个task_struct结构。
  task_struct 进程控制块(pcb)管理进程)

  1.进程标识pid
  2.文件描述符表
  3.进程的状态
  4.pc程序计数器(存放程序下一条指令的地址)

  前台进程:目前我们一直用的 +代表前台运行
  后台进程:在后台运行,只有输出,没有输入,没有 +代表 后台运行
  

5. 修改进程运行时的优先级    PR=NI+20    NI [-20,19]  数字越小优先级越高

1).nice:按用户指定的优先级运行进程

  nice -5 ./a.out 设置优先级为5

  sudo nice --3 ./a.out 设置优先级为-3

 



2).renice:改变正在运行进程的优先级

  renice 5 PID

 

修改为低优先级:

 

 修改为高优先级:

 6. 设置程序前后台运行

  (1) . 首先使用shell命令 : kill -l 查看进程信号   其中 9 是杀死进程的信号 使用 kill 9 PID 杀死一个进程

    2) SIGINT 停止信号,默认杀死进程。ctrl + c
    3) SIGQUIT 退出信号,默认也是杀死进程。 ctrl +
    9) SIGKILL 杀死进程,不能被忽略,不能被捕捉
    14)SIGALRM 闹钟信号,默认也是杀死进程
    17)SIGCHLD 儿子状态改变,内核会给它的父亲发送此信号
    18)SIGCONT 唤醒信号,唤醒之后变为后台运行
    19)SIGSTOP 暂停信号, 不能忽略,不能被捕捉
    20)SIGTSTP 暂停信号, ctrl + z

 

 (2).  直接启动时后台运行 ./a.out &   在运行程序后面添加一个 & 符号

(3). 修改运行中的程序后台运行,先暂停在后台运行

  bg   将挂起的进程在后台执行,   bg 编号

  fg   把后台运行的进程放到前台运行,  fg 编号

  jobs 查看后台所有的进程,可以显示进程编号,

原文地址:https://www.cnblogs.com/electronic/p/10923633.html