ucore学习】的更多相关文章

ucore是清华大学操作系统课程的实验内核,也是一个开源项目,是不可多得的非常好的操作系统学习资源 https://github.com/chyyuu/ucore_lab.git, 各位同学可以使用git下载源码和文档. 本文我会对项目中的code/lab1/boot/bootasm.S文件进行完全注释. # Start the -bit protected mode, jump into C. # The BIOS loads this code from the first sector o…
1.启动操作系统的bootloader,用于了解操作系统启动前的状态和要做的准备工作,了解运行操作系统的硬件支持,操作系统如何加载到内存中,理解两类中断--"外设中断","陷阱中断"等: 2.物理内存管理子系统,用于理解x86分段/分页模式,了解操作系统如何管理物理内存: 3.虚拟内存管理子系统,通过页表机制和换入换出(swap)机制,以及中断-"故障中断".缺页故障处理等,实现基于页的内存替换算法: 4.内核线程子系统,用于了解如何创建相对与用…
一.ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu.内存.磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异:对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度.站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发.I/O.程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的. 另一方面,由于操作系统自身功能的复杂性,整体设计一般会有一个好的模块化架构:操作系统作为基础服务,对性能效率的要求也很高,底层会用到许多关于数据…
一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统的情况下,不同的程序通常直接编写物理地址相关的指令.在多道并发程序的运行环境下,这会造成不同程序间由于物理地址的访问冲突,造成数据的相互覆盖,进而出错.崩溃. 现代的操作系统在管理内存时,希望达到两个基本目标:地址保护和地址独立. 地址保护指的是一个程序不能随意的访问另一个程序的空间,而地址独立指的…
文章链接:https://www.cnblogs.com/cyx-b/p/11809742.html 作者:chuyaoxin 一.实验内容 BIOS将通过读取硬盘主引导扇区到内存,并转跳到对应内存中的位置执行bootloader.请分析bootloader是如何完成从实模式进入保护模式的. 提示:需要阅读小节“保护模式和分段机制”和lab1/boot/bootasm.S源码,了解如何从实模式切换到保护模式,需要了解: 为何开启A20,以及如何开启A20 如何初始化GDT表 如何使能和进入保护模…
1. ucore lab3介绍 虚拟内存介绍 在目前的硬件体系结构中,程序要想在计算机中运行,必须先加载至物理主存中.在支持多道程序运行的系统上,我们想要让包括操作系统内核在内的各种程序能并发的执行,而物理主存的总量通常是极为有限的,这限制了并发程序的发展.受制于成本问题,拥有足够大容量主存的个人计算机是普通人承受不起的.因此计算机科学家们另辟蹊径,想到了利用局部性原理来解决既要能并发运行大量程序又要使计算机足够低成本这一矛盾问题. 局部性原理告诉我们,大多数程序通常都在执行循环逻辑,访问数据时…
1. ucore lab4介绍 什么是进程? 现代操作系统为了满足人们对于多道编程的需求,希望在计算机系统上能并发的同时运行多个程序,且彼此间互相不干扰.当一个程序受制于等待I/O完成等事件时,可以让出CPU给其它程序使用,令宝贵的CPU资源得到更充分的利用. 操作系统作为大总管需要协调管理各个程序对CPU资源的使用,为此抽象出了进程(Process)的概念.进程顾名思义就是进行中.执行中的程序. 物理层面上,一个CPU核心同一时间只能运行一个程序,或者说一个CPU核心某一时刻只能归属于一个特定…
1. ucore lab5介绍 ucore在lab4中实现了进程/线程机制,能够创建并进行内核线程的调度.通过上下文的切换令线程分时的获得CPU,使得不同线程能够并发的运行. 在lab5中需要更进一步,实现我们平常开发接触到的.运行在用户态的进程/线程机制.用户线程通常用于承载和运行应用程序,为了保护操作系统内核,避免其被不够鲁棒的应用程序破坏.应用程序都运行在低特权级中,无法直接访问高特权级的内核数据结构,也无法通过程序指令直接的访问各种外设. 但应用程序访问高特权级数据.外设的需求是不可避免…
1. ucore lab6介绍 ucore在lab5中实现了较为完整的进程/线程机制,能够创建和管理位于内核态或用户态的多个线程,让不同的线程通过上下文切换并发的执行,最大化利用CPU硬件资源.ucore在lab5中使用FIFO的形式进行线程调度,不同的线程按照先来先服务的策略,直到之前创建的线程完全执行完毕并退出,后续的线程才能获得执行机会. FIFO的策略固然简单,但实际效果却非常差.在非抢占的FIFO调度策略中,如果之前的线程任务耗时很长,将导致后续的线程迟迟得不到执行机会而陷入饥饿:即使…
1. ucore lab7介绍 ucore在前面的实验中实现了进程/线程机制,并在lab6中实现了抢占式的线程调度机制.基于中断的抢占式线程调度机制使得线程在执行的过程中随时可能被操作系统打断,被阻塞挂起而令其它的线程获得CPU.多个线程并发的执行,大大提升了非cpu密集型应用程序的cpu吞吐量,使得计算机系统中宝贵的cpu硬件资源得到了充分利用. 操作系统提供的内核线程并发机制的优点是明显的,但同时也带来了一些问题,其中首当其冲的便是线程安全问题. 并发带来的线程安全问题 线程安全指的是在拥有…