第一章-计算机系统概述
操作系统的基本概念
1.1系统软件,控制计算机硬件和软件资源
操作系统的特征:最主要的是并发和共享
(1)并发:分时交替。单处理机同时只能运行一个进程
(2)共享:系统资源可供多个并发的进程同时使用,同步互斥
(3)虚拟:物理实体->逻辑事物
(4)异步:多个程序执行速度不可预知,但结果一定
操作系统的功能:处理机管理,存储器管理,文件管理,设备管理
操作系统的接口:命令接口(联机:交互式,脱机:批处理),系统调用(程序接口,给编程人员的接口)
库函数来使用系统调用
1.2 操作系统的发展和分类
发展流程:手工操作阶段->批处理阶段->分时系统->实时系统->PC操作系统
批处理系统:将一批作业进入内存,交给操作系统处理,用户脱机。优点:资源利用率高,缺点:无交互能力
单道批处理系统:内存中始终保持一道作业。如果程序运行时发出io请求,那CPU就要等待低速的io
多道批处理系统:允许多个程序同时进入内存,在CPU中交替运行。一个程序io的同时,CPU可以转而执行其他程序。但是用户不知道程序的运行情况,不能和计算机交互,只能通过提前写好的用户说明书来调试
分时操作系统:处理器的运行时间分成很短的时间片,轮流分配给各作业。多个用户共享一台主机,交互互不干扰
实时操作系统:订票、银行,严格及时
1.3 操作系统的运行环境
1.操作系统运行机制
CPU有两种状态:用户态时,只能执行非特权指令,内核态可以执行特权指令
操作系统内核包括:
- 时钟管理:计时,时间片轮转调度切换进程
- 中断机制
- 原语:不可被中断的原子进程
- 系统控制的数据结构(进程管理,存储器管理,设备管理),与硬件关系不紧密
用户态到内核态切换需要通过中断或异常,反过来则需要中断返回指令。
进程从用户态->内核态需要访管指令,中断处理程序在内核态运行。
2.中断和异常
硬件中断:中断信号来自硬件设备
- 外中断(中断):来自外部设备,包括io设备中断、外部信号中断、定时器引起的时钟中断
- 内中断(异常):中断信号来自CPU内部指令执行
- 故障fault:可恢复的错误,如缺页(通过访存指令产生的异常)
- 终止abort:不可恢复的错误,如非法指令,除数为0
软中断:通过当前进程中断指令int产生的中断,其实是程序的正常执行
- 陷入trap:有意的异常,如系统调用(用户态到内核态的切换)
CPU响应中断后,中断处理过程:
- 中断隐指令(硬件直接实现)做的事:(用户态)
- 关中断:因为保护中断现场时不能被中断打扰
- 保存断点:将当前PC值压栈
- 中断服务程序寻址:将中断向量(中断服务程序的入口地址)放入PC
- 中断服务程序做的事:(内核态)
- 保存现场和屏蔽字:通用寄存器的值
- 开中断:为了中断嵌套,接受新的中断
- 执行中断服务程序
- 关中断:保证恢复现场时不能被打扰
- 恢复现场和屏蔽字
- 开中断
- 中断返回
3.系统调用
程序调用操作系统提供的功能包括设备管理、文件管理、进程控制、进程通信、内存管理。
用户程序通过int 0x80
命令产生软中断,然后通过trap陷入指令发起系统调用,把CPU使用权主动交给内核,即用户态到内核态。此时,寄存器eax中会存放系统调用号,根据系统调用号查找系统调用表sys_call_table中对应的系统调用服务程序入口地址。内核处理完后,再把CPU使用权还给用户程序
1.4 操作系统的体系结构
分层法
将操作系统分成若干层次,0为硬件(最底层),n为用户接口
每层只能调用相邻的更低层的服务
模块化
将操作系统按功能划分为多个模块,各模块之间通过接口通信
大内核与微内核
大内核:操作系统主要模块都作为整体运行在内核态。
- 性能高,但是增加系统服务时需要修改内核,接口复杂
微内核:内核态只有最基本的功能(进程管理等)
- 微内核基于用户/服务器模式,只有微内核运行在内核态,其他模块在用户态
- 可靠性高,但需要频繁切换,性能差
1.5 程序运行环境
进程的内存映像与地址空间
一个程序从硬盘调入内存就构成了进程的内存映像
内存映像从上到下(高地址到低地址):
- 栈:用来实现哈函数调用
- 堆:存放动态分配的变量
- 数据段:全局变量和静态变量
- 代码段:程序的二进制代码
程序调入内存后,数据段和代码段大小固定
此外,还有进程控制块PCB存放在系统区
1.6 操作系统引导过程
- CPU执行ROM中的boot程序,将BIOS程序(基本输入输出系统)的第一条指令放入指令寄存器,开始执行BIOS
- BIOS硬件自检,通过遍历方式寻找带有主引导记录的系统硬盘
- 加载主引导记录MBR,根据标识符找到引导硬盘
- 加载硬盘分区表,MBR找到哪个硬盘分区含有操作系统
- (加载硬盘活动分区,分区引导记录PBR,启动管理器。。。)
- 加载操作系统到内存中的系统区,属于RAM
1.7 虚拟机
两种虚拟化方法
1.第一类虚拟机
虚拟机作为用户态的进程,当执行内核态指令时,陷入虚拟机管理程序。虚拟机管理程序检查该指令是否是虚拟机的操作系统执行的,是则正确执行
2.第二类虚拟机
虚拟机的操作系统称为客户操作系统,安装虚拟机的底层硬件上的操作系统是宿主操作系统
虚拟机管理程序伪装成完整的计算机,有虚拟设备,虚拟磁盘