写在前面
现代操作系统原理与实现是上海交通大学并行与分布式系统研究所(IPADS)所长陈海波老师团队于2020年发表的大作,该书系统介绍了操作系统中经典的问题,并对学术界和工业界前沿的技术进行了详细描述。这么一本好书正是我特别需要的,补充自己在操作系统领域的贫乏知识。年初的时候借着公司内部项目组买书的红利,买了一本过来,但因为工作比较忙(太懒~~)一直放在书堆中吃灰,直到十月革命的枪声。。走远了。。直到十月中旬才想起来还有个压箱底儿的大宝贝儿一直没看,遂决定系统性研读这本操作系统教材。
第一章 – 操作系统概述
作为教材的第一章,一开始以一个Hello World程序可执行文件如何存储在计算机中、如何加载到内存并在CPU中运行、如何将“Hello World”这行字符输出到屏幕、两个Hello World程序如何同时在一个CPU中运行为切入点带着读者走进操作系统。
什么是操作系统?
总体而言,操作系统有两个职责:一是对硬件进行管理和抽象,二是为应用提供服务并进行管理。硬件和应用的新变化和新需求(新的硬件加入、应用对时延的要求等)驱动着操作系统不断演进。
操作系统简史
随着1946年世界公认的第一台通用计算机ENIAC诞生后,人们一直在思考如何管理计算机上的程序。GM-NAA I/O作为第一个操作系统具备了批处理的特性。从OS/360到UNIX,操作系统演进步入了分时与多任务操作系统阶段,UNIX中首次引入Shell,并通过管道等IPC方式将不同人物连接起来。UNIX和C语言的成功为两位作者赢得了1983年图灵奖。1991年,目前世界上最成功的、适用范围最广的开源操作系统诞生了,它的父亲是一位来自芬兰的年轻程序员Linus Torvalds。80年代,凭借着从施乐借鉴(剽窃)来的图形用户界面(GUI )操作系统的概念,乔布斯和盖茨将Macintosh和Windows操作系统成功应用到个人计算机中。现代操作系统一步步演进为当下我们在使用的各种计算机。人类的智慧勾勒出一部操作系统捡屎~
操作系统接口
系统调用接口 – 向内核请求服务。POSIX接口 – 为能同时在不同UNIX操作系统上运行的软件定义的一套标准的操作系统API,自由软件先驱RMS起的名字。领域应用接口:各个应用领域定义的应用开发接口,如汽车领域的AUTOSAR等。
第二章 – 硬件结构
1945年,冯诺依曼结构的提出,对计算机的设计、研究和发展影响至今。冯诺依曼结构分为三个主要部分:中央处理单元(CPU);存储器(memory);输入输出(I/O)。
CPU与指令集架构(ISA)
指令集:包含一系列不同功能的指令。
特权级:AArch64中有EL0~3共四种特权级。应用程序运行在EL0,操作系统运行在EL1。有三种场景会发生EL0到EL1的特权级切换:系统调用、异常和中断。前两种是同步的CPU特权级切换,由正在执行的指令导致;第三种是异步的CPU特权级切换,不是由应用程序中的指令导致。
寄存器:CPU用来暂存指令、数据和地址的小型存储体。EL1特权级下有两个页表基地址寄存器,用于存储应用程序的第0级页表页的起始地址,在发生应用程序上下文切换时,内核会立即配置内存管理单元(MMU)并使用新的应用程序的页表更新该寄存器。