计算机系统架构介绍

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。

时间: 2024-08-24 06:43:19

计算机系统架构介绍的相关文章

大型网站技术架构介绍--squid

一.大型网站技术架构介绍 1.pv高  ip高 并发量 2.大型网站架构重点 1. 高性能:响应时间,TPS,系统性能计数器.缓存,消息队列等. 高可用性High Availability   99.99% 7*24 2.衡量标准:假设环境中一台或者多台服务器宕机,服务是否依然可用.解决关键办法:冗余.资源定位,健康检查.负载均衡,关键服务器冗余:web DB ,及时有效的监控和报警 3.高伸缩性[高可维护性] 是否可以用多台服务器构建集群,是否容易向集群添加新的服务器,新服务是否可提供相同的服

Apache Shiro 使用手册(一)Shiro架构介绍

一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 - 访问控制: 密码加密 - 保护或隐藏数据防止被偷窥: 会话管理 - 每用户相关的时间敏感的状态. 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务.并且相对于其他安全框架,Shiro要简单的多. 二.Shiro的架构介绍 首先,来了解一下Shiro的三个核心组件:Subject. Security

GlusterFS架构介绍及运维说明

官方网站:http://www.gluster.org/ 下载地址:http://download.gluster.org/pub/gluster/glusterfs/ GlusterFS架构介绍 一.GlusterFS 外部架构 GlusterFS总体架构与组成部分如图2所示,它主要由存储服务器(BrickServer).客户端以及NFS/Samba 存储网关组成.不难发现,GlusterFS 架构中没有元数据服务器组件,这是其最大的设计这点,对于提升整个系统的性能.可靠性和稳定性都有着决定性

Kafka剖析:Kafka背景及架构介绍

<Kafka剖析:Kafka背景及架构介绍> <Kafka设计解析:Kafka High Availability(上)> <Kafka设计解析:Kafka High Availability (下)> <Kafka设计解析:Replication工具> <Kafka设计解析:Kafka Consumer解析> Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分

IOS面向协议的MVVM架构介绍(来着网络的链接)

https://academy.realm.io/cn/posts/doios-natasha-murashev-protocol-oriented-mvvm/   面向协议的 MVVM 架构介绍 http://www.cocoachina.com/ios/20160108/14911.html    猿题库 iOS 客户端架构设计

0809LNMP架构介绍

12.1 LNMP架构介绍 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构 PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi和LAMP不同的是,LNMP中提供web服务的是Nginx 在LNMP架构中PHP是作为一个独立的服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求(支持的并发更高,速度比Apache快),动态请求转发给php-fpm处理 12.2 MySQL安装 MySQL的安装没有变化

beego的MVC架构介绍

beego 的 MVC 架构介绍 beego 是一个典型的 MVC 框架,它的整个执行逻辑如下图所示: 通过文字来描述如下: 在监听的端口接收数据,默认监听在 8080 端口. 用户请求到达 8080 端口之后进入 beego 的处理逻辑. 初始化 Context 对象,根据请求判断是否为 WebSocket 请求,如果是的话设置 Input,同时判断请求的方法是否在标准请求方法中(“get“”post“”put“”delete“”patch“”options“”head“),防止用户的恶意伪造

三层架构介绍

对比以上两图,我们可以看出: 1)数据库好比猪圈 ,所有的猪有序地按区域或编号,存放在不同的猪栏里. 2)DAL 好比是屠宰场 ,把猪从猪圈取出来进行(处理)屠杀,按要求取出相应的部位(字段),或者进行归类整理(统计),形成整箱的猪肉(数据集),传送给食品加工厂( BLL ).本来这里都是同一伙人既管抓猪,又管杀猪的,后来觉得效率太低了,就让一部分人出来专管抓猪了( DBUtility ),根据要求来抓取指定的猪. 3)BLL 好比食品加工厂 ,将猪肉深加工成各种可以食用的食品(业务处理). 4

微服务架构介绍

jhipser微服务架构介绍 内容提要 本文涉及以下内容: 微服务架构介绍 spring cloud介绍 jhipster架构介绍 微服务架构介绍 微服务概念 微服务和SOA很相似,都是按照业务功能把系统拆分成一个一个的服务.比如电子商务系统拆分成订单服务,商品服务等,每个微服务都是自治的,可以单独部署.微服务和SOA的区别是:微服务粒度更细,通信协议倾向于使用restfull api 而不使用webservice.微服务有很多优点,包括松散耦合.自治服务.分散化治理以及易于持续交付等等.微服务