摘要:
空闲内存管理需要解决什么问题 空闲内存管理是一个广泛的话题,这个内容不仅仅用于操作系统,其他的语言设计也有类似的设计,比如C++的STL的内存分配管理,Go语言的内存管理。它是一个程序设计过程中经常会讨论的问题 我们给定一个大的内存空间给你,你每次程序都需要分配内存,分配到最后,这一块大内存的碎片就 阅读全文
摘要:
利用基址寄存器和界限寄存器可以很容易把不同进程重定位到不同的物理内存区域,但是对于这些内存区域,堆和栈之间有一个很大的空闲区域。如果将整个地址空间都放到物理内存,那么堆和栈之间的空间没有被进程使用,从而造成浪费;此外进程使用的空间要比实际物理内存大,那么物理内存也承载不了。所以仅仅使用基址寄存器和界 阅读全文
摘要:
虚拟内存和地址空间是内存虚拟化的根本,很多时候会搞不懂这个概念和原理,本文会从三个W去讲述虚拟内存,即Why,What和How 虚拟内存的产生 最早的操作系统是直接操作物理内存的,这个时候,每个程序都是独享物理内存空间的,所以操作系统相对比较简单; 随着时代的发展,产生了多道程序和时分共享,就是要求 阅读全文
摘要:
两个或多个进程读写一些共享数据(一般是驻内存或共享文件),最终的结果取决于当时运行的是哪个程序,这种场景被称为竞态条件 为了避免竞态条件,最关键的处理就是在同一个时间内,只允许一个进程使用共享数据(共享内存,共享文件或者其他的贡献的东西),通常来说就是互斥。根据互斥的解决方案,设计了一系列关于操作系 阅读全文
摘要:
进程间通信(InterProcess Communication又名IPC),就是多个进程之间的通信。需要考虑三个问题 怎么把信息从一个进程传递到另一个进程 必须保证两个或更多的进程之间不会相互影响 当两个进程之间有依赖时,需要有一个合适的队列关系 线程间通信跟进程间通信类似 进程间通信,囊括来看, 阅读全文
摘要:
进程模型 进程是正在运行程序的抽象 进程的模型就是一个顺序执行的过程,来保证并行 一个进程是一个正在执行的程序,包括程序计数器,寄存器和变量等,即每个进程都有自己的虚拟CPU 我们把CPU的程序计数器叫做物理程序计数器,进程保存的程序计数器叫做逻辑程序计数器 如下图所示,每个进程都有自己的程序,彼此 阅读全文
摘要:
操作系统主要作用 给用户层提供一个统一的接口 管理硬件资源 操作系统硬件资源 主要有:处理器,内存,硬盘,I/O设备,总线 其中处理器有一些概念(其实就是处理器的特殊寄存器)需要了解一下:程序计数器(program counter),堆栈指针(stack pointer)以及程序状态字(PSW) 程 阅读全文
摘要:
介绍 这个实验,需要写操作系统的内存管理单元代码。内存管理单元有两个组件,第一个组件是内核的物理内存分配器,以便于内核可以分配和释放内存。分配器以4096字节为单位,称为页表。你的任务是维护一个记录已分配和空闲物理页表的数据结构,还有多少进程在共享已分配的页表。同时也要写进程来分配和释放内存页 第二 阅读全文
摘要:
Exercise 1 Exercise 1. In the file kern/pmap.c, you must implement code for the following functions (probably in the order given). boot_alloc() mem_in 阅读全文
摘要:
Exercise 1 Exercise 1. Familiarize yourself with the assembly language materials available on the 6.828 reference page. You don't have to read them no 阅读全文
摘要:
使用Docker 由于用macos编译太过于麻烦,所以就安装Docker来进行操作,主要的Dockerfile如下 FROM ubuntu:16.04 RUN apt-get -qq update RUN apt-get install -y git build-essential gdb gcc- 阅读全文
摘要:
PC Bootstrap 第一个练习的目的是介绍x86汇编语言和PC bootstrap程序,使用QEMU和QEMU/GDB进行调试。这部分你不用写任何代码,但是不管怎样,你最好过一遍,并且回答文章后面的问题 x86汇编 如果你对x86汇编语言不熟悉,通过这个课程,你将很快熟悉它。PC Assem 阅读全文
摘要:
今天来推荐一下自己开发的一个静态博客主题,主要参考fooleap。先贴一个自己的主要样式,喜欢的朋友可以给一个star哟 theme-fd-demo/theme-fd-github 为什么静态博客 虽然现在博客种类繁多,但是广告也非常多,且博客使用习惯参差不齐,而且无法自己管理所有的博客内容,所以就 阅读全文
摘要:
STL组成 容器 配接器 算法 迭代器 仿函数 空间配置器 主要讲解容器和算法,不讲解其他的 容器分类 序列式容器:vector list deque stack queue heap priority_quue slist (queue和stack是配接器) 关联式容器:set map multi 阅读全文
摘要:
数据类型 基本类型 整型(int) 4字节 单精度浮点型(float) 4字节 双精度浮点型(double) 8字节 布尔型(bool) 1字节 字符型(char) 1字节 无类型(void) 宽字符型(wchar_t) 2或4字节 typedef short int wchar_t; 扩展类型 枚 阅读全文