1.操作系统概述

1.1什么是操作系统

1.1.1定义

操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。

操作系统是一个可以管理CPU、内存和各种外设,并管理和服务应用软件的软件

1.1.2功能

程序管理、资源管理、设备管理、文件管理
承上启下:连接底层的硬件与上层的软件
资源包含内置的CPU及外设。
操作系统将CPU抽象为进程、磁盘抽象为文件、内存抽象为地址空间。

1.1.3组成

CPU

每个 CPU 都有一组可以执行的特定指令集。因此,x86 的 CPU 不能执行 ARM 的程序并且 ARM 的 CPU 也不能执行 x86 的程序。由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。

内存

多线程不会提供真正的并行处理。在一个时刻只有一个进程在运行。

存储器系统采用一种分层次的结构,顶层的存储器速度最高,但是容量最小,成本非常高,层级结构越向下,其访问效率越慢,容量越大,但是造价也就越便宜。
存储器的顶层是 CPU 中的寄存器,访问时间最短,但是容量最小。
位于寄存器下面的是高速缓存,主存被分割成高速缓存行(cache lines)为64字节,使用最频繁的高速缓存行保存在位于 CPU 内部或非常靠近 CPU 的高速缓存中。

随机存储器(RAM):内存中最重要的一种,也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

现代 CPU 设计了两种缓存。第一级缓存或者说是 L1 cache 总是位于 CPU 内部,用来将已解码的指令调入 CPU 的执行引擎。对于那些频繁使用的关键字,多数芯片有第二个 L1 cache 。典型的 L1 cache 的大小为 16 KB。另外,往往还设有二级缓存,也就是 L2 cache,用来存放最近使用过的关键字,一般是兆字节为单位。L1 cache 和 L2 cache 最大的不同在于是否存在延迟。访问 L1 cache 没有任何的延迟,然而访问 L2 cache 会有 1 - 2 个时钟周期的延后。

在上面的层次结构中再下一层是主存,这是内存系统的主力军,主存通常叫做 RAM(Random Access Memory)
除了主存之外,许多计算机还具有少量的非易失性随机存取存储器。它们与 RAM 不同,在电源断电后,非易失性随机访问存储器并不会丢失内容。ROM(Read Only Memory) 中的内容一旦存储后就不会再被修改。它非常快而且便宜。
ROM (Read Only Memory):只读存储器是一种半导体存储器,其特性是一旦存储数据就无法改变或删除,且内容不会因为电源关闭而消失。在电子或电脑系统中,通常用以存储不需经常变更的程序或数据。
下一个层次是磁盘(硬盘)
固态硬盘(Solid State Disk, SSD)不是磁盘

外设

任何复杂的东西都可以加一层代理来解决,这是计算机或者人类社会很普世的一个解决方案
每种类型的设备控制器都是不同的,所以需要不同的软件进行控制。专门与控制器进行信息交流,发出命令处理指令接收响应的软件,称为 设备驱动程序(device driver)。

1.1.4类别

操作系统位于应用软件之下,为应用软件提供服务支持。
面向外部称为:Shell(外壳)(如GUI、命令行)
面向内部称为:Kernel(内核)
KERNEL是研究重心,位于外壳之下。

1.1.4.1Kernel–操作系统内部组件

主要包括:
CPU调度器
物理内存管理
虚拟内存管理
文件系统管理
中断管理与设备驱动

1.1.5OS Kernel的特征

1.并发
计算机系统中同时存在多个运行的程序,需要OS管理和调度
并发与并行的区别
并发:一段时间,多个程序同时运行
并行:一个时间点
2.共享
“同时”访问
互斥共享
同时共享
3.虚拟
利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务
4.异步
程序的执行不是一贯到底的,而是走走停停,向前推进的速度不可预知,但只要运行环境相同,OS需要保证程序运行的结果也相同

1.2为什么学习系统

1.2.1综合课程–结合许多不同的课堂

*程序设计语言
*数据结构
*算法
*计算机体系结构
*材料
*操作系统概念和原理,源代码
*技能
*操作系统的设计和实现

1.2.2为什么要学习操作系统

1.2.2.1需求

操作系统在不停发展中,在工控等领域有强烈的需求


操作系统代码必须可靠、高效
操作系统出错,所造成的损失很大
操作系统是系统安全的基础

1.2.2.2作用

操作系统很酷,很有用,很有挑战,能力提升
挑战性
代码量大,目标是要掌握核心
操作系统管理并发
操作系统代码管理的是硬件
良好的硬件管理
合理的资源分配
了解工作原理

操作系统需要权衡:
空间与时间
性能和可预测性
公平和性能

1.2.2.3重要性

计算机科学研究的基石之一
计算机系统的基本组成部分
由硬件的发展和应用需求所驱动

1.2.2.4学术和工业的持续推进

顶级会议:
SOSP
USENIX

1.3如何学习操作系统

了解概念与原理
实践:阅读代码
具体取决于自己的需要

1.4操作系统实例

UNIX家族:FreeBSD、NetBSD、OpenBSD、Mac OS等
了解更多:Unix History
Linux家族
了解更多:linux 版本家族
Windows家族
具体应用:分析气象、工控领域等系统

1.5操作系统的历史

持续的发展:
晶体管、CPU、硬件、外设、网络的研发和发展

早期计算机使用纸带传输程序和数据,操作系统只起到加载的作用
由顺序处理到多程序处理
为了更好地利用计算机资源,并更好的与用户进行交互,出现了分时系统
个人电脑操作系统的出现
多核多处理
云端操作

1.5.1演变

主机性运算–>个人机计算–>网络计算–>普适计算(云计算、移动计算)

1.6操作系统结构

(1)简单的操作系统:MS-DOS 不分模块的单体内核 (内部通过函数调用访问,缺点,复杂,紧耦合,易受攻击)

(2)微内核:尽可能把内核功能移植到用户空间,缺点性能低。

(3)外核,内核分为一块,一块负责和硬件打交道,另一部分和应用打交道。

(4)虚拟机
VMs(虚拟机)->VMM(虚拟机监视器)->物理机硬件,多操作系统共享硬件资源
VMM(虚拟机监控器),也称为管理程序,虚拟出所有的硬件资源。

猜你喜欢

转载自blog.csdn.net/weixin_51864831/article/details/111823254