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

操作系统:进程、线程与作业

背景介绍:

        因为单道程序处理器效率低 、设备利用率低 、内存利用率低的问题人们提出了多道程序设计来解决这个问题。

        多道程序致力于提高处理机、设备、内存等各种资源的利用率,从而提高系统效率,也就是吞吐量,吞吐量定义为单位时间系统所处理的作业数量

         但多道程序设计也面临着一些问题,如何给各个程序分配处理器(处理器资源管理问题),如何给多个程序分配内存空间(内存资源管理问题),如何给多个程序分配设备,竞争怎么办(设备资源管理问题)。

1、进程

进程概念:

        进程是可参与并发执行的程序,它是具有一定独立功能的程序关于一个数据集合的一次运行活动。

进程状态:

 运行态(RUN):占有CPU正在向前推进。

 就绪态(READY):具备运行条件,但未得到CPU。

 等待态/挂起态(WAIT):具备运行条件,等待某一事件发生。

进程组成:

        进程由进程控制块程序组成,程序包括代码和数据。

进程控制块:

        标志进程存在的数据结构,其中保存系统管理进程所需的全部信息 。

名称解释
进程标识用于唯一地标识一个进程,整数
用户标识用于标识运行进程的用户,整数
进程状态就绪等待运行之间转换
调度参数用于确定要调度的下一个进程
现场信息保存进程暂停的断点信息
家族联系记载父进程
程序地址记载进程所对应的程序的存储位置和大小
当前打开文件记载进程正在使用的文件
消息队列指针接收到消息所构成的的消息队列的链头
资源使用情况记载进程生存期所使用的系统资源和使用时间
进程队列指针用于构建进程控制块队列,指向下一个进程控制块,它是系统管理进程所需要的。

程序(进程映像): 

 程序包括代码和数据。

 进程的表示:

整体性,将代码和数据看成一个整体,代码可共享性则相反。

进程上下文:

进程的物理实体与支持进程运行的系统物理环境统称为进程上下文。

         物理实体:进程控制块PCB+程序

         系统环境:地址空间,系统栈,打开文件表,…

由一个进程的上下文转到另外一个进程的上下文,被称为上下文切换。

运行操作系统程序完成系统管理工作所花费的时间和空间叫作系统开销。

进程队列: 

就绪队列:系统一个或若干个(根据调度算法或系统确定) 。

等待队列:每个等待事件一个等待队列,例如:需要IO读写数据,会进入IO等待队列。

运行队列:每个处理机CPU一个运行队列,每个运行队列中只有一个进程,指向队列头部的指针称为运行指示字。

进程类型:

        系统进程(守护进程daemon): 运行操作系统程序,完成系统管理(服务)功能。完成的任务相对独立和具体,在生存周期不变,通常对应一个无限循环程序,系统启动后一直存在,直到系统关闭。运行于管态。

        用户进程:运行用户(应用)程序,为用户服务。 在操作系统之上运行的所有应用程序称为用户进程,运行于目态。 

 进程特征:

进程间相互联系:

        相关进程: 同一家族的进程 可以共享文件,需要相互通讯,协调推进速度。父进程可以监视子进程,子进程完成父进程交给的任务。

        无关进程:没有逻辑关系、同时执行的进程。有资源竞争关系,互斥、死锁。 

进程间相互作用:

        直接相互作用:发生在相关进程之间,不需要通过媒介而发生的相互作用。

        间接相互作用:发生在任何进程之间,需要通过媒介而发生的相互作用 。

进程与程序的联系:

1、进程包括一个程序

2、进程存在的目的就是执行这个程序

 进程与程序的差别:

1、程序静态,进程动态。

2、程序可长期保存,进程有生存期。

3、一个程序可对应多个进程,一个进程只能执行一个程序 。

2、线程

线程概念:

        线程又称轻进程,是进程中一个相对独立的执行流。 一个进程可包含多个线程,这些线程执行流。一般认为进程是资源的分配单位,线程是CPU的调度单位。

        线程优点:

                上下文切换速度快(包括程序和数据在内的地址空间不变)

                系统开销小:创建线程

                通讯容易(共享数据空间)

线程结构:

以下是多进程的结构:

        对比进程里的多线程结构,线程拥有自己的寄存器和用户栈,并且共享动态堆,静态数据和程序代码。

         因为线程也是并发执行的,所以线程也需要管理,从而诞生了类似PCB的数据结构TCB,也就是线程控制块。

线程控制块: 

        它是标志线程存在的数据结构, 其中包含对线程管理需要的全部信息。

名称解释
线程标识用于唯一的标识线程,整数
线程状态用于标识运行进程的用户,整数
调度参数用于确定要调度的下一个线程。
现场信息通用寄存器,指令计数器PC,用户栈指针SP,系统栈指针(系统级别线程)
链接指针管理线程队列

 线程的实现:

        线程有二种实现方法:

                1、位于目态的用户级别线程 (系统不可见) 

                2、位于管态的核心级别线程(用户不可见)。

        除此之外还可以使用混合线程(轻进程(用户和系统都可见的实体)建立用户级线程与系统级线程之间的联系)

 用户级别线程 :

实现方法:

        -- 基于库函数,系统不可见。

        -- 线程创建、撤销、状态转换由库函数在目态完成。

        -- TCB在用户空间,因此系统调度以进程为单位,每个进程一个系统栈。

优点:

         -- 不依赖于操作系统,调度灵活。

         -- 同一进程中的线程切换不需进入OS,切换速度快 。        

缺点:

         -- 同一进程中多个线程不能真正并行。

         -- 由于调度在进程级别,一个线程进入OS等待,进程中其它线程不能执行。

       

        对于这种线程的状态:只要一个线程处于运行态,则该进程处于运行态,一个线程处于就绪态,且其他线程均不处于运行态,则进程处于就绪态,所有线程处于等待态,则该进程处于等待态。

核心级别线程:

实现方法:

        — 基于系统调用由OS创建 创建、撤销、状态转换由操作系统完成

        — TCB保存在OS空间,线程是CPU调度的基本单位,每个线程一个核心栈

优点:

        — 多cpu环境中,同一进程内多线程可以并行执行

        一 一个线程进入核心等待,其它线程仍可执行

缺点:

        — 系统开销大,同一进程内多线程切换需进入OS,速度慢

 混合线程:

用户级别线程ULT、核心级别线程KLT、轻线程LWP

        混合线程是将ULT与轻线程绑定起来,通过轻线程将ULT和KLT联系起来,从而使得ULT可以和核心通信。ULT与LWP可以是一对一关系,也可以是多对多关系。但KLT与LWP是一对一关系。在混合线程模式下,一个进程至少包含一个LWP。

线程的应用:

        采用多线程的条件:同一进程中的多个线程具 有相同的代码和数据,这些线程之间或者是合 作的(执行代码的不同部分),或者是同构的 (执行相同的代码) 

例子:

        Word字处理(不同代码) 交互编辑(T1) 词法检查(T2) 定时保存(T3)

        HTTP server(相同代码) 对每个http请求,pop up一个线程 

 3、作业

作业概念:

定义:用户要求计算机系统为其完成的计算任务集合。

 作业步:

        作业处理过程中一个相对独立的步骤 ,一般一个作业步可由一个进程完成,某些作业步之间可以并行。作业与进程具有一对多的关系

作业分类:

        有两种作业类别,一种是批处理作业,另一种是交互式作业。

相关文章:

操作系统:进程、线程与作业

背景介绍: 因为单道程序处理器效率低 、设备利用率低 、内存利用率低的问题人们提出了多道程序设计来解决这个问题。 多道程序致力于提高处理机、设备、内存等各种资源的利用率,从而提高系统效率,也就是吞吐量,吞吐量定义为单位时…...

先验地图--slam学习笔记

先验信息 (Prior Information) 先验信息指的是在收集新数据之前已有的知识或假设。这种信息可以来自之前的实验、历史数据、理论模型或专家意见。 地图信息:在无人驾驶中,车辆通常会预先加载高精度地图数据,这些地图数据提供了道路布局、车…...

空指针异常:软件开发中的隐形陷阱

在软件开发的世界里,bug如同隐藏在代码森林中的小怪兽,不时跳出来给开发者们制造惊喜(或惊吓)。其中,空指针异常(Null Pointer Exception, NPE)无疑是最令人头疼的一类。它悄无声息,…...

【Java从入门到放弃 之 GC】

垃圾回收 垃圾回收什么是垃圾引用计数法可达性分析算法 垃圾回收算法标记清除法标记复制法标记整理法分代 常用的垃圾回收器 垃圾回收 如果你学过C,你肯定知道,我们没申请一块内存,都要自己写回收内存的方法。而Java不需要我们管理内存&…...

【C++】等差数列末项计算题解析及优化

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述与输入输出要求💯数学分析与公式推导公差的计算通项公式推导 💯示例解析解题步骤 💯程序实现与解析初版代码代码解析优点与不足…...

vue中父组件接收子组件的多个参数的方法:$emit或事件总线

方法一&#xff1a;使用 $emit 方法 原理 子组件通过 $emit 方法向父组件发送事件&#xff0c;同时可以传递多个参数&#xff0c;父组件通过事件监听来接收这些参数。 示例 子组件代码 <template><div><button click"sendData">发送数据</…...

2024.12.10——攻防世界Web_php_include

知识点&#xff1a;代码审计 文件包含 伪协议 伪协议知识点补充&#xff1a; 在PHP中&#xff0c;伪协议&#xff08;Pseudo Protocols&#xff09;也被称为流包装器&#xff0c;这些伪协议以 php://开头&#xff0c;后面跟着一些参数&#xff0c;用于指定要执行的操作或需要…...

【机器学习算法】——数据可视化

1. 饼图&#xff1a;显示基本比例关系 import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False# ——————————————————————————————————————————————————————…...

如何在 Android 项目中实现跨库传值

背景介绍 在一个复杂的 Android 项目中&#xff0c;我们通常会有多个库&#xff08;lib&#xff09;&#xff0c;而主应用程序&#xff08;app&#xff09;依赖所有这些库。目前遇到的问题是&#xff0c;在这些库中&#xff0c;libAd 需要获取 libVip 的 VIP 等级状态&#xf…...

JavaCV之FFmpegFrameFilter视频转灰度

1、代码 package com.example.demo.ffpemg;import lombok.SneakyThrows; import org.bytedeco.javacv.*;public class FFmpegFrameFilterVideoExample {SneakyThrowspublic static void main(String[] args) {// 输入视频文件路径String inputVideoPath "f:/2222.mp4&qu…...

Redis:基于PubSub(发布/订阅)、Stream流实现消息队列

Redis - PubSub、Stream流 文章目录 Redis - PubSub、Stream流1.基于List的消息队列2.基于PubSub的消息队列3.基于Stream的消息队列1.Redis Streams简介2.Redis Streams基本命令1.XADD 添加消息到末尾2.XLEN 获取消息长度3.XREAD 读取消息 &#xff08;单消费模式&#xff09;4…...

C#飞行棋(新手简洁版)

我们要在主函数的顶部写一些全局静态字段 确保能在后续的静态方法中能够获取到这些值和修改 static int[] Maps new int[100];static string[] PlayerName new string[2];static int[] PlayerScore new int[2];static bool[] Flags new bool[2] {true,true }; static int[]…...

【OpenCV】图像转换

理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像&#xff0c;使用 2D离散傅里叶变换&#xff08;DFT&#xff09; 查找频域。快速算法称为 快速傅立叶变换&#xff08;FFT&#xff09; 用于计算DFT。 Numpy中的傅立叶变换 首先&#xff0c;我们将看到如何使用Numpy查…...

力扣 重排链表-143

重排链表-143 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next)…...

【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)

Kubernetes集群部署基本管理实战 这么好的机会&#xff0c;还在等什么&#xff01; 01、Kubernetes 概述 K8S是什么 K8S 的全称为 Kubernetes (K12345678S)&#xff0c;PS&#xff1a;“嘛&#xff0c;写全称也太累了吧&#xff0c;写”。不如整个缩写 K8s 作为缩写的结果…...

Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes&#xff08;简称 K8s&#xff09;作为一种开源的容器编排工具&#xff0c;已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中&#xff0c;熟悉常用操作对于高效地管理集群资源至关重要。本文将详…...

爬虫基础之Web网页基础

网页的组成 网页可以分为三大部分–HTML、CSS 和 JavaScript。如果把网页比作一个人&#xff0c;那么 HTML 相当于骨架、JavaScript 相当于肌肉、CSS 相当于皮肤&#xff0c;这三者结合起来才能形成一个完善的网页。下面我们分别介绍一下这三部分的功能。 HTML HTML(Hypertext…...

k8s, deployment

控制循环&#xff08;control loop&#xff09; for {实际状态 : 获取集群中对象X的实际状态&#xff08;Actual State&#xff09;期望状态 : 获取集群中对象X的期望状态&#xff08;Desired State&#xff09;if 实际状态 期望状态{什么都不做} else {执行编排动作&#xf…...

使用ensp搭建OSPF+BGP和静态路由,底层PC使用dhcp,实现PC互通

1.4种方式&#xff0c;实现PC2可以互通底层的所有设备 OSPF&#xff1a;OSPF是一种用于互联网协议网络的链路状态路由协议 BGP&#xff1a;是一种用于互联网上进行路由和可达性信息传递的外部网关协议&#xff08;EGP&#xff09; 静态路由&#xff1a; 静态路由是一种路由方…...

TÜLU 3: Pushing Frontiers in Open Language Model Post-Training

基本信息 &#x1f4dd; 原文链接: https://arxiv.org/abs/2411.15124&#x1f465; 作者: Nathan Lambert, Jacob Morrison, Valentina Pyatkin, Shengyi Huang, Hamish Ivison, Faeze Brahman, Lester James V. Miranda, Alisa Liu, Nouha Dziri, Shane Lyu, Yuling Gu, Sau…...

深入解读 MySQL EXPLAIN 与索引优化实践

MySQL 是当今最流行的关系型数据库之一&#xff0c;为了提升查询性能&#xff0c;合理使用 EXPLAIN 工具和优化索引显得尤为重要。本文将结合实际示例&#xff0c;探讨如何利用 EXPLAIN 分析查询执行计划&#xff0c;并分享索引优化的最佳实践。 一、EXPLAIN 工具简介 EXPLAIN …...

Flume——进阶(agent特性+三种结构:串联,多路复用,聚合)

目录 agent特性ChannelSelector描述&#xff1a; SinkProcessor描述&#xff1a; 串联架构结构图解定义与描述配置示例Flume1&#xff08;监测端node1&#xff09;Flume3&#xff08;接收端node3&#xff09;启动方式 复制和多路复用结构图解定义描述配置示例node1node2node3启…...

ragflow连ollama时出现的Bug

ragflow和ollama连接后&#xff0c;已经添加了两个模型但是ragflow仍然一直warn&#xff1a;Please add both embedding model and LLM in Settings &#xff1e; Model providers firstly.这里可能是我一开始拉取的镜像容器太小&#xff0c;容不下当前添加的模型&#xff0c;导…...

基于centos7.7编译Redis6.0

背景&#xff1a; OS&#xff1a;CentOs 7.7 Redis: 6.0.6 编译构建报错如下&#xff1a; In file included from server.c:30:0: server.h:1044:5: error: expected specifier-qualifier-list before ‘_Atomic’_Atomic unsigned int lruclock; /* Clock for LRU eviction …...

uni-app项目无法在Android Studio模拟器上运行

目录 1 问题描述2 尝试解决3 引发原因4 解决方法4.1 换用 MuMu 模拟器 5 结语 1 问题描述 在使用 uni-app 开发 Pad 端 App 时&#xff0c;初始化项目后打算先运行一下确保初始化正常。打开 Android Studio 模拟器后&#xff0c;然后在 HbuilderX 中选择使用 App 标准基座 运…...

第一部分:Linux系统(基础及命令)

Linux操作系统的实操性非常强&#xff0c;纯操作&#xff0c;不适用于日常的办公使用 1.初始Linux 1.1 操作系统概述 1.1.1 了解OS的作用 OS&#xff1a;是计算机软件的一种&#xff0c;主要负责&#xff1a;作为用户和计算机硬件之间的桥梁&#xff0c;调度和管理计算机硬…...

No module named ‘_ssl‘ No module named ‘_ctypes‘

如果你使用的是基于 yum 的 Linux 发行版&#xff08;例如 CentOS、RHEL、Fedora&#xff09;&#xff0c;安装 libc6-dev 的方式稍有不同。在这些系统中&#xff0c;通常对应的包是 glibc-devel。 No module named ‘_ctypes’ 使用 yum 安装 glibc-devel 更新系统的软件包列…...

【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题

目录 1. 编写第一个 QT 程序 1.1 使用 标签 实现 &#x1f407; 图形化界面实现 &#x1f407; 纯代码形式实现 1.2 使用 按钮 实现 &#x1f40b; 图形化界面实现 &#x1f40b; 纯代码形式实现 1.3 使用 编辑框 实现 &#x1f95d; 图形化界面实现 &#x1f95…...

VTK编程指南<六>:VTK可视化管线与渲染详解

1、VTK渲染引擎 回顾前几章节的RenderCylinder示例 可以找到以下的类: vtkProp; ytkAbstractMapper; vtkProperty; vtkCamera; vtkLight; vtkRenderer; vtkRenderWindow; vtkRenderWindowInteractor vtkTransform; vtkLookupTable;可以发现这些类都是与数据显示或渲染相关的。…...

基于STM32的智能计步器

引言 随着健康意识的提高&#xff0c;计步器逐渐成为人们日常生活中重要的健康管理工具。本文将指导你如何使用STM32微控制器制作一个智能计步器。该计步器通过加速度传感器检测步伐&#xff0c;并使用OLED显示屏显示步数。通过这个项目&#xff0c;你将学习到STM32开发的基本流…...

如何建一个公司网站/电子商务网站开发

本章节用到的命令主要有&#xff1a;mkfs&#xff0c;mke2fs&#xff0c;tune2fs&#xff0c;blkid&#xff0c;e2label&#xff0c;bc一、mkfs 命令前文中介绍了如何给磁盘分区&#xff0c;那么分好了区的磁盘&#xff0c;如何使用呢&#xff1f;首先需要对分区进行格式化。格…...

外贸没有公司 如何做企业网站/德州seo整站优化

大家是不是经常看到如下代码List list Arrays.asList("a","b","c");list.stream().forEach(System.out::println);这个“::”到底是什么语法呢&#xff1f;在JAVA 8 中&#xff0c;可以通过 “::” 关键字来访问类的构造方法&#xff0c;对象方…...

网站制作公司茂名/无限制访问国外的浏览器

最近打开了交接过来的旧代码&#xff0c;编译了一下&#xff0c;出现以下错误&#xff1a; Error[Li005]: no definition for "__disable_interrupt" Error[Li005]: no definition for "__enable_interrupt"解决方法&#xff1a;添加头文件#include <…...

个人免费建网站/百度秒收录蜘蛛池

使用Action、Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说&#xff0c;在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型&#xff0c;再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托&#xff…...

网站建设公司基本流程/网站域名解析

sql中like语句详解 <script type"text/javascript"></script> <script src"http://pagead2.googlesyndication.com/pagead/show_ads.js" type"text/javascript"> </script> LIKE 确定给定的字符串是否与指定的模式匹配。…...

企业为什么做平台网站/广州网站营销seo费用

目录HDFS概述HDFS产出背景及定义HDFS的优缺点HDFS的组成HDFS文件大小HDFS的shell编程基本语法命令大全实操演示上传相关命令下载相关命令直接操作HDFS 的 API 操作客户端环境准备实操HDFS的读写操作流程HDFS的写流程HDFS的读流程NameNode和SecondaryNameNodeNN和2NN工作机制Fsi…...