1.进程概念
课本概念:程序的一个执行实例或者正在执行的程序等
内核观点:担当分配系统资源(cpu时间,内存)的实体
2.描述进程-PCB
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
课本上称之位PCB(process control block),linux操作系统下的PCB是task_struct
(1)task_struct-PCB的一种
在linux中描述进程的结构体叫做task_struct
task_struct是linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息
(2)task_struct内容分类
标示符:描述本进程的唯一标示符,用来区别其他进程。
状态:任务状态,退出代码,退出信号等
优先级:相对于其他进程的优先级
程序计数器:程序中即将被执行的下一条指令的地址
内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据:进程执行时处理器的寄存器的数据
I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表
记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等
其他信息等等
上下文数据是指程序执行时处理器各种寄存器中的数据。包括:
通用寄存器。
程序计数器:程序中即将执行的下一条指令的地址。
程序状态字PSW:含有状态信息,如执行方式,中断屏蔽字等。
用户栈指针:指每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。
上下文数据存在的必要性:处理机处于执行状态时,正在处理的许多信息都是放在寄存器中。当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。
3.组织进程
PCB是进程的唯一描述块,为了动态插入和删除,PCB由链表
组织。进程创建
时,为该进程生成一个PCB
,进程终止
时,回收PCB
。
4.查看进程
ls /proc/
要查看几号进程信息,就查看对应的文件。例如ls /proc/1
ps aux
例如ps aux | grep test | grep -v grep
查看关于test的进程信息top
相当于windows下的任务管理器
5.通过系统调用获取进程标示符
子进程(pid)
父进程(ppid)
6.通过系统调用创建进程-fork初识
(1)运行 man fork 认识fork
(2) fork有两个返回值,给子进程返回0,给父进程返回子进程的pid,
(3)父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)
fork 之后要用if 进行分流