xv6系列 util实验

Sleep 没啥难度,主要调用系统调用 sleep #include "kernel/types.h" #include "kernel/stat.h" #include "user/user.h" int main(int argc, char *argv[]) { char *err1 = "not right\ »

xv6 系列一(搭建环境)

准备 需要三个部分 1. RISC-V 工具链 2. 虚拟机 3. xv6源码 1. 工具链 RISC-V工具链 RISC-V 建议采用手动编译的方式,brew install riscv-tools相对于来说比较卡 git clone --recursive https://github.com/riscv/riscv-gnu-toolchain 代码下载时间比较久 »

关于沟通

近一年,严格来说可能是11个月,我时常反思关于沟通的问题。一直到近几个月的沉默。我理解都是沟通是原罪。以下言论都是我抹去了大多性格上的短板因素,刚好也是去年这个时候开始想这个因素变量(令自己恐怖的是这个件事我竟然想了一年,老是觉得是上周的事情),这么做是为了减少计算量,我需要计算自己这点上的影响数值。 首先要把自己的位置放正,其次要把态度放正。位置是要明白自己需要产生多大的影响,而且能产生多大的影响,这是一种base,目的与能力的一种权衡;其次态度可以使自己更加客观看自己,不容易受情绪影响,下的结论会更贴近真实客观。 需要明白沟通是需要载体,我们将 model 简化,单对单场景,载体是人。 »

golang 神坑range

总结一下碰到的一些range问题,尤其是边loop边delete的骚操作,我一直以为是人家开源库的bug,直到我看到golang官方也这么用。 首先是比较经典的问题,我们团队之前确实有人写这样代码出事了。 v是数据复制 代码本意是为了获取每个slice每个元素的指针,构造成新的slice type P struct { Name string Age int } func main() { o := []P{ P{"chain1", 20}, P{"chain2", 21} »

golang 非协作式抢占

最近因为dlv里面有个bug,关于go1.14版本之后非协作式抢占扩大了调试状态下的一些协程问题。 于是就找了原始的提议看了看,恩,果然大部分都看不懂!!! 利用google/baidu式的翻译,手敲了一遍,并且存疑的地方都加了一点东西,算是给自己一点做个笔录吧,后面有理解更深的地方会更新一下自己的理解。 翻译笔录英文版本如链接 摘要 go 当前在编译器插入的函数序章中插入协作抢占点。在大多数情况下,这足以让golang开发人员忽略抢占细节,专注于编码清晰的并行代码,但是这种方式有着非常尖锐的问题,以至于我们一次又一次的看到它降低了开发人员的体验。当它出现错误时候,就会呈现出惊人的错误现象,导致未知的系统层面的延迟问题,甚至有时候会完全冻结(就是卡住不动的意思) »

丢弃包袱

可能一时也没有想好起什么题目,脑袋里的思绪大概是往14年那飘,当时关于纯粹体系构想在心里初步形成。某天晚上手写了很长的一篇文章,一直作了保留。那时候状态就是疯狂否定自己以前的思维模式,无论是学习还是生活都按照既有思路(根理论)出发,得出一个基本行为模式。如果不说的这么抽象(或者玄乎),可能跟平时常说的"人设"这个词最像。所有的行为都需要严格按照"既定的人设"进行,不可违反,否则就类似计算机中了病毒(或者严重bug),无法正常生存下去。 甚至当时有种想法现在看来很傻,心里按照既定公式来计算每个人的"纯粹度",以此在" »