MIT6.S081 System
[Lec 1] Introduction & Examples好的 OS 处理好以下难以调和的目标
efficient & well-abstracted
powerful & simple api
flexible & secure
注意检查 system call 的返回,判断error
fd=open('filename',0) 返回当前未使用的标号最小的file descriptor,0 是默认的打开方式,另外有 O_CREAT O_APPEND O_RDONLY O_WRONLY O_RDWR;允许出现 O_CREAT|O_RDWR。
pidof:提供程序名,返回它的pid
(in real unix) /proc/pid_of_process/ 中储存了文件的系统层信息,fd 文件夹中的链接即为 file descriptor 及它们指向的实体。
inodeinode 是 unix 系统中对磁盘上文件的信息储存方式,使用 stat 可以查看一个文件名映射到的 inode
123456789$ stat README.md ...
Makefile Cheatsheet
Rule StructureA rule looks like
1234targets: prerequisites command # must indent with tabs! command command
只能一个一个目标地编译(必须串行运行整块指令),优先运行被依赖的文件的编译命令
1234567some_file: other_file echo "This will run second" touch some_fileother_file: echo "This will run first" touch other_file
clean is often used as a target that removes the output of other targets, but it is not a special word in make.
Variables在makefile自己的定义域中定义变量,使用 $() 或者 ${} 调用变量。在sh中,$(func) 是执行命令的意思,在sh段使用sh域 ...
on Crafting Compilers
General view语言的组成扫描(scanning/lexing/lexical analysis)
扫描器(scanner)读入字符串流,将它们分割成单词(token),包括单个字符(如括号、逗号)、数字、字符串字面值、标识符#
Torch Cheatsheet & Machine Learning Naive
ML Naive线性回归 (Linear Regression)约定: 初始矩阵大小是样本数$\times$特征数,权重矩阵大小是输入次特征数$\times$输出维度数$$L(\mathbf{w}, b) = \frac{1}{n}\sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2$$
123456for epoch in range(num_epochs): # train several rounds for X, y in train_iter: # iterate through batched samples l = loss(net(X), y) # target: minimize loss updater.zero_grad() l.backward() # calculate direction updater.step() # op ...
Parallel programing (preview)
Lec 3-parallel programming models
SIMD: single instruction multiple data, multiple ALU runs simultaneously, controled by a single CU through broadcast
SPMD: single program multiple data, the programs can each run on different instructions at the same moment
ISPCISPC implements the gang abstraction using SIMD instructions
Call to ISPC function spawns “gang” of ISPC “program instances”. All instances run ISPC code concurrently. Upon return, all instances have completed.
programCount: number of ...
工程经济学
第一讲 绪论工程经济学的基本方法论和核心问题基本方法是BCA(效益成本分析)核心问题:
项目的收益是否超过成本?
这个方案是所有可能方案中最好的吗?
外部性及其后果给消费者或生产者带来损益的行为在市场价格中得不到反映,称这些损益为外部性。因为行为主体不承担外部性,因此在决策时也不考虑,从而引发市场失灵。
第二讲 成本什么是成本?有哪些类型的成本?为了做一件事而需要的投入,或为了获得某件东西而放弃的所有东西。有固定成本、可变成本;直接成本、间接成本;机会成本、沉没成本。
什么是固定成本和可变成本?
固定成本:在容量或负荷允许的条件下,不受工程量或业务量影响的成本。它并不是绝对不变的。
可变成本:随工程量或业务量变化而变化的成本。
什么是直接成本和间接成本?
直接成本:能够容易地与工作量或产量或工程阶段相联系的成本,包括土地费用、前期工程费、建安费用、附属公共配套设施费、公共基础设施费等。
间接成本:很难具体将其对应于工程量与工程阶段,而是与整个项目或多个项目相联系的成本。包括管理费用、销售费用、财务费用等。
什么是机会成本和沉没成本?
机会成本:为了做一件事情,要牺牲掉的 ...
Formal Language and Automata
字母表形式符号的非空有限集合。
字符串字母表 $\Sigma$ 上的一个字符串,是由 $\Sigma$ 中字符构成的一个有限序列。 空串(empty string) , 常用 $\varepsilon$ 表示,不包含任何字符。字符串 $w$ 长度记为 $|w|$。
字母表上的运算幂运算、*闭包、+闭包
语言任何集合 $L\subseteq\Sigma*$ 是 $\Sigma$ 上的一个语言。空语言:$\phi$不含任何字符串仅含空字的语言:${\varepsilon}$ 含有一个字符串,即空串
语言上的运算语言的并、连接、闭包
语言正规语言 $\subseteq$ 上下文无关语言 $\subseteq$ 递归语言 $\subseteq$ 递归可枚举语言 | 非递归可枚举语言
上下文无关语言上下文无关文法的四个组成要素上下文无关文法CFG (Context-Free Grammers) 是一个四元组 $G=(V,T,P,S)$
非终结符(nonterminals)的集合 $V$:有限变量符号的集合
终结符(terminals)的集合 $T$:有限符号集,相当于字母表
产生式(produ ...
2021 summer
06/22折腾博客,读csapp,学了浮点数的表示。integer设计成二进制补码是方便加减运算,float的设计是方便比较大小。
06/23看到系统级编程的第二部分了,接触到很多汇编指令将二进制程序反编译为汇编语言:objdump -d exe_name > exe_name.d。也可以在gdb中使用disassemble func_name解码一个函数开始做datalab,有点意思
06/24独立做完了datalab。早上看心理学导论,第二章主要介绍神经系统的生物性质,切掉胼胝体后两个半脑会独立进行信息加工,甚至可以发生冲突;外周神经受损可以修复,脑和脊髓受损无法修复。博客出现了bug,可能是冒泡效果挡住了快速下滑键。
06/25继续看系统级编程、做bomblab
军训今年的军训实在没啥意思:刚好赶上建党百年庆祝,防化学院的现役部队调不出来,只能找了个北京的训练基地来承办;无法调用枪支,没法实弹射击;结训典礼还要歌功颂德,半个军训都在排练表演,结果上和校庆没啥区别;训练强度也很小,教官事实上是在和我们一起摸鱼(毕竟也没有什么训练内容)。唯一令人感到军训意义的是我们的教官:两个 ...
Hello World
基物实验给了我A-是真没想到,老师整整给我往上调了1.75分我惊了,所以现在是非常欢乐,非常欢乐。。。 折腾了半天终于把hexo和butterfly大致给整明白了,但我果然对前端一窍不通。 先丢一个今年的todolist
《经济学原理》
《心理学导论》
《CS:APP2e》
雍俊海OOP课件
《JS DOM编程艺术》
《C++ Primer》
《Fluent python》
网站静态部署在Cloudflare上,图床用的是SM.MS的 对了可以测试下代码效果
123456789101112131415#include <cstdio>#include <iostream>using namespace std;typedef unsigned char* pointer;inline void print(pointer p, int len) { for (int i = 0; i < len; i ++) printf("%p\t0x%x\n", p + i, p[i]);}int main ...