多任务简介
多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务。Linux、windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多。
当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。多任务系统中有3个功能单位:任务、进程和线程。
管理进程的结构体 task_struct ,也叫做进程控制块(PCB),这个结构体在 sched.h 中,这个结构体包含进程运行时所需的所有资源 (堆、栈、数据段等)。
进程的一生
进程状态
- 就绪态、运行态:R
- 可中断的睡眠态:S
- 不可中断的睡眠态:D
- 暂停态:T
- 僵尸态:Z
一个进程的诞生,是从其父进程调用fork()/vfork()开始的。当我们运行一个程序时,其需要相应的资源(堆 、栈、数据段),那么fork()/vfork()后,相当于复制了一份同样的资源给子进程。
size (a.out) : 显示a.out 的text,data,bss段信息;
ps -elf :查询父子进程,包括pid 和 ppid
ps -elf | grep a.out
ps aux :查看某进程的pid及状态信息
ps aux | grep a.out
pstree -sp pid号:查看父子进程(属性图,含pid号)
kill:给进程发送一个信号;
kill -l:查看kill可以发送的所有信号
kill -9 pid号:给pif发送一个9号信号
pid_t fork (void):创建进程;
返回值:在父进程中返回子进程的pid号(int型数据)
在子进程中返回0;
失败返回-1.