阅读视图

发现新文章,点击刷新页面。
🔲 ☆

DOS 内存粗解

今天搞明白了,为啥 dos 有个 A20 地址线,以及 DOS 所谓高位内存的技术了。原因出在那个段地址的计算上面,经常看到的段的计算方式,实际上不止可以访问到 1M 的内存,而是 1M 再多一些:

0xffff * 16 + 0xffff

可以访问到比 1M 高一点的 64k 内存。实际上不是 64k,而是 64k-16 字节。因为 ffff:0010 就是 1M

比较早的 DOS 程序,会利用 8086 的 bug,访问这段内存实际上是访问 0000:0000 这一段内存。后来 80286 出现,这个 bug 就失效了。

由此引申出 DOS 内存的几个概念。

🔲 ☆

在 openSUSE 底下跨平台编译 mingw64 程序

在 openSUSE Leap 15.3 底下跨平台编译 mingw64 程序,只要安装跨平台编译的安装包就行了:

sudo zypper in mingw64-cross-gcc-c++

接下来我们就来操作一下:

// main.c
#include <stdio.h>
void main() { printf("hello, world!\n"); }

然后运行:

$ x86_64-w64-mingw32-gcc -o test003.exe main.c
$ wine ./test003.exe

可以看到打印出结果。

🔲 ⭐

bcache 的使用

下午花了一些时间测试 bcache 与 lvm cache 的使用。lvm cache 相对来说功能比较丰富,能够跟 raid1 一起组 lv,而 bcache 就只能简单地处理 cache。从安全性与性能的角度来看,我倒觉得 bcache 更为专业一些。接下来说一下 bcache 的基本使用:

首先要安装 bcache-tools

# zypper install bcache-tools

由两个设备创建 bcache 是很简单的事,假设 sda 是 ssd,而 sdb 是 hdd,

# make-bcache -w 4k -b 2m -C /dev/sda -B /dev/sdb

其中的-w参数指定底层设备的簇大小,而-b参数指定 bcache 管理的块大小。-C指定 cache 设备,-B指定 backend 设备。如果有多个 backend 设备可以写多个。

❌