Linu操作系统分析与实践第二讲:计算机系统硬件基础_第1页
Linu操作系统分析与实践第二讲:计算机系统硬件基础_第2页
Linu操作系统分析与实践第二讲:计算机系统硬件基础_第3页
Linu操作系统分析与实践第二讲:计算机系统硬件基础_第4页
Linu操作系统分析与实践第二讲:计算机系统硬件基础_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux操作系统分析与实践

第二讲:计算机系统硬件基础

《Linux标作系就合新写实践》锦程毫世小姐

让京大考

二零零,•耳未等

*致谢:感谢Intel对本课程项目的赛助

S"Q孝

本讲主要内衮

中央处理器(CPU)

存储系统

中断机制

I/O系统

时钟以及时钟队列

Linux启动过程

SMP及多核技术

缪北Q、芽

操作系统的硬件环境

讨论操作系统对运行硬件环境的要求

讨论操作系统设计者考虑的硬件问题

•中央处理器(CPU)

•存储系统

•中断机制

•I/O系统

•时钟以及时钟队列

图此Q孚

一、概述

任何系统软件都是硬件功能的延伸

操作系统直接依赖于硬件条件

OS的硬件环境以较分散的形式同各种管理

相结合

实现操作系统时必须理解的

计算机基本结构

操作系统管理的重要资源

计算机系统的组成

..计..篝机系统JI

硬件系统I软件系统I

t系

中央处理器(CPU)

专门设计了一系列基本机制:

-具有特权级别的处理器状态,能在不同

特权级运行的各种特权指令

-硬件机制使得OS可以和普通程序隔离

实现保护和控制

图此Q孚

处理器由运算器、控制器、一系列的寄

存器以及高速缓存构成

•运算器实现指令中的算术和逻辑运算,是

计算机计算的核心

•控制器负责控制程序运行的流程,包括取

指令、维护CPU状态、CPU与内存的交互等

等图此Q孚

•寄存器是指令在CPU内部作处理的过程中暂存数据、

地址以及指令信息的存储设备

在计算机的存储系统中它具有最快的访问速度

­高速缓存处于CPU和物理内存之间

一般由控制器中的内存管理单元(MMU:Memory

ManagementUnit)管理

访问速度快于内存,低于寄存器

利用程序局部性原理使得高速指令处理和低速内存

访问得以匹配,从而提高CPU的效率榛比/j,改

处理器中的寄存器

•寄存器提供了一定的存储能力

•速度比主存快得多

•造价高,容量一般都很小

两类寄存器:

•用户可见寄存器,高级语言编译器通过算法分

配并使用之,以减少程序访问主存次数

•控制和状态寄存器,用于控制处理器的操作

由OS的特权代码使用,以控制其他程序的执行

用户可见寄存器

•机器语言直接引用

•包括数据寄存器、地址寄存器以及条件码寄存器

•数据寄存器(dataregister)又称通用寄存器

主要用于各种算术逻辑指令和访存指令

•地址寄存器(addressregister)用于存储数据及

指令的物理地址、线性地址或者有效地址,用于

某种特定方式的寻址。如indexregister

segmentpointer、stackpointer

•条件码寄存器保存CPU操作结果的各种标记位

如算松算产生的溢出、符号等为

JbQ、孽

控制和状杰寄存器

•用于控制处理器的操作

•大部分对于用户是不可见的

•一部分可以在某种特权模式(由OS使用)下访问

常见的控制和状态寄存器:

•程序计数器(PC:ProgramCounter),记录将要取出的

指令的地址

•指令寄存器(IR:InstructionRegister),包含最近取出的

指令

•程序状态字(PSW:ProgramStatusWord),记录处理器

的运行模式信息等等

1.2.特权指令和非特权指令

特权指令:只能由操作系统使用的指令

•使用多道程序设计技术的计算机指令系统必须要区

分为特权指令和非特权指令

•处理器通过特殊的机制将处理器状态切换到操作系

统运行的特权状态(管态)

•CPU如何知道当前运行的是操作系统还是一般应用

软件?有赖于处理器状态的标识

V爹北林学

1.3.处理器的状态

根据运行程序对资源和机器指令的使用权限将处理器设

置为不同状态

多数系统将处理器工作状态划分为管态和目态

管态:操作系统管理程序运行的状态,较高的特权级别,

又称为鼻权态(特态)、核心态、系统态

目态:用户程序运行时的状态,较低的特权级别,又称

为普通态(普态)、用户态

有些系统将处理器状态划分核心状态、管理状态和用

户程序状态(目标状态)三种

图此Q培

实例:x86系列处理器(1)

•386、486、Pentium系列都支持4个处理器特权

级别(特权环:RO、RI、R2*R3)

•从R0到R3特权能力依次降低

•R0相当于双状态系统的管态

•R3相当于目态

•R1和R2则介于两者之间,它们能够运行的指

令集合具有包含关系:

【R03/RI2IR22IR3

图此Q孚

实例:x86系列处理器(2)

各个级别有保护性检查(地址校验、I/O限制)

特权级别之间的转换方式不尽相同

四个级别运行不同类别的程序:

•R0-运行操作系统核心代码

■R1-运行关键设备驱动程序和I/O处理例程

■R2-运行其他受保护共享代码,如语言系统运行环境

•R3-运行各种用户程序

现有基于x86处理器的操作系统,多数UNIX、Linux以及

Windows系歹4大都只用了R0和R3两个特权级别

14程序状态字PSW

(ProgramStatusWord)

在PSW中专门设置一位,根据运行程序使用指令

的权限而设置CPU状态

•CPU的工作状态码——指明管态还是目态,用来

说明当前在CPU上执行的是操作系统还是一般用

户,从而决定其是否可以使用特权指令或拥有其

他的特殊权力

•条件码一反映指令执行后的结果特征

•中断屏蔽码——指出是否允许中断

图此Q孚

例:微处理器M68000的程序状态享

1111119876543210

543210

IT聊I岫S唧唧唧唧口I"I。唧唧唧螂X|N|Z1

条件位:

C:进位标志位V:溢出标志位

Z:结果为零标志位N:结果为负标志位

10-12:三位中断屏蔽位

S:CPU状态标志位,为1处于管态,为0处于目态

T:陷阱(Trap)中断指示位为1,

在下一条指令执行后引起自陷中断

械处理器Pentium的程序状忠孝

31222120191817161514131211109876543210

VV

IAVRN100D1TSZApc

11A0U041

DCMFTPLFFFFFFFFF

PF

CF:进位标志位标准条件位:

ZF:结果为零标志位TF:陷阱标志位

SF:符号标志位IF:中断允许(中断屏蔽)标志位

OF:溢出标志位VIF:虚拟中断标志位

VIP:虚拟中断待决标志位

IOPL:IO特权级别

图此Q孚

CPU状忠的转换

目态f管态

唯一途径是中断

管态f目态

设置PSW(修改程序状态字)可实现

二,存储系统

支持OS运行硬件环境的一个重要方面:

•作业必须把它的程序和数据存放在内存中才能运行

•多道程系统中,若干个程序和相关的数据要放入内存

操作系统要管理、保护程序和数据,使它们不至于受

到破坏

•操作系统本身也要存放在内存中并运行

图此Q孚

2.L存储器的类型

半导体存储器实现内存

•存储器芯片的内部组织结构

•静态存储器(SRAM)

・异步动态随机存储器(DRAM)

・同步动态随机存储器(SDRAM)

>双倍数据速率SDRAM(DDRSDRAM)(开放标准)

ARambus公司的SDRAM

存储器的类型

只读型存储器

•ROM(Read-OnlyMemory):只能从其中读取数据,但不

能随意用普通方法写入数据(写入数据只能用特殊方法)

-在微机中,一些常驻内存的模块以微程序形式固化在

ROM中,如:PCBIOS和CBASIC解释程序被固化于ROM

•PROM:可编程只读存储器,使用特殊PROM写入器写入数

•EPROM:电可擦写可编程只读存储器,用特殊的紫外线光

照射此芯片,以“擦去”信息,恢复原来状态,再使用特殊

EPROM写入器写入数据

•闪存(flashmemory)片

2.2.存储器的层次结构

存储系统设计三个问题:

容量、速度和成本

•容量:需求无止境

•速度:能匹配处理器的速度

•成本问题:成本和其他部件相比应在合适范围之内

容量、速度和成本

•三个目标不可能同时达到最优,要作权衡

•存取速度快,每比特价格高

•容量大,每比特价格越低,同时存取速度也越慢

解决方案:采用层次化的存储体系结构

•当沿着层次下降时

•每比特的价格将下降,容量将增大

•速度将变慢,处理器的访问频率也将下降

卷此Q厚

层次彳七的存储体系结构

TypicalaccesstimeTypicalcapacity

1nsecRegisters<1KB

2nsecCache1MB

10nsecMainmemory64-512MB

10msecMagneticdisk5-50GB

100secMagnetictape20-100GB

存储访问局部性原理

提高存储系统效能关键点:程序存储访问局部性原理

•程序执行时,有很多的循环和子程序调用,一旦进入

这样的程序段,就会重复存取相同的指令集合

•对数据存取也有局部性,在较短的时间内,稳定地保

持在一个存储器的局部区域

处理器主要和存储器的局部打交道

在经过一段时间以后,使用的代码和数据集合会改变

23、存储分块

•存储最小单位:,,二进位”,包含信息为o或1

•最小编址单位:字节,一个字节包含八个二进位

主流个人电脑

-主存:128MB〜512MB之间

-辅助存储器:在20GB〜70GB

工作站、服务器

-主存:512MB〜4GB之间

-硬盘容量:数百GB

为简化分配和管理,存储器分成块,称一个物理页(Page)

•块的大小:512B、IK.4K、8K

2.4.存储保护设施

对主存中的信息加以严格的保护,使操作系统及其

他程序不被破坏,是其正确运行的基本条件之一

多用户,多任务操作系统:

os给每个运行进程分配一个存储区域

问题:

•多个程序同时在同一台机器上运行,怎样才能互不

侵犯?

•如何处理重定位?

保护的硬件支持

解决方案依赖于配有特殊硬件的CPU

硬件可提供如下功能:

•界地址寄存器(界限寄存器)

・存储键

•地址转换机制

图此Q孚

界地址寄存器(界喔寄存器)

•界地址寄存器被广泛使用的一种存储保护技术

•机制比较简单,易于实现

实现方法:

•在CPU中设置一对下限寄存器和上限寄存器

存放用户作业在主存中的下限和上限地址

•也可将一个寄存器作为基址寄存器,另一寄存器作为

限长寄存器(指示存储区长度)

•每当CPU要访问主存,硬件自动将被访问的主存地址与

界限寄存器的内容进行比较,以判断是否越界

•如果未越界,则按此地址访问主存,否则将产生程序

中断——越界中断(存储保护中断)

Registers

when

program2

isrunning

Registers

y-Limit-2

when

program1User-2data

isrunningy—Base-2

Limit-?^

Base-2、User-1data

«一‘Lirnii-1

Limit-1Userprogram

Odoc-1.y—Base-1

Operating

System

界地址寄存器(b)

存储保护技术鎏业Q、芽

存储键

•每个存储块有一个由二进位组成的存储保护键

•一用户作业被允许进入主存,OS分给它一个唯

一的存储键号

•并将分配给该作业各存储块存储键也置成同样

键号

•当OS挑选该作业运行时,OS将它的存储键号放

入程序状态字PSW存储键(“钥匙”)域中

•每当CPU访问主存时,都将该主存块的存储键

与PSW中的“钥匙”进行比较

•如果相匹配,则允许访问,否则,拒绝并报警

地址转换机制

同时有多个程序在内存

程序在内存的位置不是固定的而是随机

用户程序A用户程序B

总线

物理地址

MMU:内存管理单元

舞北Q、步

地址转换机制

•虚拟地址(逻辑地址)

处理器生成的指令或数据的二进制地

・这些地址用硬件和软件结合的方法转换

成物理地址

•MMU:内存管理单元,一种特殊硬件,

完成转换工作

图此Q孚

三、中新技术

中断对于操作系统的重要性

就像机器中的驱动齿轮一样

所以有人把操作系统称为是由

“中断驱动”或者“(中断)事件驱动”

•它使得OS可以捕获用户程序发出的系统功能调用

­及时处理设备的中断请求

•防止用户程序中破坏性的活动等等

卷此2手

3.L中新的概念

•CPU对系统发生的某个事件作出的一种反应

•CPU暂停正在执行的程序,保留现场后转

去执行相应事件的处理程序,处理完成后返回

断点,继续执行被打断的程序

特点:

引入中断的目的

•解决主机与外设的并1)中断随机的

行工作问题2)中断是可恢复的

•实现实时控制3)中断是自动处理的

中断的概念

指系统发生某个异步/同步事件后,处

理机暂停正在执行的程序,转去执行处理该事件程

序的过程

为了开发CPU和通道(或设备)之间的

并行操作,当CPU启动通道(或设备)进行输入/输

出后,通道便(或设备)可以独立工作了,CPU也可

以转去做与此次输入/输出不相关的事情,那么通

道(或设备)输入/输出完成后,还必须告诉CPU继

续输入/输出以后的事情,通道(或设备)通过向

CPU发中断告诉CPU此次输入/输出结%Ja

中断的概念

用于表示CPU执行指令时本身出现算术

溢Mill出、零做除数、取数时的奇偶错,访存指令越

界或就是执行了一条所谓“异常指令”(用于实

现系统调用)等情况,这时中断当前的执行流程,

转到相应的错误处理程序或异常处理程序

最早中断和异常并没有区分,都把它们叫

做中断。随着它们的发生原因和处理方式的差别

愈发明显,才有了以后的中断和异常

中断的概念

“I/O中断

「中断(外中断)乂

时钟中断

广义中断「系统调用

缺页异常

异常(内中断)《断点指令

例外其他程序性异常

〔(如算术溢出等)

中断(狭义)与异常的区别:

中断:与正执行指令无关,可以屏蔽

异常:与正执行指令有关,不可屏蔽

图此Q孚

3.2,中断♦统

中断系统是现代计算机系统的核心机制之一

硬件和软件相互配合、相互渗透而使得计算机系统得以

充分发挥能力的计算模式

中断系统的两大组成部分:硬件中断装置和软件中断处

理程序

■中断系统的硬件中断装置-中断系统的机制部分

负责捕获中断源发出的中断请求,以一定方式响应

中断源,然后将处理器控制权交给特定的中断处理程

•软件中断处理程序-中断系统的策略部分

负责辨别中断类型并做出相应的操作

参2孝

集畛、中新优先级和中断屏蔽

中断优先级设计原则:一般来说,高速设备的中

断优先级高,慢速设备的中断优先级低。因为高

速设备的中断被处理机优先响应时,可以让处理

机尽快地向它发出下一个I/O请求,提高高速设备

的利用率

图此Q孚

冲新优先级和中新屏蔽

处理机优先级:指出处理机正运行程序的中断响

应级别。即当处理机处于某一优先级时,只允许

处理机去响应比该优先级高的中断,而屏蔽低于或

等于该优先级的中断。可以通过置处理机优先级

来通知硬件:屏蔽优先级小于等于处理机优先级

的中断

中断屏蔽:指禁止处理机响应中断或禁止中断出

参北2步

中新优先级和中断“蔽

中断屏蔽有两种方法:

硬件实现——由软件置处理机优先级,硬件按系

统设计时的约定,屏蔽那些低优先级中断

软件实现一一由软件按操作系统优先级约定,设置

屏蔽寄存器

3.4.中新类型

强迫性中断

正在运行的程序所不期望的,由于某种硬件故

障或外部请求引起的

自愿性中断

用户在程序中有意识安排的中断,是由于用户

在编制程序时因为要求操作系统提供服务,有

意使用“访管”指令或系统调用,使中断发生

中新类型

强迫性中断

■输入/输出(I/O)中断:主要来自外部设备通

•程序性中断:运行程序中本身的中断

(如溢出,缺页中断,缺段中断,地址越界)

•时钟中断

•控制台中断

•硬件故障

中新类型

自愿性中断

•执行I/O,创建进程,分配内存

•信号量操作,发送/接收消息

微机中的中新

1.可屏蔽中断(10中断)

2.不可屏蔽中断(机器内部故障、掉电中断)

3.程序错误中断(溢出、除法错等中断)

4.软件中断(Trap指令或中断指令INT)

图此Q孚

IBM370中的中新

i.机器故障中断:如电源故障,机器电路检验错等

2.输入输出中断:输入输出设备和通道数据传输状态)

3.外部中断:时钟中断,操作员控制台中断,多机系统

中其他机器的通信要求中断,各种外设或传感器发来

的实时中断等

4.程序中断:程序中的问题引起的中断,如错误地使用

指令或数据、溢出等问题,存储保护等

5.访管中断:访管指令或陷阱指令(Trap指令)中的操

作数规定了要求服务的类型。每当CPU执行访管指令或

陷阱指令时,即引起中断并调用操作系统相应的功能

模块为其服务

二缪共林手

3.5.中断响应

CPU如何响应中断,两个问题:

•CPU何时响应中断?

通常在CPU执行了一条指令以后,更确切

地,在指令周期最后时刻接受中断请求,

或此时扫描中断寄存器

•如何知道提出中断请求的设备或中断源?

因为只有知道中断源或中断设备,才能

调用相应的中断处理程序

图此Q孚

FThR中新响应

处理器如何发现中断信号?

处理器的控制部件中设一个能检测中断的机构

称为中断扫描机构

•在每条指令执行周期的最后时刻扫描中断寄存器,

询问是否有中断信号

•若无中断信号,继续执行下一条指令

•若有中断,中断硬件将该中断触发器内容按规定编

码送入PSW的相应位,称为中断码

•通过交换中断向量引出中断处理程序

中断向量:一个存放中断处理程序入口地址和程

序运行所需处理机状态字的内存单元

硬件按中断号、异常类型的不同通过中断向量表

转移

中新向量表

在有的机器中:

将主存最低位128个字保留作为中断向量表,每

个中断向量占两个字

中断请求的设备接口为了标识自己,向处理器发

送一个该设备在中断向量表中表目的地址指针

图此Q孚

中断响应

典型的中新处理CU:I/O中新

由I/o设备的控制器或者通道发出

两类I/O中断:

•I/O操作正常结束

如果要继续I/O操作,需要在准备好以后重新启动I/O,

若请求I/O程序正处于等待I/O状态,则应将其唤醒

•I/O异常

需要重新执行失败的I/0操作

重试次数有上限,次数过大,系统将判定硬件故障

典型的中断处理(2):时钟中新

系统多道能力的重要推动力量,时钟中断处理程序通常

做与系统运转、管理和维护相关的工作,包括:

•维护软件时钟:系统有若干个软件时钟,控制定时任

务以及进程的处理器时间配额,时钟中断需要维护、

定时更新这些软件时钟

•处理器时间调度:维护当前进程时间片软件时钟,并

在当前进程时间片到时以后运行调度程序选择下一个

被调度的进程

•控制系统定时任务:通过软件时钟和调度程序定时激

活一些系统任务,如监测死锁、系统记帐、系统审计

•实时处理”,与

嚷蟹的中断处理C3J:硬件故障中新

硬件故障中断处理程序一般需要做的工作:

■保存现场,使用一定警告手段,提供些辅助诊断信息

•在高可靠系统中,中断处理程序还要评估系统可用性,尽可能

恢复系统

如Windows2000/XP,关键硬件发生故障时,如显示卡损坏,出

现系统蓝屏,系统实际上进入相应故障处理程序,发现故障不

可恢复,则在屏幕上打印出发生故障时程序位置,并开始进行

内存转储(将一定范围的内存内容写上磁盘,是系统故障时的

全系统“快照”),备日后故障诊断

参2孝

其建的中新处理(4):程序性中断

程序指令出错、指令越权或者指令寻址越界而引发

两类处理方法:

•只能由操作系统的相关扩展功能模块完成

多为程序试图作不能做的操作引起的系统保护

如访问合法的、但不在内存虚地址内,引发页故障页故障一

般会引发os虚存模块作一个页面换入

•可由程序自己完成,如一些算术运算错误

不同程序可有不同处理方法,所以很多OS提供由用户自己

处理这类中断的“绿色通道”

系统调试中断(断点中断、单步跟踪)也可被用户程序处理,

用以支持各种程序调试的

典型的中新处理(5):余统服务请求(自愿性中断)

系统服务请求由处理器专用指令(访管指令)激发

•如x86处理器提供int指令,用来激发软件中断

•其他不少处理器则提供系统调用指令syscall

执行专用指令的结果是系统被切换到管态,并且转

移到一段专门OS程序处开始执行

■指令格式通常是指令名加请求服务识别号(中断号)

•OS利用处理器提供的这种接口建立系统服务体系

•处理器一般不负责定义系统调用所传递的参数格式

参此林早

>r室的中断处理(6):系统服务请求实例

•DOS:21h号中断的系统服务功能以及参数列表

现代操作系统一般不提供直接使用系统调用指令的接口,通

常做法:提供一套方便、实用的应用程序函数库(应用程序

设计接口API)

-从应用层面重新封装系统调用

-屏蔽复杂的系统调用传参问题

-高级语言接口,有助于快速开发

有的系统在更高层面提供系统程序设计模板库和类库

如Windows2000/XP提供封装系统用Win32API和高层编程机

制MFC以及ATL

Linux提供封装系统调用、符合POSIX标准A9和C运行库

保存进程状态的其

余信息

进程中断

中断系统软件完成的工作

恢复进程状态信息

从系统堆栈恢复原

PSW和PC图此Q孚

四,I/O技术

I/O控制使用下面几种技术:

•程序控制

•中断驱动

•直接存储器存取(DMA)

•通道

鎏共2芽

4.E程序控制I/O技术

由处理器提供I/O相关指令来实现

•I/O处理单元处理请求并设置I/O状态寄存器相关位

•不中断处理器,也不给处理器警告信息

•处理器定期轮询I/O单元的状态,直到处理完毕

I/O软件包含直接操纵I/O的指令

•控制指令:用于激活外设,并告诉它做什么

•状态指令:用于测试I/O控制中的各种状态和条件

•数据传送指令:用于在设备和主存之间来回传送数据

主要缺陷:处理器必须关注I/O处理单元的状态,因而耗费大

量时间轮询信息,严重地降低了系统性能

参2孝

42中断驱动I/O技术

为了解决程序控制I/O方法的主要问题

应该让处理器从轮询任务中解放出来

使I/O操作和指令执行并行起来

具体作法:

当I/O处理单元准备好与设备交互的时候

通过物理信号通知处理器,即中断处理器

4.3.DMA技术(1)

中断的引入大大地提高了处理器处理I/O的效率

当处理器和I/O间传送数据时,效率仍旧不高

解决方法:

直接存储器访问(DMA:DirectMemoryAccess)

•通过系统总线中一独立控制单元DMA控

制器

•自动控制成块数据在内存和I/O单元间的传送

•大大提高处理I/O的效能

DMA技术(2)

当处理器需要读写一整块数据时

给DMA控制单元发送一条命令

包含:是否请求一次读或写,I/O设备的编址,开始

读或写的主存编址,需要传送的数据长度等信息

•处理器发送完命令后就可处理其他事情

•DMA控制器将自动管理数据的传送

•当这个过程完成后,它会给处理器发一个中断

处理器只在开始传送和传送结束时关注一下就可

DMA技术(3)

•处理器和DMA传送不完全并行

•有时会有总线竞争的情况发生

处理器用总线时可能稍作等待

不会引起中断

不引起程序上下文的保存

•通常过程只有一个总线周期

•在DMA传送时,处理器访问总线速度会变慢

•对于大量数据I/O传送,DMA技术是很有价值

■鎏此Q手

4.4.通道

独立于中央处理器,专门负责数据I/O传输的

-它对外设实现统一管理

-代替CPU对I/O操作进行控制

-使CPU和外设可以并行工作

通道又称为I/O处理机

引入通道的目的:

•为了使CPU从I/O事务中解脱出来

•同时为了提高CPU与设备、设备与设备之间的并行

度参什林厚

五、时钟

时钟为计算机完成以下必不可少的工作:

•在多道程序运行环境中,为系统发现陷入死循环(编程错误)

的作业,防止机时的浪费

•在分时系统中,间隔时钟实现作业间按时间片轮转

•在实时系统中,按要求的间隔输出正确时间信号给实时的控

制设备(如A/D、D/A转换设备)

•定时唤醒要求延迟执行的各外部事件(如定时为各进程计算

优先数,银行中定时运行某类结账程序等)

•记录用户使用设备时间和记录某外部事件发生时间

•记录用户和系统所需要的绝对时间,即年、月、日

•时钟是操作系统运行的必不可少的硬件设施

•时钟,实际上都是硬件时钟寄存器,按时钟电路所产生的脉

冲数对时钟寄存器进行加1或减1的工作

•绝对时钟:记录当时时间(年、月、日、时、分、秒)

一般来说,绝对时钟准确,当停机时,绝对时钟值仍然自动

修改

•间隔时钟(相对时钟):通过时钟寄存器实现

置上时间间隔初值,每经过一个单位时间,时钟值减1,直

到该值为负时,则触发时钟中断,并进行相应中断处理

爹共2手

晶体^震^荡

-阴

每个脉冲使计数器减1

用来装入计

TEEEEEEEEED数器初值

等北Q、浮

破件时钟:

某个寄存器来模拟

(根据脉冲频率定时加1,减1)

用作相对时钟,用内存单元来模拟时钟

•CPU保护:防止进程得到CPU后不放弃控制权

•解决:分配给每个进程一段时间(时间片)

时间片到,发时钟中断,控制权交给操作系统

图此Q孚

六、系统调用

系统调用:用户在程序中调用操作系统所提供的一些子功能

•这是特殊的过程调用,由特殊的机器指令实现(每种机器

的机器指令集中都有一条系统调用指令一访管指令)

■这条指令将系统转入管态

•系统调用是一个低级过程,只能由汇编语言直接访问

•系统调用是操作系统提供给编程人员的唯一接口

■利用系统调用,动态请求和释放系统资源

完成与硬件相关的工作以及控制程序的执行等

每个操作系统都提供几百种系统调用

A=A+l

printf(...)

B=B+A

(1)源程序段

缪北Q、芽

a素嶷词用简介(续1)

A=A+1

・、c•

/:、

•嵌入后•/

INT>>〈INT/

该系统调

•1用的操作

•系统内部

OUT实现代码

(2)printf目标代码⑶程序段编译产生的(4)操作系统

可执行代码

谪用简介(续2)

•凡是与硬件相关、与应用无关的工作,都通过

操作系统程序来完成

用户程序

函数

操作系统

图此Q孚

以I/O设备的硬件接口为例:

一般由四种寄存器(地址,数据,状态,控制)或其

子集组成

任一程序中若要使用I/O设备来输出数据或接受输入

必须通过对这四种寄存器读写的I/O机器指令进行

V爹北林学

6.2.系统调用的处理过程

•需要有一个类似于硬件中断处理的处理机构

当用户使用系统调用时,产生一条相应的指令

处理机在执行到该指令时发生相应的中断,并

发出有关的信号给该处理机构

该处理机构在收到了处理机发来的信号后,启

动相关的处理程序去完成该系统调用所要求的

功能

图此Q孚

系统调用的处理过程(续1)

•在系统中为控制系统调用服务的机构称为陷入

(TRAP)或异常处理机构

•相对应,把由于系统调用引起处理机中断的指令

称为陷入或异常指令(或称访管指令)

•在操作系统中,每个系统调用都对应一个事先给

定的功能号,例如0、1、2、3等,称为系统调用

功能号

(在陷入指令中必须包括对应系统调用的功能号

有些陷入指令中,还带有传给陷入处理机构和内

部处理程序的有关参数)图此Q孚

系统调用的处理过程r续2)

•必须为实现系统调用功能的子程序编造人口地址表

•每个入口地址与相应的系统调用执行程序名对应

•陷入处理程序把陷入指令包含功能号与人口地址表有关项

对应,驱动有关子程序执行

•在系统调用处理结束之后,用户程序需利用系统调用返回

结果继续执行

保护现场:

•进入系统调用处理前,陷入处理机构还需保存处理机现场

•在系统调用处理结束之后,要恢复处理机现场,现场被保

护在特定的内存区或寄存器中铲安、、,

/拄林孝

用户程序陷入处理机构系统子程序

系统调用的处理过程

参数传遹过程问题

怎样实现用户程序和系统程序间的参数传递?

常用的3种实现方法:

•由陷入指令自带参数:陷入指令的长度有限的,且还

要携带系统调用功能号,只能自带有限的参数

•通过有关通用寄存器来传递参数:这些寄存器应是系

统程序和用户程序都能访问,由于寄存器长度较短,

从法传递较多的参数

•大多在内存中开辟专用堆栈区来传递参数

―小学

6.4.系统调用的分类

系统功能可分为两部分

•系统自身所需要的

•作为服务提供给用户的

os的系统调用:

•进程控制类系统调用

•文件操作类系统调用

•进程通信类系统调用

•设备管理类系统调用

•信息维护类系统调用

图此Q孚

进程管理

调用说明

pid=fork))创建与父进程相同的子进程

等待一子进程终止

pid=wairpidfpid,&statioc9options)

s=execvefname,argv,environp)复制一进程的核心映像

Exit(status)中止进程执行并返回status

缪北Q、芽

文件管理

调用说明

fd=open(file,how,...)打开一个文件供读、写或两者

s=close(fd)关闭一个文件

n=read(fd,buffer,nbytes)把数据从一个文件读到缓冲区中

n=write(fd,buffer,nbytes)把数据从缓冲区写到一个文件中

position=iseek(fd,offset,where)移动文件指针

s=stat(name,&buf)取得文件的状态信息

1录管理

调用说明

s=mkdir(name,mode)创建一个新目录

s=rmdir(name)删去一个空目录

s=Iink(name1,name2)创建一个新表项,name2,指向

namel

s=unlink(name)删去一个目录项

s=mount(special,name,flag)安X个文件系统

s=unmount(special)卸载一个文件系统

裔共Q、步

其他

调用说明

s=chdir(dirname)改变工作目录

s=chmod(name,mode)修改一个文件的保护位

s=kill(pid,signal)发送一信号给一个进程

seconds=time(&seconds)自1970年1月1日起的时间

系统调用方式(INT)与程序中一般的调

用方式的相同点:

・改变指令流程

•重复执行和公用

・改变指令流程后需要返回原处

系统调用方式(INT)与程序中一般的调用方式

的不同点:

系统调用与一般过程调用比校(续1)

•运行在不同的系统状态

-一般过程调用,其调用程序和被调用程序都运行在相同状

态:核心态或用户态

-系统调用:调用程序在用户态,被调用程序在系统态

状态的转换

»一般的过程调用不涉及系统状态的转换,可直接由调用过程

转向被调用过程

»运行系统调用时,调用和被调用过程在不同系统状态,不允

许由调用过程直接转向被调用过程

通过软中断机制先由用户态转换为核心态

在OS核心分析后,转向相应的系统调用处理子程序

系统调用与一般过程调用比较(续2)

•返回问题

-一般过程调用在被调用过程执行完后,返回

调用过程

-抢占式调度的系统中,被调用过程执行完后,

系统将对所有要求运行的进程进行优先级分析。

如果调用进程仍有最高优先级,则返回到调用

进程执行

否则,引起重新调度,让优先级最高的进程

优先执行。此时,系统把调用进程放入就绪队

系统调用与一般过程调用比较(续3)

■进入方式不同

利用int或trap指令进行系统调用;利用call

或jmp指令进入普通的过程调用

•CALL指令的内部实现过程

-返回地址压栈(即该CALL指令所在的地址)

-将该CALL指令中所含的地址(即被调用代码所

足地址)送入PC

•RET指令的内部实现过程

-从栈顶弹出返回地址送入程序计数器PC

养笳谪用与一般过程调用比校(续4)

•系统调用是动态调用,而CALL调用

方式是静态调用

a.同一程序中不包含被调用代码

系统调用是动态调用,程序中不包含被调

用代码,好处:

(1)用户程序长度缩短

(2)当OS升级时,调用方不必改变

图此Q孚

系统调用与一般过程调用比校(续5)

b.系统调用方式的调用地址和返回地址都是不固定

系统调用指令中不包含调用地址,只包含功能号

是按功能号(在可执行目标程序中)调用的

在操作系统内部

由系统调用处理程序通过系统调用分支表

(OS的一个数据结构)

将功能号转换为相应的指令地址

系统调用与一般过程调用比较(续6)

显示

打印

读文件

用户程序os

系统调用与一般过程调用比校(续7)

系统调用返回指令中不包括返回地址,通过栈保

存而弹出返回危症

系统调用返回地址不固定,因为用户程序在不同

的地方调用os

CALL调用方式是静态调用,被调用代码与调用

代码在同一程序之内。CALL调用方式,其调用

地址是固定的,包含在调用语句中;返回地址

是不固定的(同一子程序可能被不同处多次调

用),在程序执行过程中通过栈的实现来保存

和弹出返回地址

涝此Q冬

系统调用与一般过程调用比校(续8)

c.安全接口

INT指令和IRET指令的执行过程中

要处理程序状态字PSW

INT指令中要保存用户程序的老PSW

并根据中断向量表设置新PSW

IRET指令中要在返回用户程序前恢复用户程序

的老PSW

图此Q孚

系统覆用与一般过程调用比较(续9)

安全接口(续1)

目的:目态、管态的管理

系统态与用户态的转换

由系统在INT指令与IRET指令内部自动完

没有用一条单独的专门指令

七、Linux系统启动过程

针对linux系统的单x86cpu的版本

鎏北Q、步

说在If面的话…

•引导涉及到系统各个部分的数据结构,

因此,只有随着课程的深入,才会彻底

弄清楚引导程序中的初始化工作

•不同OS的引导程序可能会不同,但是仍

有一些普遍的原理可以遵循

前面的部分侧重代码,目的是为了说清

楚一些基本概念,启动核心部分侧重原

理,增强大家的感性认识

图此Q孚

余统初始化所包括的内衮

•基础知识

­系统引导

•通过lilo进行引导

•实模式下的系统初始化

・保护模式下的系统初始化

•启动核心

,Init进程

7.1基础知识

•Linux源代码中的C语言代码

•Linux源代码中的汇编语言代码:两种

•完全的汇编代码,以.S作为文件名后缀

•嵌入在C程序中的汇编代码。

C语言代玛

•Linux主体是用GNU的c语言编写

•从C++中吸收了“inline”和“const”

•支持"属性描述符”(attribute)

•增加了新的基本数据类型“longlongint”

用于支蒋64位cpu

图此Q孚

汇编语音代玛

•与一般的386汇编语言采用intel定义不同,

它采用的是AT&T定义的格式。主要差

别如下:

•Intel中多使用大写字母,而这里大多使用小写字

•寄存器名前面要加“%”作为前缀,

•指令的源操作数与目标操作数的顺序与intel的正

好相反。AT&T格式中,源在前,目标在后

.

汇编语言代玛

•访问内存的指令的操作数大小(即宽度)由操作

码名称的最后一个字母决定,用作操作码后缀的

字母有b(8位),w(16位),1(32位),e.g

movb

•直接操作数要加“$”作为前缀,intel中不用

•基本格式

-asm(“汇编语句”

:输出寄存器

:输入寄存器

:会被修改的寄存器);

•输出和输入寄存器统一按顺序编号,起始是%0

卷共Q、早

基础知识

•Linux的启动是指从系统加电到控制台显

示登录提示为止的运行阶段:

-主要相关的代码是在arch/i386/boot中:

•bootsect.S,这是linux引导扇区的源代码

•setup.S这是辅助程序的一部分

•video.S这是辅助程序的另夕|•部分,用于引导

过程中的屏幕显示

基础知识

-另外,子目录compressed中还有两个源代码

文祥head.S,misc.co用于内核映象的解压

缩。也属于辅助程序一部分。

-经过■译,汇编和连接后就形成三个部分:

引导扇区的映象bootsetc,辅助程序setup和

内核映象本身。

-大小不超过508KB的内核引导映象称为小映

象zlmage;否则称为大内核bzlmage

图此Q孚

7.2系统引导

•加电开机后,intelcpu在实模式下工作,

只能使用低端的640kb(即0XA0000以下)

的内存空间(why?)

•由ROMBIOS或由ilo将启动盘的第一扇

区(引导扇区)的内容装入起始地址为

0x7c00的内存空间,然后跳转到0x7c00

开始执行引导扇区的代码

•该引导扇区内的代码就是bootsetS汇编

后生成的二进制代码

图此Q孚

系统引导

该段代码(bootsetS)将自身转移到

0x90000处,然后跳转到那里继续执行,

并通过bios提供的“int0x13”调用从磁盘

上读入setup和内核的映象,然后跳转到

setup的代向中,为执行而核映象做准备

•对部分代码的解释如下所示:

图此Q孚

蠡电M引导-bootsect.S中的部分代

movw$BOOTSEG,%ax

movw%ax,%ds#%ds=BOOTSEG,将ds段寄存器设为0x7c00

movw$INITSEG,%ax

movw%ax,%es#%ax=%es=INITSEG,将es段寄存器设为0x9000

movw$256,%cx#移动计数值=256

subw%si,%si#源地址ds:si=0x07c0:0x0000

subw%di,%di#目标地es:di=0x9000:0x0000

eld#清方向标志位

rep#重复执行直到cx=0

movsw#移动1个字

Ijmp$INITSEG,$go#间接跳转,INITSEG指出跳转到的段地址

go:movw$0x4000-12,%di#0x4000isanarbitraryvalue>=

#lengthofbootsect+lengthof

#setup+roomforstack;

#12isdiskparmsize.

movw%ax,%ds#将ds,ss都置成移动后代码所在的段处0x9000

movw%ax,%ss

movw%di,%sp#设置堆栈putstackatINITSEG:0x4000-12.

与限号I导-bootsect.S中部分代玛的解

这段代码将启动扇区代码由0x7C00移至

0x90000处。Linux将地址为0x90000的代

码段称为INITSEG。然后跳转到go标志,

准备一块堆栈,栈底位于

$INITSEG:0x4000-12

系统引导一bootsect.S中部分代玛

loadsetup:

xorb%ah,%ah#ah=0x02读磁盘扇区到内存;21=需读出的扇区数,…

xorb%dl,%dl

int$0x13

xorw%dx,%dx

movb$0x02,%cl

movw$0x0200,%bx

movb$0x02,%ah

movbsetup_sects,%al

int$0x13

jncokloadsetup

pushw%ax

callprintnl

movw%sp,%bp

callprinthex

popw%ax

jmploadsetup

okloadsetup:

与限号[导-bootsect.S中部分代玛的解

■该段代码利用BIOS中提供的读磁盘调用

“int0x13”从磁盘将setup.S装入到9000:

0200(linux中称之为SETUPPSEG段),

即紧跟在bootsect.S之后,共四个扇区

•如果载入失败,则不断尝试循环。除非

某次尝试成功,否则只有等待系统重启

7.3通过lilo来进行引导

•Lilo(linuxloader)也存储在启动扇区

中,用以让用户选择上电后使用何种操

作系统

・Lilo在系统安装阶段建立关于核心代码占

用硬盘数据块的位置的对照表。启动时

lilo将利用这张表引导BIOS装入指定的操

作系统

通过lilo来进行引导

•Lilo将用户在启动时输入的命令和参数存

储在empty_zero_page(0x5000)的后半页,

供arch/i386/kernel/setup.c文柞的

setup_arch()函数使用

•Lilo完成任务后,跳转至setup.S程序,

转入实模式下的系统初始化

图此Q孚

7.4卖模式下的系统初始化

•setup.S连同内核映象由bootsect.S装入。

setup.S从BIOS获取计算机系统的参数,

放到内存参数区,仍在实模式下运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论