Windows 2.0被完全重新设计,Windows 3.0仍然是DOS图形壳,然而,它包含“DOS Extender”允许访问16MB内存,越过了DOS的1MB限制,它支持DOS程序的多任务。
这造就了微软的强大,它支持窗口缩放和移动。
Windows与OS开发者的关系我见过一些初级OS开发者,他们想要开发下一个Windows。即使这是可能的,但它太困难了,靠一个人的力量几乎是不可能的。重新看一下上面的图片,记住命令壳之上的图形壳,是由内核执行的。另外,记住即使Windows也是从此开始的,命令壳是DOS,图形壳是Windows。
基本概念回顾一下我们这段简短的旅程,它为我们带来了一些新的重要的词汇。到目前为止,我们只给操作系统下一个小的定义。之前的部分会帮助我们对操作系统有一个更好、更有描述性的定义。
为了帮助下定义,让我们把上面加组的词汇罗列出来:
- 内存管理
- 程序管理
- 多任务
- 存储保护
- 固定基址
- 多用户
- 内核
- 文件系统
- 命令壳
- 图形用户接口(GUI)
- 图形壳
- 线性块地址(LBA)
- 引导程序 (之前教程中介绍)
这是个引人深思的,Uhu? 然而--上面的列表在列表层面来讲仍然很抽象,让我们深入了解一下?
内存管理
内存管理涉及到:
- 程序对请求的内存的动态分配和使用
- 页的实现,甚至是虚拟内存
- 确保OS内核不会读/写未知和不合法的内存
- 监视和处理内存碎片
程序管理这与内存管理关系密切,程序管理负责:
- 确保程序不会写到其它程序
- 确保程序不会破坏系统数据
- 程序程序请求以完成一个任务(比如分配和释放内存
多任务多任务涉及到:
- 切换和给多个程序一个适当的时间片去执行
- 提供任务管理以允许程序切换(比如窗口管理器)
- TSS (任务状态段) 切换. 新词汇!
- 同时执行多个程
存储保护这涉及到:
- 在保护模式访问一个不合法的描述符(或不合法的段地址)
- 覆盖程序自身
- 覆盖另一个文件在内存中的一部分
固定基址“基地址”是程序被加载到内存中的位置。正常应用程序,不会需要这些,但在OS开发中,需要。
“固定”基址简单理解为程序每次被加载到内存时总是使用相同的基址,BIOS和引导程序就是这方面的例子。
多用户涉及到:
- 登录和安全保护
- 工作在计算机上多个用户的能力
- 不丢失和破坏数据前提下切换用户
内核内核是操作系统的心脏。它提供了基本功能,内存管理,文件系统,程序执行等等。不要着急,我们马上就会对内核进行更深入的了解 :)
文件系统在OS开发中,是没有“文件”这个东西的。从一开始,任何东西都是纯二进制代码(从引导扇区中来)。
文件系统是一个简单的规范,这个规范用于描述相关文件的信息。大多数情况下,这涉及到簇,段,段地址,根目录等等。为了加载文件,OS必须找到文件的开始地址。
文件系统也描述文件名,有外部和内部文件名。例如:FAT12规范定义文件名只可以有11个字符,不能多也不能少。这意味着“KRNL.sys”内部文件名为“KRNL SYS”。
我们会使用FAT12,并会在后续部分讨论它的详细内容。命令壳命令壳作为一个独立的程序位于内核上部。命令壳通过使用输入命令提供了基本的输入和输出。命令壳使用内核帮助来完成这些及低级任务。
图形用户接口(GUI)图形用户接口 (GUI) 简单地涉及到图形界面,及用户与图形壳之间的交互。
图形壳图形壳提供视频方法及低级图形能力。它正常是由命令壳执行(比如Windows 1.0,2.0和3.0)的,现在通常都是自动的。
线性块地址(LBA)操作系统通过内存中的每一个单字节进行控制,线性地址涉及到直接访问线性地址,比如:
mov ax, [09000h] ; There is no such thing as Access Violations in OS Development
这既是好事,也是坏事,比如: mov bx, [07bffh] ; or some other address less then 7c00h
mov cx, 10
.loop1:
mov [bx], 0h ; clear bx
inc bx ; go to next address
loop .loop1 ; loop until cx=0
上面的地址看上去是无害的,然而,如果上面的代码如果出现在引导程序中,会重写自己的10个字节。原因是引导程序是被加载到0x7c00:0这个固定地址的,上面的代码从0x7bff(0x7c00前一字节)这个地址开始写。引导程序
引导程序,我们在之前教程中已见过此词汇。从之前的教程中我们知道引导程序是由BIOS加载,是操作系统中第一个被执行的程序。
引导程序被BIOS加载到0x7c00:0这个绝对地址。载入后,CS:IP被设置到引导程序,引导程序获得完全控制。
软盘扇区只有512字节大小。记住引导扇区只能有一个扇区。这意味着什么?引导程序有大小的限制,不能超过512字节。
大多数情况下,引导程序会加载和执行内核或第二个引导程序。
我们马上会对引导过程进行深入了解,到时我们再讲一下引导程序。
总结
我们已回顾历史,并学习了一些我们列出的词汇。结束本次历史课程之后,我们会使用这些词汇,对事情的运作方式建立更一个广泛的视角。我们甚至会看一些代码,尽管只是一点儿。
结束所有这些之后,应该能够对我们所做的事情下一个更简洁的定义。
"一个交互环境,为用户和支撑程序提供一个接口,提供稳定和安全的环境,是计算机服务和计算机硬件之间的接口层。"Yep. 这是我对操作系统新的定义,你的呢?
下一教程,我们会看一下引导过程。另外,我们会创建和汇编一个真实的引导程序。