OS/2内置虚拟化功能惊鸿一瞥

2024-12-17

一篇博文探究了1993年OS/2 2.1版本中令人惊奇的内置虚拟化功能。作者通过编写一个简单的VGA模式程序,并将其分别在DOSBox、QEMU以及OS/2自身的虚拟化环境中运行,展示了OS/2如何加载和执行磁盘镜像,如同现代的虚拟机一样。OS/2甚至可以加载并运行并非真正的可引导DOS软盘镜像,通过VMDISK创建镜像文件,并在OS/2中以全屏或窗口模式运行。这一功能在1993年显得尤为先进,堪称内置的QEMU,引发了作者对OS/2虚拟化功能更多潜力的思考。

阅读更多
杂项

DOS 上机器码编写的“hello world”程序

2024-10-02

这篇文章详细介绍了如何在 DOS 的真实模式下,仅使用机器码编写一个简单的“hello world”程序,并将其存储为 COM 文件。文章首先解释了 COM 文件的结构和 DOS 系统调用的工作原理,然后逐步讲解了如何使用 MOV 和 INT 指令设置寄存器、调用中断以及将字符串嵌入程序中。作者还讨论了段选择器、偏移量以及如何使用操作数大小覆盖前缀在 16 位和 32 位操作数大小之间切换。

阅读更多
未分类 机器码

Linux 与 OS/2 2.1 中的 `mkfs.fat` 命令对比

2024-09-25

本文探讨了在 Linux 和 OS/2 2.1 操作系统上使用 `mkfs.fat` 命令创建 FAT16 文件系统时遇到的兼容性问题。作者发现,虽然 Linux 上创建的文件系统可以在 MS-DOS 和 PC DOS 上正常工作,但在 OS/2 2.1 上却无法识别。经过分析,作者发现问题出在文件系统引导扇区中的 OEM 名称字段。OS/2 2.1 会根据该字段判断文件系统的可靠性,而 Linux 默认使用的“mkfs.fat”名称不被 OS/2 2.1 识别。最终,作者通过将 OEM 名称替换为“MSDOS5.0”解决了兼容性问题。

阅读更多
未分类 兼容性

重新审视 Linux CPU 调度

2024-08-04

这篇文章探讨了Linux CPU调度机制,特别是自动进程分组(autogroup)和cgroup对调度行为的影响。作者首先解释了autogroup如何将每个终端窗口放入不同的调度组,从而影响nice值的效用。随后,文章指出systemd使用cgroup进行进程管理,这取代了autogroup的效果。文章进一步解释了cgroup的层次结构如何影响调度,以及如何利用CPUWeight等参数来调整不同服务之间的CPU分配。最后,作者得出结论,虽然cgroup提供了强大的控制能力,但传统的nice值在大多数情况下仍然适用。

阅读更多
未分类 CPU调度 cgroups