操作系统学习笔记(二)

news2024/11/26 21:43:20

目录

你如何理解“临界”这个词?

那你如何理解在计算机领域下的“临界”这个词呢?

如何理解计算机领域中的“同步”这个词呢?

你如何理解critical这个单词?

单标志法:

双标志先检查法

双标志后检查法(先上锁再检查)

 Peterson算法


人的一生会面临多少次说谎话与被欺骗的时刻?

这一代最杰出的人才不仅致力于让人们点击广告,而且编写了更加高级的大众监视程序。

 

你如何理解“临界”这个词?

"临界"这个词有不同的含义,具体取决于上下文。以下是几种常见的理解方式:

  1. 物理学中的临界:在物理学中,临界通常指某个物理系统在某种条件下经历从一种状态到另一种状态的临界点或临界状态。例如,液体在一定温度下转变为气体,这个温度被称为临界温度。

  2. 数学中的临界:在数学中,临界通常表示某个参数或变量取得临界值的情况。临界点是函数或方程的临界值,对于这个值,函数或方程可能会发生突变、趋近无穷大或变得不连续。

  3. 社会科学中的临界:在社会科学中,临界可以指一种状态或条件的临界点,表示在该点之前和之后会发生重大的变化或转折。例如,经济学中的临界点可以表示经济增长的阈值,超过该阈值将产生显著的经济影响。

  4. 生物学中的临界:在生物学中,临界可以表示生物体或生态系统的某种状态或条件达到关键的临界点。例如,生物多样性中的临界值表示一个生态系统中物种数量的最小限度,低于这个限度可能会导致生态系统的不稳定和崩溃。

总而言之,"临界"这个词的理解需要根据具体的学科领域和语境来确定。以上只是一些常见的理解方式,具体含义可能因情境而异。

那你如何理解在计算机领域下的“临界”这个词呢?

在计算机领域下,"临界"通常指的是共享资源在并发环境中的访问限制。临界区(Critical Section)是指一段代码或一段程序,在这段代码或程序中访问共享资源的操作需要进行同步或互斥,以避免多个并发执行的线程或进程同时访问共享资源而引发的竞争条件或数据不一致性的问题。

临界区的存在是由于并发环境下多个线程或进程可以并行执行,而对于某些共享资源,同时访问可能导致意想不到的结果或错误。为了保证数据的一致性和避免竞态条件(Race Condition),在临界区的代码段中需要采用适当的同步机制,如互斥锁(Mutex)、信号量(Semaphore)、条件变量(Condition Variable)等,来确保在任意时刻只有一个线程或进程能够进入临界区进行访问。

在编程中,正确地设计和实现临界区的同步机制是确保并发程序正确性和稳定性的关键。通过合理地划分临界区和选择适当的同步机制,可以保证共享资源的正确访问顺序,避免数据竞争和不一致性,并最大程度地提高程序的性能和并发度。

 

因此,在计算机领域中,“临界”一词常常用于描述并发编程中需要同步访问的共享资源区域和相应的同步机制。

(其实对于临界的理解,应该就是多对一的问题,处理不过来的这个临界的状态它是临界)

 

 

这里对于互斥的讲解我认为是比较好的,如果我们只关注于同步和异步,而不关注互斥呢?

就会导致这里A.B的内容打串的问题

 

如何理解计算机领域中的“同步”这个词呢?

在计算机领域中,"同步"(Synchronization)指的是协调多个并发执行的线程、进程或任务之间的操作顺序和状态,以确保它们按照预期的方式进行交互和协作。

并发是指多个计算实体(如线程、进程)同时执行,它们可以在不同的执行环境中独立运行,并在共享资源的访问上存在竞争关系。在这种情况下,缺乏适当的同步机制可能会导致竞态条件(Race Condition)、数据不一致、死锁(Deadlock)等问题。

避同步的目的是为了确保并发执行的计算实体之间的相互作用按照特定的顺序进行,以免不一致和错误的结果。以下是一些常见的同步概念和机制:

  1. 互斥(Mutex):互斥是一种同步机制,用于限制对共享资源的访问,确保在任意时刻只有一个线程或进程可以访问该资源。通过互斥锁或信号量等机制,只有持有锁的线程才能执行临界区的代码。

  2. 条件变量(Condition Variable):条件变量用于线程间的协调和通信。一个线程可以等待某个条件的满足,而另一个线程可以在满足条件时发出信号,通知等待的线程继续执行。

  3. 信号量(Semaphore):信号量是一种计数器,用于控制对共享资源的并发访问。通过对信号量进行加锁和解锁操作,可以限制同时访问资源的线程数量。

  4. 屏障(Barrier):屏障用于确保多个线程在到达某个点之前必须等待,然后同时开始执行后续操作。屏障可以用于同步多个线程之间的计算结果,以便它们在某个点上保持一致。

  5. 同步原语(Synchronization Primitives):同步原语是指编程语言或操作系统提供的基本同步工具,如锁、条件变量、原子操作等,用于实现复杂的同步需求。

通过合理地使用这些同步机制,开发人员可以控制并发执行的顺序、确保数据的一致性,并避免并发问题的发生。同步在多线程编程、并行计算、分布式系统等领域都起着重要的作用,以确保程序的正确性、可靠性和性能。

同步的重点在于按顺序

你如何理解critical这个单词?

"critical"这个单词有多重含义,具体取决于上下文。以下是几种常见的理解方式:

  1. 批判性的:在这种意义上,"critical"表示对事物进行仔细评估、分析和评判的能力或倾向。批判性思维强调对信息和观点进行深入思考、逻辑推理和评估,以形成独立、明智的判断。

  2. 关键的:当描述某物为"critical"时,表示它是至关重要的、不可或缺的,对于某个目标或结果的实现至关重要。这个意义上的"critical"强调了某物的重要性和紧迫性。

  3. 危急的:"critical"也可以表示处于紧急、危险或临界状态的情况。这可能涉及到医疗紧急情况、危机管理、紧急救援等领域。

  4. 批评的:在某些情况下,"critical"可以表示对某人或某事进行严厉评判或批评。这种用法强调了对缺点、问题或错误的指出和指责。

总而言之,"critical"这个词具有多个含义,具体意义取决于使用环境和上下文。以上列举的解释是其中的一些常见含义。

单标志法:

单标志法存在的主要问题是:违背“空闲让进”原则

 

其实知识之间绝对是互通的,因为其背后反映的其实都是思想,我们实现其实都是比较菜的,原因是,从1到100,没有从0到1难。

双标志先检查法

 双标志先检查法的主要问题是:违反“忙则等待”原则。

原因在于,进入区的“检查”和“上锁”两个处理不是一气呵成的。“检查”后,“上锁”前可能发生进程切换。

        同时进入临界区

双标志后检查法(先上锁再检查)

 若按照①⑤②⑥.…的顺序执行,P0和P1将都无法进入临界区
因此,双标志后检查法虽然解决了“忙则等待”的问题,但是又违背了“空闲让进”和“有限等待”
原则,会因各进程都长期无法访问临界资源而产生“饥饿”现象。

就是啥,就是小的把1厕所占了,把它拉满了,之后老的把二号占了,也把它拉满了,之后小的想要去2号继续拉,二号又想去一号,但是他们都相互占着自己想去上的厕所,就导致了一种僵持的状态。

这几个算法,其实说到底还是博弈论

 Peterson算法

 

 

 占用CPU资源

就是Peterson算法,看似虽然没有忙等,有谦让,但是其一直进行while循环,也是一种对于资源的浪费。

 

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

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

相关文章

Spring Cloud Gateway路由到Amazon S3签名失败处理

Spring Cloud Gateway路由到Amazon S3签名失败处理 背景 最近在预研统一存储网关,想到就是使用Spring Cloud Gateway作为网关的入口,再反向代理到S3对象存储服务器。 软件版本 网关:Spring Cloud Gateway 3.1.2 s3对象存储:m…

语音识别 | kaggle鸟叫识别新赛赛题解析

整理自kaggle平台 赛题题目: BirdCLEF 2023 kaggle - 鸟声识别大赛 赛题链接:https://www.kaggle.com/competitions/birdclef-2023 赛题背景 鸟类是生物多样性变化的极好指标,因为它们具有高度流动性并且具有多样化的栖息地要求。因此物种…

Jmeter和Postman那个工具更适合做接口测试?

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今天我们就来谈谈一大部分人在做的接口测试,小白变高手…

推特运营的方法

推特是一个广泛使用的社交媒体平台,可以通过以下方法来运营和营销: 建立一个完整的个人或品牌资料:确保你的推特资料页面清晰、有吸引力,并包含关键信息,如个人简介、网站链接和联系方式。 确定目标受众:…

【重制版】10分钟学会WINDOWS、MAC、LINUX如何安装GPT桌面版

文章目录 1 前言2 Windows版下载安装2.1 安装包2.2 winget下载 (注意看,不是wget!) 3 Mac版下载安装3.1 安装包3.2 homebrew安装 4 Linux版下载安装4.1 安装包4.2 终端下载 5 特点5.1 软件特点5.2 菜单功能(个人喜好特…

ChatGPT:【万能话术模板】+99个提示词

一:万能话术提示模板 【方便观看版】 【方便复制版】 现在你是一位[ ]创作者。你的任务是以[ ]为标题写一份[ ]的文章。 文章内容包含[ ] [ ] [ ]3部分。 听众是 [ ],他们喜欢 [ ],看重[ ]。 你的写作风…

python3 爬虫相关学习2:网页相关基础知识笔记

1 网页的构成 一般来说&#xff0c;日常看到的网站的网页的组成内容有如下 html 结构的代码css 结构的代码资源&#xff08;文字&#xff0c;图片&#xff0c;音乐&#xff0c;视频等等&#xff09; html 网页结构描述的语言 比如这种写法的文件 <html> <body> …

机器学习基础知识之分类性能评价指标

文章目录 分类性能基本概念1、准确率1、精确率2、召回率3、F1-score4、ROC曲线5、多分类问题中的相关指标6、混淆矩阵 分类性能基本概念 与预测性能评价指标相类似&#xff0c;分类性能评价指标同样也是将模型计算得出的标签值与实际的真实标签值通过数学统计上的公式进行计算…

十三、超时重试机制

目录 超时配置和重试机制 FeignClient 、Ribbon 、 Hystrix三个之间配置优先级的关系 配置常用属性 Ribbon超时和重试配置: Ribbon重试次数计算公式&#xff1a; FeignClient 超时配置&#xff1a; Hystrix超时配置&#xff1a; Hystrix超时计算公式&#xff1a; 超时配…

Android PickerView简单应用

1. Android-PickerView Android-PickerView这是一款仿iOS的PickerView控件&#xff0c;有时间选择器和选项选择器。 添加依赖项 implementation com.contrarywind:Android-PickerView:4.1.92. 时间选择器 Android-PickerView时间选择器使用Build模式来创建 var timePicker…

如何开展计算机相关的学术研究? - 易智编译EaseEditing

计算机科学是一门包括理论和应用两方面的学科&#xff0c;可以涉及各种领域&#xff0c;如人工智能、计算机视觉、机器学习、大数据、网络安全等等。开展计算机相关的学术研究需要以下步骤&#xff1a; 1.明确研究问题&#xff1a; 首先需要明确研究问题和目标。选择一个研究方…

5月15号软件资讯更新合集.....

Vue2 to Composition API 语法转换器 V2.0 版本更新 在线使用 网站 Gitee: vue2-to-composition-api vue2-to-composition-api 是一款可以将 Options API 转换成 Composition API 的在线应用工具&#xff0c;转换后直接导出 Script setup 内容&#xff0c;帮助 Vue2 项目减少…

VoxWeekly|The Sandbox 生态周报(20230508)

欢迎来到由 The Sandbox 制作的《VoxWeekly》。我们会在每周一发布这份周报&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。您还可以订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Disco…

OpenCL编程指南-4.2矢量数据类型

矢量数据类型 OpenCL C还增加了对矢量数据类型的支持。矢量数据类型如下定义&#xff0c;首先是类型名&#xff0c;具体包括char、uchar、short、ushort、int、uint、float、long或ulong&#xff0c;后面是一个字面值n来定义矢量中的元素个数。对于所有矢量数据类型&#xff0…

ANR原理篇 - ANR信息收集过程

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、ANR日志信息收集过程ANR日志收集完整流程1.1 logcat中信息记录1.2 trace.txt文…

《微服务实战》 第九章 Gitlab使用

前言 微服务项目&#xff0c;常常需要多人协作完成工作&#xff0c;本章教程是介绍Gitlab使用&#xff0c;使多人协作告别低端的手动拷贝&#xff0c;也告别传统的SVN。 1、下载安装git https://git-scm.com/download/win 1.1、安装好以后&#xff0c;cmd中输入git 2、生成…

什么是Docker 【微服务框架】

Docker Docker如何解决依赖的兼容问题&#xff1f; 将应用的Libs&#xff08;函数库&#xff09;、Deps&#xff08;依赖&#xff09;、配置与应用一起打包将每个应用放到一个隔离容器去运行&#xff0c;避免互相干扰 不同环境的操作系统不同&#xff0c;Docker如何解决&#…

(数字图像处理MATLAB+Python)第八章图像复原-第一、二节:图像复原概述和图像退化模型

文章目录 一&#xff1a;图像复原概述二&#xff1a;图像退化模型&#xff08;1&#xff09;连续退化模型&#xff08;2&#xff09;离散退化模型 三&#xff1a;图像退化函数的估计&#xff08;1&#xff09;基于模型的估计法&#xff08;2&#xff09;运动模糊退化估计 一&am…

理解JS的事件循环机制(Event Loop)

文章目录 一、前言二、首先理解三、灵魂三问1. JS为什么是单线程的?2. 为什么需要异步? &#xff08;为什么要有事件循环机制&#xff1f;&#xff09;3. 单线程又是如何实现异步的呢? 四、什么是事件循环&#xff1f;五、事件循环&#xff08;Event Loop &#xff09;执行顺…

哈工大软件架构与中间件作业1

《软件架构与中间件》作业1报告 ——作业1&#xff1a;软件架构 姓名&#xff1a; 石卓凡 学号&#xff1a; 120L021011 目录 项目介绍......................................................................................................…