OSTEP Chapter 16 回顾
这里回顾第16章,本章介绍了分段。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
参考资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/vm-segmentation.pdf
第16 章 分段内容回顾
分段:
在MMU中引入不止一个基址和界限寄存器,给地址空间内的每个逻辑段(segment)一对
端:
地址空间里一个连续定长的区域
典型的地址空间里有3个逻辑不同的段:代码,栈,堆
段错误(segmentation fault):
在支持分段的机器上发生了非法的内存访问
判断引用了哪个段 ...
OSTEP Chapter 15 回顾
这里回顾第15章,本章介绍了机制:地址转换。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
参考资料:
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES/blob/main/15.%E7%AC%AC%E5%8D%81%E4%BA%94%E7%AB%A0-%E6%9C%BA%E5%88%B6:%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2/%E9%97%AE%E9%A2%98%E7%AD%94%E6%A1%88.md
第1 ...
OSTEP Chapter 14 回顾
这里回顾第14章,本章介绍了插叙:内存操作API。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
参考资料:
https://stackoverflow.com/questions/29459957/program-received-signal-sigabrt-aborted
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES/blob/main/14.%E7%AC%AC%E5%8D%81%E5%9B%9B%E7%AB%A0-%E6%8F%92%E5 ...
OSTEP Chapter 13 回顾
这里回顾第13章,本章介绍了抽象:地址空间。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第13 章 抽象:地址空间内容回顾关键概念
操作系统的历史
早期系统:内存中的一组函数
多道程序(multiprogramming)系统:多个进程在给定时间准备运行
分时系统:
方式一:让进程占用全部内存运行一段时间,然后停止,保存状态,切换到其他进程;
方式二:和方式一类似,但是只使用内存的一小部分;
地址空间
包括程序代码,堆,栈
虚拟化内存
在单一的物理内存上为多个运行的进程构建一个私有的,可能很大的地址空间的抽象
虚拟内存系统的 ...
OSTEP Chapter 10 回顾
这里回顾第10章,本章介绍了多处理器调度(高级)。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第10 章 多处理器调度(高级)内容回顾关键概念
缓存
很小但很快的存储设备,通常拥有内存中最热的数据的备份。
基于局部性的概念,分为时间局部性和空间局部性。
内存
很大且拥有所有的数据,但访问速度较慢。
对共享数据访问需要考虑同步问题
解决方法是使用锁
缓存亲和度(cache affinity)
由于缓存的原因,应该尽可能将相同的进程保持在同一个CPU上
单队列多处理器调度(Single Queue Multiprocessor ...
OSTEP Chapter 9 回顾
这里回顾第9章,本章介绍了调度:比例份额。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第9 章 调度:比例份额内容回顾关键概念
比例份额(proportional-share)调度程序,也称公平份额(fair-share)调度程序
因为调度程序的最终目标是确保每个工作获得一定比例的CPU 时间
彩票调度(lottery scheduling)
每个进程拥有一定的彩票数,不断定时地抽取彩票,彩票调度从概率上(但不是确定的)获得这种份额比例
相关概念
彩票货币(ticket currency)
这种方式允许拥有一组彩票的用户以他们喜欢的某 ...
OSTEP Chapter 8 回顾
这里回顾第8章,本章介绍了调度:多级反馈队列。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第8 章 调度:多级反馈队列内容回顾关键概念
多级反馈队列(Multi-level Feedback Queue,MLFQ):
有许多独立的队列(queue),每个队列有不同的优先级(priority level)。
任何时刻,一个工作只能存在于一个队列中。
MLFQ总是优先执行较高优先级的工作(即在较高级队列中的工作)。
每个队列中的工作具有相同的优先级,对这些工作采取轮转调度。
MLFQ规则:
规则1:如果A的优先级 > B 的优先级, ...
Programming Languages Part B Section7 翻译
这里对Section 7进行翻译。
课程主页:
https://www.coursera.org/learn/programming-languages-part-b/home
B站搬运:
https://www.bilibili.com/video/BV1tZ4y1D7
Coursera编程语言课程 第7节总结标准说明:本总结涵盖的材料与课堂视频以及随视频发布的材料(幻灯片、代码)大致相同。它有助于以叙述的方式阅读材料,并将整个课程部分的材料放在一份文件中,特别是在以后复习材料时。请在讨论板上报告这些笔记中的错误。
目录
ML vs Racket
什么是静态检查?
正确性:健全性、完整性、不确定性
弱类型
更灵活的原语是一个相关但不同的问题
静态检查的优缺点
静态类型还是动态类型更方便?
静态类型会阻止有用的程序吗?
静态类型的早期错误检测重要吗?
静态或动态类型会带来更好的性能吗?
静态或动态类型使代码重用更容易吗?
静态或动态类型更适合原型设计?
静态类型还是动态类型更适合代码改进?
可选:eval和quote
ML vs Racket在研究静态类型的一般主题及其优点/ ...
Programming Languages Part B Quiz
这次回顾Part B Exam。
课程主页:
https://www.coursera.org/learn/programming-languages-part-b/home
B站搬运:
https://www.bilibili.com/video/BV1tZ4y1D7
问题1Check the box if the statement is true.
ML is dynamically typed.
ML is weakly typed.
Racket is dynamically typed.
正确
Racket is weakly typed.
问题2Check the box if the statement is true.
A “type system” that rejects every program is sound but useless.
正确
A “type system” that rejects every program is complete but useless.
A “type system” that accepts ever ...
Programming Languages Part B Section6 翻译
这里对Section 6进行翻译。
课程主页:
https://www.coursera.org/learn/programming-languages-part-b/home
B站搬运:
https://www.bilibili.com/video/BV1tZ4y1D7
Coursera编程语言课程 第6节总结标准说明:本总结涵盖的材料与课堂视频以及随视频发布的材料(幻灯片、代码)大致相同。它有助于以叙述的方式阅读材料,并将整个课程部分的材料放在一份文件中,特别是在以后复习材料时。请在讨论板上报告这些笔记中的错误。
目录
不使用数据类型的数据类型编程
改变我们对算术表达式数据类型的评估方式
通过Racket列表的递归数据类型
通过Racket的struct实现递归数据类型
为什么struct方法更好
实现一般的编程语言
在另一种语言中实现一种编程语言
关于合法AST的假设和非假设
有变量的语言的解释器需要环境
实现闭包
可选:更有效地实现闭包
通过元语言中的函数定义”宏”
不使用数据类型的数据类型编程在ML中,我们使用数据类型绑定来创建我们自己的one-of类型,包括 ...
Programming Languages Part B Section5 翻译
这里对Section 5进行翻译。
课程主页:
https://www.coursera.org/learn/programming-languages-part-b/home
B站搬运:
https://www.bilibili.com/video/BV1tZ4y1D7
Coursera编程语言课程 第5节总结标准说明:本总结涵盖的材料与课堂视频以及随视频发布的材料(幻灯片、代码)大致相同。它有助于以叙述的方式阅读材料,并将整个课程部分的材料放在一份文件中,特别是在以后复习材料时。请在讨论板上报告这些笔记中的错误。
目录
从ML切换到Racket
Racket vs. Scheme
入门:定义,函数,列表(和if)
语法和括号
动态类型(和条件)
本地绑定:let, let*, letrec, 本地define
顶层定义
绑定一般是可变的:set!存在
关于cons的真相
cons是不可改变的,但有mcons
延迟评估和形式转换简介
带有延迟和强制的惰性评估
流
记忆
宏程序:关键点
可选:tokenization化、括号化和范围
可 ...
Programming Languages Part B HW2 Extra Practice Problems
这次回顾HW2 Extra Practice Problems,主要是一些数据结构的练习。
课程主页:
https://www.coursera.org/learn/programming-languages-part-b/home
B站搬运:
https://www.bilibili.com/video/BV1tZ4y1D7
习题内容:
https://www.coursera.org/learn/programming-languages-part-b/supplement/EtJIy/extra-practice-problems
参考资料:
https://www.coursera.org/learn/programming-languages-part-b/discussions/weeks/2/threads/6dEq9JuDQUqRKvSbgyFKuw
代码#lang racket
(provide (all-defined-out)) ;; so we can put tests in a second file
(struct btree-leaf () #:tr ...