首页 > 其他分享 >《信息安全系统设计与实现》第十一周学习笔记

《信息安全系统设计与实现》第十一周学习笔记

时间:2023-11-13 22:24:03浏览次数:26  
标签:缓存 int 信息安全 第十一 dev buffer bp 笔记 缓冲区

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

块设备I/O缓冲区

I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时。它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效数据、那么它只需从缓冲区中读取数据、而无须再次从磁盘中读取数据块。如果该缓冲区不存在,它会为磁盘块分配一个缓冲区,将数据从磁盘读人缓冲区,然后从缓冲区读取数据。

当某个块被读入时、该缓冲区将被保存在缓冲区缓存中,以供任意进程对同一个块的下一次读/写请求使用。同样,当进程写入磁盘块时,它首先会获取一个分配给该块的缓冲区。然后,它将数据写入缓冲区,将缓冲区标记为脏,以延迟写入,并将其释放到缓冲区缓存中。由于脏缓冲区包含有效的数据,因此可以使用它来满足对同一块的后续读/写请求,而不会引起实际磁盘I/O。

Unix/IO缓冲区管理算法

  • I/O缓冲区
typdef struct buf[
struct buf*next__free;// freelist pointer
struct buf *next__dev;// dev_list pointer int dev.,blk;
// assigmed disk block;int opcode;
// READ|wRITE int dirty;
// buffer data modified
int async;
// ASYNC write flag int valid;
//buffer data valid int buay;
// buffer is in use int wanted;
// some process needs this buffer struct semaphore lock=1; /
// buffer locking semaphore; value=1
struct semaphore iodone=0;// for process to wait for I/0 completion;// block data area char buf[BLKSIZE];)
} BUFFER;
BUFFER buf[NBUF],*freelist;// NBUF buffers and free buffer list
  • 设备表
struct devtab{
u16 dev;
// major device number // device buffer list BUFFER *dev_list;BUFFER*io_queue
// device I/0 queue ) devtab[NDEV];

  • Unix getblk/brelse算法
BUFFER *getblk(dev,blk){
    while(1){
     search dev_list for a bp=(dev,blk);
     if (bp in dev_lst)
       if(bp BUSY)
          set bp WANTED flag;
          sleep(bp);
          continue;
           }
      take bp put of freelist;
      mark bp BUSY;
      return bp;
}

Unix算法的优点:

  • 数据的一致性;
  • 缓存效果;
  • 临界区;

Unix算法的缺点:

  • 效率低下;
  • 缓存效果不可预知;
  • 可能会出现饥饿;
  • 该算法使用只适用于单处理系统的休眠/唤醒操作。

使用信号量的缓冲区管理算法

  • 保证数据一致性
  • 良好的缓存效果
  • 高效率:没有不必要进程唤醒
  • 无死锁和饥饿

perror()函数实践

#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
int main(){
   FILE* fd;
   fd=fopen("test","r");
   if(fd==NULL){
       perror("error:");
       return -1;
    }
    return 0;
}     


出现报错是依照全局变量errno的值来决定要输出的字符串

苏格拉底挑战

  • 块设备I/O缓冲区




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



标签:缓存,int,信息安全,第十一,dev,buffer,bp,笔记,缓冲区
From: https://www.cnblogs.com/wangqi3206/p/17830366.html

相关文章

  • 刷题笔记——基础算法(C)
    2181.合并零之间的节点-力扣(LeetCode)给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val==0 。对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0......
  • 算法学习笔记(38): 2-SAT
    SAT问题,也就是可满足性问题BooleanSatisfiabilityProblem,是第一个被证明的NPC问题。但是特殊的2-SAT我们可以通过图论的知识在线性复杂度内求解,构造出一组解。基本的模型在P4782【模板】2-SAT中有体现。经典的标志是:AB至少选一个,AB要么都选,要么都不选。简单的我......
  • 【celery详解】celery学习md笔记 第(2)期:Celery任务调度详解
    Celery是一个功能完备即插即用的任务队列。它使得我们不需要考虑复杂的问题,使用非常简单。celery看起来似乎很庞大,本文我们先对其进行简单的了解,然后再去学习其他一些高级特性。全套笔记直接地址:请移步这里共4章,12子模块介绍一下如何调用任务,队列路由.1.signature我......
  • 算法学习笔记(37): 矩阵
    一切线性操作都可以归为矩阵乘法--bySmallBasic本文是拿来玩耍,而不是学习的!目录线性递推超级矩阵快速幂!矩阵与邻接矩阵矩阵与线段树矩阵与FFT矩阵与期望不知道还能扯啥了矩阵的加法,要求两个矩阵大小相等,于是可以对位单点相加。\[C_{i,j}=A_{i,j}+B_{i,j}\]关于矩......
  • openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过
    openGauss学习笔记-122openGauss数据库管理-设置密态等值查询-密态支持函数/存储过程密态支持函数/存储过程当前版本只支持sql和PL/pgSQL两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。密态等值查询支持函数存储过程新增系......
  • 宜笔记
    Markdown学习标题:二级标题三级标题 字体Hello,World!Hello,World!Hello,World!Hello,World! 引用提高编程能力最直接也有效的方法就是看源码,学习源码是有一定门槛的,刚开始看的时候可能会遇到很多问题或者根本就看不懂。这个时候也不能放弃,要逼着自己看源码,第一遍第......
  • Linux第12章学习笔记
    第十二章学习笔记块设备I/O和缓冲区管理本章讨论了块设备1O和缓冲区管理;解释了块设备I/O的原理和I/O缓冲的优点;论述了Unix的缓冲区管理算法,并指出了其不足之处;还利用信号量设计了新的缓冲区管理算法,以提高I/O缓冲区的缓存效率和性能;表明了简单的PV算法易于实现,缓存效果好,不存在......
  • Markdown语法学习笔记
    MyFirstMarkdownFile(Markdown常用语法总结)文章标题文字前以#数量为一级、二级、三级、四级标题,例如本文标题,我使用了:#MyFirstMarkdownFile(Markdown常用语法总结)同样的,SecondTitle(##二级标题)ThirdTitle(###三级标题)FourthTitle(####四级标题)正文文字直......
  • 第十一周学习
    #块设备I/O和缓冲区管理 块设备I/O和缓冲区管理是操作系统中关键的概念,涉及到如何处理和管理存储设备上的数据。这个文档将介绍块设备I/O、缓冲区管理以及它们在计算机系统中的重要性。 ##块设备I/O 块设备I/O是指在存储设备上以块为单位进行数据读取和写入的过程。块......
  • 《黑客攻防技术宝典》阅读笔记
    1.密码破解与加密探讨了不同类型的密码攻击,包括字典攻击和暴力攻击。重点介绍了密码哈希和加盐的概念,以及如何防止RainbowTable攻击。2.Web应用程序安全强调了常见的Web漏洞,如SQL注入和跨站脚本攻击(XSS)。提供了一些建议,帮助开发者编写更安全的代码,以防范常见的Web攻击......