程序: 为了执行特点任务的一系列指令的有序集合。
进程:
从用户的角度看,进程是程序执行的一次动态过程。
从操作系统的角度看,
进程是操作系统分配系统内存、CPU时间片等系统资源的基本单位。
每个进程都有自己独立的虚拟地址独立空间和状态。
进程是分配资源的最小单位。
每个进程都有自己独立的虚拟地址独立空间和状态。
进程是分配资源的最小单位。
进程是程序的一次执行过程,需要保存进程的现场信息,这些信息需要一个数据结构来保存,在C语言中用结构体,我们将这个结构称为PCB。
程序:代码段+数据段
进程:代码段+数据段+堆栈+PCB
PCB将代码和数据有效的粘合在一起
进程和程序的区别:
1.进程是动态的,程序是静态的。
2.进程是短暂的,程序是永久的。(相对的)
3.进程有PCB
4.一个进程只能对应一个程序,一个程序可以对应多个进程。
awk '{}' filename
PCB : 操作系统感知进程存在的重要数据结构。
状态变迁:
三态
linux7态
三态
linux7态
ps 查看进程状态
ps aux
ps -ef
Linux 对应的PCB数据结构:task_struct{
进程标识符
进程状态
进程优先级
各种时间信息
进程间通信信息
内存使用情况
寄存器信息(保存现场)
}
ps aux
ps -ef
Linux 对应的PCB数据结构:task_struct{
进程标识符
进程状态
进程优先级
各种时间信息
进程间通信信息
内存使用情况
寄存器信息(保存现场)
}
进程标识符:
操作系统会给每个进程一个独一无二的标号。
编号范围(unsize_t)[2, cat /proc/sys/kernel/pid_max]
0 内核进程
0号进程启动1号进程。 init
swap 分区
操作系统会给每个进程一个独一无二的标号。
编号范围(unsize_t)[2, cat /proc/sys/kernel/pid_max]
0 内核进程
0号进程启动1号进程。 init
swap 分区
创建进程的一般进程:
给新建的进程分配一个标识符,在内核中创建PCB
复制父进程的环境(PCB内的信息)
给子进程分配资源,栈,堆,代码,数据等。
复制父进程的地址空间内容到子进程的地址空间
将进程置为就绪态,放到就绪队列
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
寄存器:
pc 下一条指定的地址
esp 栈顶指针
ebp 基址
esp 栈顶指针
ebp 基址