6.S081 的第二个实验,system calls,虽然是好久之前做的了,但是一直没把它放到博客里面。今天略无聊,就弄了一下。BTW,第三个实验我到现在都还没开始呢。 system call 在完成实验之前,我们可以先了解一下系统调用的相关的代码。 首先在 user/usys.pl 中包含生成系统调用汇编的 Perl…

最近在看 6.S081 的实验,希望这次别半途而废吧。 sleep 简单的解析命令行参数,然后调用 user.h 里面 sleep 函数即可。这道题应该只是让人熟悉一下环境。 记得要修改 Markfile 来编译 sleep 命令。 ./grade-lab-util sleep 可以快速的运行测试。 pingpong 这一题要实现通过 pipe 的进程间通信,虽然只是简单的 pingpong…

基础概念 Docker 引擎主要的组件构成为: Docker client Docker daemon containerd runc 它们的关系如下: Docker daemon 实现了 Docker 引擎的 API,默认情况下,Docker client 与 Docker daemon 之间的通信有本地的 IPC/UNIX socket 完成( /var/run/docker.sock…

起因 这学期上了一门《计算机软件理论》的课,其实就是本科的《自动机与形式语言》的翻版。由于疫情的缘故,这门课从原来的笔试改成了大作业的形式,其中有一道题目就是让我们将正则表达式转换成自动机,并用自动机来判断输入的文本时候满足正则表达式的描述。写完之后觉得蛮好玩的,就决定写个博客记录一下。 BTW…

最近想实践一下 DevOps,所以准备搭建一套代码托管和CI/CD 系统。 技术选型 代码托管 代码托管系统的选择其实并不多: Gitea Gogs GitLab 由于 Gitlab 资源占用过大,所以可以直接去除(毕竟这个系统只有我一个人在用,而且只有一台1核2G的服务器)。 Gitea 是脱胎于 Gogs 的,在 Gogs 上做了较多的扩展,而且迭代的也毕竟快。 Gitea…

编写第一个 Flutter 应用 Get Start 在 Flutter 中,几乎所有都是 widget,包括对齐 (alignment)、填充 (padding) 和布局 (layout)。 一个 widget 的主要工作是提供一个 build() 方法来描述如何根据其他较低级别的 widgets 来显示自己。 pubspec.yml 文件管理 Flutter 应用的资源(assests…