进程的状态和切换(学习笔记)

时间:2014.05.28

地点:基地

-------------------------------------------------------------------------------

一、进程的三种基本状态

进程的三种基本状态包括:就绪状态,执行状态,阻塞状态

1.就绪状态

当进程分配得到除CPU之外的所有必要资源后,只要再获得CPU就可以立即执行了,万事俱备只欠东风而已。该状态即就绪状态,一个系统中处于就绪状态的进程可能有很多,将他们排成一个队列,形成一个就绪队列。

2.执行状态

正如上面所说,进程一旦获得CPU就可以执行,正在执行的进程处于就绪状态。单处理机只有一个进程处于执行状态,多处理机则可以有多个。

3.阻塞状态

某个正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机处于暂停状态,即进程的执行受阻塞,该状态为阻塞状态,等待状态或封锁状态都可以。导致这样的迫使进程由执行状态转为阻塞状态的事件通常有:I/O请求、申请缓冲空间等。处于阻塞状态的进程可能也有好多,将它们也排成一个队列,或者根据阻塞原因的不同还可排成多个队列。

-------------------------------------------------------------------------------

二、进程三种基本状态的之间的切换

2.1就绪-执行

处于就绪状态的进程,当进程调度程序按一种选定的策略选中一个就绪状态的进程,为它分配处理机后进程便可执行,状态转为执行状态。    【就绪状态——(进程调度)——执行状态】。

2.2执行-就绪

正在执行的当前进程,如果因为分配给它的时间片已用完而被暂停执行,则该进程由执行状态又切换回就绪状态。  【执行状态——(时间片用完)——就绪状态】

2.3执行-阻塞

正杂执行的当前进程,如果因为某等待事件(I/O请求等待外部设备的信息传输,申请缓冲,访问临界资源等从而进行资源等待)发生而迫使进程执行受阻而无法继续执行,则转为阻塞状态。  【执行状态——(等待事件发生)——阻塞状态】

2.4阻塞-就绪

处于阻塞状态的进程,再等待的事件已完成,比如输入输出完成、资源得到满足,处于阻塞状态的进程并不马上转入执行状态,而是切换到就绪状态,等待系统调度程序在合适的时候对进程进行调度再转换为执行状态。     【阻塞状态——(等待事件完成)——就绪状态】

-------------------------------------------------------------------------------

三、挂起状态

挂起状态相当是一个修饰符,可将就绪状态分为活动就绪状态和静止就绪状态,还可将阻塞状态分为活动阻塞和静止阻塞。

3.1引入挂起状态的原因

1.终端用户的请求。

当终端用户在程序运行期间发现可疑问题时,希望暂时使自己的程序静下来,使正在执行的进程暂停执行。此时若进程处于就绪状态而未执行则程序暂时不接受调度,以便用户考查执行情况对程序进行修改。

2.父进程的请求

有时父进程也希望挂起某个子进程,希望子进程静下来,以便考查和修改子进程或者协调各子进程的活动

3.负荷调节的需要

当实时系统中的工作负荷较重,可能影响到实时任务的控制时,也可

4.操作系统的需要

-------------------------------------------------------------------------------

四、创建状态和终止状态

4.1创建状态

创建进程的两个步骤:

1.为一个新进程创建PCB,并填写必要的管理信息(比如进程标识等)

2.把进程转入就绪状态并插入就绪队列之中

处于创建状态的进程由于所必须的资源或其他信息比如主存资源还未被分配等,此时进程只是有了自己的PCB,但进程本身还没有进入主存,所以进程还不能被调用运行,这个阶段进程所处的状态即创建状态。创建状态的进程,获得了其所必须的资源以及PCB初始化工作完成后,便可转入就绪状态。其中当当前系统的性能和内存的容量均允许的情况下,创建状态的进程将转换为活动就绪状态,若是当前系统资源紧张性能不足,无法给创建状态的进程分配所需的资源,此时进程转为静止就绪状态。

4.2终止状态

进程终止的两个步骤:

1.等待操作系统进行善后处理

2.将PCB清零,并将PCB返回给操作系统

进程终止的条件:a.进程达到了自然结束点 b.进程运行出现了无法克制的错误 c.进程被操作系统终结 d.进程被其他有终止权的进程终结

进程进入终止状态后停止执行,这样我们知道只有正在执行的进程才会转为终止状态,【执行——(释放)——终止】,转入终止状态的进程,操作系统依然保留了一个记录,其中保存有状态码和一些计时统计数据,供其它进程收集,当其它进程完成了对终止状态进程的这些信息提取之后,操作系统便删除该进程。

进程的状态和切换(学习笔记)

时间: 2024-08-05 19:29:18

进程的状态和切换(学习笔记)的相关文章

第13章 MySQL服务器的状态--高性能MySQL学习笔记

13.1 系统变量 -- 服务器配置变量 MySQL通过SHOW VARIABLES  SQL命令显示许多系统变量. 13.2 状态变量--SHOW STATUS SHOW STATUS 命令会在一个由两列(名称/值)组成的表格里显示服务器状态变量.这些变量都是只读的. SHOW STATUS默认显示会话变量,SHOW GLOBAL STATUS显示全局变量. 也可以从INFORMATION_SCHEMA.GLOBAL_STATUS和INFORMATION_SCHEMA.SESSION_STAT

EasyARM i.mx28学习笔记——安装和使用tftp

0 前言 前段时间购买了周立功的EasyARM i.mx287开发板,加之前3个月工作内容也和linux有关,就借助周立功的EasyARM总结Linux开发过程中的若干注意点. 本文说明在ubuntu中安装tftp服务器的详细步骤,在ubuntu中编写一个让LED闪烁的脚本,使用串口登录EasyARM,在EasyARM中通过busybox的tftp指令获得主机中的脚本文件,增加可执行权之后运行,最终LED灯间隔闪烁. 1 安装tftp [1]新建目录,并修改权限 在用户目录中新建一个名为tftp

APUE学习笔记:第八章 进程控制

8.1 引言 本章介绍UNIX的进程控制,包括创建新进程.执行程序和进程终止.还将说明进程属性的各种ID-----实际.有效和保存的用户和组ID,以及他们如何受到进程控制原语的影响.本章还包括了解释器文件和system函数.本章最后讲述大多数UNIX系统所提供的进程会计机制.这种机制使我们能够从另一个角度了解进程的控制功能. 8.2 进程标识符 每个进程都有一个非负整型表示的惟一进程ID.因为进程标识符是惟一的,常将其用作其他标识符的一部分以保证其惟一性.虽然是惟一的,但是进程ID可以重用.(大

计算机操作系统学习笔记_4_进程管理 --处理机调度

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; f

Linux 程序设计学习笔记----进程管理与程序开发(上)

转载请注明出处,http://blog.csdn.net/suool/article/details/38406211,谢谢! Linux进程存储结构和进程结构 可执行文件结构 如下图: 可以看出,此ELF可执行文件存储时(没有调入内存)分为代码区.数据区和未出花数据区三部分. 代码区:存放cpu的执行的机器指令. 数据区:包含程序中的已经初始化的静态变量,以及已经初始化的全局变量. 未初始化数据区:存入的是未初始化的全局变量和未初始化的静态变量. 现在在上面的程序代码中增加一个int的静态变量

操作系统学习笔记----进程/线程模型----Coursera课程笔记

操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上

关于linux操作系统中进程相关问题的学习笔记

关于linux操作系统中进程相关问题的学习笔记 1.摘要   进程的经典定义是一个执行中程序的实例.系统中的每个程序都运行在某个进程的上下文中(contest)中.上下文是由程序运行正确运行所需的状态组成的.这个状态包括存放在内存中的程序的代码和数据,它的栈.通用目的寄存器的内容.程序计数器.环境变量以及打开文件描述符合的集合.在本次学习笔记中,我是以linux为例,学习了以下三个方面的知识:操作系统如何组织进程.进程状态如何转换以及进程是如何调度的.在最后我还谈了下自己对操作系统进程模型的一些

Python学习笔记__10.4章 进程VS线程

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker. 如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker. 如果用多线程实现Master-Worker,主线程就是Master,其

Linux学习笔记033_11进程

ps:(process information,静态的) 显示进程信息,不加参数显示当前终端的进程 a:包括所有终端的进程 x:不属于任何终端的进程,和任何用户无关系的进程 u:显示出进程的拥有人 f:显示进程的附属关系(依赖关系,父子进程) USER:进程的拥有人 PID:进程ID,默认用进程ID排序 VSZ:程序在运行时调用多少虚拟内存 RSS:真实内存 TTY:?不属于任何终端,进入终端之前就运行 STAT:状态,s为睡眠 TIME:进程持续时间 COMMAND:运行这个进程的指令 ps