理解操作系统2--进程管理疑惑总结

1.进程和程序之间的关系

进程是一个可以并发执行的程序在一个数据集上的一次运行,进程是程序的一次运行过程,进程类似电影,程序是胶片。一场电影就是胶片在放映机上的一次运行,对于进程来说,程序是静态的,可以永久存在,进程是动态的实体,动态的产生发展和消失。

进程和程序之间不是一一对应关系:

一个进程可以顺序执行多个程序,如同一场电影可以连续播放多个胶片。

一个程序可以对应多个进程, 一本胶片可以放映多场电影。一个程序还可以同时对应多个进程,系统只有一个vi程序,可以被多个用户同时执行,编辑各自的文件。

2.进程特性:

动态性:由创建产生,由撤销而消亡,由调度而运行,因等待而停顿。进程的生命周期就是从创建到消失的过程。

并发性:同一时间段内有多个进程在系统活动。微观上的交替造成了宏观的并发。

独立性:进程是可以独立运行的基本单位,是操作系统分配资源和调度管理的基本对象,独立拥有各种必要的必要资源,独立占用CPU运行。

异步性:独立运行,按照不可预知的速度前进,进程间协调由 操作系统完成。

3.进程的地址空间

进程的运行有用户态和核心态两种模式,32位x86平台,linux系统进程有4GB地址空间,1G是内核空间,3G是用户空间,内核控件的代码和数据是所有的进程共享的,内核栈和用户空间是进程的私有财产。内核代码使用内核栈,用户代码使用用户栈,内核栈存放核心态的运行数据,还要存放进程切换时候的现场信息和进程允许的信息。

4.内核对进程的描述结构体

task_struct记录进程的必要信息,内核栈尾端有一个称为thread_info的结构,这个结构保存进程运行环境的一些标志信息, 如执行代码的类型,进程地址空间的范围,是否使用了浮点单元,是否有挂起的信号,是否运行内核抢占.......thread_info与task_strcut之间通过指针紧密相连,x86的CPU有个栈指针寄存器esp,进程运行在核心态时候,esp指向内核的栈顶,


5.进程组织结构:


管理进程就是管理PCB,为了有效的管理进程,系统采用多种结构

进程链表:系统将所有PCB链成一个双向的循环链表,通过task字段链入进程链头,表头指针在0号进程的PCB里面,遍历该链表即可顺序找到每个进程的PCB。

PID散列表:内核需要根据进程的PID查找进程,顺序扫描进程链表效率低。用PID散列表比较快。

进程树链表:根据进程的创建的方式

可执行队列:把所有处于可执行状态的进程组织起来放在一个队列,进程切换时候可以从这里选择一个运行。

等待队列:等待的进程组成队列,等待队列的节点不是PCB本身,而是代表一个等待进程的节点。满足条件时候,唤醒相应满足条件的进程,将该节点删除,并将该进程的PCB加入到可执行队列。





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值