1. 什么是进程
课本概念
:程序的一个执行实例,正在执行的程序等
内核观点
:担当分配系统资源(CPU时间,内存)的实体。
如果你就看这个来理解进程,那么恭喜你,作为初学者,你没有真正理解到什么是进程!
那么什么是进程?
-》我们来看这幅图片
你写的程序,是直接写在磁盘中,然后当你运行程序,这个程序文件才会被加载到内存中
1.1进程列表
展开讲一下什么是进程列表!
进程列表可以被看作是一个包含多个 PCB 指针或引用的列表,通过进程列表可以方便地访问和操作各个进程的 PCB,进而实现对进程的各种管理功能。但进程列表本身并不等同于 PCB,它只是一种用于组织和管理 PCB 的方式。
1.2 task_struct
task_struct-PCB
的一种
在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
task_ struct
内容分类
标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息
1.3 组织进程
可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。
1.4 查看进程
进程的信息可以通过
./proc
系统文件查看
1.5 通过系统调用获取进程标识符
子进程id(PID)
父进程id(PPID)
1.6 杀掉进程的方法(指令)
1.7 通过系统调用创建进程-fork初识
- 运行
man fork
认识fork
fork
有两个返回值- 父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)
fork
之后,要进行if
分流