首页 > 其他分享 >CMU_15445_P2_PageGuard

CMU_15445_P2_PageGuard

时间:2024-11-07 21:10:02浏览次数:1  
标签:P2 PageGuard 读写 BPM CMU 页面

CMU_15445_P2_PageGuard

我将页面守护部分与多线程调用部分放在一起写在这篇博客中了, 页面守卫的本质是更加优雅方便的使用内存中的页(Pages). 我们知道Buffer_Pool_Manager实际上是管理页面, BPM 管理的是页面在内存中的组织形式与磁盘交互等, PageGuard为其他进程包装了使用页面的方法, 其中主要封装了页面读写锁的获取与释放, 以及配合 BPM PIN或者 UNPIN 页面.

举例来说就是:

某个进程想使用页面的时候, 可以初始化一个 BPM 的实例, 将一个键值对写进页面, 首先调用 BPM 的 NewPage() 函数新建一个使用的页面, 然后获取页面的读写锁, 然后写完释放这个页面的读写锁, 这样本身没什么问题, 但是我们经常容易忘记 UNPIN 这个页面, 以及将读写锁与释放锁写进代码中容易被忽略, 因此使用 PageGaurd 来优雅的使用页面.

BasicPageGuard

Basic PageGuard 的定义如下:

 private:
  friend class ReadPageGuard;
  friend class WritePageGuard;

  BufferPoolManager *bpm_{nullptr};			// 管理内存的BPM
  Page *page_{nullptr};						// 这个 PageGuard 守护的页面
  bool is_dirty_{false};					// 当前页面是否被修改, 是否为 Dirty

标签:P2,PageGuard,读写,BPM,CMU,页面
From: https://www.cnblogs.com/wevolf/p/18534006

相关文章

  • 多校 A 层冲刺 NOIP2024 模拟赛 19
    题解还是得写,不能偷懒啊~多校A层冲刺NOIP2024模拟赛19图书管理签到题考虑最困难的部分是确定中位数,不妨钦定中位数,然后计算其贡献,然后考虑只枚举一个边界,另一个边界可以放桶里。时间复杂度\(O(n^2)\)。两棵树概率期望考虑拆贡献,有等式\[连通块个数=点数-边数\]证明考虑......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛19
    RankbydCSP之后就没场切过题......
  • 洛谷 P2113 看球泡妹子(DP)
    传送门https://www.luogu.com.cn/problem/P2113解题思路可以设  表示前  场比赛看了  场,小红的满足度为  的最大精彩度。然后可以枚举前面的一个比赛 ,可以得到转移方程:但是,我们发现数组空间有一点小大,可以优化一下。发现每一次转移都是 ,于是可以滚动数组优化空......
  • 多校A层冲刺NOIP2024模拟赛19
    讲个笑话:(讨论时间)huge:(叹气)这讨论啊,就是改不了,这换了铃声了,也没……众人:现在是讨论时间啊。huge:(停顿)那刚才大课间那会哇啦哇啦的……图书管理简要题意给定一个长度为\(n(n\le10^4)\)的排列,求\(\sum\limits_{l=1}^n\sum\limits_{r=l}^n[r-l为偶数]l\timesr\timesf_{l,r}\)......
  • 多校A层冲刺NOIP2024模拟赛19
    多校A层冲刺NOIP2024模拟赛19\(T1\)A.图书管理(book)\(90pts/90pts\)部分分\(90pts\):平衡树/线段树、主席树上二分/对顶堆暴力维护中位数,同luoguP3871[TJOI2010]中位数|luoguP1168中位数,时间复杂度为\(O(n^{2}\logn)\),需要适当卡常。点击查看代码in......
  • #C. [GESP202409 三级] 平衡序列 核桃GESP考三级
    所以要从题目出发,优化代码思路是:1、前缀和,算出来累加和。2、通过tot*2==sum,判断是不是有相等的值。这个是数学上的优化。原错误的代码思路include<bits/stdc++.h>usingnamespacestd;intn;intmain(){  cin>>n;  for(inti=1;i<=n;i++)  { ......
  • #D. [GESP202409 三级] 回文拼接 核桃GESP考三级
    https://oj.hetao101.com/d/contest_past/p/2069?tid=67076fb1c7a03d8a4628b276这个思路错了,怎么还给排序上了。正确解题这个是不涉及字符串操作的。这个是第二种做法,会涉及函数操作。原错误的代码include<bits/stdc++.h>usingnamespacestd;intn,t,a,b;intl[10......
  • 题解:P11248 [GESP202409 七级] 矩阵移动
    题目传送门题目大意给出一个nnn行mmm列的只包含0、1、?的矩......
  • NOIP2024集训Day71 贪心
    NOIP2024集训Day71贪心B.[CCO2015]饥饿的狐狸显然的,要求出最大美味值,应该先交错吃温度最大的和最小的饼干。所以我们给所有饼干按照温度排序,交替选择左右端点吃,如果喝水能够达到更大那就先喝水再吃,反正水管够。分两种情况,即左右端点谁先开始,再取个\(\operatorname{max}\)。......
  • [luoguP2713] 罗马游戏
    题意原题链接维护一个数据结构,要求支持合并集合或删除集合最小值并输出。sol双倍经验,同[luoguP3377]左偏树/可并堆代码#include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=1000005;structNode{intl,r;int......