Linux---进程

1.程序是什么:完成特定任务的一系列指令的有序集合
2.进程是什么?
从用户角度: 进程是程序一次动态执行过程。
操作系统角度:
硬件上有中断系统出现,产生了分时系统。
进程是操作系统分配资源的基本单位。
进程是操作系统分配资源的最小单位。
进程有自己的运行状态和地址空间。(空间是虚拟的地址空间)
mmu:内存管理(快速的找到物理内存)

这个就为进程的一个示意图:

如何找到物理内存

3.PCB(进程控制块):task_struct {esp pc}
find /usr/src/ -name "*.h" | xargs grep -n "task_struct"
系统内部维护着一个pcb的链表,操作系统通过这个链表管理系统所有的进程。
我们是如何知道栈的位置,代码和栈区离的较远,那么是如何得知呢?就是利用pcb可以从中的esp里面的内容所知道的。



4.进程和程序的区别:

程序里面只有:代码+数据
进程:代码+数据+堆栈+pcb
进程和程序的区别:
进程是动态的运行过程,程序是静态的。
进程有pcb
进程是短暂,程序是相对永久的。
一个进程只能对应一个程序,一个程序可以对应多个进程。
5. 进程状态:
3态:运行态 就绪态 阻塞态



7态:内核(就绪、运行、可中断睡眠、不可中断睡眠、僵尸、暂停)
用户(运行状态)
进程标识号:每个进程有唯一的一个标号[0~cat /proc/sys/kernel/pid_max]


6.进程创建:
1.分配进程标识符
2.创建pcb
3.复制父进程的环境
4.给子进程分配内存空间,将父进程的数据拷贝到该进程
5.将子进程置成就绪状态,放入就绪队列。



7.
Linux系统创建进程的系统调用:
init fork(void)


猜你喜欢

转载自blog.csdn.net/z_juan1/article/details/80721136