zoukankan      html  css  js  c++  java
  • 操作系统设计与实现(一)

    本人写于2015年5月6日,恰逢人生第一个操作系统完成(类Linux)完成,感谢给过我帮助的人!

    以此纪念我将开写操作系统方面的博客,本次博客借鉴了《现代操作系统》和《操作系统概念》《LInux内核设计与实现》这三本书,共需要60章

    本人刚刚初中毕业,学识水平有限,不足之处有望专业人士点评

    -------------------------------------------------------------------------------------------------------------------------------------分割线-------------------------------------------------------------------------------------------------------------------------------------

    2019年1/10由github搬运(本人的)

    操作系统导论概念

    一 操作系统的功能

    计算机系统可分成四个组件:硬件、操作系统、应用程序和用户

    硬件:为系统提供基本的计算资源

    应用程序:规定了用户解决计算问题而使用这些资源的方式

    操作系统控制硬件,并协调各个用户应用程序的使用

    以下我通过两个视角来讨论操作系统--------用户视角和系统视角

    1.1.1 用户视角

    个人PC方面:主要注重使用方便,次要的是性能,而不太在乎资源利用

    与大型机和小型机的终端方面:由于用户通过终端访问同一计算机,这些用户共享资源并且可以交换信息,这种操作系统的设计目标是资源利用率

    工作站方面:这类工作站与其他工作站和服务器相连,这类操作系统设计需要兼顾使用方便性和资源利用率

    1.1.2 系统视角

    对于系统方面可将操作系统视作资源分配器,对于多个用户访问或微型计算机,资源分配是特别重要的,操作系统的另一个不同的视角是:强调控制各种I/O设备和用户程序的需求

    操作系统可看作一个控制程序,控制程序管理用户程序的执行,以防止计算机资源的错误或不当使用,其特别注重I/O设备的运行和控制

    补充知识点:

    摩尔定律:集成电路可容纳元器件的数且每隔18个月便会翻倍

    操作系统的定义

    操作系统的存在是因为它们提供了合理方式来解决可用计算机系统的问题。而对于操作系统并没有广泛和准确的定义,较为公认的是:操作系统是一直运行在计算机上的程序(通常称为内核(kernel)),对于移动操作系统ios android等,除了内核,还有中间件等等

    二 计算机系统的组成

    1 计算机系统的运行

    当计算机开启时,它需要一个初始程序,该初始程序或引导程序通常一般很简单,通常位于只读内存(ROM)或电可擦可编程内存(EEPROM),它初始化各个组件,引导程序必须知道如何加载操作系统并且执行系统,所以,引导程序必须定位操作系统内核

    并且它加载到内存,一旦内核加载到内存并执行,则内核就开始提供服务,系统程序也提供一些服务,它们在启动时加载到内存而成为系统进程

    事件发生通常通过硬件或软件的中断来通知,软件也可以执行特别操作即系统调用(也称为监督程序调用),以触发中断

    当CPU被中断时,它停止正在做的事情,并立即转到固定位置再继续执行,该固定位置通常包含中断服务程序的开始地址,中断服务程序开始执行,在执行完后,CPU重新执行被中断的计算

    中断是计算机体系结构的重要部分,中断应将控制转移到合适的中断服务程序,处理这一转移的直接方法是,调用一个通用程序以检查中断信息,该程序会调用特定的中断处理程序,由于只有少量预先定义的中断,所以可以通过中断处理程序的指针表来提高速度,这样通过指针表可以间接调用中断处理程序,指针表通常位于低地址内存(前100左右),这些位置包含各种设备的中断处理程序的地址,这种地址的数组或中间向量,对于任意给定的中断请求,可以通过唯一的索引号来索引,进而提供设备的中断处理程序的地址

    中断体系结构也应该保存中断指令的地址,现代体系结构将返回地址保存在系统堆栈上,如果中断程序需要修改处理器状态,如修改寄存器的值,则应明确保存当前的状态,并在返回之前恢复该状态,在处理完中断之后,保存的返回地址会加载到程序计数器,被中断的计算重新开始

    I/O结构

    三 计算机系统的体系结构

    单处理器系统

    单处理器系统只有一个CPU以便执行一个通用指令集,该指令集包括执行用户进程的指令

    多处理器系统

    多处理器系统也称为并行系统或多核系统,这类系统有两个或多个紧密通信的CPU,它们共享计算机总线,有时还共享时钟,内存和外设

    多处理器系统有以下三个优势:

    增加吞吐量:增加处理器数量,以期能在更短时间完成更多工作

    规模经济:多处理器系统的价格要低于相同功能的多个单处理器系统的价格

    增加可靠性:如果将功能分布在多个处理器上,那么单个处理器的失灵不会使得整个系统停止,而只会使它变慢

    一般多处理器系统分为两种非对称多处理和对称多处理

    非对称多处理:每个处理器你都有各自特定的任务,一个主处理器控制系统,其他处理器或者向主处理器要任务要么做预先规定的任务,这种方案被称为主从关系

    对称多处理(SMP):每个处理器参与完成操作系统的所有任何,SMP表示所有处理器对等,处理器之间没有主从关系,每个处理器都有自己的寄存器集,也有私有或本地缓存,不过所有的处理器都共享物理内存

    多处理可使系统的内存访问模型从均匀内存访问(UMA)改成非均匀内存访问(NUMA),UMA下,CPU访问RAM的所需时间相同,NUMA时间会更多,这会降低性能,不过操作系统可以通过资源管理来改善NUMA问题

    注意:多核系统称为多处理器系统,但不是所有的多处理器系统都是多核的。多核指多个计算核到单个芯片,这种多处理器叫做多核

     

    集群系统

    系统将多个CPU组合在一起,这与多处理器不同,它由两个或多个独立系统组成,这种结构是松耦合的。

    集群具有高可用性即集群中的一个或多个系统出错,仍可继续使用。

    集群出对称的也可以是非对称的,对于非对称集群一台机器处于热备份状态,热备份主机只监视活的机器,如果活的机器失效,则热备份机器会变成活的机器,对于对称集群,两个或多个主机都运行程序,并且互相监视,由于充分使用现有硬件,所有更为有效。

    每个集群的所有计算机可以并发执行一个应用程序,即将一个程序分成多个部分,而每个部分可以并行运行在计算机和集群计算机上的各个核上(类似于微服务),这叫做并行计算,提供了高性能计算

    同时还有并行集群,并行集群允许多个主机访问共享存储的同一数据,有时候需要针对文件访问加以加锁或控制,则需要分布式锁管理器(DLM)。

    例子:

    Beowulf集群

    Beowulf集群的设计用于解决高性能的计算任务,每个Beowulf由商用硬件通过LAN连在一起,这种集群无需特定的软件包,每个节点采用开源软件库来通信,每个节点采用LInux操作系统。

  • 相关阅读:
    关于音视频同步
    redis JedisConnectionException: Could not get a resource from the pool
    ping指定IP的指定端口号
    如何查看端口号是否被占用
    mongodb增删改查基础语法
    mongodb重置密码
    本地MongoDB服务开启与连接本地以及远程服务器MongoDB服务
    MongoDB服务的安装与删除
    可视化
    Elasticsearch下载安装
  • 原文地址:https://www.cnblogs.com/qyx66/p/12176326.html
Copyright © 2011-2022 走看看