自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(236)
  • 收藏
  • 关注

原创 233.Mit6.S081-实验十一-Network

在本实验室中,将为网络接口卡(NIC)编写一个xv6设备驱动程序。

2024-08-07 10:32:09 1052

原创 232.Mit6.S081-实验十-Mmap

mmap和munmap系统调用允许UNIX程序对其地址空间进行详细控制。它们可用于在进程之间共享内存,将文件映射到进程地址空间,并作为用户级页面错误方案的一部分,如本课程中讨论的垃圾收集算法。在本实验室中,您将把mmap和munmap添加到xv6中,重点关注内存映射文件(memory-mapped files)。

2024-08-05 17:19:56 1039

原创 231.Mit6.S081-实验九-File system

在本实验室中,您将向xv6文件系统添加大型文件和符号链接。

2024-08-03 11:28:13 1195

原创 230.信号量

信号量是一种用于多线程同步的机制,可以控制对共享资源的访问。信号量的基本概念是使用计数器来控制多个线程对共享资源的访问。信号量可以分为两类:计数信号量(Counting Semaphore)和二进制信号量(Binary Semaphore)。

2024-07-29 21:52:08 217

原创 229.MIT6.S081-实验八-Locks

在本实验中,您将获得重新设计代码以提高并行性的经验。多核机器上并行性差的一个常见症状是频繁的锁争用。提高并行性通常涉及更改数据结构和锁定策略以减少争用。您将对xv6内存分配器和块缓存执行此操作。要开始本实验,请将代码切换到lock分支。

2024-07-29 15:57:07 852

原创 228.线程同步(互斥、读写、自旋锁)

线程同步是指在多线程编程中控制多个线程对共享资源的访问,以避免数据竞争和不一致性。

2024-07-26 22:22:50 703

原创 227.MIT6.S081-Multithreading

本实验将使我们熟悉多线程。将在用户级线程包中实现线程之间的切换,使用多个线程来加速程序,并实现一个屏障。第一个练习让我们在用户态模拟了线程的切换,这里重要的就是进程/线程上下文的保存与恢复;第二三个练习则是让我们跳出了xv6,去熟悉pthread库和线程的同步互斥。

2024-07-24 16:01:21 763

原创 226.平均绩点

ACM模式练习。

2024-07-23 17:51:39 229

原创 225.Mit6.S081-实验六-Copy-on-Write Fork for xv6

虚拟内存提供了一定程度的间接寻址:内核可以通过将PTE标记为无效或只读来拦截内存引用,从而导致页面错误,还可以通过修改PTE来更改地址的含义。在计算机系统中有一种说法,任何系统问题都可以用某种程度的抽象方法来解决。Lazy allocation实验中提供了一个例子。这个实验探索了另一个例子:写时复制分支(copy-on write fork)。

2024-07-21 11:25:17 683

原创 224.Makefile的使用

Makefile是一种用于管理和自动化软件编译过程的文本文件。它通常包含了一系列规则,这些规则描述了如何根据源代码文件生成可执行文件或者其他目标文件。Makefile的核心概念是规则和依赖关系,规则定义了如何生成一个或多个目标文件,而依赖关系则指定了生成目标文件所需要的源文件或其他依赖文件。下面我们通过一步一步编写Makefile来学习Makefile规则。

2024-07-18 17:43:14 683

原创 223.最后一个单词的长度

【代码】223.最后一个单词的长度。

2024-07-18 15:36:30 121

原创 222.买卖股票的最佳时机(力扣)

【代码】222.买卖股票的最佳时机(力扣)

2024-07-18 15:11:14 283

原创 221.Mit6.S081-实验5-xv6-xv6 lazy page allocation

一、操作系统可以使用页表硬件的技巧之一是sbrk()。在我们给出的内核中,sbrk()。内核为一个大请求分配和映射内存可能需要很长时间。例如,考虑由262144个4096字节的页组成的千兆字节;即使单独一个页面的分配开销很低,但合起来如此大的分配数量将不可忽视。此外,有些程序申请分配的内存比实际使用的要多(例如,实现稀疏数组),或者为了以后的不时之需而分配内存。为了让sbrk()在这些情况下更快地完成,复杂的内核会延迟分配用户内存。也就是说,sbrk()。。您将在这个实验室中向xv6添加这个延迟分配特性。

2024-07-17 19:36:02 852

原创 220.贪心算法:根据身高重建队列(力扣)

它接受一个`vector<vector<int>>`类型的参数`people`,其中每个内部向量包含两个整数:第一个整数表示身高,第二个整数表示该人的k值。它接受两个`vector<int>`类型的参数`a`和`b`,并返回一个布尔值。这段代码定义了一个名为`Solution`的类,其中包含两个成员函数:一个静态比较函数`cmp`和一个成员函数`reconstructQueue`。- 使用`sort`函数对`people`向量进行排序,排序规则由静态比较函数`cmp`提供。

2024-07-12 17:18:02 653

原创 219.贪心算法:柠檬水找零(力扣)

【代码】219.贪心算法:柠檬水找零(力扣)

2024-07-12 15:42:46 480

原创 218.贪心算法:分发糖果(力扣)

在这个循环中,如果当前孩子的评分比他后一个孩子的评分高(`ratings[i]>ratings[i+1]`),则当前孩子的糖果数应该是他后一个孩子的糖果数加1和他当前糖果数中的较大值(`candyNum[i]=max(candyNum[i+1]+1,candyNum[i]);在这个循环中,如果当前孩子的评分比他前一个孩子的评分高(`ratings[i]>ratings[i-1]`),则当前孩子的糖果数应该比前一个孩子的糖果数多1(`candyNum[i]=candyNum[i-1]+1;

2024-07-12 15:24:07 1154

原创 217.贪心算法:加油站(力扣)

【代码】217.贪心算法:加油站(力扣)

2024-07-12 14:47:34 443

原创 216.Mit6.S081-实验四-Traps

本实验探索如何使用陷阱实现系统调用。您将首先使用栈做一个热身练习,然后实现一个用户级陷阱处理的示例。开始编码之前,请阅读xv6手册的第4章和相关源文件:要启动实验,请切换到traps。

2024-07-12 14:12:22 4627

原创 215.Mit6.S081-实验三-page tables

在本实验室中,您将探索页表并对其进行修改,以简化将数据从用户空间复制到内核空间的函数。

2024-07-11 19:16:37 1173

原创 214.贪心算法:K次取反后最大化的数组和(力扣)

【代码】214.贪心算法:K次取反后最大化的数组和(力扣)

2024-07-08 20:55:53 669 1

原创 213.贪心算法:跳跃游戏||(力扣)

该算法使用贪心策略,每次选择当前能跳跃的最远位置,并更新下一次能跳跃的最远位置。遍历过程中,每当到达当前能跳跃的最远位置时,增加跳跃次数,并更新当前跳跃能到达的最远位置。如果在更新过程中,发现能到达或超过终点,跳出循环。,表示最少需要跳跃两次。

2024-07-08 20:34:53 796

原创 212.贪心算法:跳跃游戏(力扣)

这个算法使用贪心算法的思路,通过遍历数组,每一步更新能到达的最远位置。如果能到达或超过数组的最后一个位置,则返回。

2024-07-08 20:09:10 630

原创 211.xv6——3(page tables)

UART0和UART0_IRQVirtio磁盘接口CLINT#define CLINT_MTIME (CLINT + 0xBFF8) // 启动以来的时钟周期数PLIC。

2024-07-04 19:48:08 937

原创 210.C++中max_element和min_element 的使用

和是 C++ 标准库中的函数,用于在容器(如 vector、数组等)中找到最大和最小元素的迭代器(或指针)。

2024-07-02 16:46:20 472

原创 209.力扣每日一题:质数的最大距离

【代码】209.力扣每日一题:质数的最大距离。

2024-07-02 16:42:32 440

原创 208.贪心算法:买卖股票的最佳时机||(力扣)

表示最大利润为7。

2024-07-02 16:08:22 228

原创 207.贪心算法:最大子数组和(力扣)

【代码】207.贪心算法:最大子数组和(力扣)

2024-07-02 15:44:51 226

原创 206.贪心算法:摆动序列(力扣)

【代码】206.贪心算法:摆动序列(力扣)

2024-07-02 15:20:13 555

原创 205.Mit6.S081-实验二 system calls

在上一个实验室中,您使用系统调用编写了一些实用程序。在本实验室中,您将向xv6添加一些新的系统调用,这将帮助您了解它们是如何工作的,并使您了解xv6内核的一些内部结构。您将在以后的实验室中添加更多系统调用。

2024-06-30 19:38:48 1764

原创 204.贪心算法:分发饼干(力扣)

以下来源于代码随想录。

2024-06-30 15:02:49 300

原创 203.回溯算法:N皇后(力扣)

【代码】203.回溯算法:N皇后(力扣)

2024-06-26 11:45:56 193

原创 202.回溯算法:全排列||(力扣)

【代码】202.回溯算法:全排列||(力扣)

2024-06-26 10:38:41 405

原创 201.回溯算法:全排列(力扣)

【代码】201.回溯算法:全排列(力扣)

2024-06-26 10:15:43 327

原创 200.回溯算法:子集||(力扣)

【代码】200.回溯算法:子集||(力扣)

2024-06-25 16:22:39 360

原创 199.罗马数字转整数(力扣)

【代码】199.罗马数字转整数(力扣)

2024-06-24 13:56:37 465

原创 198.回溯算法:子集(力扣)

【代码】198.回溯算法:子集(力扣)

2024-06-24 13:32:39 240

原创 197.回溯算法:复原IP地址(力扣)

【代码】197.回溯算法:复原IP地址(力扣)

2024-06-24 12:39:06 411

原创 196.每日一题:检测大写字母(力扣)

【代码】196.每日一题:检测大写字母(力扣)

2024-06-23 18:47:10 284

原创 195.回溯算法:分割回文串(力扣)

【代码】195.回溯算法:分割回文串(力扣)

2024-06-23 17:18:01 376

原创 194.回溯算法:组合总和||(力扣)

【代码】194.回溯算法:组合总和||(力扣)

2024-06-23 16:28:12 417

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除