热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

操作系统(一)处理器管理

进程控制并发控制环境中:创建进程,分配资源;撤销已结束的进程;控制正在进行的程序状态的改变。进程同步为了使进程有条不紊

进程控制

并发控制环境中:创建进程,分配资源;撤销已结束的进程;控制正在进行的程序状态的改变。


进程同步

为了使进程有条不紊的执行,程序设置进程同步机制,进程同步的主要任务就是对众多进行运行进行协调:

方式有两种,分别是

同步

相互合作的进程,由同步机构对它们的执行次序进行协调,前一个进程结束了,后一个进程才开始,前一个进程不结束,后一个进程就不能开始,在这种进程之间合作的执行关系叫同步。

进程同步实现的方法中 最常用的是 信号量机制

互斥

进程在对临界资源进行访问时,采用互斥方式,也就是当一个进程访问临界资源时,另一个要访问该资源的进程必须等待,当占用资源的进程释放资源后,其他进程才能获取临界资源,这种进程间的相互 制约方式叫做互斥。

进程互斥最常用的方法是设置锁,通过加锁、解锁实现互斥。


进程通信

多个进程需要相互配合来完成任务,所以进程间需要通信,进程通信的任务就是完成进程间的信息交换。

同一台计算机系统采用直接通信方式,源进程利用发送命令直接将消息发送到目标进程的消息队列上,然后由目标进程利用接收命令从消息队列里取出消息。

不在同一台计算机系统,由源进程利用发送命令到一个专门存放消息的中间实体中,然后目标进程利用接收命令从中间实体中取出消息。


处理器调度

高级调度(作业调度)将外存上处于后备队列中的那些作业调人内存,并为它们创建进程,分配资源,然后将创建的进程排在就绪队列上,准备在执行。

低级调度(进程调度)按照某种原则决定就绪队列中哪个进行应该获得处理机,在由分配程序执行处理机分配该进程的具动作。进程调度是操作系统中 最基本的调度。

中级调度,负责内外存之间的进程对换,以解决内存紧张的问题,提高内存的利用率和系统吞吐量

 


进程的描述

概念:一个数据结构以及能在其上进行操作的一个程序

或者说一个程序在一个数据集合上执行的过程,是操作系统资源分配和调度的一个独立单位。

一个程序在不同的数据集合上的运行,乃至一个程序在同一数据集合上的多次运行都是不同的进程。

进程的状态转换

就绪状态按照调度算法,获得处理器资源就会进入执行状态

运行状态时间片就会进入就绪状态,若是被I/O请求中断或者等待某一个资源就会进入阻塞状态

等待状态如果获得资源或者完成I/O操作就会进入就绪状态,等待下一次调度。

 

挂起(静止就绪状态)

未被挂起的称为活动就绪状态


进程控制

进程控制的主要任务

为作业程序创建进程、撤销已结束的进程以及控制进程在运行过程中的状态转换

进程控制块PCB

 存放进程的管理和控制信息的数据结构称为进程控制块。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。


进程控制块组成

进程标识信息(内部和外部标识)

进程名绘制序号

说明信息(进程调度信息)

进程状态

进程优先权

进程等待原因

……

现场信息(处理器状态信息)

 

通用寄存器内容

指令寄存器内容

……

管理信息(进程控制信息)

程序和数据的地址

队列指针

进程同步和通信机制

资源清单

链接指针

……

其他信息

……

进程的创建

只有进程才能得到执行,因此程序想要运行,必须为之创建进程,进程创建是操作系统执行程序的需要或者用户或进程要求创建一个新的进程。

引起创建进程的主要事件


  1. 用户登录:用户在终端键入登录命令,合法用户系统为之建立进程,放入就绪队列
  2. 作业调度:批处理系统,作业调度程序按照一定的算法调度某个作业时,便将该作业装入主存,为其分配资源,创建进程,放入就绪队列
  3. 提供服务:运行中用户提出某种请求,系统会专门创建进程为用户提供服务,如打印
  4. 应用请求:例如某程序需要不断从键盘读入数据,然后进行相应处理,处理结果以表格形式显示到屏幕,该进程会分别创建键盘输入进程、表格输入进程来完成相应地工作。

进程创建的处理过程:使用创建原语,按照以下步骤创建进程

为新进程分配唯一的进程标识符,从PCB队列申请一个空闲的PCB;

为新进程的程序和数据,以及用户栈分配相应地主存空间以及其他资源;

初始化PCB中的相应信息,如标识信息、处理信息、进程信息等;

如果就绪队列可以纳入新进程,便将新进程纳入到就绪队列中。

进程的撤销

引起进程撤销的事件: 


  1. 进程正常结束
  2. 进程异常结束,如越界错误、超时故障、非法指令、运行超时、等待超时、算数运算错误、I/O故障等。
  3. 进程应外界的请求而终止运行,例如操作或者操作系统要求父进程干预或者父进程结束等。

进程撤销的过程:调用进程终止原语,按照下列步骤终止进程


  1. 根据终止进程的标识符,从PCB集合中检索该进程的PCB,读出该进程的状态;
  2. 若该进程处于运行状态,则立即终止该进程的运行;
  3. 如果该进程有子孙进程,还要将子孙进程终止;
  4. 将该进程所 占用的资源回收,归还给父进程或者操作系统;
  5. 将终止进程的PCB从所在队列中移出,撤销该进程的PCB,并将其加入到空闲队列。

 

进程与线程的管理
1,进程完成指派工作,正常终止。 
2,由于出现错误,异常终止。 
2,父(或者祖先)进程的要求被终止。

进程的等待

引起进程等待的事件


  1. 请求系统服务:正在运行的程序,请求系统提供服务时,例如申请打印机,但申请的资源正在被其他资源占用,该进程只能处在等待状态;
  2. 新数据尚未到达:如果一个进程需要另外一个进程提供数据后才能继续运行,在所需数据到达之前,只能处于等待状态。
  3. 无新工作可做

处理过程:调用进程等待原语,按照以下步骤阻塞指定进程

立即停止执行该进程;


  1. 修改PCB中的相关信息,把PCB中运行状态又运行改为等待,并填入等待原因,以及进程的各种状态;
  2. 把PCB插入到等待队列,根据等待队列的组织方式,把等待进程的PCB插入到等待队列中;
  3. 转调度程序重新调度,运行就绪队列中其他进程。

进程的唤醒

引起进程唤醒的事件


  1. 请求系统服务得到满足
  2. 启动某种操作完成
  3. 新数据已到达
  4. 有新工作可做

进程唤醒的过程:调用进程唤醒原语按照下列步骤唤醒指定进程


  1. 从等待队列中找到该进程;
  2. 修改该进程PCB控制块中的相关内容,把等待状态改为运行状态,删除等待原语等;
  3. 把PCB插入到就绪队列中,按照就绪队列的组织方式,把唤醒的PCB插入到就绪队列中。

摘自《操作系统》李冬梅


推荐阅读
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
author-avatar
书友48058773
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有