【操作系统】进程描述与控制

前言:

开发操作系统是为了给应用程序提供一个方便、安全、一致的访问接口,以屏蔽硬件的复杂性。我们可以将操作系统理解为资源的统一抽象表示,可以被应用程序请求和访问。资源包括内存,文件等,一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用。现代操作系统采用进程来管理应用程序的执行。

进程的概念:

1.一个具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集。

2.能分配给处理器并由处理器执行的实体。

3.一个正在计算机上执行的程序实例。

进程的组成:

进程由程序代码、相关数据以及进程控制块构成。

进程控制块组成:

1.进程标识信息

包括进程标识符,即进程id,创建这个进程的父进程标识符,用户标识符

2.进程状态信息

包括用户可见寄存器,控制和状态寄存器,栈指针

3.进程控制信息

进程状态、优先级、调度信息、事件、存储管理等等

进程控制块的作用:

进程控制块是操作系统中最重要的数据结构。每个进程控制块包含操作系统所需要的关于进程的所有信息。实际上,操作系统中的每个模块,包含那些涉及资源调度、资源分配、中断处理、性能监控和分析的模块,都能读取和修改它们。

进程的执行模式:

由于某些指令只能在特权态下运行,比如内存管理、进程切换等操作,故而为了保护进程控制块的内容不被用户程序破坏,操作系统定义了两种执行模式:

1.用户态;2.内核态

典型情况下, 当用户调用一个操作系统服务或中断触发系统例程的执行时,执行模式变为内核态,当系统服务返回到用户进程时,执行模式被设置为用户态。

进程创建的一些原因:

1.新的批处理作业;

2.交互登陆;

3.操作系统因为提供一项服务而创建;

4.由现有的进程派生;

进程终止的一些原因:

1.正常完成;

2.超过时限;

3.无可用内存;

4.越界(试图访问不允许访问的内存单元);

5.特权指令(进程试图使用为操作系统保留的指令);

6.父进程终止;

7.父进程请求。

进程的状态转化:

1.不考虑挂起态的五状态进程模型:

2.考虑挂起态的进程模型:

挂起的引入:

考虑没有使用虚存的系统,每个被执行的进程必须全部载入内存。假如某一时刻,所有的进程都在等待IO处理(由于IO的速度远远低于处理器),这将会导致处理器空闲,资源被浪费,解决方案是通过交换的方式,将部分阻塞的进程换出内存(放到磁盘中),虽然交换本身也是IO操作,但是通常磁盘IO相对于打印机等设备速度较快,因而此操作通常可以提高性能。所以,我们增加了挂起态:当内存中所有进程都处于阻塞态时,操作系统可以把其中一个进程置于挂起态,并将其移到磁盘中,内存中释放的空间可以被调入的另一个进程使用。之所以将挂起分为就绪/挂起和阻塞/挂起是为了判断何时应该将挂起的进程重新调入内存,当阻塞/挂起态的进程所等待的IO事件完成时,将阻塞/挂起态进程放到就绪/挂起态进程队列中,等待换入内存.

进程排队模型:

为了实现进程间的转换,需要有一个进程的排队规则,下面是两种常见的排队模型。

单阻塞队列中有两个队列,就绪队列和阻塞队列。进入系统的每个进程被放置在就绪队列中,当操作系统选择另一个进程运行时,将从就绪队列中选择,对于没有优先级的方案,这可以是是一个先进先出队列。当一个正在运行的进程被移除处理器时,它根据情况或者被终止或者被放入阻塞或者就绪队列中。最后,当一个事件发生时,所有位于阻塞队列中等待此事件的进程都将被转换到就绪队列中。多阻塞队列对单阻塞队列做了优化,即一个阻塞事件对应一个队列,当该阻塞事件发生时,位于该阻塞队列的所有进程都将进入就绪队列。

1.单阻塞队列:

2.多阻塞队列:

进程创建过程:

一旦操作系统决定基于某种原因创建一个进程,它将按照下面步骤进行:

1.给进程分配一个唯一的进程标识符;

2.给进程分配空间;

3.初始化进程控制块;

4.设置正确的连接(如果操作系统把每个调度队列都保存在链表中,则新进程必须放在就绪或者就绪挂起链表的适当位置上);

进程切换:

1.何时切换进程:

        1.中断

包括时钟中断、IO中断、内存失效(所访问的内存单元不在内存)等等

2.陷阱

异常

3系统调用

  2.进程切换过程:

1.保存处理器上下文环境;

2.更新当前处于运行态进程的进程控制块;

3.将进程的进程控制块移到相应队列;

4.选择另一进程执行;

5.更新所选择的进程控制块;

6.更新内存管理的数据结构

【操作系统】进程描述与控制

时间: 2024-11-07 19:50:59

【操作系统】进程描述与控制的相关文章

进程描述与控制随笔

进程控制块:标识符,状态,优先级,程序计数器,内存指针,上下文数据,I/O状态信息,记账信息 进程控制块是操作系统能够支持多进程和提供多处理的关键工具.可以说,进程是由程序代码和相关数据还有进程控制块组成. 模式切换与进程切换不同,发生模式切换可以不改变正处于运行态的进程状态,在这种情况下,保存上下文环境和以后恢复上下文环境只需要很少的开销. 为执行进程管理功能,操作系统维护者对每个进程的描述,或者称为进程映像,它包括执行进程的地址空间和一个进程控制块. 一个正在运行的进程可能被一个在进程外发生

进程与进程描述符(task_struct)

一. 进程 进程(Process) 计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. --------------------------------------------------------------- 释义:一段程序的执行过程 特征:动态.独立.异步.并发 结构特征

操作系统——进程

为了实现程序的并发执行,才引入进程 程序的顺序执行: (顺序性,封闭性,可再现性) 程序的并行执行,提高CPU的效率和系统吞吐率:(间断性,失去封闭性,不可再现性) 引入进程解决程序并发的问题,进程的特征: ① 结构特性,为使程序能够独立运行,应为之配置一进程控制块,即PCB(Process Control Block).而程序段.相关的数据段和PCB三部分构成进程实体.所谓创建进程,实质上是创建进程实体中的PCB,撤销进程也是撤销进程中的PCB. ② 动态性,进行的实质是进程实体的一次执行过程

操作系统-进程概念

一.定义(Process) 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位 1.进程是程序的一次执行过程,是对CPU的抽象,是正在运行的程序的抽象 2.每个进程具有独立的地址空间 3.操作系统通过调度将CPU的控制权交给某个进程 二.进程控制块PCB(Process Control Block) 又称进程描述符,进程属性,是操作系统用于管理控制进程的一个专门的数据结构,记录进程的各种属性 PCB是系统感知进程存在的唯一标志,进程与PCB是一一对应的

<操作系统>进程和线程

进程 定义: 一个正在执行的程序: 一个正在计算机上执行的程序实例; 能分配给处理器并由处理器执行的实体: 一个由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元. 进程的基本元素:程序代码和与代码相关联的数据集. 进程控制块:由操作系统创建和管理,每个进程控制块包含操作系统所需要的关于进程的所有信息,可以中断一个进程的执行,并恢复进程的执行:进程控制块是操作系统支持多线程处理和多重处理技术的重要工具.进程控制块是操作系统中最重要的数据结构.主要包含以下信息 标识符:进程的标识符,唯

进程描述符

进程描述 广义上讲,所有进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合. 进程控制块 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体. task_struct结构体 task_struct是Linux内核下的一种数据结构,它会被装载到RAM里并且包含着进程的信息,每个进程把它的信息放在task_struct结构体里task_struct包含了这些内容: 标示符:描述本进程的唯一标示符 状态:任务状

进程管理—进程描述符(task_struct)

http://blog.csdn.net/qq_26768741/article/details/54348586 当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程控制块(PCB),这个是系统为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息. 内核当中使用进程描述符task_struct. 这个task_struct就是一个定义的一个结构体,通过这个结构体,可以对进程的所有的相关的信息进行维护,对进程进行管理. 接下来我们

进程描述符task_struct

1.进程状态 [cpp] view plain copy volatile long state; int exit_state; state成员的可能取值如下: [cpp] view plain copy #define TASK_RUNNING        0 #define TASK_INTERRUPTIBLE  1 #define TASK_UNINTERRUPTIBLE    2 #define __TASK_STOPPED      4 #define __TASK_TRACED 

进程—进程描述符展开

进程-从进程描述符展开(一) 进程内核栈结构:union task_union 在../include/linux/sched.h中定义了如下一个联合结构用来创建内核栈空间. //../include/linux/sched.h union task_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE/sizeof(long)]; }: 线程描述符:struct thread_info 每一个进程都有一个