6.s081-note08-Thread switching
线程(Thread)概述 为什么计算机需要运行多线程?可以归结为以下原因: 首先,人们希望他们的计算机在同一时间不是只执行一个任务。有可能计算机需要执行分时复用的任务,例如MIT的公共计算机系统Athena允许多个用户同时登陆一台计算机,并运行各自的进程。甚至在一个单用户的计算机或者在你的iphone上,你会运行多个进程,并期望计算机完成所有的任务而不仅仅只是一个任务。 ...
线程(Thread)概述 为什么计算机需要运行多线程?可以归结为以下原因: 首先,人们希望他们的计算机在同一时间不是只执行一个任务。有可能计算机需要执行分时复用的任务,例如MIT的公共计算机系统Athena允许多个用户同时登陆一台计算机,并运行各自的进程。甚至在一个单用户的计算机或者在你的iphone上,你会运行多个进程,并期望计算机完成所有的任务而不仅仅只是一个任务。 ...
为什么要使用锁? 今天的课程的内容是锁。这节课偏向于理论介绍,并且或许会与其他课程中有关锁的内容有些重合,不过这节课更关注在内核和操作系统中使用的锁。 首先,我们来看一下为什么我们需要锁?故事要从应用程序想要使用多个CPU核开始。使用多个CPU核可以带来性能的提升,如果一个应用程序运行在多个CPU核上,并且执行了系统调用,那么内核需要能够处理并行的系统调用。如果系统调用并行的运行在多个C...
真实操作系统内存使用情况 下图是一台Athena计算机(注,MIT内部共享使用的计算机)的top指令输出。如果你查看Mem这一行, 首先是计算机中总共有多少内存(33048332),如果你再往后看的话,你会发现大部分内存都被使用了(4214604 + 26988148)。但是大部分内存并没有被应用程序所使用,而是被buff/cache用掉了。这在一个操作系统中还挺常见的,因为我们不想...
Page Fault Basics 今天的课程内容是page fault,以及通过page fault可以实现的一系列虚拟内存功能。这里相关的功能有: lazy allocation,这是下一个lab的内容 copy-on-write fork demand paging memory mapped files ...
Trap机制 程序运行是完成用户空间和内核空间的切换 程序执行系统调用 程序出现了类似page fault、运算时除0的错误 一个设备触发了中断使得当前程序运行需要响应内核设备驱动 都会发生这样的切换 这其间用户空间与内核空间的切换通常被称为trap,其中细节对安全隔离与性能来说非常重要。所以,trap机制要尽可能的简单 这里有很多寄存器都有特殊的作用,我们之后会看...
虚拟内存(page tables) 地址空间 支持虚拟内存的硬件 内核地址空间与用户地址空间的结构 地址空间 创造虚拟内存的一个出发点是你可以通过它实现隔离性。如果你正确的设置了page table,并且通过代码对它进行正确的管理,那么原则上你可以实现强隔离。 这里的基本概念也很简单直观,我们给包括内核在内的所有程序专属的地址空间。 所以,基本上来说,每个程序都运行...
Isolation 应用程序与操作系统之间具有强隔离性。简单来说,操作系统能够很好地管理多个应用程序的正常运行。 在内存层面来看,不同应用程序之间的内存是隔离的,这样应用程序就不会覆盖另一个的内存。 其实接口就被精心设计来实现资源的强隔离。 接下来是几个例子。 例如进程,进程抽象了CPU,这样多个应用程序才能复用一个或多个CPU。 我们也可以认为exec抽象了内存,应用程序并没有...
Prerequisite 首先来了解一下我们用到的模块都是干什么的。 scikit-learn Scikit-learn 是一个开源机器学习库,支持监督式学习和无监督式学习。它还提供了用于模型拟合、数据预处理、模型选择、模型评估和许多其他实用程序的各种工具。 hw1我们只会涉及SVM方面。下面会介绍。 datasets 有一系列的.npz文件,可以被load为Python的字典,...
第一节Lecture主要讲了如何选择好的Classifier,以及关于作业与训练的问题。 Classification nearest neighbor classifier:decision boundary is not computed,but it classifies all the training data correctly。It’s overfittin...
Introduction 系统调用跳到内核与函数调用跳到另一个函数的区别: Kernel的代码有特殊权限,能直接访问硬件 read, write, exit系统调用 XV6是基于Unix的操作系统,并运行在RISC-V微处理器上。 read: 接受三个参数 第一个为文件描述符,指向一个之前打开的文件。0连接到console的输入,1则连接到了console的输出。许多的Uni...