操作系统:精髓与设计原理 进程描述和控制

2024-05-05 18:58

本文主要是介绍操作系统:精髓与设计原理 进程描述和控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作系统必须交替执行多个进程,在合理的响应时间范围内使处理器的利用率最大

操作系统必须按照特定的策略给进程分配资源,同时避免死锁

操作系统可以支持进程间的通信和用户创建进程,它们对构建应用程序很有帮助


进程

一个正在执行中的程序

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

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

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


进程的基本元素: 程序代码 和 与代码相关的数据集

进程控制块(process control block)由操作系统创建和管理  含有充分的信息包括每个进程具备的元素  

 唯一标识符 状态    优先级  程序计数器(程序中即将被执行的下一条指令地址)  内存指针(程序代码和进程相关数据的指针)  上下文数据(进程执行时处理器的寄存器中的数据) I/O状态信息(包括显式的) 记账信息

轨迹(trace) 可以通过列出为该进程执行的指令序列描述单个进程的行为 这样的序列称为进程的轨迹

导致进程创建的原因   新的批处理作业  用户交互登录  操作系统提供服务而创建   由现有的进程派生

导致进程终止的原因   正常完成 超过时限 无可用内存  越界访问  保护错误 算术错误  等待时间超出 I/O失败  无效指令 特权指令 数据误用 操作系统干涉  父进程终止  父进程请求


五状态模型   新建态 就绪态   阻塞态 运行态 退出态

运行态 该进程正在执行

就绪态 该进程做好了准备  有机会就开始执行

阻塞态  进程在某些事件发生前不能执行

新建态  进程刚帮被创建  还未加载到操作系统的可执行进程组当中

退出态  从操作系统的可执行进程中删除



交换:把内存中某个进程的一部分或者全部移到磁盘中   (是一个磁盘I/O操作)  

操作系统就把阻塞的进程换出到磁盘中的挂起队列中(suspend queue)  当内存中没有处于就绪状态的进程时,从磁盘中换入进程

挂起态  换入    就绪态

阻塞态  换出    挂起态


挂起进程  

进程不能立即执行 

进程可能是或者不是在等待一个事件(如果是 阻塞条件不依赖于挂起条件 阻塞事件的发生不会使进程立即被执行)

为阻止进程执行,可以通过代理把这个进程置于挂起状态  代理可以是 进程自己 父进程 操作系统

除非代理显式的命令系统进行状态转移 否则进程无法从该状态中转移

导致进程挂起的原因   交换   用户请求   父进程请求  定时 其他原因


操作系统的控制结构

操作系统为了管理进程和资源 必须掌握每个进程和资源当前状态的信息

操作系统构造并维护这每个实体的信息表 (四种类型  内存表  I/O表  文件表  进程表)

处理器的执行模式  特权态(系统态 控制态 内核态)  非特权态


进程控制块中的信息可以分成三类  进程标识信息  进程状态信息  进程控制信息

进程创建   分配唯一进程标识符  给进程分配空间 初始化进程控制块  保存到操作系统中  扩充其他数据结构

进程切换   某一时刻,正在运行的进程被中断,操作系统指定另一个进程为运行态,控制权交给该进程

进程切换时机     系统时钟中断(进程执行超时) I/O中断  内存失效  陷阱(出现错误)



这篇关于操作系统:精髓与设计原理 进程描述和控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962424

相关文章

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存