0%

内核加载

上篇博文里面我说明过计算机如何从远古到近代的启动流程,然后,走到操作系统一层的时候就没有深入阐述了,在这篇博文我将以Linux系统为例来叙述操作系统是如何启动的。

通常在系统/boot目录下放着内核文件,如下:

1
2
initramfs-linux.img
vmlinuz-linux

GRUB(或者LILO)加载内核的时候,会把vmlinuz-linux映射到内存并会把它的一个初始根目录的文件镜像(initramfs-linux.img)作为文件系统加载到内存,系统会从这个迷你的初始化文件系统来启动,在这个迷你的文件系统里面又会加载真正的磁盘文件系统,带有这种initramfs的都是这种加载流程,但是,对于那种没有initramfs的(例如:Slackware发行版本),它是加载内核后,内核直接从磁盘加载文件系统,这种区分跟内核配置有关。

阅读全文 »

远古时代

这个时期,计算机是处于电气化高度相关的环境下,几乎没有软件的概念(这里有点瑕疵,稍后补充)。

计算机这个时候会进行一系列针对硬件的自测试,尤其检测一些必要硬件是否可用,这个过程成为POST自检,如果检测通过就会进行下一个步骤:BIOS模式,或者UEFI模式。

阅读全文 »

LZSS算法简介

LZSS算法是LZ77算法的改良版,由James A. Storer和Thomas Szymacski于1982年发表在ACM杂志上。LZSS算法充分地利用了位的标记,从而使得压缩效率相比较于LZ77而言,有了显著提高。

阅读全文 »

LZ77算法简介

LZ77算法是一种无损压缩算法,最早由两位以色列人于1977发表,它是一种典型的字典型压缩算法,目前几乎大多数的无损压缩算法都是基于这个LZ77算法,也就是在其基础上优化修改,此算法可以称得上是无损压缩算法界的鼻祖了。

阅读全文 »

概述

Secure Boot 作为 UEFI 的一个选项,它可以被设置为开启或关闭 ( 有少数的计算机里面, Secure Boot 被设置为开启,却不存在关闭它的选项,但系统主板内置有 Windows 系统的公钥证书签名,使其只能加载 Windows ,其他系统一律不以加载,用户没有选项,不能关闭,还没法换系统,无法适用本博客介绍内容)。 Secure Boot 所需要的公钥证书被保存在计算机的主板的 FLASH 里面(注意不是磁盘里面哦),在主板的一小块 FLASH 里面保存着 PK , KEK, db, dbx 的证书链,所以, 在操作开始前请确保你的计算机 UEFI-BIOS 的 Secure Boot 能够被关闭,否则,发生操作失误,将导致证书不能匹配任何程序代码文件,而使主板拒绝加载任何程序代码文件,就会导致主板变砖 (虽然它不是 BIOS ,但是许多人都这么称呼它为 UEFI-BIOS ,所以,这里也这么称呼其为 UEFI-BIOS) 。

阅读全文 »

软件设计模式 - 行为模式

行为模式负责对象之间的高效沟通和职责委派。

行为模式包括:责任链,命令,迭代器,中介者,备忘录,观察者,状态,策略,模版方法,访问者。

阅读全文 »

软件设计模式 - 结构型模式

结构型模式介绍类和对象的组装方式,同时保持较大的灵活性和高效性。

结构型模式包括:适配器,桥接,组合,装饰,外观,享元,代理。

阅读全文 »

软件设计模式简介

软件设计模式属于软件工程领域的解决问题的基本方法,它提供了一种合理地达成目标的处理步骤。本文主要简单提出为何需要它,它的作用,以及它的主要组成元素。

阅读全文 »

问题来源

直接在虚拟机MINIX中阅读它的源代码,十分不便,修改调试做移植也非常困难,如果将MINIX系统中的部分源代码拷贝到实体机LINUX中,在LINUX系统中进行修改调试将会非常方便。

然而,MINIX系统是一种比较基本的系统,不能像vmware中使用Windows类系统那样,直接给它装VMTools(因为缺失XWindows,虽然理论上可以给MINIX装个XWindows,但是,太麻烦,而且仅仅为了几个源代码,有点大途小用)。因为vmware的磁盘文件(.vmdk)不是原始的磁盘数据文件,而且,vmware对据如MINIX这些生僻系统的文件系统的识别性不是太理想,造成用vmware无法挂载MINIX系统到实体主机上,仍然复制不到虚拟机中的MINIX的文件。

阅读全文 »