随笔分类 -  操作系统

摘要:背景 好久没有写博客了,有两个原因。一是工作强度有点大,一时间难以适应,一有空闲时间就像休息睡觉 : ( ; 二是确实不知道写什么,工作内容基本以业务为主,也属于保密内容,没啥好写的。现在稍微有点时间来回顾一下了,个人对动态链接相关的认知还比较浅显,所以写一篇博客回顾并加深映像,也方便后续的深入学习 阅读全文
posted @ 2025-02-09 20:57 别杀那头猪 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 概览 mmap是Linux中使用频率非常高的一个系统调用: - 程序运行前,mmap会先将动态链接库映射到进程的地址空间。 - 用户调用malloc,如果分配的内存大小大于阈值,则直接使用mmap分配 - 使用POSIX的有名信号量时,自动调用mmap将共享文件(其中包括futex锁)映射至进程 阅读全文
posted @ 2023-08-04 15:01 别杀那头猪 阅读(378) 评论(0) 推荐(0) 编辑
摘要:# 从std::mutex到futex机制 我原本出发点是C++ std::mutex的实现原理,但是经过一番查阅,发现C++ std::mutex是对glibc-nptl库pthread_mutex的封装;而nptl库在用户态完成了futex机制的一部分;最后在以linux为内核的操作系统中,又提 阅读全文
posted @ 2023-06-14 21:22 别杀那头猪 阅读(2005) 评论(1) 推荐(0) 编辑
摘要:# 概览 这篇文章从内核、glibc库源码的角度整理一下Linux的进程间通信机制。 众所周知,Linux操作系统的通信机制有以下几种: - 信号 - 管道(分为匿名管道和有名管道) - 信号量 - 共享内存 - 消息队列 - Socket 本文主要内容包括其中前五个。 **其中信号量、共享内存、消 阅读全文
posted @ 2023-06-03 21:59 别杀那头猪 阅读(283) 评论(0) 推荐(1) 编辑
摘要:## 本文结构 前面4节先展开讲讲linux内核2.6.24版本的调度器实现,其中包括CFS调度器。 然后对linux历史上出现过的O(1)和O(n)调度器做一个比较,看看它们的优缺点。 ## 优先级和调度策略 linux中进程优先级在用户试图和内核视图两个方面有着不同表达。 在用户层面,对普通进程 阅读全文
posted @ 2023-05-22 19:35 别杀那头猪 阅读(360) 评论(0) 推荐(0) 编辑
摘要:## 高速缓存的基本原理 > 参考资料: > > - CSAPP 相关章节 > - [Gallery of Processor Cache Effects (igoro.com)](http://igoro.com/archive/gallery-of-processor-cache-effects 阅读全文
posted @ 2023-05-11 22:52 别杀那头猪 阅读(280) 评论(0) 推荐(0) 编辑
摘要:# JOS中的锁 JOS中只有自旋锁,用于大内核锁的实现: ~~~c static inline void lock_kernel(void) { spin_lock(&kernel_lock); } ~~~ 自旋锁结构如下: ~~~c struct spinlock { unsigned lock 阅读全文
posted @ 2023-03-16 16:19 别杀那头猪 阅读(101) 评论(0) 推荐(0) 编辑
摘要:MIT6.828_JOS IPC(进程间通信) 进程间通信是微内核的重要组成部分,是JOS文件系统的前提,因此先来看一下JOS的IPC实现。 两个进程间通信的消息可以只是一个32位的整数,也可以使用一整个页作为消息载体。无论哪一种,都需要我们在 struct Env中额外添加下面这几个属性: str 阅读全文
posted @ 2023-03-02 20:51 别杀那头猪 阅读(250) 评论(3) 推荐(1) 编辑
摘要:# MIT6.828_JOS进程创建 有关进程的内容有很多,本文先理清JOS进程相关的数据结构,JOS怎样创建进程,JOS的第一个进程做了写什么。 ## 进程相关数据结构 与xv6系统`struct proc`结构类似,JOS系统有一个`struct Env`作为进程控制块(PCB)。 顺带一提,l 阅读全文
posted @ 2023-02-28 15:34 别杀那头猪 阅读(157) 评论(0) 推荐(1) 编辑
摘要:# MIT6.828_JOS中断与系统调用 ## 异常、中断、系统调用 异常和中断都是指"受保护的控制转移方法",都会使处理器从用户态转移为内核态 按照intel的定义,异常和中断的区别为: 中断是用来处理CPU外部的硬件请求(比如键盘、鼠标等),异常则用来处理CPU在执行过程中自己遇到的错误(比如 阅读全文
posted @ 2023-02-15 16:21 别杀那头猪 阅读(160) 评论(0) 推荐(0) 编辑
摘要:# MIT6.828_JOS内存管理 内存管理有两个部分 - `物理内存`分配器, 以 4KB为一个页面进行管理 - 虚拟内存的管理 JOS`机器实际物理内存的大小是128MB`,JOS以4KB一页将其分为 32768个物理页。 ![image-20221020200629806](https:// 阅读全文
posted @ 2023-02-12 16:25 别杀那头猪 阅读(123) 评论(0) 推荐(1) 编辑
摘要:# JOS启动流程 首先做个总览,JOS的启动流程主要分三步: 1. BIOS - 检查内存、外设、构建临时IDT等 - 将启动盘中的0号扇区的512字节读入到物理内存的0x7c00处,这段内存就是`bootloader` - 使用jmp指令将控制权交移至bootloader 2. bootload 阅读全文
posted @ 2023-02-11 16:34 别杀那头猪 阅读(277) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
🚀
回顶
收起