当前位置: 首页 > news >正文

操作系统(一): 进程和线程,进程的多种状态以及进程的调度算法

文章目录

  • 前言
  • 一、进程和线程
    • 1. 进程
    • 2. 线程
  • 二、进程和线程的区别(面试常问)
  • 三、进程调度算法
    • 3.1. 批处理系统
    • 3.2. 交互式系统
      • 3.2.1 时间片轮转
      • 3.2.2 优先级调度
      • 3.2.3 多级别反馈队列
    • 3.3. 实时系统
  • 四、进程的状态
  • 五、进程同步
    • 5.1 什么是进程同步
    • 5.2 进程同步应该遵循的几点原则


前言

本文转载于cyc大佬的cs notes,在摘抄的过程中添加了部分自己的理解

一、进程和线程

1. 进程

进程是资源分配的基本单位。
进程控制块(Process Control Block,PCB)描述进程的基本信息和运行状态,所谓的创建进程和撤销进程都是针对PCB的操作。

2. 线程

线程是独立调度的基本单位,一个进程中可以存在多个线程,他们共享进程资源。

比如QQ和浏览器是两个不同的进程,浏览器进程里面存在很多线程,比如http请求线程,事件响应线程,渲染线程等等,线程的并发执行使得在浏览器中点击一个新的连接从而发起http请求的时候,浏览器还可以响应用户的其他事件。
在这里插入图片描述

二、进程和线程的区别(面试常问)

  1. 是否拥有资源
    进程是拥有资源的,其是资源分配的基本单位。但是线程是不拥有资源的,线程调用的是进程的基本资源。

  2. 调度
    线程是独立调度的基本单位,在同一个进程中,线程的切换不会引起进程的切换,但是从一个进程中的线程切换到另外一个进程中的线程时候,会引起进程的切换。

  3. 系统开销
    在创建或者撤销进程的时候,系统都要为其分配或者回收资源,比如内存空间,IO设备等等,付出的开销远远大于创建线程的开销。类似地,在进行进程切换的时候,涉及到当前执行进程CPU环境的保存和新调度的进程的CPU环境的设置,但是切换线程只需要保存和设置少量寄存器内容,开销很小。

  4. 通信
    线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助IPC

三、进程调度算法

根据不同类型的操作系统,进程调度算法也不同,因此需要分操作系统的类型来展开讨论;

3.1. 批处理系统

该系统中不存在太多的用户操作,因此在该系统中调度算法的目标是保证吞吐量和周转时间

  • 先来先服务(FCFS)
    非抢占式的调度算法,按照请求的顺序进行调度,有利于长作业,但不利于短作业。

  • 短作业优先(SJF)
    非抢占式的调度算法,按估计运行时间最短的顺序进行调度。

长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。

  • 最短剩余时间优先(SRTN)
    抢占式的调度算法,最短作业优先SJF的抢占式版本,按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。

3.2. 交互式系统

在该系统中,存在大量的用户交互操作,因此在该系统中调度算法的核心目标是快速进行响应。

3.2.1 时间片轮转

  1. 将所有就绪进程按 FCFS 的原则排成一个队列。
  2. 每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。
  3. 当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。
  4. 重复2

因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。而如果时间片过长,那么实时性就不能得到保证。

3.2.2 优先级调度

为每个进程分配一个优先级,按优先级进行调度。

为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。

3.2.3 多级别反馈队列

一个进程需要执行 100 个时间片,如果采用时间片轮转调度算法,那么需要交换 100 次。

多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,…。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。

每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。

可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。
在这里插入图片描述

3.3. 实时系统

实时系统的进程调度算法在面试中考察的较少,在这不讨论

四、进程的状态

可分为三态模型和五态模型。
三态模型:
在这里插入图片描述
五态模型:
在这里插入图片描述
请注意以下若干问题:

  • 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。
  • 阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。

五、进程同步

5.1 什么是进程同步

多个并发进程在一些关键点上可能需要互相等待或互通消息,这种相互制约的等待或互通消息称为进程同步。

5.2 进程同步应该遵循的几点原则

  • 空闲让进:其他进程均不处于临界区则允许进程进入;
  • 忙则等待:已有进程处于其临界区则等待;
  • 有限等待:等待进入临界区的进程不能"死等";
  • 让权等待:不能进入临界区的进程,应释放CPU(如转换到等待状态)
  • 在这里补充一下临界区的概念:对临界资源进行访问的那段代码称为临界区。为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。

相关文章:

操作系统(一): 进程和线程,进程的多种状态以及进程的调度算法

文章目录前言一、进程和线程1. 进程2. 线程二、进程和线程的区别(面试常问)三、进程调度算法3.1. 批处理系统3.2. 交互式系统3.2.1 时间片轮转3.2.2 优先级调度3.2.3 多级别反馈队列3.3. 实时系统四、进程的状态五、进程同步5.1 什么是进程同步5.2 进程同步应该遵循的几点原则前…...

【随笔】我迟到的2022年度总结:突破零粉丝,1个月涨粉1000+,2023年目标3万+

前言 我是21年12月注册的csdn, 作为用户平时看看文章,从未参与过写文章这件事。 但这一年的时间我见证了很多新号的崛起,有的号我平时关注比较多,看着他们从零粉丝突破了三万甚至五万的粉丝量。 在csdn上遇到了我的贵人&#x…...

SpringCloud-Netflix学习笔记13——Zuul路由网关

什么是Zuul? Zuul包含了对请求的路由和过滤两个最主要的功能。 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能…...

Hive 之 DDL操作

DDL 操作是用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等 1. 数据库 1.1 创建数据库 数据库在 HDFS 上的默认存储路径是 /user/hive/warehouse/*.db CREATE (DATABASE|SCHEMA) [IF NOT EX…...

2. SpringMVC 请求与响应

文章目录1. 请求映射路径2. 请求参数2.1 get 请求发送普通参数2.2 post 请求发送普通参数2.3 五种类型的参数传递2.4.1 普通参数2.4.2 POJO 数据类型2.4.3 嵌套 POJO 类型参数2.4.4 数组类型参数2.4.5 集合类型参数3. json 数据传输参数(重点)3.1 传输 j…...

leaflet 读取上传的geojson文件,转换为wkt文件(057)

第057个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中上传geojson文件,解析geojson文件并转换为WKT,并在地图上显示图片。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共128行)安装 @terraf…...

面试题-前端开发Vue篇(答案超详细)

文章目录 如何实现跨域?JSONP原理和缺点谈谈你对DOM的理解及常用的DOM API说说你对 Vue 的理解说说 Vue 的优缺点什么是虚拟 DOM请描述下 vue 的生命周期是什么vue 如何监听键盘事件?watch 怎么深度监听对象变化删除数组用 delete 和 Vue.delete 有什么区别watch 和计算属性有…...

PTA甲级-1010 Radix c++

文章目录Input Specification:Output Specification:Sample Input 1:Sample Output 1:Sample Input 2:Sample Output 2:一、题干大意![在这里插入图片描述](https://img-blog.csdnimg.cn/68d84d3ea86e4aaab002152ae8472e05.png#pic_center)二、题解要点三、具体实现总结Given a…...

【项目重构】第1次思考

回顾与反思 2022年~至今(2023年2月),一共重构了2个项目。 第1个项目在重构的时候,总是想着把别人的代码copy过来,改一改,这就算重构好了。这样做效率太低,原因是前人写的代码不一定有很多注释…...

Java:SpringMVC的使用(2)

目录第十二章 REST风格CRUD练习12.1 搭建环境12.2 实现功能思路第十三章 SpringMVC消息转换器13.1 消息转换器概述13.2 使用消息转换器处理请求报文(1) 使用RequestBody获取请求体(2) 使用HttpEntity\<T>获取请求体及请求头13.3 使用消息转换器处理响应报文(1) 使用Respo…...

Elasticsearch7.8.0版本进阶——分布式集群(应对故障)

目录一、Elasticsearch集群的安装1.1、Elasticsearch集群的安装&#xff08;win10环境&#xff09;1.2、Elasticsearch集群的安装&#xff08;linux环境&#xff09;二、应对故障&#xff08;win10环境集群演示&#xff09;2.1、启动集群&#xff08;三个节点&#xff09;2.2、…...

【LeetCode】每日一题(2)

目录 题目&#xff1a;1138. 字母板上的路径 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;1138. 字母板上的路径 - 力扣&am…...

软件设计师教程(六)计算机系统知识-操作系统知识

软件设计师教程 软件设计师教程&#xff08;一&#xff09;计算机系统知识-计算机系统基础知识 软件设计师教程&#xff08;二&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;三&#xff09;计算机系统知识-计算机体系结构 软件设计师教程&#xff08;…...

Zookeeper下载安装与集群搭建

Zookeeper下载安装与集群搭建1.下载安装1.1 下载安装1.2 配置启动2.集群搭建2.1 搭建要求2.2 准备工作2.3 配置集群2.4 启动集群2.5 模拟集群异常1.下载安装 1.1 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的&#xff0c;它运行在JVM之上。需要安装JDK 7或更高版本。…...

Filter防火墙(8)

实验目的 1、了解个人防火墙的基本工作原理&#xff1b; 2、掌握Filter防火墙的配置。 预备知识防火墙 防火墙&#xff08;Firewall&#xff09;是一项协助确保信息安全的设备&#xff0c;会依照特定的规则&#xff0c;允许或是限制传输的数据通过。防火墙可以是一台专属的硬…...

Spring事务的传播级别——包你一文通

文章目录一、简单说明二、具体案例描述2.1.PROPAGATION_REQUIRED2.2.PROPAGATION_REQUIRED_NEW2.3.PROPAGATION_SUPPORTS2.4.PROPAGATION_NOT_SUPPORTED2.5.PROPAGATION_MANDATORY2.6.PROPAGATION_NEVER2.7.PROPAGATION_NESTED三、总结3.1、PROPAGATION_REQUIRED3.2、PROPAGATI…...

C语言(C预编译指令)

目录 1.undef 2.条件编译#ifdef,#else和#endif 3.#ifndef 4.#if和#elif 5.预定义宏 6.#line和#error 7.#pragma 1.undef #undef指令用于取消已定义的#define指令 #define LIMIT 400 #undef LIMIT 如果想使用一个名称但又不确定之前是否已经用过&#xff0c;为了安全起…...

JMeter 接口测试/并发测试/性能测试

Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。因为再做接口测试时可以设置线程组&#xff0c;所以也可做接口性能测试。本篇使用JMeter完成了一个…...

大家心心念念的RocketMQ5.x入门手册来喽

1、前言 为了更好的拥抱云原生&#xff0c;RocketMQ5.x架构进行了大的重构&#xff0c;提出了存储与计算分离的设计架构&#xff0c;架构设计图如下所示&#xff1a; RocketMQ5.x提供了一套非常建议的消息发送、消费API&#xff0c;并统一放在Apache顶级开源项目rocketmq-clie…...

(考研湖科大教书匠计算机网络)第四章网络层-第三节1:IPv4地址概述

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;IPv4地址概述二&#xff1a;IPv4地址表示方法&#xff08;1&#xff09;概述&#xff08;2&#xff09;8位无符号二进制数转十进制正整数&#xff…...

如何用GHelper解决华硕笔记本性能管理难题:轻量级开源工具的完整指南

如何用GHelper解决华硕笔记本性能管理难题&#xff1a;轻量级开源工具的完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivoboo…...

谁是 AI 时代的格式之王?Markdown vs HTML 的终极对决

谁是 AI 时代的格式之王&#xff1f;Markdown vs HTML 的终极对决 最近&#xff0c;Anthropic Claude Code 团队的工程师 Thariq Shihipar 发了一篇文章&#xff0c;标题就叫「HTML 回来了」。 他的观点很直接&#xff1a;Markdown 作为 AI Agent 输出格式的时代&#xff0c;正…...

为AI智能体构建持久记忆系统:Claw Recall部署与MCP集成指南

1. 项目概述&#xff1a;为AI智能体构建持久、可搜索的记忆系统如果你和我一样&#xff0c;深度使用Claude Code、OpenClaw这类AI智能体工具进行日常开发&#xff0c;那你一定遇到过这个让人头疼的问题&#xff1a;对话上下文被压缩&#xff08;Context Compaction&#xff09;…...

3个真实问题告诉你:DdddOcr如何成为你的免费离线验证码识别助手

3个真实问题告诉你&#xff1a;DdddOcr如何成为你的免费离线验证码识别助手 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 当你在自动化测试、数据采集或系统集成中遇到验证码时&#xff0c;是否曾…...

大模型对话的端到端加密与隐私计算实战:基于CipherChat与TEE的架构解析

1. 项目概述&#xff1a;当大模型对话遇上“密码学”的硬核保护最近在折腾大语言模型&#xff08;LLM&#xff09;应用落地的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;安全与隐私。无论是企业内部的知识库问答&#xff0c;还是面向用户的个性化AI助手&#xff0c;…...

AI命令行自动执行工具:从剪贴板监听、内容过滤到终端注入的实现原理

1. 项目概述&#xff1a;一个让Claude“粘贴”命令行的效率工具如果你经常和Claude这类AI助手对话&#xff0c;并且需要处理命令行操作&#xff0c;那你一定遇到过这个痛点&#xff1a;Claude给出的代码片段、配置命令或者文件路径&#xff0c;你需要手动复制、切换窗口、粘贴到…...

FPGA生成SPWM的另一种思路:抛弃ROM,用DDS IP核与CORDIC算法实时生成正弦波

FPGA实时生成SPWM&#xff1a;基于DDS IP核与CORDIC算法的高效实现方案 在电力电子和电机控制领域&#xff0c;SPWM&#xff08;正弦脉宽调制&#xff09;技术因其优异的谐波特性和高效率而广受青睐。传统FPGA实现方案通常采用预存波形数据的ROM方法&#xff0c;虽然实现简单&a…...

地理空间AI基准测试平台geobench:标准化评估与实战指南

1. 项目概述&#xff1a;一个为地理空间AI量身定制的基准测试平台如果你正在或即将踏入地理空间人工智能这个领域&#xff0c;无论是想评估一个预训练模型在遥感影像上的表现&#xff0c;还是想为自己的新算法找一个公平、全面的“擂台”&#xff0c;你大概率会遇到一个头疼的问…...

【20年架构老兵亲授】:SITS 2026服务边界定义三原则、8类AI上下文耦合陷阱及动态治理沙盒实测数据

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生微服务架构&#xff1a;SITS 2026服务拆分与治理策略 AI原生微服务并非传统微服务的简单升级&#xff0c;而是以模型生命周期、推理上下文感知和实时反馈闭环为驱动的服务边界重构。SITS 2026&am…...

从Concur到特斯拉:为什么伟大产品始于“丑陋”的1.0版本

1. 从一笔74亿美元的收购案说起&#xff1a;为什么别急着给1.0产品判死刑 前几天翻看一些旧资料&#xff0c;看到一篇2014年的行业评论&#xff0c;讲的是德国软件巨头SAP以74亿美元的天价&#xff0c;收购了一家名叫Concur的西雅图公司。当时很多人觉得不可思议&#xff0c;Co…...