第一章 导论

写在前面:本文中引用部分为教材中的原文,后面的正文是笔记和理解。

关键概念与笔记

计算机系统可以大致分为4个组成部分:计算机硬件、操作系统、系统程序与应用程序和用户。

这里写图片描述
操作系统是一个特殊的软件,介于硬件和程序之间,让开发者和用户更好地使用硬件资源。

当打开电源和重启时,计算机开始运行,它需要一个初始化程序。该初始化程序或引导程序(bootstrap program)比较简单,通常位于ROM或EEPROM中,称为计算机的固件。

通常,指针表位于低地址内存(前100左右的位置)。这些位置包含各种设备的中断处理子程序的地址。这种地址的数组或中断向量(interrupt vector)可通过唯一设备号来索引。

中断体系结构,会保护被中断指令的地址(内存)。而且当一个中断正在处理,另一个中断无法响应。

一个典型指令执行周期(在冯·诺依曼体系结构上执行时)首先从内存中获取指令并保存在指令寄存器(instrction register)中。接着,指令被解码,并可能导致从内存中获取操作数保存在内存寄存器中。在指令完成时对操作数的执行后,其结果可以存回内存。

对于设备驱动程序控制的I/O中断驱动适合移动少量数据,但对于大块的数据移动,如磁盘I/O,就会带来超载问题。DMA(direct memory access,直接内存访问)就是为了解决这个问题而设计的。

这里写图片描述
少量数据–>缓存,设备驱动程序控制

大量数据–>DMA

在许多应用中计算机系统不断增加的可靠性是很关键的。这种能提供与正常工作的硬件成正比的服务的能力被称为适度退化(graceful degradation),有些系统超出适度退化的能力被称为容错(fault tolerant),因为它们能忍受单个部件的错误并继续操作。

类似“适度退化”来提高系统的可靠性的还有磁盘的RAID结构,通过增加磁盘的数量来存储冗余信息,防止磁盘损坏导致信息丢失。(第十二章)

多道程序设计(multiprogamming)通过组织作业(编码或数据)使CPU总有一个作业可执行,从而提高CPU的利用率。分时系统(time sharing)(或多任务)是多道程序设计的延伸。

通常由于主存较小而不能容纳太多作业,所以这些作业刚开始存储在磁盘的作业池(job pool)中。该池由所有驻留在磁盘中需要等待分配存储内存的作业组成。如果多个作业需要调入内存但没有足够的内存,那么系统必须在这些作业中做出选择,这样的决策被称为作业调度(job scheduling)。

当操作系统从作业池中选中一个作业,就将它调入内存来执行。在内存中同时有多个程序运行,需要一定形式的内存管理

如果有多个任务同时需要执行,那么系统必须做出选择,这样的选择称为CPU调度(CPU scheduling)。

这里有三个调度的概念:作业调度,内存管理,cpu调度。这里简单地区分这三个:

作业调度,是在

为了保护数据和系统,确保操作系统的正常执行,必须区分操作系统代码和用户定义代码的执行。操作系统提供硬件支持各种执行模式:至少需要两种独立的操作模式:用户模式(user mode)和监督程序模式(monitor mode)(也称为管理模式)、系统模式(system mode)或特权模式(privileged mode)。

注意这是通过“提供硬件支持”来实现的。


拓展

① 引导程序和系统启动引导过程是怎样的。

简单地叙述系统启动引导过程:

1. 指令寄存器

通电后直接设置指令寄存器为某个指令的地址,执行这个指令,这个指令一般就是BIOS(基本输入输出系统)的首地址。

2. BIOS

分为两步,第一步进行硬件自检,进行最底层的硬件的设置和控制。第二步根据boot sequence序列顺序(以设备为单位,即设备的顺序),加载引导扇区(512B),找到扇区满足它的最后两个字节是OX55AA。

3. 引导扇区的结构(MBR):

  • 第1-446字节:调用操作系统的机器码。
  • 第447-510字节:硬盘分区表(Disk Partition Table,DPT),将硬盘分成若干分区。
  • 第511-512字节:主引导记录签名(0x55和0xAA)。

MBR的分区表的结构:

MBR中的分区表长度只有64个字节,里面分成4项,每项16个字节,所以一个硬盘最多只能分四个一级分区,又叫做”主分区”。每个区可以安装不同的操作系统,”主引导记录”因此必须知道将控制权转交给哪个区。
每个主分区的16个字节,由6个部分组成:

  • 第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
  • 第2-4个字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。
  • 第5个字节:主分区类型。
  • 第6-8个字节:主分区最后一个扇区的物理位置。
  • 第9-12字节:该主分区第一个扇区的逻辑地址。
  • 第13-16字节:主分区的扇区总数。

4. 卷引导记录

激活四个主分区中的激活分区,取出激活分区的第一个扇区,叫做”卷引导记录”(Volume Boot Record,缩写为VBR,也可称为分区引导记录,Partition Boot Record,缩写为PBR)。

“卷引导记录”的主要作用是,寻找激活分区根目录下的NTLDR(XP)、bootmgr(Win7 above)、grldr(Grub)、btldr.mbr(BootLink)等可用于引导的程序。

5. 启动管理器

“启动管理器”(boot loader)是系统预先安装的程序,由用户选择启动哪一个操作系统。”卷引导记录”搜索到激活分区中的”启动管理器”,将控制权交给”启动管理器”运行。

“启动管理器”寻找激活分区中的启动配置数据(如:Win7中的BCD文件、XP中的boot.ini文件),根据启动配置数据,在显示器上显示多操作系统选择画面。选择相应的操作系统,控制权交给操作系统。

Linux环境中,目前最流行的启动管理器是Grub。在windows下为启动管理器bootmgr(xp中的ntldr文件)。

② 初学者可能会对缓存(buffer)有疑问(我初学这个概念的时候也一样):

既然外存的速度那么慢,cpu寄存器速度那么快,为什么不用速度更快的cpu寄存器或者缓存呢?

这里有两个需要考虑的因素:成本和能耗。速度更快的成本太高,会导致整个计算机的成本增加特别多,而且只是用来存储,速度不必那么快。而速度更快的能耗也会很高,散热更加困难,散热太慢还会反过来影响性能。综上,现在的cpu–缓存–外存是成本性能折中的结果。

作业调度,cpu调度,进程调度,内存管理等到底有什么区别?

参考资料:

操作系统引导过程

操作系统中长期调度、中期调度和短期调度之间的区别

一道题浅谈【作业调度】与【进程调度】

猜你喜欢

转载自blog.csdn.net/qq_36328643/article/details/81185608