-
2019年2月24:完成了除了"Challenge"以外的全部练习和问题. 总共花费15个小时. 2019年2月26:完成"Challenge 2"(应该是最简单的一个orz,只花了不到一个小时) Part 1: Physical Page Management 操作系统必须时刻追踪哪些物理内存在使用,哪些物理内存没有在使用。 一个问题是, Ex 1. In the file kern/pmap.c, you must implement code for the following functions (probably in the order given). boot_alloc() …
Read More -
x86的调用约定主要说的是这几件事: * The order in which atomic (scalar) parameters, or individual parts of a complex parameter, are allocated * How parameters are passed (pushed on the stack, placed in registers, or a mix of both) * Which registers the called function must preserve for the caller (also known as: callee-saved …
Read More -
花费了30+小时,终于搞定了orz Part 1: PC Bootstrap The PC's Physical Address Space 8086/8088时代 +------------------+ <- 0x00100000 (1MB) | BIOS ROM | +------------------+ <- 0x000F0000 (960KB) | 16-bit devices, | | expansion ROMs | +------------------+ <- 0x000C0000 (768KB) | VGA Display | +------------------+ <- …
Read More -
迫于生计,最近要学习halide 先去学习/复习一下常见的编译优化技巧。 loop unrolling,也就是循环展开,顾名思义,就是把循环展开来写。 normal loop: int x; for (x = 0; x < 100; x++) { delete(x); } after loop unrolling: int x; for (x = 0; x < 100; x += 5 ) { delete(x); delete(x + 1); delete(x + 2); delete(x + 3); delete(x + 4); } 循环展开是一种优化,可以手动实现也可以编译器自动实现。 为什么要将循环展开? * …
Read More -
课程主页 这课稍微有点硬核...感觉基础稍微有些不扎实就做不下去orz. 网上似乎是有博客写了6.828的学习笔记,不过我更希望自己能够独立完成,二手的知识,谁知道是对的错的呢...况且课程本身给的参考资料应该还是足够多的。 环境的话,手头没有ubuntu系统,恰好半年前剁了阿里云的轻应用服务器,就在上面做吧。 为了这门课,我读了/计划读以下书籍(随时更新)。大概也是为了检查一遍自己的知识体系。 * [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) 已读完,大概需要120小时 * [PC Assembly …
Read More -
codeforces round 530 div2
Jan 6, 2019 · 2 min readA,B,C:都很简单,不说了。 D:一棵树,给出树的结构,以及从树根到某个深度为偶数的节点的路径和,问能否构造一种所有节点点权和最小的树,输出最小点权和。 思路: 容易知道,如果想要点权和最小,那么尽可能让靠近树根的点承担更多的点权。 具体做法是,bfs,对于每个节点u,取其儿子中最小的S值求节点u的信息。 比赛的时候wa16...最后发现是答案要用long long存...因为单个路径和是<=1E9的。。多个加起来会超过int... 长时间不打连这种常见的坑都不敏感了啊。。。 #include <bits/stdc++.h> #define PB push_back #define fst first …
Read More -
codeforces hello 2019
Jan 5, 2019 · 4 min read好久没玩cf了,竟然还能涨分(虽然我用的小号Orz) 三题,D应该是数学+DP...数学实在是忘干净了。。。 前面三题大体还好,都是1A,不过因为没有提前配置环境。。耽误了一些时间。。。 A:给出一个扑克牌x,和另一个包含5个扑克牌的集合。问扑克牌x是否和扑克牌集合中至少一张扑克牌的花色或者数字相同。 不多说了。 B:一块钟表(只有一个指针),初始指向12点,需要拨动指针恰好n次(n<=15),每次可能顺时针,也可能逆时针,拨动的角度范围在[1,180],问是否有一种方案,使得拨动n次后,指针回到12点。 思路:观察下数据范围,n最大才15,最多也不过2^15的情况...既然如此,不如暴力。 枚举的话我记得有三种方法来着。。。 …
Read More -
2019 to do list
Jan 1, 2019 · 1 min read* <del>Operating Systems: Three Easy Pieces</del> * fluent python * <del>《计算机网络:自顶向下方法》</del> * 《mysql必知必会》 * PC Assembly Language ( for mit 6.828 )
Read More -
TL;DR * 依靠人的小心谨慎是不靠谱的,人总有失误的时候 * 看了下docker volume的权限机制,貌似是从docker image中继承。 * 写了两个脚本,用来把rm alias到mv,避免手滑 又是一个可以摸鱼的周五晚上,sensespider系统测试了一天,fix了几个Bug,似乎可以发布了。系统一直是部署在了docker中..这几天测试产生了不少结果文件在host的volume中... 看着不舒服,干脆删一下好了 嗯?怎么所有者是root。。。那我sudo一下,也没什么大不了的嘛 然而手滑了... 打了个 sudo rm -rf /* ... 提示无法删除/boot device is busy... 吓了 …
Read More