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

进程及其实现

一、进程的定义1、进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位2、可以用来共享资源又能描述程序并发为什么要引入进程概

一、进程的定义

1、进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位

2、可以用来共享资源又能描述程序并发

 

为什么要引入进程概念

1、刻画程序的并发性:程序是并发执行的,这是由于资源共享和竞争问题,程序自身只是计算任务的指令和数据的描述,是静态的,进程是动态描述

2、共享性:可重入程序

二、

进程三态模型及其转换

 

进程五态模型

进程的挂起?

 为了让某些进程暂时不参与低级调度,释放它占有的资源以平滑系统负荷的目的而需引入挂起态;

 

 

三、进程上下文以及进程的切换

进程上下文:进程物理实体以及支持进程运行的环境

                     组成:

                                  用户级上下文

                                  系统级上下文

                                   寄存器上下文  

当进程发生切换的时候:进程上下文也必须发生切换

进程控制块PCB:用于记录和刻画进程状态以及有关信息的数据结构,包括进程运行时的状态以及让出处理后的状态以及断点等信息(三类信息:标识信息、现场信息、控制信息)

 

进程上下文的切换

概念:让出处理器,保存原来老进程的上下文而装入被保护了的新的进程上下文

具体步骤:

1、保存被中断进程的处理器现场信息

2、修改被中断进程的进程控制块的有关状态

3、被中断进程的PSW放入相关队列

4、选择要运行的进程

5、修改要运行的进程的PSW

6、根据被选中进程设置操作系统用到的地址转换和存储保护信息

7、恢复处理器的现场

 

四、进程的创建、撤销、

(一)进程的创建

1、从PCB池中,申请一个空闲的额PCB,为进程分配唯一的进程标识符

2、为新进程的进程映像分配地址空间

3、分配除了内存之外的其他资源

4、初始化PCB

5、设置为 就绪态 

(二)进程的撤销

1、撤销进程的标识符

2、收回进程的资源

3、如果有子进程的话,先撤销他的子进程

4、回收PCB

(三)进程的阻塞

1、停止进程的运行,保存信息到PCB中

2、修改PCB有关内容,如修改状态 从就绪到等待

3、去调度其他进程

(四)、进程的唤醒

1、从等待队列中移出进程

2、修改PCB中的状态

3、判断当前进程与正在运行进程的PCB,看是否抢占处理机


推荐阅读
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 本文详细介绍了进程、线程和协程的概念及其之间的区别与联系。进程是在内存中运行的独立实体,具有独立的地址空间和资源;线程是操作系统调度的基本单位,属于进程内部;协程则是用户态下的轻量级调度单元,性能更高。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 题目描述:计算从起点到终点的最小能量消耗。如果下一个单元格的风向与当前单元格相同,则消耗为0,否则为1。共有8个可能的方向。 ... [详细]
  • 深入解析Python进程间通信:Queue与Pipe的应用
    本文详细探讨了Python中进程间通信的两种常用方法——Queue和Pipe,并通过具体示例介绍了它们的基本概念、使用方法及注意事项。 ... [详细]
  • top 命令是一个强大的工具,可以实时动态地监控系统的整体运行状况。它整合了多种信息,提供了一个全面的系统性能和运行信息视图。通过 top 命令的交互界面,用户可以使用热键进行各种管理操作。 ... [详细]
  • 前言:由于Android系统本身决定了其自身的单线程模型结构。在日常的开发过程中,我们又不能把所有的工作都交给主线程去处理(会造成UI卡顿现象)。因此,适当的创建子线程去处理一些耗 ... [详细]
  • Java中的引用类型详解
    本文详细介绍了Java中的引用类型,包括强引用、软引用、弱引用和虚引用的特点和应用场景。 ... [详细]
  • 本文详细介绍了Sleep函数的基本概念、使用方法及其背后的实现原理。适合对Sleep函数的使用和实现感兴趣的开发者阅读。通过本文,您将了解如何在不同操作系统中使用Sleep函数,以及其在多线程编程中的重要性。 ... [详细]
  • SDWebImage第三方库学习
    1、基本使用方法异步下载并缓存-(void)sd_setImageWithURL:(nullableNSURL*)urlNS_REFINED_FOR_SWIFT;使用占位图片& ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • 本文详细介绍了如何对一个整数的二进制表示进行逆序操作。通过多种方法,包括直接法、查表法和分治法,帮助读者全面理解和掌握这一技术。 ... [详细]
author-avatar
干将stambach_611
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有