书栈网 · BookStack 本次搜索耗时 0.012 秒,为您找到 178 个相关结果.
  • 设置实验环境

    设置实验环境 设置实验环境 我们参考了MIT的xv6、Harvard的OS161和Linux等设计了ucore OS实验,所有OS实验需在Linux下运行。对于经验不足的同学,推荐参考“通过虚拟机使用Linux实验环境”一节用虚拟机方式进行试验。 也有同学在MAC系统和Windows系统中搭建实验环境,不过过程相对比较复杂,这里就不展开介绍了。 ...
  • 实现: slab算法的简化设计实现

    【实现】slab算法的简化设计实现 数据结构描述 分配与释放内存实现描述 【实现】slab算法的简化设计实现 数据结构描述 slab 算法采用了两层数据组织结构。在最高层是 slab_cache,这是一个不同大小slab 缓存的链接列表数组。slab_cache的每个数组元素都是一个管理和存储给定大小的空闲对象(obj)的slab 结构链表,...
  • 背景:80386的任务切换

    【背景】80386的任务切换 【背景】80386的任务切换 任务 是80386硬件描述中的一个名词,在这里我们可以简单地把运行在内核态的ucore成为一个任务,把运行在用户态的应用称为另外一任务。任务寄存器(Task Register,简称TR) 储存了一个16位的选择子(对软件可见),用来索引全局描述符表(GDT)中的一项。TR对应的描述符描述的一...
  • 实现: 创建并执行内核线程

    【实现】创建并执行内核线程 创建第0个内核线程idleproc 创建第1个内核线程initproc 调度并执行内核线程initproc 【实现】创建并执行内核线程 既然建立了进程控制块,我们就可以通过进程控制块来创建具体的进程了。首先,我们考虑最简单的内核线程,它通常只是内核中的一小段代码或者函数,没有用户空间。而由于在操作系统启动后,已经对整...
  • 屏蔽与使能中断

    屏蔽与使能中断 屏蔽与使能中断 根据操作系统原理的知识,我们知道如果没有在硬件级保证读内存-修改值-写回内存的原子性,我们只能通过复杂的软件来实现同步互斥操作。但由于有开关中断和test_and_set_bit等原子操作机器指令的存在,使得我们在实现同步互斥原语上可以大大简化。 在ucore中提供的底层机制包括中断屏蔽/使能控制等。kern/syn...
  • Linux运行环境

    Linux运行环境 Linux运行环境 QEMU用于模拟一台x86计算机,让ucore能够运行在QEMU上。为了能够正确的编译和安装 qemu,尽量使用最新版本的qemu ,或者os ftp服务器上提供的qemu源码:qemu-1.1.0.tar.gz)。目前 qemu 能够支持最新的 gcc-4.x 编译器。例如:在 Ubuntu 12.04 系统...
  • 操作系统简介

    简介 用一句话描述本章 本章概述 简介 用一句话描述本章 站在一万米的高空看操作系统的发展和特征! 本章概述 本章站在一万米的高空来看操作系统和计算机原理。相对用软件而言,操作系统其实是一个相比较复杂的系统软件,直接管理计算机硬件和各种外设,以及给应用软件提供帮助。这样描述还太简单了一些,我们可对其进一步描述:操作系统是一个可以管理CP...
  • 设备层文件 IO 层

    设备层文件 IO 层 设备层文件 IO 层 在本实验中,为了统一地访问设备,我们可以把一个设备看成一个文件,通过访问文件的接口来访问设备。目前实现了stdin设备文件文件、stdout设备文件、disk0设备。stdin设备就是键盘,stdout设备就是CONSOLE(串口、并口和文本显示器),而disk0设备是承载SFS文件系统的磁盘设备。下面我们...
  • 附录B:【原理】进程的属性与特征解析

    附录B:【原理】进程的属性与特征解析 1. 资源管理 2. 进程状态管理 3. 进程与线程 附录B:【原理】进程的属性与特征解析 操作系统负责进程管理,即从程序加载到运行结束的全过程,这个程序运行过程将经历从“出生”到“死亡”的完整“生命”历程。所谓“进程”就是指这个程序运行的整个执行过程。为了记录、描述和管理程序执行的动态变化过程,需要有一个...
  • 物理内存管理

    物理内存管理 物理内存管理 接下来将首先对实验的执行流程做个介绍,并进一步介绍如何探测物理内存的大小与布局,如何以页为单位来管理计算机系统中的物理内存,如何设计物理内存页的分配算法,最后比较详细地分析了在80386的段页式硬件机制下,ucore操作系统把段式内存管理的功能弱化,并实现以分页为主的页式内存管理的过程。