首页 > 其他分享 >学习笔记10

学习笔记10

时间:2023-11-21 19:34:39浏览次数:43  
标签:10 PV 笔记 学习 信号量 算法 线程 12.5 缓冲区

关于知识点

知识点归纳

第十二章 块设备I/O和缓冲区管理

  • 12.1 块设备I/O缓冲区

块设备I/O缓冲区是内存中用于临时存储数据的区域,用于处理块设备的读写操作。在进行块设备读取时,数据会被先存储到I/O缓冲区,然后再通过内核将数据传输到用户空间。而在进行块设备写入时,数据也会首先被写入到I/O缓冲区,然后由内核负责将数据写入到设备中。
I/O缓冲区的主要作用是优化I/O操作的效率,通过缓存数据可以减少对块设备的访问次数,提高数据的读写速度。此外,I/O缓冲区还可以提供数据的临时存储,保证数据在进行读写操作时的一致性和完整性。
在操作系统中,I/O缓冲区的大小和管理方式都会对系统的性能和稳定性产生影响,因此需要根据具体的应用场景来进行合理的配置和管理。

  • 12.2 Unix I/O缓冲区管理算法

缓冲区大小:操作系统需要考虑分配多大的内存来用作I/O缓冲区,以确保合理利用内存资源,并且不至于过多占用内存空间。

缓冲区刷新:涉及将数据从内存写入到磁盘中的过程。Unix系统通常使用一种称为"脏数据刷新"的机制来确保缓冲区中的数据在适当的时候写入到磁盘,以保证数据的一致性和永久性。

缓存替换算法:当缓冲区已满时,需要决定哪些数据将被替换出去,以为新的数据腾出空间。常见的替换算法包括最近最少使用算法(LRU),先进先出算法(FIFO)等。这些算法都有各自的优缺点,需根据具体场景进行选择。

缓冲区管理策略:操作系统需要考虑如何分配和管理缓冲区,确保各个进程可以公平地访问和使用缓冲区资源,同时避免数据混乱和冲突。

  • 12.3 新的I/O缓冲区管理算法
  • 12.4 PV算法

PV(Producers and Consumers,生产者-消费者问题)算法是一个经典的同步问题,用于描述多线程或多进程中生产者和消费者的协作关系。

  1. 信号量:PV算法依赖于信号量作为同步原语。信号量是一个整数变量,它用于控制多个线程/进程之间对共享资源的访问。PV算法中通常需要使用两种类型的信号量:互斥信号量(Mutex)用来保护共享资源,以确保同一时间只有一个线程/进程可以访问;条件变量信号量(Condition Variable)用于线程/进程之间的通信和协调,例如用于通知生产者或消费者资源状态的改变。

  2. 生产者-消费者问题:PV算法解决的是生产者和消费者之间的同步问题。生产者负责生成数据并将其放入缓冲区,而消费者则负责从缓冲区中取出数据并进行处理。PV算法确保生产者和消费者之间的合作,避免了生产者向空缓冲区中存放数据,或消费者尝试从空缓冲区中取出数据的情况。

  3. 操作:PV算法中主要包括两种操作,即P操作和V操作。P操作(也称为减操作)用于获取信号量,并在进程/线程访问资源时执行,以减少信号量的值。V操作(也称为增操作)用于释放信号量,并在进程/线程离开资源时执行,以增加信号量的值。

PV算法是操作系统中常见的同步算法,用于解决多个进程/线程之间的协作和资源竞争问题。通过合理使用PV算法可以避免因资源竞争而导致的死锁和饥饿等问题。

  • 12.5 I/O缓冲区管理算法比较
    • 12.5.1 系统组织
    • 12.5.2 多任务处理系统
    • 12.5.3 缓冲区管理器
    • 12.5.4 磁盘驱动程序
    • 12.5.5 磁盘控制器
    • 12.5.6 磁盘中断
    • 12.5.7 虚拟磁盘

苏拉底挑战

问题1:PV算法

问题2:多任务处理系统

遇到问题以及实践过程截图

实践截图

./a.out | sort -t:

代码练习

  • 代码
  • 结果

问题1:

标签:10,PV,笔记,学习,信号量,算法,线程,12.5,缓冲区
From: https://www.cnblogs.com/zy1116/p/17833150.html

相关文章

  • 10-基础SQL-DQL(数据查询语言)-分组查询(GROUP BY)
    DQL-介绍(常用)DQL英文全称是DataQueryLanguage(数据查询语言),数据查询语言用来查询数据库中表的记录查询关键字:SELECTDQL-语法DQL-分组查询语法:SELECT字段列表FROM表名[WHERE条件]GROUPBY分组字段名[HAVING分组后过滤条件];WHERE与HAVING区别: 案例:创建......
  • 20230810
    想起来我以前在自己的一个小号上面写过一点东西,打算搬过来。反正那个洛谷号算是废了吧。毕竟我写的就是我写的,不会因为发布在哪里就改变了其性质,对吧?所以我选择发出来。(这一段话是20231121加的,下面才是正文)心情不好。放假一直在颓。虽然说放假是用来放松的,并且我们也训练了......
  • 初中英语优秀范文100篇-004 My English Teacher
    记忆树1MyEnglishteacherisverybeautifulandsheisabout40yearsold.翻译我的英语老师非常漂亮,她大约四十岁。简化记忆漂亮四十岁句子结构主语:MyEnglishteacher(我的英语老师)谓语:is(是)描述性词语:verybeautiful(非常漂亮)年龄信息:about40yearsold(大约四十......
  • 软件设计模式学习每日总结-第九天
    第九天组合模式:组合多个对象形成树形结构,使得叶子和容器的使用具有一致性。透明组合模式:声明了对象的所有的方法。安全组合模式:不声明对象的方法。 ......
  • 2023.11.21做题笔记(对局匹配,砝码称重shui,单词接龙)
    今天水了一节英语课,翘了一节C++课,就是感觉摆的一批。 对局匹配P8656[蓝桥杯2017国B]对局匹配-洛谷|计算机科学教育新生态(luogu.com.cn)   对于这道题:大佬解法1:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;intn,k,a[N],an......
  • P6491 [COCI2010-2011#6] ABECEDA
    前言思维难度:绿。代码难度:绿/蓝。综合:绿/蓝。带来两种做法。主要是预处理的部分不同,所以就来水一篇。传送门。前置芝士。分析我们很容易想到通过输入去确定大概的大小。具体地,对于两字符串,若前$i-1$位相同,那么我们要么通过第$i$位确定大小,要么第$i$位相同去比较后......
  • AI第一周学习笔记
    AI第一周学习笔记扬帆,启航注释:​单行注释:使用‘#’开头。#这是注释​多行注释:使用三引号““““”“或‘’‘’‘’将注释包裹起来"""多行输出多行输出多行输出"""​注释部分不会进入程序,对代码进行解释和说明,增强代码的可读性​......
  • 学习笔记:A Survey on Large Language Model basedAutonomous Agents
    挑选了自己感兴趣的部分整理了一下。目录ASurveyonLargeLanguageModelbasedAutonomousAgents1LLM-AAConstruction1.1ArchitectureDesign2LLM-AAApplication3LLM-AAEvaluation4ChallengeASurveyonLargeLanguageModelbasedAutonomousAgents北大高林学院的......
  • 10.5每周总结
    今天写一个支出统计的vue<template><divstyle="width:auto;height:470px"id="echarts1"></div></template><script>importechartsfrom'echarts'constcolors=['#5470C6','#EE6666']ex......
  • 【一周聚焦】联邦学习 10.9-10.16
    近期的联邦学习做了如下内容:大模型目前大模型是绝对的研究风口,而FL中为了降低传输开销的网络压缩技术也是可以服务于LLM的高效传输的。港科大+微众银行,10月16,FATE-LLM:AIndustrialGradeFederatedLearningFrameworkforLargeLanguageModels杨强团队一直在推FATE这个联......