进程
1、什么是进程?
进程指的是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。
2、什么是程序?
计算机程序又称为“计算机软件”,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。
3、程序与进程的区别?
1、程序是永存的,而进程只是暂时的,是程序在数据集上的一次执行,有创建有撤销。
2、程序是静态的观念,进程是动态的观念。
3、进程具有并发性,而程序没有。
4、进程是竞争计算机资源的基本单位,程序不是。
5、进程和程序不是一一对应的:
- 一个程序可以对应多个进程,即多个进程可执行同一程序;
- 或者一个进程执行一个或多个程序。
注意⚠️:这里区分两个概念
并行:两个cpu分别执行两个不同的进程。(可以理解为平行存在)
并发:一个cpu执行两个进程。(可以理解为同时发生)
4、描述进程
- 进程信息被放在一个叫做进程控制块的数据结构中,也就是进程属性的集合。
- 进程控制块又称 PCB(process control block)
- Linux 操作系统下的 PCB 是 task_struct。
1、这里我们来详细了解一下Linux 下的PCB(task_struct)
- 什么是task_struct?
它是LInux操作系统内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。
- task_struct内容分类:
1、标示符---PID--->描述本进程的唯一标识符,用来区别其他进程。
2、状态----------->当前任务状态。(后面详述)
3、优先级--------->相对于其他进程的优先级。
4、程序计数器----->存储程序中即将被执行的下一条指令的地址。
5、内存指针------>包括程序代码和进程相关的数据的指针,还有和其他进程共享的内存块的指针。
6、上下文数据:
保存上下文:把cpu寄存器的内容保存到内存中。
恢复上下文:把内存中寄存器的值恢复到寄存器中。
7、I/O状态信息----->包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
8、记账信息-------->记录进程的执行时间,包括处理器时间总和,时间限制,记账号等。
9、其