• 操作系统体系结构和OS


    1.冯·诺依曼计算机体系

    关于冯·诺伊曼系统,在这里我只是简单讲一讲,更加详细的内容可以看我的计算机组成系列。

    常见的笔记本、台式机,不常见的服务器、工作站,大部分都遵守“冯·诺依曼体系”,因此该计算机体系就是现代计算机的哲学指导。

    1.1.早期冯诺依曼体系

    1.2.现代冯诺依曼体系

    注释1:实线为数据传输线,虚线为控制线。

    注释2:这里的存储器指的是内存,因此个人觉得这个存储器不太严谨,但是碍于很多教科书都是如此书写,只能得续用。

    注释3:磁盘设备其实反倒是可以理解为输出设备,因为文件数据是会写到磁盘内部的……同理磁盘也可以作为输入设备使用。

    注释4:控制器的作用是响应外部事件,比如:拷贝数据到内存,实际上控制器做的很多事情都是把一个数据移动到某个位置。

    注释5:输入设备到内存的步骤为input,内存到输出设备的步骤为output,也就是I/O的过程,因此程序要运行,也就必须要加载到内存中。

    注释6:实际上很多的硬件设备都是具有存储数据能力的,只不过是存储量的大小不一罢了。而所谓的硬件之间进行交流,也就是利用各个硬件中的存储空间,来进行数据的拷贝/迁移。

    注释7SSD是固态硬盘,比磁盘的读写速度快,但是价格也比普通的磁盘要贵,因此有很多企业还会购买大量的磁盘来使用,减少成本(一般存储效率高的存储硬件要更贵)。

    注释8:现代很多的CPU只能对内存进行读写,不能直接和外设(输入输出设备)进行数据交流。根据“木桶效应”,由于速度最慢的就是CPU和外设直接数据交互,导致整机效率降低(所以CPU一般为了高效,一般只和内存打交道)。

    注释9:内存可以理解为大的缓存空间。

    2.操作系统概念与定位

    2.1.OS的概念

    为了使计算机更好发挥每一个硬件的最大功能(更好符合冯诺依曼结构,提高硬件交互效率),现代的许多计算机内部都包含一个基本的程序集合,称为操作系统(即OS),最基本的操作系统至少应该包括:

    1. 内核(进程管理、内存管理、文件管理、驱动管理)

    2. 其他程序(函数库、shell外壳程序等)

    2.2.OS的目的

    OS是一款“搞管理”的软件,主要目的是“管理硬件和软件”。和面向对象语言类似,操作系统必须“先描述被管理对象,再组织被管理对象”,进而实现:

    1. 和硬件交互,协调管理所有的软硬件资源
    2. 为用户程序(应用程序)提供一个良好的执行、开发环境

    补充:在C语言中,实际体现管理和组织时:

    1. 管理:使用struct结构体来描述硬件或者软件
    2. 组织:使用链表等高效数据结构组织struct结构体的实例化

    2.3.OS的管理

    那么OS的“管理”具体的结构是怎么样的呢?下面有一张图您可以简单看一下。

    补充1:系统调用和库函数的概念

    1. 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。

    2. 系统调用在使用上功能比较基础,对用户的使用要求比较高,开发者可以对部分系统调用进行适度的封装,从而形成了库(例如C库)。有了库,就有利于上层用户或者开发者进行调用开发,也就是通过库来间接调用系统调用。

    补充2Linux内核内部有很多驱动程序,基本都是用C语言写的,也有少部分使用汇编(这部分连偏向底层的C都没有办法书写)。

    上面这张图您可能只知道表面,无法知道更加深层次的细节,但是在以后的学习中,您就会逐渐体到这张图的意义。

  • 相关阅读:
    算法--单链表
    力扣 -- 1218. 最长定差子序列
    FFplay文档解读-28-视频过滤器三
    相关性分析热力图(Python&Matlab代码实现)
    spring5.0 源码解析 finishBeanFactoryInitialization 总览
    【Liunx】部署Ansible自动化运维工具
    C++ 编写时间类Time
    温故 Spring5 特性
    facebook分享-错误记录
    关于Java并发多线程的一点思考
  • 原文地址:https://blog.csdn.net/m0_73168361/article/details/133904930