【王道·操作系统】第二章 进程管理【未完】

news/2024/5/20 11:19:42 标签: 算法, 死锁, pcb工艺, 安全性测试, 极限编程

一、进程的基本概念

1.1 进程的概念

  • 程序:静态的,存放在磁盘里的可执行文件,是一系列的指令集合
  • 进程Process:动态的,是程序的一次执行过程

1.2 进程的组成

  • 数据结构PCB(process control block),即进程控制块
    1. PID(进程ID,process ID:os为进程分配的唯一的、不重复的号,是进程存在的唯一标志)
    2. UID(进程所属用户:基本进程描述信息,可以让os区分各个进程)
    3. 分配的资源(内存、I/O设备、使用那些文件等:用于实现os对资源的管理)
    4. 运行情况(CPU运行时间、磁盘使用情况、网络流量使用情况:用于实现os对系统进程的控制、调度)
  • 一个进程实体(进程映像)由PCB、程序段、数据段组成,进程实体反应了进程在某一时刻的状态
  • 进程是动态的,进程实体(进程映像)是静态的
  • 进程是进程实体的运行过程,是系统进行资源分配和调度(os让进程在CPU上运行)的独立单位
    在这里插入图片描述

1.3 进程的特征

  • 动态性(最基本特性):进程是程序的一次执行过程,是动态地产生、变化和消亡的
  • 并发性:内存中有多个进程实体,各进程可并发执行
  • 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
  • 异步性:各进程按各自独立的、不可预知的速度向前推进操作系统要提供“进程同步机制”来解决异步问题
  • 结构性:每个进程都会配置一个PCB;结构上看,进程由程序段、数据段、PCB组成

1.4 进程的状态

  • 三种基本状态:
    1. 运行态Runing:占有CPU,并在CPU上运行
    2. 就绪态Ready:已具备运行条件,但没有空闲CPU暂时不能运行
    3. 阻塞态/等待态Waiting/Blcoked:因等待某一事件而暂时不能运行
  • 其他两种状态:
    1. 创建态/新建态New:进程正在被创建,os为进程分配资源、初始化PCB
    2. 终止态/结束态Terminated:进程正从系统中撤销,回收进程拥有的资源、撤销PCB
  • 进程PCB中有变量state表示当前状态
    在这里插入图片描述

1.5 进程的组织方式

  • 链式方式:
    1. 按照进程状态将PCB分为多个队列:执行指针、就绪队列指针、阻塞队列指针(等待打印机的阻塞队列、等待磁盘的阻塞队列…)
    2. 操作系统持有指向各队列的指针
  • 索引方式:
    1. 根据进程状态不同,建立几张索引表:执行指针、就绪表指针、阻塞表指针
    2. 操作系统持有指向各索引表的指针

二、进程的行为

进程控制会导致进程状态的转换,无论哪个进程控制原语,要做的无非三类事情:

  • 更新PCB中的信息
    1. 所有的进程控制原语一定都会修改进程状态标志
    2. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    3. 某进程开始运行前必然要恢复期运行环境
  • 将PCB插入合适的队列
  • 分配/回收咨源

2.1 进程控制的基本概念

  • 进程控制的主要功能:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程转换等功能
  • 如何实现进程控制?原语
    1. 原语的执行具有原子性,即执行过程一气呵成、期间不允许被中断
    2. 通过“关中断指令”和“开中断指令”这两个特权指令实现其原子性

2.2 进程控制相关的原语

2.2.1 进程的创建

在这里插入图片描述

2.2.2 进程的终止

在这里插入图片描述

2.2.3 进程的阻塞与唤醒

在这里插入图片描述

2.2.4 进程的切换

在这里插入图片描述

2.3 进程通信IPC

  • 进程间通信Inter-Process Communication,IPC:两个进程之间产生数据交互
  • 进程通信需要操作系统支持:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

2.3.1 共享存储

  • 基于数据结构的共享
  • 基于存储区的共享

2.3.2 消息传递

  • 直接通信方式
  • 间接通信方式

2.3.3 管道通信


http://www.niftyadmin.cn/n/362704.html

相关文章

Spring Cloud Alibaba 完整使用及与各中间件集成

目录 前言 官方中文文档 使用版本 spring 中间件 使用到的组件与功能 环境安装 虚拟机 nexus nacos 集成过程 工程搭建 父工程搭建 子工程 服务集成 nacos集成 配置文件 服务注册与发现-discovery 服务注册 启动 服务发现 测试 配置管理-config 新增配…

【Netty】 工作原理详解(十一)

文章目录 前言一、Netty 模型二、代码示例2.1、引入Maven依赖2.2、服务端的管道处理器2.3、服务端主程序2.4、客户端管道处理器2.5、客户端主程序2.6、测试运行 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二&…

外包实在是太坑了,干了三年,感觉人都废了

先说一下自己的情况,专科生,19年通过校招进入杭州某个外包软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

【Flutter 工程】005-代码分离实践:flutter_hooks functional_widget

【Flutter 工程】005-代码分离实践:flutter_hooks & functional_widget 文章目录 【Flutter 工程】005-代码分离实践:flutter_hooks & functional_widget一、概述1、Flutter “嵌套地狱”2、代码分离实践 二、实践1、安装 flutter_hooks & f…

docker idea直接部署到腾讯云镜像服务

首先创建一个Dockerfile 编写Dockerfile的信息 FROM java:8 MAINTAINER clarkshixxx.com RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai >/etc/timezone ENV ACTIVE"pre" ENV loggingpath"/zhibo/logs"…

手持式网络性能测试仪应用于哪些领域及可以完成什么工作?

首先明辰智航国产网络一点通有千兆和万兆以手持式网络性能测试仪,两款仪器可以应用于以下领域: 电信运营商:用于测试网络质量、信号强度、带宽、时延、丢包率等参数,以便优化网络性能和提高用户满意度。 企业网络管理&#xff1a…

使用压缩包安装jdk多版本并能灵活切换

使用压缩包安装jdk多版本并能领过切换 1.下载2.解压包到指定位置3.使用pdate-alternatives 进行版本切换管理3.1. jdk173.2. jdk1.8 3.切换版本4.解决JAVA_HOME环境变量识别的问题 1.下载 官网的下载地址: 下载地址: jdk17: jdk1.8在当前页面的下面: …

Spring的Bean的作用域

Spring的Bean的作用域 Spring的Bean的作用域包括以下几种: (1)singleton:单例模式,一个BeanFactory有且仅有一个实例。(2)prototype:原型模式,每次从BeanFactory获取Bea…