操作系统笔记--进程与线程

news2024/11/19 19:40:16

1--进程

1-1--进程的定义

        进程表示一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程;

1-2--进程的组成

        一个进程由以下部分组成:① 程序的代码; ② 程序处理的数据;③ 程序计数器中的值,其指示下一条将运行的指令;④ 一组通用的寄存器的当前值、堆和栈;⑤ 一组系统资源;简而言之,进程了正在运行的一个程序的所有状态信息;

1-3--进程与程序的关系

进程与程序具有以下关系:        

        ① 程序是产生进程的基础;

        ② 程序的每次运行构成不同的进程;

        ③ 进程是程序功能的体现;

        ④ 通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序;

进程与程序的区别:

        ① 进程是动态的,程序是静态的;

        ② 程序是有序代码的集合,进程是程序的执行,进程有核心态和用户态;

        ③ 进程是暂时的,程序是永久的;进程是一个状态变化的过程,程序可以长久保存;

        ④ 进程与程序的组成不同,进程的组成包括程序、数据和进程控制块(Process Control Block,即 PCB 用于描述进程的数据结构,操作系统为每个进程都维护了一个PCB,用于保存与该进程有关的各种状态信息);

1-4--进程的特点:

进程具有以下特点:

        ① 动态性:进程可以动态地创建和结束;

        ② 并发性:进程可以被独立调度并占用处理机进行运行;(并发:一段时间内多个线程同时执行;并行:一个时刻多个线程同时执行;)

        ③ 独立性:不同进程的工作不相互影响;

        ④ 制约性:进程由于访问共享数据、资源,或者进程间同步会产生相互的制约(涉及互斥、锁等问题); 

1-5--进程控制结构

        进程控制块:表示操作系统管理控制进程运行所用的信息结合;操作系统通过进程控制块(PCB)来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志;

        使用进程控制块时,创建进程会为进程生成一个PCB,终止进程会回收其PCB,对进程的组织管理是通过对PCB的组织管理实现的;

PCB包含以下三大类信息:

        ① 进程标识信息:本进程的标识,本进程的父进程标识、用户标识等;

        ② 处理机状态信息保存区:保存进程的运行现场信息;

        ③ 进程控制信息:例如调度和状态信息、进程间通信信息、存储管理信息、进程所用资源和有关数据结构连接信息;

PCB的组织方式:

        ① 链表:同一状态的进程其PCB组成一个链表,不同状态(例如就绪、阻塞等)对应不同的链表;

        ② 索引表:同一状态的进程归入一个 index 表,不同状态(例如就绪、阻塞等)对应不同的 index 表;

1-6--进程的生命周期

进程的生命期管理包括以下部分:

        ① 进程创建:系统初始化时,用户请求创建一个新进程,正在运行的进程执行了创建进程的系统调用;

        ② 进程运行:内核选择一个就绪的进程,让它占用处理机并运行;

        ③ 进程等待:在部分情况下,进程会进入等待(阻塞)的状态,例如请求并等待系统服务时,无法立刻完成,进程会进入等待状态;启动某种操作时,无法立刻完成,进程会进入等待状态;进程需要的数据没有到达时,进程会进入等待状态;进程只能自己阻塞自己;

        ④ 进程唤醒:进程在以下情况会从等待状态被唤醒,进入唤醒状态,例如被阻塞进程需要的资源被满足时;被阻塞进程等待的事件到达时;该进程的PCB被插入到就绪队列中;进程只能被别的进程或操作系统唤醒;

        ⑤ 进程结束:进程在以下四种情形下会结束,例如自愿正常退出、自愿错误退出、强制致命错误、强制被其他进程杀死;

1-7--进程状态变化模型

进程在生命结束之前将处于并仅处于以下三种基本状态:

① 运行状态(Running):一个进程正在处理机上运行;

② 就绪状态(Ready):一个进程获得了除处理机之外的一切资源,当得到处理机时即可运行;

③ 等待/阻塞状态(Blocked):一个进程正在等待某一事件而暂停运行;

1-8--进程挂起

        进程处于挂起状态时,进程不占用内存空间,处于挂起状态的进程会映射到磁盘(外存)上;

        ​​​​​​​挂起状态有两种:阻塞挂起状态,进程在外存中等待某个事件的出现;

                ​​​​​​​        ​​​​​​​        ​​​​​​​       就绪挂起状态,进程在外存中,当进入内存后即可运行;

        ​​​​​​​挂起实质上是把一个进程从内存转移到外存中;

常见挂起状态的转换如下:

        ① 阻塞→阻塞挂起:没有进程处于就绪状态或就绪进程要求更多的内存资源时,会发生这种转换以提交新进程或运行就绪进程;

        ② 就绪→就绪挂起:当有高优先级(系统认为其很快就绪)阻塞进程和低优先级就绪进程时,系统会将这个低优先级的就绪进程挂起;

        ③ 运行→就绪挂起:对于抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统会把当前运行的进程转换为就绪挂起状态;

        ④ 阻塞挂起→就绪挂起:发生在外存中,当阻塞挂起进程由于相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程;

解挂/激活标识把一个进程从外存转到内存中,一般有以下情况:

        ① 就绪挂起→就绪:没有就绪进程或就绪挂起进程优先级高于就绪进程时,会把就绪挂起进程转换为就绪进程;

        ② 阻塞挂起→阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起进程转换为阻塞进程;

        操作系统通过PCB、定义的进程状态,基于状态队列来管理和调度不同状态的进程;不同的状态分别用不同的队列来表示(例如就绪队列、阻塞队列等);

        每个进程的PCB根据其状态会将进程加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB会从一个状态队列中脱离出来,加入到另一个队列当中;

2--线程

未完待续!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP流行框架的报错页面,你见过那些?

在PHP开发过程中,使用框架能够帮助我们更快速、高效地完成项目开发。但是,即使使用了框架,我们还是难免会遇到各种报错。而当我们在开发阶段或调试过程中遇到报错时,框架提供的错误页面可以给我们带来很大的帮助。PHP常用的流行框…

网易一面:如何设计线程池?请手写一个简单线程池?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如极兔、有赞、希音、百度、网易的面试资格,遇到了几个很重要的面试题: 如何设计线程池? 与之类似的、其他小伙伴遇到过的问题还有: …

Reinhart FoodService的EDI需求详解

Reinhart FoodService是一家成立于1972年的美国食品服务公司,隶属于上市公司Performance Food Group。Reinhart FoodService为餐馆、酒店、医院、学校等各类机构提供广泛的食品选择和相关服务,产品包括新鲜的肉类、禽类、海鲜、奶制品、烘焙用品、蔬菜和…

迪赛智慧数——柱状图(象形动态图):不同性别消费者点外卖频率

效果图 我国超4亿人叫外卖,你多久点一次外卖? 据数据显示,30.7%男性消费者每周点3-4次外卖,34.3%的女性每周点3-4次,明显女性比男性点外卖频率多。而每周点1-2次外卖中均超过80%。 数据源:静态数据 { "column&…

MIT开源协议,多端适用的租房小程序,带完整的管理员后台

一、开源项目简介 多端适用的租房小程序,带管理员后台。是一个完整的项目,可以直接使用。 二、开源协议 使用MIT开源协议 三、界面展示 部分截图 1. 前台截图 2. 后台截图 四、功能概述 1、使用Uniapp开发的前台,基于 Vue.js 开发所有…

2 种方式在流水线中集成 DAST,动态保护应用程序安全

💡 如何在流水线中集成与应用 DAST ? 近日,在「DevSecOps软件安全开发实践」课程上,极狐(GitLab) 前端工程师钱堃、极狐(GitLab) 高级后端工程师张林杰,展开了关于 DAST 的概念、必要性、优缺点的内容分享,…

如何完美实现数据可视化?

为什么要可视化数据? 在工作中,无论你在哪个场景,你都会接触到数据,需要表达出来。数据可视化的作用是通过结合图表和数据来更好地传达业务信息。目前,大多数公司正在逐步从传统的流程管理过渡到基于数据的管理。数据可视化可以…

明明花钱上了ERP,为什么还要我装个MES系统

目前, ERP系统依旧是很多制造企业的选择。据统计,ERP系统的应用已经达到70%以上,但是在车间的应用, MES系统的应用比例并不高。那么,为什么现在很多企业又都选择再上个MES呢? MES系统是一个面向…

高性能HMI 走向扁平化

个人计算机作为图形用户界面(GUI)在自动化中已经使用了30多年。在那段时间里,从技术、术语、功能到用于创建接口的标准和指南,发生了许多变化。 PC 技术的飞速发展,特别是图形显示,用户界面的技术发展导致了…

分享8款开源的自动化测试框架

在如今开源的时代,我们就不要再闭门造车了,热烈的拥抱开源吧!本文针对性能测试、Web UI 测试、API 测试、数据库测试、接口测试、单元测试等方面,为大家整理了github或码云上优秀的自动化测试开源项目,希望能给大家带来…

PyQt5零基础入门(二)——主窗口的显示与退出

系列文章目录 PyQt5与QtDesigner的安装及测试 创建主窗口和状态栏 系列文章目录PyQt5与QtDesigner的安装及测试 前言主窗口代码运行结果解释 窗口居中代码解释 退出窗口代码运行结果解释 前言 本文主要介绍了如何使用PyQt5创建第一个主窗口,并向其中添加状态栏和消…

Contest3137 - 2022-2023-2 ACM集训队每月程序设计竞赛(1)五月月赛

A 1! 5! 46 169 有一种数字,我们称它为 纯真数。 它等于自身每一个数位的阶乘之和。请你求出不超过n的所有 纯真数。(注:纯真数不含有前导0)数据范围1e18 纯真数只有四个,注意0!1 1,2,145,40585 int n;cin>>n;int res[]{…

【Java 并发编程】一文详解 Java volatile关键字

一文详解 Java volatile关键字 1. JMM(Java Memory Model)1.1 现代计算机的内存模型1.2 JMM 简介1.3 JMM 的三大特性1.4 指令重排1.5 happens-before1.5.1 happens-before 规则1.5.2 总结 1.6 as-if-serial 2. volatile 关键字2.1 volatile 的内存语义2.…

mssql 中msdb 权限说明

msdb MSDB是Microsoft SQL Server中一个系统数据库,它存储了SQL Server代理作业,备份和还原,数据库维护计划,邮件,日志和数据库相关的其他信息。MSDB数据库包含了许多系统表和视图,例如sysjobs、sysjobhis…

什么是网络——计算机网络发展史

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

面了个4年的测试,自动化测试都不会,真是醉了...

最近面试了一个 4 年经验的软件测试工程师,简历和个人介绍都提到了精通自动化测试和性能测试,于是我就问了几个自动化测试方面的问题: 你使用过哪些自动化测试工具?它们之间有什么区别? 请解释一下 TestNG 框架&#…

分享丨从事设计10年后转行产品经理,总结6种工作差异

作者从设计转行到产品管理,在获得关于产品策略方面更大的话语权同时,也失去了专注于工作本身的自由。经历了角色转变这一过程后,分享了她对于这两个角色在日常生活中差异的些许反思,同时也鼓励大家在转变角色前,先深入…

增强型语言模型——走向通用智能的道路?!?

增强型语言模型——走向通用智能的道路?!? FesianXu 20230325 at Baidu Search Team 前言 继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chat…

【react从入门到精通】React父子组件通信方式详解(有示例)

文章目录 前言React技能树通过 props 实现父子组件通信通过 state 实现父子组件通信通过回调函数实现父子组件通信使用 React Context 实现组件通信总结写在最后 前言 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信…

详解SpringBoot外部化配置

SpringBoot外部化配置(基于2.4.0以后) Spring Boot可以让你将配置外部化,这样你就可以在不同的环境中使用相同的应用程序代码。 你可以使用各种外部配置源,包括Java properties 文件、YAML文件、环境变量和命令行参数。 属性值可…