学习笔记10

关于知识点

知识点归纳

第十二章 块设备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:

posted @ 2023-11-21 19:26  20211403左颖  阅读(21)  评论(0编辑  收藏  举报