导图社区 操作系统概述
操作系统第一章知识总结,包含操作系统功能、 操作系统的启动、操作系统的运行环境、操作系统历史等。
编辑于2024-03-10 01:26:09第一章 操作系统概述
操作系统功能
管理硬件(前五块也就是操作系统的所有内容)
CPU管理
内存管理
I/O(终端)管理
磁盘管理
文件管理
网络管理、电源管理、多核管理(不讲,课程高级操作系统讲解)
特征
并发
并发(进程)
多道程序环境,宏观上多道程序同时执行,每个时刻单处理机仅有一道程序执行,微观上程序分时交替执行
并行
同一时刻完成两种或两种以上工作,需要硬件支持
共享
互斥共享方式
某些资源在一段时间内只允许一个进程访问该资源
同时访问方式
一段时间内允许多个进程对资源进行访问,分时共享
虚拟
一个物理上的实体变为若干逻辑上的对应物
时分复用技术
空分复用技术
异步
由于资源有限,进程的执行不是一贯到底,走走停停,以不可预知的速度前进
操作系统的启动
哈工大版本
x86 PC为例
BIOS映射区:固化在主存ROM中,用于检查RAM、键盘、显示器、软硬磁盘等,并将磁盘第一个扇区读入主存
引导扇区代码(bootsect.s一段汇编代码):将操作系统读入内存,转入setup.s执行
补充:该程序的主要作用是首先把从磁盘第2个扇区开始的4个扇区的setup模块加载到内存紧接着bootsect后面位置((0x90200)),再把磁盘上setup模块后面的system模块加载到内存0x10000开始的地方
setup模块(setup.s汇编代码执行)
读硬件参数存储到内存数据结构中,初始化gdt表
gdt表(全局描述表):保护模式下,以数组的形式存储全局的段的描述符
idt表(中断描述符表):记录了中断号和调用函数之间的关系
system模块移动到物理内存起始位置处(0x0000),启动保护模式,转跳到0x0000处
system模块
head.s:初始化一些gdt表、idt表、页表
main.c:一堆初始化函数
王道版本
CPU执行ROM中引导程序(硬件自检,再开机)
CPU执行指令跳转到BIOS,登记中断程序入口地址,硬件自检,进行操作系统引导
磁盘第一块------主引导记录读入内存,执行磁盘引导程序,扫描分区表
以活动分区读入分区引导记录,并执行
以根目录下找到完整操作系统初始化程序(启动管理器)并执行、开机
操作系统在初始化过程中创建中断向量表,磁盘相关在磁盘格式化化时完成
操作系统的运行环境(王道)
CPU的状态
内核态(管态/核心态):CPU可以执行特权指令,操作系统内核程序运行在核心态
用户态(目态):CPU只能执行非特权指令
注意区别题目问的是xxx态发生还是xxx态执行
内核态->用户态
执行一条特权指令,修改PSW中“用户态”,操作系统主动让出CPU使用权
用户态->内核态
由“中断”引发(内中断、陷入指令、访管指令、Trap指令),硬件完成,操作系统强行夺回CPU使用权
用户态进入内核态,堆栈也由用户堆栈切换为系统堆栈,但该系统堆栈也属于该进程
中断与异常
异常(内中断)
例外、陷入、访管、Trap指令,硬件故障,软件中断
中断(外中断)
来自CPU执行指令之外的事件发生导致中断(外设请求、人为干预)
中断处理过程
中断隐指令(硬件完成)
关中断
保存断点
中断服务程序寻址
中断服务程序(软件实现,操作系统)
保存现场和屏蔽字
开中断
执行中断服务程序
关中断
恢复现场和屏蔽字
开中断
中断返回
子程序调用只需保存程序断点(PC) 中断处理不仅要保存断点还有保存程序状态字寄存器(PSW),两者都是硬件保存
通用寄存器由操作系统保存,仅在内容还需使用不可恢复时保存
向上层提供的服务
程序间接使用
系统调用(广义指令)
操作系统接口(哈工大)
三种用户使用方式(上层提供服务)
都是通过c语言调用一些操作系统提供的重要函数实现,重要函数即操作系统接口,表现为函数调用,因为由系统提供,称为系统调用
命令行:本质是系统初始化完,最后执行的一段死循环等待用户输入的程序
图形按钮:基于消息机制
消息机制:操作系统实现一个消息队列,应用程序循环调用一个函数,从操作系统将消息拿出来,每取出一个就会调用对应的消息处理函数
应用程序
POSIX:IEEE制定的一个标准族
统一不同操作系统的系统调用接口:fork、open、EACCES等
系统调用的实现
用户调用printf,通过库函数变成int 0x80代码,系统在初始化时将int 0x80代码做成一个system call进入内核态,system call中断处理调用system call table去查表,根据传递的系统调用号,最后调用sys_write
系统调用概念
用户在程序中调用操作系统子功能,可视为特殊的公共子程序
只能通过用户程序间接使用
目的
请求系统服务,而非申请系统资源
系统调用过程
传递系统调用参数
执行陷入指令(访管指令/trap指令)主动引发一个内中断
执行服务程序
返回用户态
进程调度并非通过系统调用完成,创建新进程是
用户直接使用
GUI(图形用户界面)
命令接口(命令解释程序)
联机用户接口
脱机用户接口
操作系统历史
哈工大分两条线讲
IBSYS
OS/360
MULTICS
UNIX
LINUS
System
Mac OS
iOS
CP/M
QDOS
MS-DOS
WINDOWS
王道版本
手工操作阶段
单道批处理阶段
多道批处理系统
分时操作系统
实时操作系统
网络操作系统
分布式计算机系统
个人计算机操作系统
微型计算机操作系统
所有工作需要人工干预
自动性:作业自动执行
操作系统出现
交互性强
抢占式,优先级高者优先
服务于计算机网络,集中式控制方式
并行工作,协同完成任务,无主从之分
用户独占全机,资源利用率低
顺序性:作业依次执行
中断技术,无人机交互
及时,可靠,交互性不如分时
CPU等待手工操作,利用率低
单道性:仅有一道程序执行
宏观上并行,微观上串行
硬实时系统:飞机控制系统,导弹系统,机床控制系统 软实时系统:订票系统
操作系统体系结构(新考点)
分层结构
内核分多层,每层可单向调用更低一层提供的接口
便于调试和验证(逐层调试验证),易扩充维护
难以定义各层边界,效率低,不可夸层调用
模块化
将内核分为多个模块,模块间相互协作,内核=主模块+可加载内核模块
易维护,可多模块同时开发;支持动态加载新的内核模块;任何模块可以直接调用其他模块
模块间相互依赖,难以调试
宏内核(大内核)
所有功能都放在内核中
性能高,内核内部功能可以互相直接调用
内核功能复杂,难以维护,内核某个功能模块出错,可能导致系统崩溃
微内核
只把中断、原语、进程通信等核心功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态
内核小功能少、易于维护,可靠性高;功能模块崩溃不会导致整个系统崩溃
性能低不高效,需要频繁切换用户态/核心态,用户态下各功能模块不可以直接互相调用,只能内核的“消息传递”间接通信
基于C/S模式
外核
内核负责进程调度、进程通信等功能,外盒负责为用户进程安全分配硬件资源
外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源
减少虚拟硬件资源的“映射层”,提升效率
降低了系统一致性,系统复杂
虚拟机(新考点)
第一类VMM
安装Guset OS时,VMM要在原本的硬盘上自行分配存储空间
性能更好,可迁移性更差
第一类VMM运行在最高特权级,可以执行最高特权指令
第二类VMM
拥有自己的虚拟磁盘,实际上上Host OS文件系统中的一个大文件,分配到的是虚拟内存
性能差,需要Host OS为中介
第二类VMM部分运行在用户态,部分运行在内核态。Guest OS发出系统调用会被VMM截获,转化为VMM对Host OS的系统调用
可以考前听一遍王道
重要考点: 1. 操作系统的启动(重点掌握顺序,了解具体干了啥) 2. 用户态,内核态切换 3. 操作系统历史(各种操作系统的特点) 4. 两个新考点(考前看一看,体系结构中微内核是重点)
橙色边框为二级知识点:掌握
红色边框为一级知识点:熟悉
互为存在条件(最基本特征)
文件操作视图
多进程实图