随笔分类 -  操作系统OS

摘要:目录 在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以 阅读全文
posted @ 2024-12-04 09:10 guanyubo 阅读(99) 评论(0) 推荐(0) 编辑
摘要:目录文件系统布局 文件系统布局 文件系统存放在磁盘上。多数磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。磁盘的0号扇区称为主引导记录(Master Boot Record,MBR),用来引导计算机。在MBR的结尾是分区表。该表给出了每个分区的起始和结束地址。表中的一个分区被标记为活动分区 阅读全文
posted @ 2024-12-02 16:22 guanyubo 阅读(22) 评论(0) 推荐(0) 编辑
摘要:目录主引导记录 (MBR)GUID 分区表 (GPT)引导过程安全性Linux系统启动流程 操作系统中的引导块,也称为引导扇区(Boot Sector)或主引导记录(Master Boot Record, MBR),是硬盘或其他存储设备上的一个特殊区域。它通常位于磁盘的第一个扇区(512字节),在计 阅读全文
posted @ 2024-12-01 15:41 guanyubo 阅读(173) 评论(0) 推荐(0) 编辑
摘要:目录写时复制(copy-on-write) 写时复制(copy-on-write) 参考 阅读全文
posted @ 2024-08-30 08:24 guanyubo 阅读(2) 评论(0) 推荐(0) 编辑
摘要:目录 Linux文件描述符和打开文件之间的关系 阅读全文
posted @ 2024-08-26 15:06 guanyubo 阅读(11) 评论(0) 推荐(0) 编辑
摘要:目录什么是自旋锁自旋锁较互斥锁之类同步机制的优势休眠与忙循环自旋过程自旋锁和互斥锁的区别使用C++实现自主实现自旋锁 什么是自旋锁 自旋锁(Spinlock)是一种广泛运用的底层同步机制。自旋锁是一个互斥设备,它只有两个值:“锁定”和“解锁”。它通常实现为某个整数值中的某个位。希望获得某个特定锁得代 阅读全文
posted @ 2024-07-10 13:38 guanyubo 阅读(392) 评论(0) 推荐(0) 编辑
摘要:在C++11及之后的版本中,我们可以使用std::shared_mutex和相关的读写锁机制来同步对共享资源的访问。这里我会提供一个基本的例子,展示如何使用std::shared_mutex、std::shared_lock和std::unique_lock来实现读写锁的功能。 首先,我们定义一个包 阅读全文
posted @ 2024-07-04 17:08 guanyubo 阅读(139) 评论(0) 推荐(0) 编辑
摘要:目录 参考 阅读全文
posted @ 2024-06-15 12:12 guanyubo 阅读(7) 评论(0) 推荐(0) 编辑
摘要:目录简介实现原理使用方法示例参考 简介 Libevent是一个开源的高性能事件通知库,它旨在为多种I/O模型和事件处理提供一个统一的接口。这一库设计用于帮助开发者编写高效、可扩展的网络服务器和客户端程序,特别适合需要处理大量并发连接的应用场景,如Web服务器、聊天服务器、游戏服务器等。 主要特点 跨 阅读全文
posted @ 2024-05-29 09:11 guanyubo 阅读(101) 评论(0) 推荐(0) 编辑
摘要:目录shm_openserverclientshmgetclientserver shm_open server C++ 可以使用 POSIX 共享内存 API 来创建和管理共享内存 server.cpp #include <fcntl.h> #include <sys/mman.h> #inclu 阅读全文
posted @ 2024-05-13 18:06 guanyubo 阅读(355) 评论(0) 推荐(0) 编辑
摘要:目录mmap/shmgetshmfile文件夹为空ipcs/ipcrm常用函数shmxxx系列1. ftok()2. shmget()3. shmat()4. shmdt()5. shmctl()shm_open系列1. shm_open2. ftruncate3. mmap4. munmap5. 阅读全文
posted @ 2024-05-13 17:59 guanyubo 阅读(639) 评论(0) 推荐(0) 编辑
摘要:目录进程ID与线程ID内核级线程ID和用户级线程ID 进程ID与线程ID 在Linux中,进程和线程之间的关系有些特殊。传统的Unix系统(包括Linux)将线程实现为“轻量级进程”或“LWP”(Light Weight Process)。这意味着线程在内核中基本上被视为进程,但它们共享许多资源(如 阅读全文
posted @ 2024-05-13 17:57 guanyubo 阅读(235) 评论(0) 推荐(0) 编辑
摘要:ps -Lf 进程ID ps -T 进程ID gettid()系统调用 gettid() 是一个Linux系统调用,用于获取当前进程的线程ID。在使用此系统调用时,你需要包含 <sys/syscall.h> 头文件,并且可以通过直接调用或使用 syscall() 函数来进行系统调用。 注意:ps 中 阅读全文
posted @ 2024-05-11 14:51 guanyubo 阅读(73) 评论(0) 推荐(0) 编辑
摘要:目录简介应用场景与回调函数区别示例 简介 在Linux下,基于事件驱动的机制主要是通过内核实现,主要涉及到消息传递机制。当硬件设备发出中断时,Linux内核会将触发事件的信息转发到对应的进程上,从而使用户态的应用程序可以响应中断信号,提高程序的响应能力。 此外,Linux还提供了多种方式来实现事件驱 阅读全文
posted @ 2024-01-28 08:58 guanyubo 阅读(113) 评论(0) 推荐(0) 编辑
摘要:目录Reactor模型Proactor模型总结实际应用优缺点示例 Reactor 模型和 Proactor 模型都是用于处理异步 I/O 操作的并发模型,它们在设计和实现上有一些区别。 Reactor模型 Reactor 模型(反应器模型)是一种基于事件驱动的并发模型,主要用于处理网络通信等 I/O 阅读全文
posted @ 2024-01-26 22:13 guanyubo 阅读(431) 评论(0) 推荐(0) 编辑
摘要:目录简介成员函数 简介 原子操作库 在 C++11 中,std::atomic是一个用于原子操作的类模板。它提供了原子的读-改-写操作,以确保在多线程环境下对共享变量的操作是线程安全的。 std::atomic的主要用途是对共享变量进行原子操作,例如递增、递减、赋值等。它可以用于实现线程安全的数据结 阅读全文
posted @ 2024-01-23 13:28 guanyubo 阅读(105) 评论(0) 推荐(0) 编辑
摘要:目录semaphore信号量的实现semaphore信号量的使用Semaphore与condition_variable的区别 semaphore信号量的实现 参考链接 使用了std::mutex和std::condition_variable来实现信号量的操作。 在这个实现中,Semaphore类 阅读全文
posted @ 2024-01-23 12:39 guanyubo 阅读(48) 评论(0) 推荐(0) 编辑
摘要:目录简单的线程池C++ 线程池 (学习) 简单的线程池 在 C++11 中,你可以使用 std::thread 和 std::mutex 等标准库来实现一个简单的线程池。 这个代码定义了一个简单的线程池类 ThreadPool,可以用于提交任务并在多个线程上执行。 下面是代码的主要部分和功能: Th 阅读全文
posted @ 2024-01-22 19:17 guanyubo 阅读(6) 评论(0) 推荐(0) 编辑
摘要:目录什么是C++中的异步操作?std::async异步调用函数future类 什么是C++中的异步操作? 在C++中,异步操作是指在程序执行期间,可以同时执行多个任务,而无需等待前一个任务完成。这种并发执行的方式可以提高程序的性能和响应速度。 C++中的异步操作通常通过多线程或异步任务来实现。使用s 阅读全文
posted @ 2024-01-21 20:12 guanyubo 阅读(18) 评论(0) 推荐(0) 编辑
摘要:目录condition_variable简介成员函数实现线程间的通信 condition_variable简介 std::condition_variable是C++中用于线程同步的一个类。它通常与std::mutex一起使用,用于在一个或多个线程中阻塞,直到另一个线程修改了共享变量并通知了cond 阅读全文
posted @ 2024-01-20 09:44 guanyubo 阅读(90) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示