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硬件资源得到了充分利用. 操作系统提供的内核线程并发机制的优点是明显的,但同时也带来了一些问题,其中首当其冲的便是线程安全问题. 并发带来的线程安全问题 线程安全指的是在拥有…
越学越简单,真是越学越简单啊 看视频的时候着实被那复杂的函数调用图吓到了.看代码的时候发现条理还是很清晰的,远没有没想象的那么复杂. 这节创建了俩内核线程,然后运行第一个线程,再由第一个切换到第二个. kern_init: 在vmm_init后加了一个proc_init 在最末位加了个cpu_idel proc.c&.h 枚举类proc_state定义了进程生命周期里的各种状态 // process's state in his life cycle enum proc_state { PROC…
1. ucore lab3介绍 虚拟内存介绍 在目前的硬件体系结构中,程序要想在计算机中运行,必须先加载至物理主存中.在支持多道程序运行的系统上,我们想要让包括操作系统内核在内的各种程序能并发的执行,而物理主存的总量通常是极为有限的,这限制了并发程序的发展.受制于成本问题,拥有足够大容量主存的个人计算机是普通人承受不起的.因此计算机科学家们另辟蹊径,想到了利用局部性原理来解决既要能并发运行大量程序又要使计算机足够低成本这一矛盾问题. 局部性原理告诉我们,大多数程序通常都在执行循环逻辑,访问数据时…
一.ucore操作系统介绍 操作系统作为一个基础系统软件,对下控制硬件(cpu.内存.磁盘网卡等外设),屏蔽了底层复杂多样的硬件差异:对上则提供封装良好的应用程序接口,简化应用程序开发者的使用难度.站在应用程序开发人员的角度来看,日常开发中常见的各种关于并发.I/O.程序通信的问题等都和操作系统相关,因此一定程度上了解底层的操作系统工作原理是有必要的. 另一方面,由于操作系统自身功能的复杂性,整体设计一般会有一个好的模块化架构:操作系统作为基础服务,对性能效率的要求也很高,底层会用到许多关于数据…
在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操作系统(本部分对应 L10 && L11 && L12) 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn) 笔记:操作系统学习导引 · 语雀 (yuque.com) 这一部分比较难,一难在理解,二难在实现,其中L12是最难的,反复看了很多遍.之后需要…
一.lab2物理内存管理介绍 操作系统的一个主要职责是管理硬件资源,并向应用程序提供具有良好抽象的接口来使用这些资源. 而内存作为重要的计算机硬件资源,也必然需要被操作系统统一的管理.最初没有操作系统的情况下,不同的程序通常直接编写物理地址相关的指令.在多道并发程序的运行环境下,这会造成不同程序间由于物理地址的访问冲突,造成数据的相互覆盖,进而出错.崩溃. 现代的操作系统在管理内存时,希望达到两个基本目标:地址保护和地址独立. 地址保护指的是一个程序不能随意的访问另一个程序的空间,而地址独立指的…
操作系统 清华大学ucore操作系统课笔记 全文思维导图 1. 操作系统概述 1.1 什么是操作系统? 操作系统的定义 没有公认的精确定义 一个控制程序 一个系统软件 控制程序执行过程,防止错误和计算机的不当使用 执行用户程序,给用户程序提供各种服务 方便用户使用计算机系统 一个资源管理器 应用程序和硬件之间的中间层 管理各种计算机软硬件资源 提供访问计算机软件硬件资源的高效手段 解决资源访问冲突,保证资源公平使用 操作系统的地位 操作系统软件的组成 shell--命令行接口 GUI--图像用户…