分布式系统学习(六)——操作系统支持

操作系统层

一、核心操作系统组件
  • 进程管理器:负责进程的创建和操作。进程包括一个地址空间以及一个或者多个线程,是资源管理器单元。
  • 线程管理器:负责线程创建、同步和调度。
  • 通信管理器:负责同一台计算机上不同进程中的线程之间通信。
  • 内存管理器:负责管理物理内存和虚拟内存。
  • 管理器:负责处理中断、系统调用陷阱和其他异常,同时控制内存管理单元和硬件缓存以及处理器和浮点寄存器操作。又称为硬件抽象层。
二、内核和保护:
  • 内核的特点:系统初始化后一直保持运行并对其主机的物理资源有完全的访问权限。可以控制内存管理单元,并设置处理器的寄存器。只有以内存允许的方式才能访问机器的物理资源。
  • 内核进程在处理器的管理(特权)模式下运行,对内存访问不受限;内核安排其他其他进程在用户(非特权)模式下运行。
  • 内核通过建立地址空间保护内核进程和用户进程以防止异常进程访问。一个地址空间是若干个虚拟内存区域的集合,进程只能访问自己地址空间内的内存空间。
  • 用户进程、用户级进程表示用户模式下执行并且拥有用户级地址空间的进程,
  • 应用程序代码->用户进程;内核代码->内核进程。
  • 内核保护机制:通过中断和系统调用陷阱,进程可以安全地从用户级地址转换到内核地址中。系统调用陷阱是采用机器级Trap指令,将处理器转换为管理模式,将地址空间转换为内存空间,计算机硬件强制处理器执行内核代码,以保证禁止其他进程控制硬件。
  • 采用管理员运行程序是Windows系统增加UAC(用户账户控制机制)的安全机制,C#可通过System.Diagnostics.Process.Start() 启动程序,使程序按照管理员身份运行。
三、进程与线程

一个进程由一个执行环境和一个或者多个线程组成。
一个线程是一个活动的操作系统抽象。
执行环境是资源管理的基本单位。它是一个进程的线程所能访问的由本地内核管理的资源集,也是其中线程的保护域。一个执行环境主要包括:

  • 一个地址空间;
  • 线程同步和通信资源,如套接字;
  • 高级资源,如果读写的文件、窗口等。

地址空间
地址空间由一个或者多个区域组成,每个区域是一个可以被本进程的线程访问的连续的虚拟内存区。区域之间被不可访问的虚拟内存区隔开,区域不能重叠。
每个区域包括以下性质:

  • 内存方法,不低于最低的虚拟内存地址和区域大小。
  • 对本进程的线程的读/写/执行权限。
  • 是否能够向下或向上扩展。
  • 区域是基于页面而不是基于段的。
    区域由 正文、堆、栈组成。其中 正文包含程序代码等不可更改的内容,是固定的;堆包含程序中储存初始化变量,该区域可向上扩展;栈是由系统为每个线程分配的独立虚拟地址空间,可以向下(向堆的区域)扩展。系统可以检测栈溢出,并控制栈的增长。

共享内存
共享内存是同一片物理内存区域,可以其他地址空间的一个区域。共享区域的应用包括:
库文件;内核代码和内核数据;数据共享和通信。

进程的创建
分布式系统中,进程的创建包含选择目标主机和创建执行环境。分配进程创建的结点是一个策略问题。进程分配策略包括从产生进程的主机上运行新进程到多个计算机上实现负载均衡。在任何共享机制中,简单性很重要,因为 复杂的机制可能会导致高额开销。

创建执行环境
unix系统中新创建的子进程共享其父进程的正文区域,子进程的堆和栈从父进程中拷贝。子进程可以继承或者逻辑拷贝其父进程的区域。如果子进程与父进程共享同一个区域时,该区域的页面帧也会映射到子进程的区域中。写时拷贝 :当有进程试图修改区域的页面内容之前,该页面被父子进场共享,当修改内容时,系统进行物理上拷贝。

四、 进程和线程

多线程服务器的体系结构
一请求一线程体系结构:I/O线程为每一个请求派生出一个新的工作线程。优点:不会竞争共享队列,吞吐量大;缺点:创建和销毁进程会带来巨大开销。
一连接一线程请求体系:服务器在每个客户建立连接时创建一个新的工作线程,并在客户关闭连接时销毁该线程。一次连接有多个请求。
一对象一线程请求体系:每个远程对象分别有一个线程相连,每个对象都有一个请求队列,I/O请求被放入队列中等待工作线程处理。

线程的创建
与创建进程相比,创建线程不需要创建执行空间,在进程已有执行环境中创建线程的开销包括:为线程的栈分配区域、为寄存器和线程状态 ,以及优先级提供初始值。大大节省了开销。
线程的切换
线程切换的开销主要来源于调度和上下文切换,其中上下文切换 的工作为:

  • 保存处理寄存器原先的状态,并装载新的状态;
  • 域转换,共享同一个执行环境的线程只有完全在用户层(不通过内核)切换才不会引起域转换。例如:如果第一个线程产生数据,并将其传递给第二个线程,由第二个线程进行远程方法调用或者远程过程调用,由于两个线程共享地址空间,所以他们通过公共变量访问共享数据。

线程调度
用户级线程不能利用多处理器,OS只能感知内核线程。 用户级调度器可以将每个用户级线程指定到一个内核级线程上,以便充分利用多处理器。

五、通信与调用

调用性能

  • 调用传统过程或方法的性能
  • 网络调用性能
  • RPC
    • RPC延迟
    • RPC吞吐量
    • RPC 调用过程中的延迟因素
      • 编码
      • 数据拷贝
      • 包初始化
      • 线程调度和上下文切换
      • 确认等待
  • 内存共享
  • 不同协议的开销:http 1.0-慢启动,http 1.1 -持久化连接
  • 同一计算机内调用:利用共享内存,减少同一计算机中RPC数据拷贝次数。

异步操作

  • 并发调用中使用异步操作:对于多个阻塞性请求,利用并发调用,减少等待所有返回值的总时长,获得更大的吞吐量。
  • 异步调用中使用异步操作:非阻塞性请求,调用请求信息并发送后,即结束调用。该雷调用会收到断链的影响
  • 持久异步调用中使用异步操作:QRPC:将RPC请求和结果分别放入队列中,如果网络中断,则请求(结果)一直存放到队列中,直到服务器(客户端)重新连接客户端(服务器)位置。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值