第一章——计算机系统架构介绍

简介: 1 介绍 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。 计算机系统u燃机系统结构的层次结构设计如下:   每个层次之间都需要相互通信,既然需要通信就必须有一个通信的协议,也就是接口。

1 介绍

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。

计算机系统u燃机系统结构的层次结构设计如下:

 

每个层次之间都需要相互通信,既然需要通信就必须有一个通信的协议,也就是接口。一般接口的下面那层就是接口的提供者,接口由它定义;接口的上层就是接口的使用者,它使用该接口来实现需要的功能。

例如,从整个层次结构来看,开发工具与应用程序属于同一层次,它们都是要运行库提供的接口,也就是应用程序编程接口。应用程序接口的提供者就是运行库,什么样的运行库提供什么样的API。而对于操作系统,运行库是操作系统提供的系统调用接口的使用者,操作系统是提供者。而操作系统内核层对于硬件层来说是硬件接口的使用者,而硬件是接口的定义者,硬件的接口定义决定了操作系统内核,具体来说就是驱动程序如何使用操作硬件,如何与硬件通信。

2 操作系统做什么

操作系统的一个功能是提供抽象的接口,另一个主要功能是管理硬件资源。

一个计算机的资源主要分CPU、存储器(包括内存和磁盘)和I/O设备。

2.1 内存不够怎么办

在早期的计算机,程序是直接运行在物理内存上的,也就是说,程序在运行时所访问的地址是物理地址。当然,如果一个计算机同时只运行一个程序,那么只要程序要求的内存空间不要超过物理内存的大小,就不会有问题。这样明显的一个问题是当有多个程序要运行?

缺点:

  • 地址空间不隔离,所有程序都直接访问物理内存,程序锁使用的内存空间不是相互隔离的。
  • 内存使用效率低,由于没有有效的管理,通常一个程序需要执行时,需要将整个程序都调入内存。
  • 程序运行的地址不确定。因此程序每次都需要装入运行,我们从内存中给它分配内存,但是分配的地址是不确定的。

解决这些问题的办法是,增加中间层,即使用一种间接访问地址的方法。我们把程序的地址看做是一种虚拟地址,然后通过某些映射的方法,将虚拟地址转换为物理地址。这样保证任意一个程序访问的地址空间与另一个程序相互不重叠,以达到地址空间隔离。

2.1.2 关于隔离

虚拟地址空间是虚拟的、人们想象出来的地址空间,其实它并不存在,每个进程都有自己独立的虚拟地址空间,而且每个进程都只能访问自己的地址空间,这样就有效地做到了进程的隔离。

2.1.3 分段

最开始人们使用的是一种叫做分段的方法,基本思路是把一段程序所需要的内存空间大小的虚拟空间映射到某个地址空间。但是这样做只能解决第一个和第三个问题,并没有解决第二个问题,即内存效率的问题。分段对内存区域的映射还是按照程序为单位,如果内存不足,被换入换出到磁盘的都是整个程序,这样势必会造成大量的磁盘访问操作,主要是分段的粒度比较大。因为根据程序的局部性原理,在某个时间,它只会访问到一个小部分数据,也就是说,程序的很多数据都不会用的,于是想到粒度更小的分页。

2.1.4 分页

分页的基本方法是把地址空间分成固定大小的页,每一页的大小由硬件决定,或硬件支持多种大小的页,由操作系统选择决定页的大小。

例如,如下图所示,每个虚拟空间有8个页,每页大小为1KB,那么虚拟地址空间就是8KB。假设有6KB的内存,那么物理空间其实真正有效的只是前6KB。

那么,我们把进程的虚拟地址空间按页分割,把常用的数据和代码页装载到内存中,把不常用的代码和数据保存在磁盘里,当需要用到的时候再把它从磁盘取出来即可。我们假设有两个进程process1和process2,它们进程中的部分虚拟页面被映射到了物理页面,比如VP0、VP1和VP7映射到PP0、PP2、和PP3;而有部分页面却在磁盘中,比如VP2和VP3在磁盘DP0和DP1中;另外还有一个页面如VP4、VP5和VP6可能尚未被用或访问到,它们暂时处于未使用的状态。在这里,我们把虚拟空间的页称为虚拟页(VP),把物理内存中的页叫做物理页(PP),把磁盘中的页叫做磁盘页(DP)。

 

process1的VP2和VP3不在内存中,但是当访问这两页的时候,硬件会捕获到这个消息,就是所谓的页错误,然后操作系统接管进程,负责将VP2和VP3从磁盘中读出来并装入内存,然后将内存中的这两页与VP2和VP3之间建立映射关系,更新页表。

但是如果访问process1的VP5和VP6,则会出现段错误(由于这两页还没有映射)。

保护也是也映射的目的之一,简单地说就是每个页可以设置权限属性,谁可以修改,谁可以访问等。

虚拟存储的实现需要硬件的支持,对于不同的CPU来说是不同的,但是几乎所有的硬件都采用一个叫做MMU的部件来进行也映射。如图所示:

 

在页模式下,CPU发出的是virtual Address,即我们看到的是虚拟地址。经过MMU转换为physical Address。

 

相关文章
|
6月前
|
XML 前端开发 算法
计算机毕业设计|外文文献翻译之MVC架构详细介绍
计算机毕业设计|外文文献翻译之MVC架构详细介绍
|
缓存 测试技术 数据中心
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
455 0
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
1136 1
|
存储 并行计算 编译器
【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)
【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)
124 1
|
3月前
深挖计算机的根:汇编语言与计算机架构之间不可告人的秘密
【8月更文挑战第31天】本文深入探讨了汇编语言与计算机架构之间的重要联系。通过解析汇编语言的基本概念及其与硬件的直接映射关系,文章展示了它在计算机体系中的独特地位。以一个简单的“Hello, World!”汇编程序为例,详细说明了汇编语言如何操作底层硬件。尽管现代软件开发中较少使用汇编语言,但掌握它有助于理解计算机工作原理,对于性能优化和系统编程至关重要。
49 2
|
1月前
|
存储 缓存 数据处理
简述计算机X86架构
【10月更文挑战第3天】本文介绍了计算机的基本工作原理,重点阐述了CPU(中央处理器)及其组成部分:运算单元、数据单元和控制单元的功能。文中解释了CPU通过总线与内存等设备通信的过程,并详细描述了指令执行的步骤,包括指令获取、数据处理和结果存储。此外,还介绍了地址总线和数据总线的作用,以及段寄存器在内存管理中的应用。最后,提供了一些基本的CPU指令示例。文中配有多幅插图帮助理解。
|
2月前
|
网络协议 安全 中间件
系统架构设计师【第2章】: 计算机系统基础知识 (核心总结)
本文全面介绍了计算机系统及其相关技术,涵盖计算机系统概述、硬件、软件等内容。计算机系统由硬件(如处理器、存储器、输入输出设备)和软件(系统软件、应用软件)组成,旨在高效处理和管理数据。硬件核心为处理器,历经从4位到64位的发展,软件则分为系统软件和应用软件,满足不同需求。此外,深入探讨了计算机网络、嵌入式系统、多媒体技术、系统工程及性能评估等多个领域,强调了各组件和技术在现代信息技术中的重要作用与应用。
84 4
|
3月前
|
运维 安全 Linux
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
|
2月前
|
缓存
计算机X86架构
【9月更文挑战第7天】计算机的基本工作原理,重点阐述了CPU(中央处理器)及其内部结构,包括运算单元、数据单元和控制单元的功能。文中还解释了内存、总线(地址总线和数据总线)的作用,并简述了x86架构与操作系统交互的关键部分及基本指令集。
|
3月前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
44 1
下一篇
无影云桌面