OS CH1:introduction
OS CH1:introduction
1.0 LINUX概述
如图为Linux发展的“五大支柱”、 ### 1.0.1 LINUX的系统结构 Linux系统中没有像windows的不同的C D E盘之类的结构,而是统一挂在同一个序列下面 需要掌握Linux相关的命令!
- sudo :这个之后的命令的意思是,使用root的权限来运行后面的内容,root是具有“超级权限”的账户,可以修改、删除任何的文件
1.1 操作系统是做什么的?
操作系统是一个介于计算机hardware和user之间的“中介”。
这里的user并非一定是“人”,也可以是“软件”,连接到主机的笔记本,etc.


1.2 计算机系统的组成
比较常见的有总线结构和现在比较少见的主机型结构;总线结构的所有设备都连接在一根I/O bus和memory bus中,即都挂接在主线上;而主机型结构的核心是存储器,CPU以及各种通道都与存储器相连。
1.2.1 计算机系统的操作
1.2.1.1 device controller
首先介绍device controller(设备控制器):可以理解为,每一个I/O设备都需要配备一个设备控制器,它可以在特定的设备和CPU之间充当一个”翻译“的角色。比如说,网卡 显卡 声卡 就是用来处理网络 视觉 音频的特定device controller。
与之相关的工作流程大致如下描述:每一个控制特定device controller的操作系统叫做device driver(设备驱动);每一个device driver会有一个local buffer;CPU控制main memory向local buffer传输数据
当设备完成执行的任务之后,device controller会向CPU发送一个interrupt信号,表示设备已经完成执行任务。因此可见:CPU可以与硬件设备并行运行,因为只要把命令下达下去、指令传递过去,之后只要等待传来interrupt即可。
1.2.1.2 计算机启动
计算机启动一般分为以下几个步骤: bootstrap program(引导程序)相当于是对于特定系统部分的启动程序,其帮助更好地启动。
ROM中的引导程序也就是我们常知的bios、UEFI等。然后分阶段启动之后,启动操作系统的内核,之后基本完成计算机的启动。
1.2.1.3 common functions of interrupts
介绍interrupt是如何与处理机(cpu)进行交互的:当一个设备处理任务完成之后,interrupt传递到cpu手上之后,cpu会记录手上工作的地址,并且立即去处理这个interrupt;每个设备对应着不同的interrupt内容,而这些内容被统一存储在一个 中断向量(interrupt vector) 中。
interrupt之间需要排队一个一个来,不然会发生lost interrupt而错过信息
与interrupt相对应的有一个trap的定义,这个trap是由软件引起的,主动的一个中断,其一般来源于错误(比如说,运算中除0了或者访问了非法地址)或者是用户的请求。不难理解,interrupt是异步的,而trap是同步的(因为软件引起的中断一定是与cpu当前工作内容有关的,而对于interrupt,引发它操作的命令之前就下达过了)在cpu正在进行的进程中,一条指令完成后可能会引起trap。
这部分内容和操作系统最大的关系为:An operating system is interruptdriven. 也就是说,大部分时间os是闲着的,但是一旦发生中断,就需要我的操作系统出面来处理问题。
trap与fault的区别:trap是主动的、预期的中断,比如说系统调用open write等,写了一条命令停下来了;而fault就是出错了(比如说,不幸执行了除以0等等的命令)
1.2.1.4 中断处理
这张图的例子表明,当需要进行I/O的时候,由于CPU和I/O可以并行执行,这里是先并行执行,然后I/O传输完数据以后,由于向CPU发送了一个interrupt,因此cpu会停下来处理这个interrupt然后继续工作;大部分时候I/O也是处于idle(空闲)状态
1.2.2 存储结构
这个部分的内容和之前学的内容很相似 recall:primary、secondary storage;以及下面的一些存储单位
1.2.3 I/O结构
- 理解同步I/O和异步I/O的区别:关键在于所谓的控制权:
同步I/O:当一个I/O开始后,控制权只有在这个I/O执行完之后才会被返回给程序;也就是说,在这期间,我的cpu处于等待状态;因此,同时最多只能有一个I/O在运行
异步I/O:I/O开始后,控制权可以返回给程序;这时候程序可以同时做别的事情。此时维护一个Device-status table,来记录每个设备的状态
- 了解一下直接内存访问(DMA) 结构:有了DMA技术之后,一些高速的I/O设备就可以不经过cpu的控制直接实现从设备得到buffer向内存中传输数据;当所有数据全部准备完成之后再向cpu发送一个interrupt即可;否则的话,每次传输一个byte就需要向cpu发送一个interrupt,”打扰“一下cpu,代价很大。
1.3 计算机系统架构
这个部分最重要的是界定清楚三个概念之间的关系:processor core和cpu 具体解释一下:
(1)processor相当于芯片,一个处理器上有一个或者多个cpu
(2)CPU是执行各种指令的硬件,其上面执行基本计算的单元是core
(3)core是最小的单元,是CPU上最基本的计算单位
因此,多核指的是一个cpu有多个core,而多处理器指的是电脑含有多个处理器。但是一般地讨论的时候,还是会习惯性使用cpu来代指整个”计算机“的计算单元
集群系统和分布式系统都是简单提了一下
1.4 操作系统(程序)的执行
正如上面提到的那样,操作系统运行的时候,要么是返回了interrupt,要么是软件发生了错误,或者是request产生了exception/trap。
1.4.1 特权指令
privileged instruction是指不允许用户程序直接使用的指令,包括I/O指令、设置时钟、置控制寄存器等等指令都是特权指令。 重点掌握:CPU是user mode的话,特权指令不能运行;但是kernel mode下,所有指令都可以运行
另外一个需要知道的内容是,我们需要确保操作系统可以对cpu保持控制,比如说万一有一个无限长的程序一直占据着cpu,就要想办法夺回这个控制权;而这一般通过设置一个timer(定时器)来实现,再执行进程前设置一个倒计时,当时间到达的时候会自动生成一个interrupt,这时候控制权会回到操作系统手中。