
操作系统实践
开个专栏,用于记录我对于操作系统的学习,用来加深对于理论知识的学习
抖抖认真了
要成为合格的程序员
展开
-
内存分配------------伙伴系统
首先(Buddy)伙伴的定义:两个块大小相同 两个块地址连续 两个块必须是同一个大块中分离出来的适用条件:伙伴系统一般使用于大内存块的分配,并且是2的幂次算法方式:申请:从维护的数据结构中寻找合适所要求大小的块,如果满足,并且此块的剩余部分大于一半,那么就将剩下一半分割出来,供以后调用释放:将此块释放,并且搜索此伙伴块是否也是空闲的,如果是,就合并,然后将合并后的块继续判...原创 2020-03-27 00:01:33 · 847 阅读 · 0 评论 -
CSAPP---------------shell lab
这次的shell-lab还是挺练习关于信号的使用,gdb调试带有信号的程序,以及当一个信号输入到终端时,接下来的逻辑问题做这个实验的时候我很多都参考了这位老哥的实验,刚开始并不理解逻辑问题,于是在一次次的测试过程中慢慢理解整个的逻辑问题,得出结论,要想做好这个实验,就必须先把深入理解计算机系统的第8章异常控制流的大部分都看懂,里面涉及了很多这次shell的逻辑,所以做这个实验的时候,一定要把第...原创 2019-12-06 16:07:22 · 413 阅读 · 0 评论 -
带缓冲I/O 和不带缓冲I/O的区别与联系
这里搜集从网上看到的一些言论,自认为还是比较靠谱的,有些不靠谱的根据自己的理解进行了修正。首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所...转载 2019-12-03 15:26:58 · 281 阅读 · 0 评论 -
使用互斥锁实现读写锁
下面是我的实现方式,如果不对。请大家指正!首先,我百度了一个测试用例:class Test{private : rw_lock rw; pthread_rwlock_t rwlock; static void* shared_task_handler(void* arg) { Test* testptr = static_ca...原创 2019-11-21 19:53:16 · 1681 阅读 · 0 评论 -
mmap内存映射
上一篇进程间通信和文件I\O后续下面通过mmap函数,分析一下共享映射I\O的过程;假设这里使用普通文件进行映射,因为现代系统大部分都是采取段页式存储,所以很明显,将普通文件的数据放进映射区的时候,是按照页面大小的整数倍进行分配的,而且文件放在物理内存中也是页的整数倍,那么文件映射的偏移量应该是页面大小整数倍。#include <sys/mman.h...原创 2019-11-03 22:00:14 · 482 阅读 · 0 评论 -
进程间通信和文件I\O
在Unix进程间通信中,大致有1. 管道 pipe(),用于父子进程间通信(不考虑传递描述符)2. FIFO(有名管道) 非父子进程也能使用,以文件打通3. 文件 文件操作,效率可想而知4. 本地套接字...原创 2019-11-03 15:42:35 · 565 阅读 · 0 评论 -
CSAPP-----malloc lab
我跟着深入理解计算机系统,自己实现了一遍malloc这个实验,书中要求自己实现一个动态内存分配器,malloc,free,realloc;我只是简单的把malloc实现了,realloc并没有仔细的去做;最终实验结果将根据空间利用率和吞吐量进行判断;书中介绍了几种动态内存管理分配的策略:隐式空闲链表,书中将一个每次分配的块,设置成有固定大小的4字节头节点和4字节尾节点,然后根据每个...原创 2019-10-15 17:54:35 · 3015 阅读 · 0 评论 -
操作系统---------页面置换算法
页面置换算法其实缓存中也会用到的算法以下是我阅读现代操作系统的知识记录:当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。如果要换出的页面在内存驻留期间被修改过,就必须把它写回磁盘以更新该页面在磁盘上的副本。如果该页面没有被修改过,那么它在磁盘上的副本已经是最新的,不需要回写。直接用调入的页面覆盖被淘汰的页面就可以了。下面介绍几种页面置...原创 2019-09-29 17:39:03 · 434 阅读 · 0 评论 -
操作系统-------加速分页过程、多级页表
以下是我在看《现代操作系统》时的知识的记录:加速分页过程:一、虚拟地址到物理地址的映射必须非常快1、32位虚拟地址,需要更大的页面和页表由于页面和页表是相对应的;因此计算机为32位地址空间,而页面大小为4KB,则需要页面个数;将超过100万页;此时页表就得有100万条表项,并且每个进程都需要自己的页表,从而占用的存储空间也很大;由于在访问页表时需要访问内存,从而在启动一个...原创 2019-09-27 11:30:06 · 852 阅读 · 0 评论 -
操作系统-----关于寻址空间、逻辑地址、页表、物理地址的映射关系
寻址空间:寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题,即能够寻址的最大容量。一般用MB和G来表示。计算机最小的单位是位(bit),每8位组成一个字节(Byte),字节(B)也是存储器的最小存储单元CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位,如32位寻址的CPU可以寻址的地址也就是4G;比如说16位的地址81...原创 2019-09-25 17:03:51 · 4399 阅读 · 2 评论 -
记录知识-------信号量和互斥量
信号量的定义:它使用一个整型变量来累计唤醒次数,供以后使用。原子操作:是指一组相关联的操作要么都不间断地执行,要么都不执行。下面有两种操作:down 和 up ,对一信号量执行down操作,则是检查其值是否大于0。若该值大于0,则将其值减1并继续,若该值为0,则进程将睡眠,而且此时down操作并未结束。(在检查数值,修改变量值以及可能发生的睡眠操作均作为一个单一的,不可分割的...原创 2019-09-12 20:09:03 · 389 阅读 · 0 评论 -
序----操作系统实践
自己对于操作系统的理论知识还是停留于书上,感觉很浅,所以我希望能够加强自己对于操作系统知识的掌握;特开此贴,用来记录所学!目前想的是,先对着CSAPP的课6.828,完成其网站的课后作业,然后再回去撸一遍这本书的课后作业!...原创 2019-09-11 21:03:06 · 103 阅读 · 0 评论