操作系统学习-1 引论(7.4)

1.0 概述

操作系统——为用户提供一个更加便于使用的计算机模型,同时管理所有硬件设备。

操作系统一般运行在内核态,具有对所有硬件的完全访问权,能够执行机器可运行的任何指令。 

软件其余部分运行在用户态,只使用机器指令中的一个子集,部分指令在用户态下被禁止运行。

接口程序(Shell或GUI)——用户态条件下的最深层次的程序,允许用户运行其他程序。

操作系统内的程序不能随便进行修改。一般操作系统的寿命较长,其所有者会长时间对其进行演化。

1.1 什么是操作系统

1.1.1 作为扩展机器的操作系统

操作系统的一大作用是将硬件抽象成接口或其他的形式

硬盘抽象过程:硬盘接口->硬盘驱动->文件

1.1.2 作为资源管理者的操作系统

操作系统用来管理一个复杂系统的各个部分,控制对不同硬件设备的分配

一般采用多路复用——时间复用与空间复用,两种形式都依靠操作系统进行控制。

时间复用:程序或用户按照顺序进行资源的使用(CPU或打印机)。

空间复用:每个程序或用户获得部分的资源(内存或硬盘)。

1.2 操作系统的历史

代数硬件情况代表系统代表机器其他
0纯机械无操作系统巴贝奇机无实物,只是一个设计。
1真空管与穿孔卡片无操作系统ENIAC无程序设计语言,仅靠机器语言运行。
2晶体管与批处理系统FMS与IBSYS大型机批处理系统:采用较便宜的计算机进行输入、复制与输出,昂贵计算机进行计算。
3集成电路和多道程序设计OS/360IBM 360多道程序设计:在等待I/O操作完成时可以让另一个任务使用CPU。
MULTICS 兼容分时系统:为每个用户提供一个联机终端,为不同用户提供交互服务。
UNIX 单用户版MULTICS,启发了MINIX,Linux等各种系统的出现。
4个人计算机(PC)MS-DOSIBM PC键盘输入操作命令,操作系统开始与硬件绑定出售。
MAC OS XMacintosh乔布斯引入GUI,诞生了用户友好的MacOS,基于UNIX。
WindowsWIn-tel微软引入GUI,逐渐从DOS进入WIndows NT阶段。
5移动计算机

Symbian 

Nokia智能手机第一个十年的主要操作系统。
iOSiPhone2007年随第一代iPhone发布,目前市场份额第二大的智能手机操作系统。
AndroidGalaxy2008年发布,基于Linux,目前市场上份额最大的智能手机操作系统。

1.3 计算机硬件简介

计算机硬件包括CPU,存储器,视频控制器(显卡),键盘控制器,USB控制器,硬盘控制器及总线等。总线将不同的硬件设备进行连接与通信。

1.3.1 处理器(CPU)

计算机的“大脑”,从内存取出指令进行执行。一个基本周期中CPU先从内存取出指令(取指),进行解码,接着执行,然后取指、解码并执行下一条指令。

不同的CPU采用不同指令集,如x86、ARM等。CPU内部存在寄存器,对部分变量和数据进行保存。

多数计算机存在专用寄存器,如程序计数器、堆栈指针、程序状态字(PSW)寄存器等。

程序计数器保存下一条指令的内存地址。

堆栈指针指向当前内存中栈的顶端。

PSW包含各种控制位,一般全部读入但只有部分有写入。

操作系统必须知晓所有的寄存器,在停止运行中的程序时需要保存所有的寄存器值。

现代CPU一般采用流水线作业模式,取指、解码、执行等步骤分头进行。更先进的设计是超标量CPU,设计中包括多个执行单元,解码后的指令存入缓冲区,在执行单元空闲时将指令从缓存区移出并执行。

CPU一般包含内核态与用户态两种模式,在PSW中进行控制。内核态下CPU可以执行指令集中的所有指令,用户态下只能执行部分指令。用户采用系统调用将CPU从用户态转换为内核态。

多线程和多核芯片

CPU朝着更多晶体管+更大缓存的路径前进。从奔腾4开始引入多线程(超线程)的特性。其允许CPU保持两个不同的线程状态,在ns级时间尺度下进行切换。每个线程在操作系统看来如同单个CPU。

在多核CPU上,每一个核都可以看作一个CPU,需要多处理器操作系统。GPU核数更多,但操作系统一般不运行在GPU上。

1.3.2 存储器

包括寄存器、高速缓存、内存(主存)、硬盘。速度逐渐降低,容量逐渐增大。

顶层:CPU中的寄存器。与CPU材料相同,访问无时延。存储容量一般为位数的平方。

下一层:高速缓存。其内部分割为高速缓存行。需要读取时则采用高速缓存硬件进行检查,若存在所需的存储字则称为高速缓存命中,无需将访问请求送往主存。

缓存的使用可以带来性能改善,避免过多调用磁盘。

现代CPU中设计了两个甚至三个缓存。第一层为L1缓存,将已解码的指令调入CPU的执行引擎。第二层为L2缓存,存放使用过的若干字节的内存字。L1、L2、L3的延时长度从小到大。IA两家在L2缓存上的使用思路不同。

再下一层:内存(主存,RAM)。所有不能在高速缓存中满足的访问请求均转往主存。

部分计算机中增加了ROM(只读存储器)和闪存等进行存储。计算机中还采用CMOS对时间和日期进行保存。

1.3.3 磁盘

再下一层:磁盘。容量大,速度慢,分为大量扇区。

固态硬盘(SSD)不是磁盘,其唯一相似之处在于断电时数据不会丢失。

虚拟内存通过将程序放在磁盘上,以主存作为缓存,保存最频繁应用的部分程序。

1.3.4 I/O设备

一般包括设备控制器和设备本身,从操作系统接受命令并完成数据处理。

SATA:串行高级技术附件。

不同的设备控制器需要为不同的操作系统配备不同的驱动程序。驱动一般在核心态运行。

UNIX将内核与设备驱动程序重新连接后重启。Windows一般在操作系统文件设置一个入口,系统启动时操作系统寻找驱动程序并进行装载。如今的热插拔装置采用运行时立即安装驱动程序的方式。

设备控制器一般包含少量用于通信的寄存器。所有设备寄存器的集合构成I/O端口空间。

设备寄存器有时映射到操作系统的地址空间,有时则将其放入一个专门的I/O端口空间中。前者需要地址空间,后者需要专门的指令。

输入输出包含三种方式:

  1. 忙等待,用户程序发出系统调用,内核翻译成驱动调用,驱动启动I/O并循环检查该设备,结束后数据进入相应位置并返回。控制系统将控制返回给使用者。其缺点是占用CPU。
  2. 驱动启动设备后在操作完成时发出一个中断,驱动此时返回。操作系统在需要时阻塞调用者并安排其他工作进行。驱动检测到操作完毕时则发出中断通知操作完成。
  3. I/O采用一种特殊的DMA芯片,其可控制内存和某些存储器间的位流。CPU对DMA进行设置后启动DMA。

(这部分暂时还未理解,需要在完成全部学习后进行回看。) 

1.3.5 总线

总线类型很多,如高速缓存、内存、PCIe、PCI、USB、SATA和DMI。现在主要的总线为PCIe总线。

PCIe从PCI发展而来,采用分离的端到端的链路,使用串行总线架构,通过数据通路传递集合了所有位的一条消息,同时也可以采用多数据通路并行。

CPU通过DDR3总线与内存对话(现在发展至DDR5),通过PCIe总线与外围图形设备对话(现在发展至PCIe 4.0),通过DMI总线经集成中心与所有其他设备对话。集成中心通过串行总线与USB设备对话,通过SATA总线与SATA设备对话,通过PCIe进行网络传输。

USB将所有慢速I/O设备与计算机连接,可连接到计算机并直接工作。

即插即用:系统自动收集I/O设备信息,集中赋予中端级别和I/O地址,通知每块卡所使用的数值。

1.3.6 启动计算机

主板上的BIOS包括底层I/O软件,包括读键盘、写屏幕、进行磁盘I/O等各种过程。

计算机启动时运行BIOS,BIOS对基本硬件进行检查,对其他硬件进行记录,对新硬件进行配置。接着BIOS按照设备清单决定启动设备。然后操作系统询问BIOS以获得配置信息,检查硬件驱动是否齐全。驱动完整后操作系统将其调入内核,初始化有关表格,创建背景进程,并启动登录程序或GUI。

1.4 操作系统大观园

1.4.1 大型机操作系统

主要面向多个作业的同时处理,提供批处理(无需用户交互的周期性作业)、事务处理(大量小的请求)和分时(多个远程用户同时运行)三类服务。现在逐渐被Linux占据。

1.4.2 服务器操作系统

通过网络同时为若干个用户服务,允许用户共享硬件和软件资源。可提供打印、文件和Web服务。典型代表Solaris、FreeBSD、Linux、Windows Server等。

1.4.3 多处理器操作系统

多CPU连接成单个系统。典型代表Linux与Windows。

1.4.4 PC操作系统

广泛用于字处理、电子表格、游戏和上网。典型代表Linux、Windows、macOS。

1.4.5 掌上PC操作系统

小型化计算机。典型代表Android与iOS,拥有大量APP。

1.4.6 嵌入式操作系统

在用来控制设备的计算机中运行,如MP3等。典型代表嵌入式Linux、QNX和VxWorks。

1.4.7 传感器节点操作系统

类似于智能家居的操作系统。典型代表TinyOS。

1.4.8 实时操作系统

将时间作为关键参数。硬实时系统保证绝对地在限定时间进行规定操作,软实时系统允许偶尔违反最终时限。

1.4.9 智能卡操作系统

内部存在Java虚拟机。

1.5 操作系统基本概念

主要包括进程、地址空间和文件等。

1.5.1 进程

本质上是正在执行的一个程序,与其相关的称作地址空间(从某最小值存储位置到最大值存储位置的列表。)

进程在地址空间中进行读写。地址空间中存放可执行程序、程序数据与程序堆栈等。进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。

进程挂起时的所有信息都需要保存,信息存放在操作系统的进程表中,为数组或链表结构。挂起的进程包括进程的地址空间和对应的进程表。

进程管理相关的系统调用包括:进程创建、进程终止、创建子进程、申请或释放内存等。

系统管理器授权每个进程一个给定的UID。

1.5.2 地址空间

每个进程有部分可以使用的地址集合。地址空间可能为物理内存与虚拟内存的结合。

1.5.3 文件

操作系统需要给程序员提供独立于设备的抽象文件模型。

大部分操作系统支持目录的概念,产生层次结构,成为文件系统。每一个文件都可以从根目录的路径名开始确定。

实例中的每个进程都有一个工作目录。读写文件前需要打开文件。

UNIX经过安装可以将其他的文件系统接到主文件树上,但不能使用上面的文件系统。代替方法是允许把文件系统连接到程序所希望的根文件系统上。

UNIX提供特殊文件以进行I/O设备调用,包括块特殊文件和字符特殊文件,前者用于磁盘,后者用于打印机等字符流设备。

管道是一种虚文件,连接两个进程,进程可通过管道进行通信。

1.5.4 输入/输出

每个操作系统都有管理I/O设备的I/O子系统。

1.5.5 保护

UNIX为每个文件赋予9位二进制代码,凭借其对不同用户的文件操作权限进行控制。

1.5.6 壳层(Shell)

又称命令解释器,不属于操作系统,是终端用户和操作系统之间的接口,以终端作为标准输入和标准输出。

现代计算机采用GUI较多,与壳层有相似点。

1.5.7 个体重复系统发育

过时的概念总会经历螺旋式上升。

1.大型内存

大型机从汇编到高级语言,小型机和PC均走过了相应的过程。

2.保护硬件

大型机、小型机与PC都逐渐从无保护硬件走向有保护硬件。

3.硬盘

磁带-磁盘……

4.虚拟内存

从大型机到小型机再到PC。

1.6 系统调用

用户程序与操作系统之间的交互主要是处理抽象。

任何单CPU计算机一次只能执行一条指令。采用UNIX对该部分进行分析。

陷阱指令可以使执行流程从用户态陷入内核态并把控制权转移给操作系统,使得用户程序可以调用内核函数和使用硬件从而获得操作系统所提供的服务。

当进程正在用户态运行用户程序时,需要系统服务则必须执行一个陷阱或系统调用指令,将控制转移至操作系统。

操作系统通过参数检查找出所需的调用进程并执行系统调用,再将控制返回系统调用后跟随的指令。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值