冯诺依曼体系结构+操作系统

2023-09-22 13:26:18

 

目录

一、冯诺依曼体系结构

(一)基本结构

(二)举例

二、操作系统

(一)概念

(二)设计OS的目的

(三)定位

(四)内存管理、驱动管理、进程管理和文件管理

1. 内存管理

2. 驱动管理

3. 进程管理

4. 文件管理

三、整体结构

1. 操作系统——驱动程序——底层硬件

2. system call——操作系统

3. 用户——用户操作接口


一、冯诺依曼体系结构

(一)基本结构

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器,打印机 等

注意:

  • 这里的存储器指的是内存
  • 而磁盘是一种外存,可以永久性存储数据。磁盘也属于外设的一种。外设又分为输入设备输出设备。磁盘和网卡既是输入设备又是输出设备。
  • 对于中央处理器,它有自己的指令集,外部程序翻译为CPU的指令集,让CPU根据这些指令集去执行。
  • 为了保证读取和写入速度,CPU只和内存打交道(不能访问外设(输入或输出设备))。
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取

(二)举例

  • 刚开始我在键盘上输入消息,键盘会先将消息加载到内存,CPU从内存获取到消息后对消息进行各种封装,然后再将其写回内存,此时你的网卡就可以从内存获取已经封装好的消息,然后在网络当中经过一系列处理,传送到朋友的电脑上。
  • 之后朋友的电脑的网卡从网络当中获取到我所发的消息后,再将消息加载到内存当中,CPU再从内存当中获取消息并对消息进行解包操作,然后将解包好的消息写回内存,最后朋友的显示器从内存当中获取消息并显示在电脑上

二、操作系统

(一)概念

  • 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理);其他程序(例如函数库,shell程序等等)

(二)设计OS的目的

  • 与硬件交互,管理所有的软硬件资源

  • 为用户程序(应用程序)提供一个良好的执行环境

(三)定位

  • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件 

(四)内存管理、驱动管理、进程管理和文件管理

1. 内存管理

  • 定义:内存管理是指操作系统如何有效地管理计算机的内存资源,以便为正在运行的程序提供足够的内存空间。

  • 功能:内存管理负责将物理内存划分成若干块,并跟踪哪些部分正在被使用。它还负责在不同程序之间分配和回收内存,以避免冲突和资源浪费。

2. 驱动管理

  • 定义:驱动程序是操作系统中的软件模块,用于控制和管理硬件设备。

  • 功能:驱动管理模块负责加载、卸载和协调硬件设备的驱动程序。这样,操作系统可以与各种硬件设备(如显示器、键盘、鼠标、磁盘驱动器等)进行通信。​​​​​​​

3. 进程管理

  • 定义:进程是计算机系统中正在运行的程序的实例。进程管理是指操作系统如何有效地管理和调度这些进程以保证系统的高效运行。

  • 功能:进程管理负责分配资源(如CPU时间、内存空间等)给不同的进程,并确保它们按照合适的优先级顺序执行。此外,它还负责处理进程间的通信和同步。

4. 文件管理

  • 定义:文件管理是指操作系统如何组织、存储和管理文件和目录的数据结构。

  • 功能:文件管理模块负责创建、删除、复制、移动和重命名文件,同时也负责对文件进行读取和写入操作。它还管理文件系统的整体结构,包括目录树和元数据信息。

三、整体结构

 

1. 操作系统——驱动程序——底层硬件

 

  • (1)操作系统不直接和底层硬件打交道,操作系统对底层硬件做管理,只需要对底层硬件的数据做管理,操作系统通过驱动程序获取底层各种设备的数据。
  • 举例,当您在计算机上插入一个新的硬件设备(比如打印机或者鼠标),操作系统会检测到这个设备的存在,然后通过相应的驱动程序与该设备进行通信。这使得应用程序可以通过操作系统的接口与设备交互,而无需了解底层硬件的细节。
  • (2)但是,设备的数据杂七杂八的,为了对硬件的数据做管理,会使用数据结构(如struct结构体)来描述底层硬件的信息。例如,对于一个硬盘驱动程序,操作系统可能会定义一个结构体来描述硬盘的基本信息,比如容量、扇区大小、连接接口等等。这个结构体可以包括类似如下的成员:
struct DiskInfo {
    int capacity;       // 硬盘容量(以字节为单位)
    int sectorSize;     // 扇区大小(以字节为单位)
    char interface[20]; // 连接接口(如SATA, USB)
    // 其他硬盘相关信息...
};
  • (3)操作系统将每种设备信息形成链表
// 设备信息结构体
struct DeviceInfo {
    char name[50];
    int type;
    // 其他设备信息...
    struct DeviceInfo* next; // 指向下一个设备信息的指针
};

// 创建设备信息链表
struct DeviceInfo* head = NULL;

// 添加设备信息到链表
void addDeviceInfo(char name[], int type) {
    struct DeviceInfo* newDevice = (struct DeviceInfo*)malloc(sizeof(struct DeviceInfo));
    strcpy(newDevice->name, name);
    newDevice->type = type;
    newDevice->next = head;
    head = newDevice;
}

// 遍历设备信息链表
void traverseDeviceInfo() {
    struct DeviceInfo* current = head;
    while (current != NULL) {
        // 处理当前设备信息
        printf("Device Name: %s, Type: %d\n", current->name, current->type);
        current = current->next;
    }
}

2. system call——操作系统

  

  • 系统调用:可以被看作是操作系统向用户程序提供的一组函数接口。用户只能调到操作系统提供的函数来获取操作系统内部的数据。防止恶意程序对系统进行破坏。
  • 操作系统为了保护自己和确保稳定性,通常不允许用户对系统内部的直接访问。用户要想获取操作系统内的软硬件信息,只能调用操作系统提供的函数。系统调用就是操作系统提供的接口。

3. 用户——用户操作接口

 

但这些系统调用接口对普通用户来说使用过于麻烦,因为要使用系统调用前提条件是对系统有了解。所以在系统调用接口之上又构建出了一批(如libc、libc++等)。这些库封装了底层的系统调用,提供了更为友好的接口和函数,使得开发者无需直接与系统调用交互,而是可以使用更高级的函数来完成各种任务。比如,使用标准C库的printf函数来输出信息,或者使用scanf函数来接收用户输入。

更多推荐

343. 整数拆分

题目:343.整数拆分给定一个正整数n,将其拆分为k个正整数的和(k>=2),并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例1:输入:n=2输出:1解释:2=1+1,1×1=1。示例2:输入:n=10输出:36解释:10=3+3+4,3×3×4=36。提示:2<=n<=58思考历程与知识点:看到这道题目,都会

信息化发展44

智能运维1、中国电子工业标准化技术协会发布的团体标准I/CESA1172《信息技术服务智能运维通用要求》,给出了智能运维能力框架,包括组织治理、智能特征、智能运维场景实现、能力域和能力要素,其中能力要素是构建智能运维能力的基础。2、组织通过场景分析、场景构建、场景交付和效果评估四个过程,基于数据管理能力域提供的高质量数

关于mysql已有主从环境得主从重配置

恢复主从环境1:Situation(背景)2:Task(任务)3:Action(行动)主库(备份)1:锁表2:效验是否锁表3:查看主库状态并记录4:备份数据库全部5:解锁表6:把备份放到从库从库1:备份从库(可选)2:恢复从库3:清除旧设置4:添加新设置4:Result(结果)1:Situation(背景)测试环境下得

片内互联中常用的拓扑结构

主要的拓扑结构有星型(Star)、交叉(Crossbar)、总线(Bus)、环型(Ring)和网格(Mesh)等。星型(Star)结构,主控处理器放在中心位置,其他各个模块均与其连接,而模块彼此之间并不直接交互,必须通过主控中转,结构如图1所示。这种结构简单高效,在早期片内模块数量较少、结构单一时经常被使用。但随着多核

9.21数电(加法器&状态机&独热编码)

加法半加器一位,分为两部分,一个是进位,一个是单位上的和进位采取与门,单位上的和用异或门全加器进位数就是三个数进行加和,通过与门,就是两两过与门描述每位的和项就是,只去描述那个1的情况,即三中有一个,或者三个都为1分解全加器行波进位加法器快速加法器是说下一位的进位=此位的两个加数再加上来自上位的进数当此位的两个加数均为

如何恢复U盘里面的已经损坏的数据?

弹出使用驱动器之前,先将U盘格式化的信息框,是Windows系统针对某些特定类型的U盘或移动硬盘的一种常见处理方式。一般来说,如果U盘或移动硬盘出现某些故障或问题,Windows系统会建议用户将其格式化。格式化是一种常规的操作,它能使U盘或移动硬盘恢复到初始状态,但需要注意的是,格式化操作将会清除所有存储在U盘或移动硬

极客时间:数据结构与算法之美【文章笔记 & 实践 & 总结】

原文链接:https://time.geekbang.org/column/intro/10001730127|递归树:如何借助树来求解递归算法的时间复杂度?如何借助树来分析归并排序算法的时间复杂度?如何借助树来分析快速排序算法的时间复杂度?如何借助递归树来分析斐波那契数列的时间复杂度?如何借助递归树来分析全排列的时间

SpringBoot,Mybatis 使用Java8(JSR310)时间日期规范

目录一.依赖二.前台三.Controller,Form,Service四.数据库类型五.效果一.依赖⏹若使用的是SpringBoot<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter<

综合管廊安全监测系统,城市‘里子’的守护者

在现代城市的地下,一条隐藏在地下深处的巨龙悄然运行,它虽悄无声息,却是城市运转的重要生命线。这个神秘的存在就是综合管廊,综合管廊是保障城市运行的重要基础设施,被形象地称为“城市大动脉”“地下生命线”,能够有效解决传统城市建设中存在的“空中蜘蛛网”“马路拉链”等“城市病”,不仅让市容市貌更美观、更安全,也可以减少路面翻修

python温度转换程序

1.使用pycharm运行温度转换程序,尝试将温度单位设在前面2.参照温度转换程序,自己写一个关于货币转换、长度转换、重量转换或者面积转换的程序循环+函数defconvertemperature():temperature=""while(temperature!="q"):temperature=input("请输入

如何在linux定时备份opengauss数据库(linux核心至少在GLIBC_2.34及以上)

前提环境,linux的核心至少在GLIBC_2.34及以上才能使用。查看linux的glibc版本的命令如下strings/lib64/libc.so.6|grepGLIBC如下图或者用ldd--version如下图在官网下载对应的依赖包,只需要这个lib文件即可,将这个包放在linux对应下面脚本的LD_LIBRAR

热文推荐