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

学习笔记10

时间:2023-11-18 20:13:09浏览次数:27  
标签:10 信号量 void 笔记 学习 缓冲区 算法 pthread msg

20211301 学习笔记10

教材知识点总结

12.1 块设备I/O缓冲区

  • 读写到内存缓冲区中的操作:get_block,put_block

  • I/O缓冲原理:文件系统使用一系列I\O缓冲区作为块设备的缓冲内存,当进程读取标识的磁盘块时,首先在缓冲区缓存中搜索分配给磁盘块的缓冲区,若存在并包含有效数据,则读取数据,若不存在,会分配一个缓冲区,将数据从磁盘读入缓冲区,然后从缓冲区读取数据

  • bread函数:

  • awrite:

  • 中断处理程序的算法:

12.2 Unix I\O缓冲区管理算法

  • I\O缓冲区:结构体由两部分组成(用于管理的缓冲头部分和用于数据块的数据部分)

  • 设备表

  • 缓冲区初始化:系统启动时,所有I\O缓冲区都在空闲列表中,所有设备列表和IO队列均为空

  • 缓冲区列表:分配时,会被插入设备表中

  • getblk brelse算法:

  • 算法:数据一致性、缓存效果、临界区

  • Unix算法的缺点:效率低下、缓存效果不可预知、会出现饥饿、只适用于单处理器系统的休眠、唤醒操作

新的I\O缓冲区管理算法

  • 信号量实现进程同步的主要优点
    • 计数信号量可用来表示可用资源的数量
    • 当多个进程等待一个资源,信号量上的v操作只会释放一个等待进程
  • 使用信号量的缓冲区管理算法:
    • 保证数据一致性
    • 良好的缓存效果
    • 高效率:没有重试循环
    • 无死锁和饥饿

代码实现

#include<stdio.h>
#include<pthread.h>
#define NUM 5
void *print_msg(void *);
int main()
{
    pthread_t t1,t2;
    pthread_create(&t1,NULL,print_msg,(void*)"hello");
    pthread_create(&t2,NULL,print_msg,(void*)"world\n");
    pthread_join(t1,NULL);
    pthread_join(t2,NULL);
    printf("t1,t2 finished!\n");
    return 0;
}
void *print_msg(void *msg)
{
    char *cp = (char *) msg;
    int i;
    for(i=0;i<NUM;i++)
    {
        printf("%s",cp);
        fflush(stdout);
        sleep(1);
    }
    return NULL;
}

问题与解决方案

  • 问题一:代码报错如下

  • 问题一解决方案:

  • 问题二:代码找不到pthread库

  • 问题二解决方案:

苏格拉底提问

  • 信号量






  • I\O缓冲区管理算法






标签:10,信号量,void,笔记,学习,缓冲区,算法,pthread,msg
From: https://www.cnblogs.com/pengqiqi/p/17838214.html

相关文章

  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第十周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第十周学习笔记一、任务要求自学教材第12章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知......
  • 面向对象笔记——面向对象分析的过程
    面向对象软件过程简介软件过程的基本概念软件的诞生及其研发整个生命周期是一个过程,这个过程称之为软件过程。包括:需求获取(沟通)、需求分析和设计(建模)、实现和测试(构建)、部署和维护软件过程是描述了实施于软件开发和维护中的阶段、方法、技术、实践及相关产物(计划、文档、模......
  • 21207106-xuesong
    菜单系列题及期中总结一、前言这次博客是主要对菜单系列题目和期中题目总结,菜单系列题目包括菜单计价程序-3、菜单计价程序-4、菜单计价程序-5,菜单系列题目,主要是考察对类的创建,怎么设计合适的类,类与类之间的关系,考察了封装,继承,依赖等。其次是考察对正则表达式判断输入格......
  • 第十二周Linux学习报告
    本周学习的是上周没有讲完的磁盘管理以及新学习的文件查找、打包压缩及解压磁盘管理1、修改挂载点的配置文件,目录在/etc/fstab,使用vim修 文件查找、打包压缩以及解压1、which命令查找符合条件的命令文件,可查看其是否存在以及执行的位置  2、locate命令可以让用户快速......
  • 通过PowershellPlus示例脚本学习PowerShell-CheckDB
    ##=====================================================================##Title:CheckDB-MSSQL-UsingADO##Description:RunaDBCCagainstspecifiedserverinstanceanddatabase##Author:Idera##Date:9/1/2008##Input:-......
  • 学习笔记10
    一、任务详情自学教材第12章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)实践过程截图,代......
  • 2023-2024-1 20231321 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231321《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第八周作业)这个作业的目标<计算机科学概论......
  • 第十周学习笔记
    第12章块设备I/O和缓冲区管理块设备和I/O缓冲区由于磁盘I/O速度相对较慢,文件系统通常使用I/O缓冲来减少存储设备的物理I/O数量,提高文件I/O效率,增加系统吞吐量。基本原理是使用一系列I/O缓冲区作为块设备的缓存内存,以避免每次执行读写文件操作时都进行磁盘I/O。I/O缓冲区的基本......
  • buuctf:crypto1-10
    crypto1. 得到一串字符串,可以用base64编码解码工具之间进行解密 crypto2. 标题直接写了MD5,所以用md5解密(数字与字母的组合)可直接解出crypto3.同理第三题,用url工具crypto4. 用凯撒密码解决并且将偏移量改为13crypto5. 摩斯密码直接得出crypto6.这道题吧,只能靠......
  • 信息安全系统设计与实现——学习笔记10
    任务详情:自学教材第5章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳1.块设备I/O缓冲区与内存访问相比,磁盘I/O速度较慢,所以不希望在每次执行读写文件操作时都执行磁盘I/O。因此,大多数文件系统使用I/O缓冲来减少进出存储设备的物理I/O数量I/O缓冲的基本原理:文件系统使用......