热门标签 | 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插入到就绪队列中。

摘自《操作系统》李冬梅


推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
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社区 版权所有