进程模型
进程的概念
进程的背景
多道程序设计(MULTIPROGRAMMING)
单一程序计算器(单一程序计数器指的是在单核处理器或单个线程中只有一个程序计数器)(顺序性;封闭性;可再现性)与多道程序计算器
c是它允许在同一时间并发执行多个程序或线程,操作系统以时间片为单位,轮流为每个进程服务,每次服务一个时间片
允许多个程序同时进入内存并运行
目的 → 提高系统效率
并发环境与并发程序
特征: 间断性 失去封闭性 不可再现性性
并发环境:
一段时间间隔内,单处理器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的
Topic1
并发程序:
在并发环境中执行的程序
进程的概念
进程( Process )/任务(Task)的定义:
进程实体的运行过程,是系统进行资源分配和调度的 独立单位(进程是对CPU的抽象);
为什么引出进程这一概念
(为了解决bug不可再现)为了控制程序的并发执行,描述程序在并发执行 时对系统资源的共享,所需的一个描述程序执行 时动态特征的概念
对于进程这一概念的进一步解释
具有独立功能的程序在某个数据集上的一次执行过程(运行多次多个进程)
程序及数据在处理机上顺序执行所发生的活动的抽象
CPU 的抽象,将一个CPU变幻成多个虚拟的CPU
系统资源以进程为单位分配,如内存、文件、......(每个具有独立的地址空间)
操作系统将CPU调度给需要的进程(进程是cpu调度的单位)
相关问题
1.如何查看当前系统中有多少个进程?(进程是有限的&&并发是有限的,因为系统资源有限;存储空间有限)答:windows 任务管理器;linux PS命令;
进程的分类与层次结构
进程的分类
根据管理进程角色和目的分类
系统进程
系统进程是操作系统的一部分,用于管理和维护系统的正常运行;
用户进程
用户进程是由用户创建的,用于执行用户的应用程序或任务;
根据进程的执行特征分类
前台进程
前台进程直接与用户交互,并且通常会占用屏幕或其他资源,用户能够看到它们的执行过程;
后台进程
后台进程在后台默默地运行,不直接与用户交互,并且不占用屏幕或其他资源;
根据进程的执行特征分类
CPU密集型进程
大部分时间内需要大量的CPU计算资源。这可能涉及复杂的算法、大规模数据处理或其他需要大量计算的任务。在执行过程中,这些进程通常会长时间占用CPU,而在等待I/O操作时,CPU利用率相对较低。
I/O密集型进程
I/O密集型进程更多地依赖于输入/输出操作,例如文件读写、网络通信等。这些进程在执行时可能会频繁地等待I/O操作完成,而在等待的过程中,CPU利用率相对较低。性能的瓶颈通常出现在I/O操作上,而非CPU计算。
进程的层次结构(进程的层次结构指的是在操作系统中进程之间可以形成的父子关系或者多层级的组织结构)
在UNIX系统中,进程家族树以`init`进程为根。`init`是UNIX系统的第一个用户级进程,其PID(进程标识符)通常为1。所有其他进程都是`init`进程的后代,直接或间接。`init`进程负责启动和管理系统中的其他进程,并在系统启动时作为第一个进程启动。
在Windows系统中,虽然没有类似于UNIX中`init`的特定进程作为根,但是所有进程在系统中都处于相同的地位。Windows系统采用了不同的进程管理模式,其中每个进程都有其自己的进程标识符(PID),并且可以独立运行和管理。没有一个单独的进程起到类似于UNIX中`init`的特殊角色。
总的来说,UNIX和Windows系统中进程的管理方式有所不同,但它们都允许进程之间存在父子关系或者组织结构,从而形成一种层次结构。
进程的特征
进程 VS 程序:
类似练武的人和武林秘籍的关系
并发性:进程更能准确刻画并发,而程序不能
动态性:程序是静态的,进程是动态的。进程有生命周期的,有诞生有消亡,是短暂的; 程序是相对长久的
独立性:一个程序可对应多个进程,进程实体是一个独立运行、独立获得资源、独立调度的基本单位
异步性:进程具有创建其他进程的功能,多个进程是按异步方式运行的,以不可预知的速度向前推进,应保证结果的可再现性
进程控制块(Process Control Block, PCB)
系统利用PCB来控制和管理进程:
又称 进程描述符、进程属性
系统在OS核心为了管理进程定义/设置的一个专门数据结构
记录进程的各种属性,描述进程的动态变化过程(当前情况及管理进程运行的全部信息)
PCB是系统感知进程存在的唯一标志
进程与PCB11对应
作为独立运行的基本单位,实现并发(间断性运行方式)
提供进程管理和调度所需信息,实现进程同步与通信
进程与PCB是一一对应的
进程表:所有进程的PCB集合
大小固定,决定了开发度
PCB的内容
进程控制与调度信息
当前状态(进程状态,作为进程调度与对换的依据)
优先级(priority)
运行统计信息(执行时间、页面调度)
CPU 使用情况;内存占用情况;I/O 操作情况;网络使用情况;系统调用情况;错误和异常情况;进程间通信情况;文件系统使用情况......
事件,是进程由执行态转为阻塞态所等待发生的事件,即阻塞原因;
代码执行入口地址
指的是程序在内存中开始执行的位置,通常是指程序的起始指令所在的内存地址。这个地址是程序在运行时被加载到内存中后所处的位置,是程序执行的起点。操作系统加载可执行程序时需要知道这个地址,以便正确地开始执行程序。
程序的磁盘地址
指的是程序在存储介质(如硬盘、固态硬盘等)上的物理存储位置。这个地址是文件系统中程序所在路径的表示,用于唯一标识程序在磁盘上的位置。操作系统需要根据这个地址找到程序所在的文件,并将其加载到内存中以执行。
进程间同步和通信
进程间同步:进程间同步是指多个进程之间为了协调执行顺序或共享资源而进行的操作。这些操作包括等待其他进程完成某项任务、保证多个进程按照一定的顺序执行或者确保共享资源的互斥访问。
进程间通信:进程间通信是指不同进程之间传递数据或信息的过程。这些进程可能运行在同一台计算机上,也可能分布在不同的计算机上。通信可以是单向的或双向的,可以是同步的或异步的
进程的消息队列指针
进程的消息队列指针是指在操作系统中用于管理进程间通信的消息队列的数据结构中的指针。消息队列是一种进程间通信的方式,允许不同进程之间通过在队列中发送和接收消息来进行通信。
进程的队列指针
本进程所在队列中的下一个进程的PCB首地址
所拥有的资源和使用情况
虚拟地址空间的状况
打开文件列表
进程描述信息
进程标识符(process ID),唯一,通常是一个整数
进程名,通常基于可执行文件名,不唯一
用户标识符(user ID)
进程组关系
CPU现场信息(进程不运行时,操作系统要保存哪些硬件执行状态呢?)(当程序不运行时,下cpu)
寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、栈指针)
指向该进程页表的指针
Topic1
进程管理:
寄存器;程序计数器;程序状态字;堆栈指针;进程状态;优先事项;计划参数;进程ID;父进程;进程组;信号;进程开始的时间;使用的CPU时间;儿童CPU时间;下次报警时间
内存管理:指针指向文本段;指针指向数据段;指针指向堆栈段
文件管理:根目录;工作目录;文件描述符;用户ID;组ID
操作系统给每个进程都分配了一个地址空间?
变量的值不同,但地址相同;(每一个进程是独立的,有自己的进程id,但是给进程的是一个虚拟的空间,所有的地址是一个相对地址;)
进程虚拟地址空间
进程状态与转换
进程的三种基本状态
执行态/运行态(Running):占有CPU,并在CPU上运行
就绪态(Ready):已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
等待态/阻塞态(Waiting/Blocked)(又称封锁态、睡眠态):因等待某一事件而暂时不能运行;如: 等待读盘结果
进程的其它状态
创建(new)
● 已完成创建一进程所必要的工作- PID、PCB
● 但尚未同意执行该进程- 因为资源有限
终止(Terminated)
终止执行后,进程进入该状态
可完成一些数据统计工作
资源回收
挂起(suspend)
用于调节负载
进程不占用内存空间,其进程映像交换到磁盘上
进程状态及转换(三状态模型之间的转换)
触发事件以及五种状态之间的转换
就绪→运行:调度程序选择新的进程运行
运行→就绪:进程时间片用完,高优先级进程进入就绪状态,抢占正在运行的进程
阻塞→就绪:等待的事件发生了
运行→阻塞:进程等待某个事件发生时
引入挂起后的五状态进程模型
Topic1
(什么时候)挂起:终端用户的需要;父进程请求;负荷调节的需要;操作系统的需要
七状态进程模型
Topic1
cpu上绝对不会出现没有进程运行的情况;因为进程中有一个”进程idle“通常指的是系统中处于空闲状态的进程。在操作系统中,空闲进程是指没有正在执行任何任务或没有分配到任何CPU时间的进程。这些进程通常在系统空闲时运行,以便在需要时执行后台任务或等待处理其他请求。空闲进程对于系统性能的优化和资源利用是非常重要的。
进程的控制
进程控制操作
原子操作(atomic)
创建、撤消进程以及完成进程各状态之间的转换,由具有特定功能的原语完成
原语(primitive): 不可分割性: 完成某种特定功 能的一段程序,是不可分割 的基本单位 不可中断性: 原语的执行必须 是连续的,执行过程中不允 许被中断 常驻内存: 原子操作在内核态 执行
进程创建:例如:用户登录 作业调度 提供服务 应用请求
申请空白PCB,分配唯一标识及进程控制块
为进程分配其运行所需资源(如:地址空间)
初始化进程控制块PCB
设置初始化默