Coekjan's Blog

探索寰宇

『MOS』 Local Development

『MOS』 本地开发

本文给出了一种搭建 MOS 的本地开发环境的方法。 安装 Docker 首先安装 Docker,Linux 和 MacOS 下都很容易安装好,Windows 下估计问题挺多的。 所以建议这就逃离 Windows 使用 MOS 的开发环境 Dockerfile 参考环境仓库,将此仓库克隆到本地: 1 $ git clone git@github.com:Coekjan/BU...

『Manjaro Linux』 Fix Screen Flickering On Dell Inspiron 16 Plus

『Manjaro Linux』 在戴尔灵越16Plus上修复Manjaro的屏幕闪烁

本文记录笔者在戴尔灵越 16Plus 上解决 Manjaro 屏幕闪烁的方法。 Manjaro版本与配置信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50...

『MOS』 Interrupt And Exception

『MOS』 中断与异常

R3000中断异常的硬件行为 引言中提到了中断异常的硬件行为, 这里再重复说明. 这些行为将是理解中断异常软件处理程序的关键: 将当前的PC值存入CP0的EPC寄存器(若PC此时为延迟槽, 则保存前一条指令的地址). SR寄存器中, 将当前的IEc, KUc压入二重栈, 并将IEc置为 0(关闭全局中断使能), 将KUc置高(进入内核态). Cause寄存器中, ExcCod...

『MOS』 Process

『MOS』 进程

进程控制块 进程是程序的一次运行, MOS中采用进程控制块来记载进程的信息: 1 2 3 4 5 6 7 8 9 10 11 12 struct Env { struct Trapframe env_tf; Pde *env_pgdir; u_int env_id; u_int ...

『MOS』 Boot And Memory Management

『MOS』 启动与内存管理

启动与初始化 MOS启动时, PC首先转至启动代码 .text 段的首地址. 随后由下述汇编代码, 对硬件进行初始化, 其中最重要的作用是: 禁用全局中断: 初始化内核时, 不应响应中断. 初始化栈指针: 内核态下的函数调用, 需要利用内核下的栈, 此处将栈底设定为 0x80400000. 初始化页目录基地址: 内核处于 kseg0 段, 本不需要通过页表和 TLB 进行虚实...

『MOS』 Introduction

『MOS』 引言

前置知识: MIPS 计算机体系结构 以下介绍均参考自R30xx手册. 阅读本文时, 请务必参考该手册. 本系列文章中, 均以中断代指外部中断, 以异常代指内部中断. R3000地址空间 C-MIPS开发注意事项 需要注意的是, MOS使用MIPS与C语言共同开发, 开发完成后经由MIPS-C交叉编译器完成编译. 想要我们的MIPS代码与C代码完成协同, MIPS代码中...

『Discrete Mathematics』 Function

『离散数学』 函数

部分函数 考虑使用二元关系来描述函数. 基本概念 定义: 若从集合 $X$ 到集合 $Y$ 的二元关系 $f$ 是”单值”的, 即 $f$ 满足: \[<x,y_1>\in f \land <x,y_2>\in f \implies y_1=y_2\] 就称 $f$ 是从 $X$ 到 $Y$ 的部分函数. 当 $<x,y>\in f$ 时, 称 ...

『Discrete Mathematics』 Binary Relation

『离散数学』 二元关系

关系 基本概念 定义: 设 $n\in\bm{I_+}$ 且 $A_1,A_2,\dotsm,A_n$ 为 $n$ 个任意集合, $R\sube\displaystyle\prod_{i=1}^nA_i$ . 称 $R$ 为 $A_1,A_2,\dotsm,A_n$ 间的 $n$ 元关系. 若 $n=2$ , 则称 $R$ 为 $A_1$ 到 $A_2$ 的二元关系. 若 ...

『Discrete Mathematics』 Set

『离散数学』 集合

集合及其表示 集合是不能严格定义的原始概念, 所以对它只能给予直观描述. 所谓集合, 就是由某些可以区分的任意对象汇集在一起所组成的一个整体. 所涉及的各个对象统称为元素. 组成一个集合的各个对象, 称为这个集合的元素或成员. 通常, 我们用大写拉丁字母 $A, B, C, \dotsm$ 表示集合, 用小写拉丁字母 $a, b, c, \dotsm$ 表示元素. 用以下字母表...

『C Programming』 Implementation Of QSort

『C程序设计』 快速排序的实现

本文仅记录一份qsort的粗糙实现, 可以帮助读者理解该库函数的运行原理. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56...