现代操作系统:多处理机系统/网络基础

多处理机有三种模型:共享存储器多处理机、消息传递多计算机、广域分布式系统。

多处理机

每个CPU拥有自己的操作系统

组织一个多处理机操作系统可能的最简单的方法是,静态地把存储器划分成和CPU一样多的各个部分,为每个CPU提供其私有存储器以及操作系统的各自私有副本,n个CPU以n个独立计算机的形式运行。

主从多处理机

操作系统的一个副本及其数据表都在CPU1上,而不是在其他所有CPU上。为了在该CPU1上运行,所有系统调用都重定向到CPU1上。CPU1是主CPU,其他的都是从属CPU。
当某个CPU空闲下来时,它向CPU1上的操作系统请求一个进程,并被分配一个进程。这样就不会出现一个CPU空闲,而另一个过载的情形。
这个模型的问题是,如果有多个CPU,主CPU会成为瓶颈,因为它要处理来自所有CPU的系统调用。

对称多处理机

该模型在存储器中有一个操作系统的副本,任何CPU都能运行它。在有系统调用的时候,进行系统调用的CPU陷入内核并处理系统调用。
操作系统应该被分割成互不影响的临界区,每个临界区由互斥信号量保护,所以一次只有一个CPU可以执行它。

多处理机调度

调度的线程是内核线程还是用户线程至关重要。如果线程是由用户空间库维护的,而对内核不可见,那么就无法调度线程。
对内核线程来说,内核可以选择一个进程的任何一个线程。有些线程是不相关的,而有些则是成组的。

分时

首先讨论调度独立线程的情况。处理独立线程的最简单算法是为就绪线程维护一个系统级的数据结构。

空间共享

当线程之间以某种方式彼此相关时,最简单的空间共享算法是这样工作的:假设一组相关的线程是一次性创建的,在其创建时,调度程序检查是否有同线程数量一样多的空闲CPU存在,如果有,每个线程获得各自专用的CPU,如果没有足够的CPU,就没有线程开始运行,直到有足够的CPU为止。

群调度

空间共享的一个明显优点是消除了上下文切换的开销,缺点是当CPU被阻塞时被浪费了。
群调度由三个部分组成:

  • 把一组相关线程作为一个单位,即一个,一起调度。
  • 一个群中的所有成员在不同的分时CPU上同时运行。
  • 群中的所有成员共同开始和结束其时间片。

群调度的思想是:让一个进程的所有线程一起运行。这样如果其中一个线程向另一个线程发送请求,接收方会立即得到信息并响应。

多计算机

多计算机是紧耦合CPU,不共享存储器,每台计算机有自己的存储器。多计算机容易构造,因为其基本部件只是一台配有高性能网络接口的PC裸机。

多计算机硬件

一台多计算机的基本节点包括一个CPU、存储器、网络接口,通常没有显卡、显示器、键盘和鼠标。

互连技术

在每个节点上有一个网卡,带有一根或两根从网卡上接出的电缆,来连接其他节点或交换机,形成各种拓扑。
在多计算机中可采用两种交换机制,首先是存储转发包交换。每个消息首先被分解成有最大长度限制的块,称为,然后由源节点的网卡注入到第一个交换机,然后被复制到沿着其路径通向下一个交换机的队列中。当包到达目标节点所连接的交换机时,该包被复制进入目标节点的网卡中,并最终到达其RAM。
另一种交换机制是电路交换,它包括由第一个交换机建立的,通过所有交换机而到达目标交换机的一条路径。一旦路径建立起来,比特流就从源到目的地通过整个路径不断地尽快输送,在所涉及的交换机中,没有中间缓冲。

虚拟机

虚拟机技术允许一台机器中存在多台虚拟机,每一台虚拟机可能运行不同的操作系统。在一个虚拟化系统中,不同的服务器可能运行在不同的虚拟机中,代价低,易于维护。
大多数服务器停机的原因不是硬件故障,而是因为臃肿、不可靠的软件。使用虚拟机技术,唯一一个运行在内核态的软件是管理程序,它的代码量比一个完整的操作系统少两个数量级。

虚拟化的条件

虚拟机必须像真实机器一样工作。每个有内核态和用户态的处理器都有一组只能在内核态执行的指令集合:敏感指令,比如I/O指令、改变MMU状态的指令等;还有一组指令如果在用户态下执行会引起陷入,称为特权指令当且仅当敏感指令是特权指令的子集时,机器才是可虚拟化的。简单地说,如果你想做一些在用户态下不能做的工作,硬件应该陷入。
管理程序是一个操作系统,它是唯一一个运行在内核态的程序,它的工作是支持各种虚拟机,和普通操作系统所支持的进程类似。
运行在管理程序之上的操作系统都称为客户操作系统

I型管理程序

作为I型管理程序,它在裸机上运行。虚拟机在用户态以用户进程的身份运行,不允许执行敏感指令。虚拟机内运行着一个客户操作系统,该客户操作系统认为自己是运行在内核态的。这种状态称为虚拟内核态
当客户操作系统执行一条敏感指令的时候,发生到内核的陷入。

II型管理程序

在不可虚拟化的硬件上,II型管理程序也能正常工作,因为所有的敏感指令被仿真这些指令的过程调用所替代。客户操作系统发射的敏感指令不会被真正的硬件执行,而是转换成仿真了那些敏感指令的管理程序调用。

内存的虚拟化

现代操作系统都支持虚拟内存,即从虚拟地址空间到物理地址空间的页面映射。

分布式系统

分布式系统和多计算机类似,每个节点都有自己的私有存储器,整个系统中没有共享的物理存储器,但是分布式系统与多计算机相比,耦合更加松散。
分布式计算机中的每个节点都是一台完整的计算机,并可能分散在全世界范围内。一个分布式系统的节点可以运行不同的操作系统,每个节点有自己的文件系统。一个典型的分布式系统包括了通过Internet松散协作的上千台机器。
分布式系统面对不同硬件和操作系统实现某种统一性的途径是,在操作系统的顶部添加一层软件,这层软件叫做中间件
在某种意义上,中间件像是分布式系统的操作系统。

网络硬件

网络主要有两种,覆盖一座建筑物或一个校园的LAN(局域网,Local Area Networks)和可用于城市、乡村甚至世界范围的WAN(广域网,Wide Area Network)。最重要的LAN类型是以太网(Ethernet)。

1、以太网(Ethernet)

经典的以太网由用来连接若干计算机的同轴电缆组成。
要在以太网上发送包,计算机首先要侦听电缆,看是否有其他的计算机正在进行传输,如果没有,这台计算机便开始传送一个包,其中有一个短包头,随后是0到1500字节的有效信息载荷。如果电缆正在使用中,计算机只是等待,直到当前的传输结束,接着这台计算机开始发送。
为了避免碰撞,现代以太网使用交换机,每个交换机有若干个端口,一个端口用于连接一台计算机、一个以太网或另一个交换机。当一个包成功地避开所有的碰撞并到达交换机时,它被缓存在交换机中并送往另一个通往目的地机器的端口。

2、因特网

Internet包括两类计算机:主机和路由器。主机(host)有PC机、笔记本计算机、掌上电脑、服务器、大型计算机等。路由器(router)是专用的交换计算机,它在许多进线中的一条线上接收进来的包,并在许多个出口线中的一条线上按照其路径发送包。大型网络中,路由器相互连接,每台路由器都通过线缆或光缆连接到其他的路由器或主机上。
Internet的一部分是这样的:

  1. 顶部是其主干网之一,它包括了大量通过宽带光纤连接的路由器,同时连接着其他主干网。
  2. 地区网络和互联网服务提供商 ISP(Internet Service Providers,ISP)的路由器通过中等速度的光纤连接到主干网上。
  3. 依次,配备路由器的公司以太网连接到地区网络的路由器上。而ISP的路由器则被连接到供ISP客户们使用的调制解调器汇集器上。

按照这种方式,Internet上的每台主机至少拥有通往其他主机的一条路径。
在Internet上的所有通信都以包(packet)的形式传送,每个包在其内部都携带着目的地的地址,而这个地址是供路由器使用的。当一个包来到某个路由器时,该路由器抽取目的地地址并在一个表格中进行查询,以找出用哪根出口线发送该包以及发送到哪个路由器。
路由表是高度动态的,并且随着路由器和链路的损坏、恢复以及通信条件的变化不断更新。

网络服务和协议

网络服务

计算机网络为使用网络的主机和进程提供服务。面向连接的服务是对电话系统的一种模仿,用户先建立一个连接,使用该连接,然后释放该连接。
面向连接服务的典型场景是文件传输,文件的所有信息位都应该按照其发送顺序到达。
可靠的、面向连接服务有两种轻微变种:消息序列和字节流。前者保留着消息的边界,两个1KB的消息发送时,决不会合并成一个2KB的消息。后者则不存在消息的边界。


相反,无连接服务则是对邮政系统的模仿。每个消息携带了完整的目的地地址,与所有其他消息相独立。由于存在延迟,后发的消息可能反而先到达。
可靠的服务是用以下方式实现的:接收者发回一个特别的确认包,确认每个收到的消息,这样发送者就确信消息到达了。不过确认的过程引入了过载和延迟的问题。

网络协议

所有网络都有专门化的规则,用以说明什么消息可以发送以及如何响应这些消息。例如,文件传输需要接收方返回确认信息;但数字电话因为要避免延时就不需要确认。用于特定计算机通信的这些规则的集合,称为协议,有很多种协议,包括路由器-路由器协议、主机-主机协议等。
所有的现代网络都使用所谓的协议栈,把不同的协议一层一层叠加起来,每一层解决不同的问题。例如,最底层的协议会定义如何识别比特流中的数据包的起始和结束位置,更高一层的协议会确定如何通过复杂的网络来把数据包从来源节点发送到目标节点。再高一层上的协议会确保多包消息中的所有数据包都按照合适的顺序正确到达。
大多数分布式系统基于Internet,所以其关键协议是两种主要的Internet协议:IP和TCP


IP(Internet Protocol)是一种数据报协议,发送者可以向网络上发出长达64KB的数据报,但它不保证能到达。当数据报传输时,可能被切割成更小的包。这些包独立进行传输,并可能通过不同的路由,当所有的部分都到达目的地时,再把它们正确组织起来。
有两个版本的IP协议:IPv4和IPv6。IPv4包以一个40字节的包头开始,其中包含32位源地址和32位目标地址。这些地址就称为IP地址。通常IP地址写作4个由点隔开的十进制数,每个数介于0~255之间,例如192.31.231.65。当一个包到达路由器时,路由器会解析出IP目标地址,并利用该地址选择路由。


注意到IP协议是非应答的,所以Internet上的可靠通信仅仅使用IP是不够的,为了提供可靠的通信,通常在IP层之上使用另一种协议:TCP(Transmission Control Protocol,传输控制协议)。TCP使用IP来提供面向连接的数据流。使用TCP,进程需要先与一个远程进程建立连接,被请求的进程需要通过机器的IP地址和机器的端口号来指定。

  • 首先,用户进程产生消息,并在一个事先建立好的TCP连接上通过系统调用来发送消息。内核协议栈依次在消息前面添加TCP包头和IP包头
  • 然后主机所在的以太网驱动再添加一个以太网包头,并把数据包发送到以太网(局域网)的路由器上。

为了与远程机器建立连接,需要知道它的IP地址。为了更方便地管理32位的IP地址,产生了域名系统DNS(Domain Name System),它作为一个数据库把主机的ASCII名称映射为对应的IP地址。

基于文档的中间件

万维网(World Wide Web)位于基础网络上,为应用程序和用户提供一致的泛型。Web的原始泛型非常简单:每个计算机可以持有一个或多个文档,称为Web页面,在每个页面中有文本、图像、图标、声音、电影等,还有到其他页面的超链接。当用户使用Web浏览器请求一个Web页面时,该页面就显示在用户的屏幕上。本质上:Web是一个由文档构成的巨大有向图,其中文档可以指向其他的文档
每个Web页面都有一个唯一的地址,称为统一资源定位符 URL,形式为protocol://DNS-name/file-name。http(超文本传输)协议是最常用的,ftp等也在使用。协议名后面是拥有该文件的主机的DNS名称,最后是一个本地文件名,用来说明需要使用哪个文件。
例如,假设提供的URL是http://www.minix3.org/doc/faq.html,浏览器获取页面的步骤如下:

  1. 浏览器想DNS询问www.minix3.org的IP地址
  2. DNS回答:130.37.20.20
  3. 浏览器建立一个到130.37.20.20上端口80的TCP连接
  4. 浏览器发送对文件doc/faq.html的请求
  5. www.minix3.org服务器发送文件doc/faq.html
  6. 释放TCP连接
  7. 浏览器显示doc/faq.html文件中的所有文本
  8. 浏览器显示doc/faq.html文件中的所有图像

基于文件系统的中间件

基于对象的中间件

基于协作的中间件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值