sin(x)

Tag: uCore

uCore中实现匿名管道

进程间通信是操作系统需要提供的一项重要功能,其中管道又是最为基础的进程间通信方式之一。管道的作用相当于提供了一个先进先出的队列,进程可以向管道中写入数据也可以从中读取数据。本文将介绍如何在uCore操作系统实验八的基础上实现匿名管道。

管道设备的源代码位于pipe文件夹下,测试程序源代码为pipe.c

管道简介

管道技术是进程间通信的一种方式,和文件不同,管道以及管道的变种不会占据任何的磁盘空间,而只是使用了内核中的一个缓冲区。如果缓冲区满了,那么进程会被阻塞。管道通常是单工的,通常只有一个发送端和一个接收端。当然,多个发送端或者多个接收端也是完全可行的。

Continue reading

uCore中实现Buddy和Slub算法

这是本学期创新实践课程uCore OS实验2的挑战部分,代码实现可见:buddy.cbuddy.hslub.cslub.h

Buddy System分配算法

初始化

在Buddy System中,空间块之间的关系形成一颗完全二叉树,对于一颗有着n叶子的完全二叉树来说,所有节点的总数为。也就是说,如果Buddy System的可分配空间为n页的话,那么就需要额外保存2n-1个节点信息。

Continue reading