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 查看后台所有的进程,可以显示进程编号,