操作系统

一、简述
操作系统:在硬件的基础之上,够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求的一层软件。
- 带有图形界面的操作系统被称为 GUI
- 基于文本、命令行的通常称为 Shell
例如:Windows、Linux、OS X …

二、计算机硬件

CPU
CPU 是计算机的大脑,和内存进行交互并从中提取指令并执行。
执行周期:从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令。
每个 CPU 都有一组可以执行的特定指令集。即,x86 和 ARM 的 CPU 不能交叉执行程序。
通用寄存器:由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。
程序计数器:指示下一条需要从内存提取指令的地址,提取指令后,程序计数器将更新为下一条需要提取的地址。
堆栈指针:指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
程序状态字寄存器:由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。
多线程
多线程允许 CPU 保持两个不同的线程状态并且在纳秒级的时间完成切换。每个线程对操作系统来说都像是一个单个的 CPU。
多核芯片
多核芯片在其上有效地承载了四个微型芯片,每个微型芯片都有自己的独立CPU。


内存

结构越靠上存储器速度越高,容量越小,成本越高。
寄存器
位于 CPU 中,和 CPU 材料相同。
通用寄存器:由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。
程序计数器:指示下一条需要从内存提取指令的地址,提取指令后,程序计数器将更新为下一条需要提取的地址。
堆栈指针:指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
程序状态字寄存器:由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。
高速缓存
多数由硬件控制,当应用程序需要从内存中读取关键词的时候,高速缓存的硬件会检查所需要的高速缓存行是否在高速缓存中。
时钟周期:振荡器两个脉冲之间的时间量。每秒脉冲数越高,计算机处理器处理信息的速度就越快。
主存
随机存储器(RAM):内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会丢失。
ROM:内容一旦存储后就不会再被修改。它非常快而且便宜,bootstrap 就存放在 ROM 中。
EEPROM(Electrically Erasable PROM) 和 闪存(flash memory):非易失性,但是可以擦除和重写。
CMOS:易失性,计算机都会使用 CMOS 存储器保持当前时间和日期。
磁盘

磁盘:一种机械装置,在一个磁盘中有一个或多个金属盘片,它们以 5400rpm、7200rpm、10800rpm 或更高的速度旋转。
磁道:磁盘一系列的同心圆。
扇区:每个磁道划分若干扇区。
固态硬盘(Solid State Disk, SSD)并不属于磁盘。
I/O 设备
I/O 设备一般包括两个部分:设备控制器和设备本身。
控制器:本身是一块芯片或者一组芯片,能够控制物理设备以及接收操作系统的指令,为操作系统提供一个更简单的接口。
设备本身:有一个相对简单的接口,而且也已经被标准化。
设备驱动程序(device driver): 专门与控制器进行信息交流,发出命令处理指令接收响应的软件
总线
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OmLP244i-1583244445219)(https://cdn.jsdelivr.net/gh/btbsja/btbsjaimg@master/img/202003/03/202703-4269.png)]
上图系统包含很多总线,高速缓存、内存、PCIe、PCI、USB、SATA 和 DMI,每条总线都有不同的传输速率和功能。
最主要的总线是 PCIe(Peripheral Component Interconnect Express) 总线。
PCI:并行总线架构(parallel bus architecture),通过多条电线发送相同的数据字。
PCIe:串行总线架构(serial bus architecture),通过单个连接(称为通道)发送消息中的所有比特数据。
USB(Univversal Serial Bus):将所有慢速 I/O 设备(比如键盘和鼠标)与计算机相连的设备。
- 1.0 12Mb/s
- 2.0 480Mb/s
- 3.0 5Gb/s
SCSI(Small Computer System Interface):用在高速硬盘,扫描仪和其他需要较大带宽的设备上。
- 640Mb/S
计算机启动过程
基本输入输出系统(Basic Input Output System, BIOS):它附着于母版上,内有底层 I/O 软件,包括读键盘、写屏幕、磁盘I/O 以及其他过程。
计算机启动(booted)
-
BIOS 开启,检查所安装的 RAM 的数量,键盘和其他基础设备是否已安装并且正常响应。
-
开始扫描 PCIe 和 PCI 总线并找出连在上面的所有设备。即插即用的设备也会被记录下来。如果现有的设备和系统上一次启动时的设备不同,则新的设备将被重新配置。
-
BIOS 通过尝试存储在 CMOS 存储器中的设备清单尝试启动设备。
-
操作系统会询问 BIOS 获取配置信息。
-
操作系统会把设备驱动程序加载到内核中,然后初始化表,创建所需的后台进程,并启动登录程序或GUI。
CMOS:Complementary Metal Oxide Semiconductor(互补金属氧化物半导体) 指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上的一块可读写的 RAM 芯片。
操作系统演变过程
大型机操作系统
-
存在于大型公司的数据中心、高端 Web 服务器、大型电子商务服务站点。
-
一个正常大型计算机有 1000 个磁盘和数百万 G 字节的容量。
服务器操作系统
-
运行在服务器上,服务器可以是大型个人计算机、工作站甚至是大型机。
-
通过网络为若干用户服务,并且允许用户共享硬件和软件资源。
-
服务器可提供打印服务、文件服务或 Web 服务。I
-
nternet 服务商运行着许多台服务器机器,为用户提供支持,使 Web 站点保存 Web 页面并处理进来的请求。
-
典型的服务器操作系统有 Solaris、FreeBSD、Linux 和 Windows Server 201x
多处理器操作系统
- 将多个 CPU 连接到一个系统中,依据它们连接方式和共享方式的不同,这些系统称为并行计算机,多计算机或多处理器。
个人计算机系统
- 现代个人计算机操作系统支持多道处理程序。
- Linux、Windows、OS X …
嵌入式操作系统
- 用来控制设备的计算机中运行.
- 微波炉、DVD 刻录机…
- 主要的嵌入式系统有 Linux、QNX 和 VxWorks
传感器节点操作系统
- 这些节点是一种可以彼此通信并且使用无线通信基站的微型计算机。
- 可以用于建筑物周边保护、国土边界保卫、森林火灾探测、气象预测用的温度和降水测量。
- 配有 CPU、RAM、ROM 以及一个或多个环境传感器。
- 通常由事件驱动的,可以响应外部事件。
实时操作系统
- 系统的特征是将时间作为关键参数。
- 硬实时系统:个动作必须要在规定的时刻发生
- 软实时系统:数字音频、多媒体系统、智能手机
智能卡操作系统
- 智能卡是一种包含一块 CPU 芯片的信用卡。
操作系统概念
进程
进程:本质就是操作系统执行的一个程序,是容纳运行一个程序所有信息的一个容器。
进程表(process table):数组或者链表结构,当前存在每个进程都要占据其中的一项。
管道(pipe):一种虚文件,可以连接两个进程。
地址空间
地址空间:从某个最小值的存储位置(通常是零)到某个最大值的存储位置的列表。
文件
文件系统:系统调用创建和删除目录、将已有文件放入目录中,从目录中删除文件等。目录项可以是文件或者目录,目录和目录之间也可以嵌套。
进程和文件层次都是以树状的结构组织,但这两种树状结构有不少不同之处。
- 一般进程的树状结构层次不深(很少超过三层)
- 文件系统的树状结构要深一些,通常会到四层甚至五层。
- 进程树层次结构是暂时的,通常最多存在几分钟
- 目录层次则可能存在很长时间。
- 父进程能控制和访问子进程
- 文件和目录中通常存在一种机制,使文件所有者之外的其他用户也能访问该文件。
**注:**Windows 下面的文件系统以 \ 来作为分隔符,但是 Linux 会以 / 作为分隔符。
shell
一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
操作系统结构
单体系统
- 需要有一个主程序,用来调用请求服务程序
- 需要一套服务过程,用来执行系统调用
- 需要一套服务程序,用来辅助服务过程调用
分层系统
- 分层系统使用层来分隔不同的功能单元。
- 每一层只与该层的上层和下层通信。
- 每一层都使用下面的层来执行其功能。
- 层之间的通信通过预定义的固定接口通信。

微内核
将操作系统划分成小的、层级之间能够更好定义的模块是很有必要的,只有一个模块 — 微内核 — 运行在内核态,其余模块可以作为普通用户进程运行。
MINIX 3

- 微内核中的内核还具有一种机制与策略分离的思想。
客户-服务器模式
微内核思想的策略是把进程划分为两类:服务器,每个服务器用来提供服务;客户端,使用这些服务。这个模式就是所谓的 客户-服务器模式。
【参考】
《现代操作系统》第四版
https://baike.baidu.com/item/操作系统/192?fr=aladdin
《Modern Operating System》forth edition
http://faculty.cs.niu.edu/~hutchins/csci360/hchnotes/psw.htm
https://www.computerhope.com/jargon/c/clockcyc.htm
《B站-操作系统》
https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308
https://en.wikipedia.org/wiki/System_call
http://c.biancheng.net/cpp/html/238.html
http://www.dossier-andreas.net/software_architecture/layers.html
http://suo.im/6tLN8d—
layout: post # 使用的布局(不需要改)
title: 操作系统 # 标题
subtitle: #副标题
date: 2020-03-03 # 时间
author: Btbsja # 作者
header-img: img/bg-2020-03-03.jpg #这篇文章标题背景图片
catalog: true # 是否归档
tags: #标签
- 操作系统
操作系统

一、简述
操作系统:在硬件的基础之上,够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求的一层软件。
- 带有图形界面的操作系统被称为 GUI
- 基于文本、命令行的通常称为 Shell
例如:Windows、Linux、OS X …

二、计算机硬件

CPU
CPU 是计算机的大脑,和内存进行交互并从中提取指令并执行。
执行周期:从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令。
每个 CPU 都有一组可以执行的特定指令集。即,x86 和 ARM 的 CPU 不能交叉执行程序。
通用寄存器:由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。
程序计数器:指示下一条需要从内存提取指令的地址,提取指令后,程序计数器将更新为下一条需要提取的地址。
堆栈指针:指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
程序状态字寄存器:由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。
多线程
多线程允许 CPU 保持两个不同的线程状态并且在纳秒级的时间完成切换。每个线程对操作系统来说都像是一个单个的 CPU。
多核芯片
多核芯片在其上有效地承载了四个微型芯片,每个微型芯片都有自己的独立CPU。


内存

结构越靠上存储器速度越高,容量越小,成本越高。
寄存器
位于 CPU 中,和 CPU 材料相同。
通用寄存器:由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。
程序计数器:指示下一条需要从内存提取指令的地址,提取指令后,程序计数器将更新为下一条需要提取的地址。
堆栈指针:指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
程序状态字寄存器:由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。
高速缓存
多数由硬件控制,当应用程序需要从内存中读取关键词的时候,高速缓存的硬件会检查所需要的高速缓存行是否在高速缓存中。
时钟周期:振荡器两个脉冲之间的时间量。每秒脉冲数越高,计算机处理器处理信息的速度就越快。
主存
随机存储器(RAM):内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会丢失。
ROM:内容一旦存储后就不会再被修改。它非常快而且便宜,bootstrap 就存放在 ROM 中。
EEPROM(Electrically Erasable PROM) 和 闪存(flash memory):非易失性,但是可以擦除和重写。
CMOS:易失性,计算机都会使用 CMOS 存储器保持当前时间和日期。
磁盘

磁盘:一种机械装置,在一个磁盘中有一个或多个金属盘片,它们以 5400rpm、7200rpm、10800rpm 或更高的速度旋转。
磁道:磁盘一系列的同心圆。
扇区:每个磁道划分若干扇区。
固态硬盘(Solid State Disk, SSD)并不属于磁盘。
I/O 设备
I/O 设备一般包括两个部分:设备控制器和设备本身。
控制器:本身是一块芯片或者一组芯片,能够控制物理设备以及接收操作系统的指令,为操作系统提供一个更简单的接口。
设备本身:有一个相对简单的接口,而且也已经被标准化。
设备驱动程序(device driver): 专门与控制器进行信息交流,发出命令处理指令接收响应的软件
总线

上图系统包含很多总线,高速缓存、内存、PCIe、PCI、USB、SATA 和 DMI,每条总线都有不同的传输速率和功能。
最主要的总线是 PCIe(Peripheral Component Interconnect Express) 总线。
PCI:并行总线架构(parallel bus architecture),通过多条电线发送相同的数据字。
PCIe:串行总线架构(serial bus architecture),通过单个连接(称为通道)发送消息中的所有比特数据。
USB(Univversal Serial Bus):将所有慢速 I/O 设备(比如键盘和鼠标)与计算机相连的设备。
- 1.0 12Mb/s
- 2.0 480Mb/s
- 3.0 5Gb/s
SCSI(Small Computer System Interface):用在高速硬盘,扫描仪和其他需要较大带宽的设备上。
- 640Mb/S
计算机启动过程
基本输入输出系统(Basic Input Output System, BIOS):它附着于母版上,内有底层 I/O 软件,包括读键盘、写屏幕、磁盘I/O 以及其他过程。
计算机启动(booted)
-
BIOS 开启,检查所安装的 RAM 的数量,键盘和其他基础设备是否已安装并且正常响应。
-
开始扫描 PCIe 和 PCI 总线并找出连在上面的所有设备。即插即用的设备也会被记录下来。如果现有的设备和系统上一次启动时的设备不同,则新的设备将被重新配置。
-
BIOS 通过尝试存储在 CMOS 存储器中的设备清单尝试启动设备。
-
操作系统会询问 BIOS 获取配置信息。
-
操作系统会把设备驱动程序加载到内核中,然后初始化表,创建所需的后台进程,并启动登录程序或GUI。
CMOS:Complementary Metal Oxide Semiconductor(互补金属氧化物半导体) 指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上的一块可读写的 RAM 芯片。
操作系统演变过程
大型机操作系统
-
存在于大型公司的数据中心、高端 Web 服务器、大型电子商务服务站点。
-
一个正常大型计算机有 1000 个磁盘和数百万 G 字节的容量。
服务器操作系统
-
运行在服务器上,服务器可以是大型个人计算机、工作站甚至是大型机。
-
通过网络为若干用户服务,并且允许用户共享硬件和软件资源。
-
服务器可提供打印服务、文件服务或 Web 服务。I
-
nternet 服务商运行着许多台服务器机器,为用户提供支持,使 Web 站点保存 Web 页面并处理进来的请求。
-
典型的服务器操作系统有 Solaris、FreeBSD、Linux 和 Windows Server 201x
多处理器操作系统
- 将多个 CPU 连接到一个系统中,依据它们连接方式和共享方式的不同,这些系统称为并行计算机,多计算机或多处理器。
个人计算机系统
- 现代个人计算机操作系统支持多道处理程序。
- Linux、Windows、OS X …
嵌入式操作系统
- 用来控制设备的计算机中运行.
- 微波炉、DVD 刻录机…
- 主要的嵌入式系统有 Linux、QNX 和 VxWorks
传感器节点操作系统
- 这些节点是一种可以彼此通信并且使用无线通信基站的微型计算机。
- 可以用于建筑物周边保护、国土边界保卫、森林火灾探测、气象预测用的温度和降水测量。
- 配有 CPU、RAM、ROM 以及一个或多个环境传感器。
- 通常由事件驱动的,可以响应外部事件。
实时操作系统
- 系统的特征是将时间作为关键参数。
- 硬实时系统:个动作必须要在规定的时刻发生
- 软实时系统:数字音频、多媒体系统、智能手机
智能卡操作系统
- 智能卡是一种包含一块 CPU 芯片的信用卡。
操作系统概念
进程
进程:本质就是操作系统执行的一个程序,是容纳运行一个程序所有信息的一个容器。
进程表(process table):数组或者链表结构,当前存在每个进程都要占据其中的一项。
管道(pipe):一种虚文件,可以连接两个进程。
地址空间
地址空间:从某个最小值的存储位置(通常是零)到某个最大值的存储位置的列表。
文件
文件系统:系统调用创建和删除目录、将已有文件放入目录中,从目录中删除文件等。目录项可以是文件或者目录,目录和目录之间也可以嵌套。
进程和文件层次都是以树状的结构组织,但这两种树状结构有不少不同之处。
- 一般进程的树状结构层次不深(很少超过三层)
- 文件系统的树状结构要深一些,通常会到四层甚至五层。
- 进程树层次结构是暂时的,通常最多存在几分钟
- 目录层次则可能存在很长时间。
- 父进程能控制和访问子进程
- 文件和目录中通常存在一种机制,使文件所有者之外的其他用户也能访问该文件。
**注:**Windows 下面的文件系统以 \ 来作为分隔符,但是 Linux 会以 / 作为分隔符。
shell
一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
操作系统结构
单体系统
- 需要有一个主程序,用来调用请求服务程序
- 需要一套服务过程,用来执行系统调用
- 需要一套服务程序,用来辅助服务过程调用
分层系统
- 分层系统使用层来分隔不同的功能单元。
- 每一层只与该层的上层和下层通信。
- 每一层都使用下面的层来执行其功能。
- 层之间的通信通过预定义的固定接口通信。

微内核
将操作系统划分成小的、层级之间能够更好定义的模块是很有必要的,只有一个模块 — 微内核 — 运行在内核态,其余模块可以作为普通用户进程运行。
MINIX 3

- 微内核中的内核还具有一种机制与策略分离的思想。
客户-服务器模式
微内核思想的策略是把进程划分为两类:服务器,每个服务器用来提供服务;客户端,使用这些服务。这个模式就是所谓的 客户-服务器模式。
【参考】
《现代操作系统》第四版
https://baike.baidu.com/item/操作系统/192?fr=aladdin
《Modern Operating System》forth edition
http://faculty.cs.niu.edu/~hutchins/csci360/hchnotes/psw.htm
https://www.computerhope.com/jargon/c/clockcyc.htm
《B站-操作系统》
https://www.bilibili.com/video/av9555596?from=search&seid=8107077283516919308
https://en.wikipedia.org/wiki/System_call
http://c.biancheng.net/cpp/html/238.html
http://www.dossier-andreas.net/software_architecture/layers.html
http://suo.im/6tLN8d
操作系统是控制硬件并响应用户指令的软件,分为GUI和Shell。本文介绍了CPU、多线程、多核芯片、内存结构,以及操作系统的发展历程,包括大型机、服务器、个人计算机和嵌入式操作系统等。同时,讲解了操作系统的基本概念如进程、地址空间和文件系统,并探讨了不同的操作系统结构,如单体系统、分层系统和微内核。

382

被折叠的 条评论
为什么被折叠?



