摘要: 目录类类对象的非虚成员函数类的成员变量空类对象具有虚函数的类对象 类 类本身不会存储在内存中,类实例化的对象才会保存在内存中。但是使用 sizeof 计算类大小时能得到结果,这是因为 sizeof 会在编译时就得到类型信息,这只与类的布局有关。 类对象的非虚成员函数 考虑如下代码: #include 阅读全文
posted @ 2025-09-19 11:54 名字好难想zzz 阅读(12) 评论(0) 推荐(0)
摘要: 目录等待事件持续等待周期间歇条件变量可能的死锁期望事件使用期望创建期望std::asyncstd::promisestd::packaged_task对比待更新 等待事件 持续等待 当一个线程等待另一个线程完成任务时,持续的检查共享数据标志(用于做保护工作的互斥量),直到另一线程完成工作时对这个标志 阅读全文
posted @ 2025-09-05 21:48 名字好难想zzz 阅读(5) 评论(0) 推荐(0)
摘要: 目录互斥量的锁定不仅仅是锁谨慎的设置接口初始化的保护死锁避免 互斥量的锁定 https://cppreference.cn/w/cpp/header/mutex 互斥量 std::mutex 不仅实现了互斥量的实例化,还提供了像 lock() 之类的成员函数来实现手动加锁和解锁。 但是实践中不推荐调 阅读全文
posted @ 2025-09-05 15:12 名字好难想zzz 阅读(14) 评论(0) 推荐(0)
摘要: 目录前言线程启动线程任务线程结束加入式分离式 前言 总结一下多线程在开发中的应用,属于偏工程化的知识,因此不会有太多关于语法的介绍。但是作为c++11多线程的入门是完全没问题的。这里尽量不考虑源码和实现,而更关注实际应用,当然也希望能写的深入一点。 这一节主要有关头文件<thread>,相关知识参考 阅读全文
posted @ 2025-09-02 22:12 名字好难想zzz 阅读(6) 评论(0) 推荐(0)
摘要: 目录文件内存映射mmap注册系统调用相关数据结构实现mmap惰性分配munmapfork和exit 文件内存映射 在传统的I/0技术中, 读取一个文件,文件数据会:磁盘->内核缓冲区->用户缓冲区 如果进行了修改,则是用户缓冲区->内核缓冲区->磁盘 也就是说,每次读写都要 切换内核态/用户态 以及 阅读全文
posted @ 2025-08-08 14:34 名字好难想zzz 阅读(9) 评论(0) 推荐(0)
摘要: 目录预备知识Xv6文件系统磁盘层缓冲区层索引层Large files修改inode修改映射逻辑修改释放逻辑Symbolic links系统调用注册补充相关常量实现symlink 预备知识 Xv6文件系统 文件系统的目的是组织和存储数据。通常支持用户和应用程序之间的数据共享以及持久性,以便数据在重新引 阅读全文
posted @ 2025-08-05 15:15 名字好难想zzz 阅读(16) 评论(0) 推荐(0)
摘要: 目录Memory allocatorBuffer cache修改数据结构相关操作 Memory allocator kalloctest会对Xv6的内存分配进行压力测试。目前的版本会产生大量的锁争用,其原因是kalloc()使用一个空闲链表,并由单个锁进行保护。 本实验的任务是重新设计内存分配器:为 阅读全文
posted @ 2025-08-03 14:28 名字好难想zzz 阅读(13) 评论(0) 推荐(0)
摘要: 目录预备知识进程切换的情况进程切换的实现相关代码上下文结构体:struct context上下文切换函数:swtch.S第一次调度:sched()第二次调度:sheduler()Uthread: switching between threads线程上下文线程初始化线程调度Using threads 阅读全文
posted @ 2025-07-24 16:25 名字好难想zzz 阅读(12) 评论(0) 推荐(0)
摘要: 目录预备知识写时复制(COW)fork()中的写时复制Implement copy-on write添加COW标志添加引用计数修改父子进程复制实现写时复制 预备知识 写时复制(COW) 核心思想就是等到修改数据时才真正分配内存空间来拷贝资源。比如说,有多个请求同时请求相同资源(如内存或磁盘上的数据存 阅读全文
posted @ 2025-07-19 11:17 名字好难想zzz 阅读(17) 评论(0) 推荐(0)
摘要: 目录预备知识惰性分配页面故障异常Eliminate allocation from sbrk()Lazy allocationLazytests and Usertests 预备知识 惰性分配 当一个用户进程申请内存时,OS并不会立即分配所需要的全部物理内存,而是仅仅记录已分配的用户地址并在用户页表 阅读全文
posted @ 2025-07-17 17:39 名字好难想zzz 阅读(20) 评论(0) 推荐(0)