操作系统
文章平均质量分 82
小菜鸡加油
菜鸡
什么都能折磨
展开
-
brk()、mmap()及malloc()基本原理
文章目录linux内存分配缺页中断linux内存分配的原理malloc()背后的实现原理malloc()和free()的功能malloc()和free()的分配算法参考资料linux内存分配缺页中断什么是缺页中断,简单来说是因为操作系统采用了虚拟内存技术,程序代码/数据对应的内容并不一定是完全读入到内存中,在使用到时候发生缺页中断将对应的内容读入到内存中。当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:检查要访问的虚拟地址是否合法查找/分配一个物理页填充物理页内容(读取磁盘,或原创 2022-02-27 16:25:54 · 4207 阅读 · 3 评论 -
操作系统原理与实践(LZJ实验楼)
开坑…可能要很久之后填了。目前只搞定OS的引导。原创 2021-09-19 09:51:00 · 149 阅读 · 0 评论 -
《Operating Systems:Three Easy Pieces》第五章课后习题解答
过程有点曲折。写最后题的时候发现前面的这章内容其实没有全懂。果然实践的时候才能暴露不足阿。而且最后一题被网上的一份题解坑的不惨。不过最后也是学到了新东西。写博客的时候发现共享文件夹莫名其妙坏了。修了1小时也没修好。然后转用之前一个软件XTFP调了一会儿。1.编写一个调用 fork()的程序。在调用 fork()之前,让主进程访问一个变量(例如 x) 并将其值设置为某个值(例如 100)。子进程中的变量有什么值?当子进程和父进程都改变 x 的值时,变量会发生什么?#include<stdi原创 2021-08-14 15:04:37 · 2274 阅读 · 1 评论 -
X86汇编拾贝
操作系统实践与原理目的是收集CSAPP之外的一些x86汇编指令。csapp之外的x86汇编IBM PC下的所有地址都是由“段:偏移”构成的CS:IP寻址CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址,其中 CS 为代码段寄存器,而 IP 为指令指针寄存器 。CSAPP中没有提及似乎是为了简便将开始的程序计数器从0开始,然后就直接找到了要执行程序的第一条指令。但是实际上肯定是存在其他地方的。但是 CPU 怎么知道这些指令存放在内存的那个位置呢?这就需要CS:IP。1000H原创 2021-09-19 09:57:46 · 829 阅读 · 0 评论 -
操作系统期末整理
操作系统整理文章目录操作系统整理1.操作系统概述1.1操作系统的基本特征1.2操作系统的基本功能2.进程管理2.1进程与线程(重要)2.1.4进程的组成2.1.5进程的通信2.2处理机调度2.2.4调度的基本准则2.2.5典型的调度算法2.2.5.1调度算法2.2.5.2甘特图画法注意事项2.2.5.3调度算法的总结2.3进程同步2.3.1概念2.3.3信号量2.3.4管程2.3.5经典同步问题2.3.5.1做题步骤2.3.5.1生产者消费者模型2.3.5.2读者写者问题2.3.5.3哲学家问题2.4注意原创 2022-01-11 16:45:28 · 437 阅读 · 1 评论 -
linux内核添加系统调用(详细)
linux内核添加系统调用(详细)说在前面:这是我第五次编译内核,分别踩了很多坑。中途问过wz佬,佬让我用qemu。我还是最后换ubuntu虚拟机跑了。现在已经有点emo了。这篇博客是我第五次的时候回滚快照重开的写的。注意事项(必看):如果服务器够好就放服务器,如果是学生机子1核2G还是别放服务器了。出锅概率很大,比如内存不够,前台运行断网,后台编译出问题了看不见。已经被坑三次了。打快照很重要!!!!打快照很重要!!!!打快照很重要!!!!建议使用ubuntu版本,看别人博客的时候注意人原创 2021-12-06 21:24:38 · 6006 阅读 · 0 评论 -
系统调用内部数据结构以及执行过程的初步分析
主要是找到一篇不错的博客进行学习系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。在linux中系统调用是用户空间访问内核的唯一手段。 一般情况下应用程序通过应用编程接口API,而不是直接通过系统调用来编程。不过在linux系统编程和之前的实验中.原创 2021-12-14 17:42:37 · 751 阅读 · 0 评论 -
qemu+gdb调试linux内核
文章目录编译内核下载qemu构建initramfs根文件系统1.编译Busybox2.生成initrd3.测试根文件系统gdb调试内核参考文献编译内核# make menuconfig // 调整编译选项在内核编译选项中,开启如下"Compile the kernel with debug info"Kernel hacking —>Compile-time checks and compiler options —>[ ] Compile the kernel with debu原创 2021-12-07 21:15:18 · 1627 阅读 · 0 评论