009-进程
1、程序、进程程序: 程序是完成特定任务的一系列指令集合。
进程:
从用户的角度来看进程是程序的一次执行过程;
从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位;
进程是资源分配的最小单位,每一个进程都有自己独立的地址空间与执行状态。像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程。
进程地址空间:
Linux每一个运行的程序(进程),操作系统都会为其分配一个0~4G(32位机)的地址空间(虚拟地址空间)。
进程和程序的区别:
进程是动态的,程序是静态的;
进程的生命周期是相对短暂的,而程序是永久的。
一个进程只能对应一个程序,一个程序可以对应多个进程。
早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念。
2、进程状态
经典进程三态:
就绪、等待(阻塞)、运行。
状态转换原因及条件:
因创建而就绪,因调度而执行;因时间片用完而重新就绪;执行中因I/O请求而阻塞;I/O完成而就绪。
注意:阻塞以后不能直接执行,必须进入就绪状态。
Linux内核中的进程状态
① 运行状态<用户、内核>(TASK_RUNNING)
② 可中断睡眠状态(TASK_INTERRUPTIBLE)
③ 不可中断睡眠状态(TASK_UNINTERRUPTIBLE)
④ 暂停状态(TASK_STOPPED)
⑤ 僵死状态(TASK_ZOMBIE)
⑥ j就绪状态(TASK_READY)
进程调度及调度算法:
按照一定的算法,从一组待运行的进程中选出一个来占用CPU运行。
① 先来先服务调度算法
② 短进程优先调度算法
③ 高优先级调度算法
④ 时间片轮转法
3、进程编程相关术语
进程控制块:
① 进程描述信息
进程标识符用于唯一的标识一个进程。
② 进程控制信息
进程当前状态、进程优先级、程序开始地址、各种计时信息、通信信息...
③ 资源信息
占用内存大小及管理用数据结构指针;交换区相关信息;I/O设备号、缓冲、设备相关的数结构;文件系统相关指针。
④ 现场保护信息
寄存器、PC、程序状态字PSW、栈指针。
进程标识pid:
每个进程都会分配到一个独一无二的数字编号,我们称之为“进程标识”(process identifier),或者就直接叫它PID.
为一个正整数,当一个进程被启动时,它会顺序挑选下一个未使用的编号数字做为自己的PID,数字1一般为特殊进程init保留的。
0号进程(也称为)空闲进程。
1号进程第一个用户进程。
进程创建:
① 不同的操作系统所提供的进程创建原语的名称和格式不尽相同,但执行创建进程原语后,操作系统所做的工作却大致相同,都包括以下几点:
② 给新创建的进程分配一个内部标识,在内核中建立进程结构。
③ 复制父进程的环境,
④ 为进程分配资源, 包括进程映像所需要的所有元素(程序、数据、用户栈等),
⑤ 复制父进程地址空间的内容到该进程地址空间中。
⑥ 置该进程的状态为就绪,插入就绪队列。
进程撤销:
进程终止时操作系统做以下工作:
① 关闭软中断: 因为进程即将终止而不再处理任何软中断信号;
② 回收资源: 释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等;
③ 写记帐信息: 将进程在运行过程中所产生的记帐数据(其中包括进程运行时的各种统计信息)记录到一个全局记帐文件中;
④ 置该进程为僵死状态: 向父进程发送子进程死的软中断信号,将终止信息status送到指定的存储单元中;
⑤ 转进程调度: 因为此时CPU已经被释放,需要由进程调度进行CPU再分配。
页:
[1]