Linux 13 进程前言:冯诺依曼体系结构和操作系统

Linux 13 进程前言:冯诺依曼体系结构和操作系统

🔥个人主页:Milestone-里程碑

❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>

       <<Git>><<MySQL>>

🌟心向往之行必能至

 目录

一.冯诺依曼体系结构

1.1体系设计的原因

1.2 问题

二 操作系统(Operator System)

2.1 基本概念

2.2 设计OS的目的

2.3 核心功能

2.4 如何理解"管理"

2.5 理解系统调用


一.冯诺依曼体系结构

计算机 服务器等等,基本都遵守冯诺依曼体系结构

我们所认识的计算机,都是由一个一个硬件组成

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

强调

此处存储器指的是内存

所有通过上面的图,我们发起数据只能通过内存与CPU交流,同样CPU只能通过内存与外部交流

所有这就是为什么软件必须先加载,体系结构决定

1.1体系设计的原因

1.我们都知道GPU的运行速度极快,所以如果去掉存储器,直接让GPU与输入与输出设备交流,那么就会出现GPU的大部分时间都在等待数据,运行效率低

(原因在于外部硬件于GPU使用的内存不同)



2.如果为了效率,将外部硬件也使用寄存器,那么成本昂贵(有矿另说),那么使用存储器在中间过渡,可以先将硬盘等设备上的数据先加载到其中

因此,当代的计算机,是性价比的产物

1.2 问题

你给你的好朋友发送吃饭了吗,数据是如何传输的?

首先你先在键盘上输入吃饭了吗,传给存储器,存储器再传给GPU,GPU加密 打包等操作后再传输给输出设备 显示屏(你的聊天界面出现) 网卡

网卡再将信息输出,输入到你好朋友的网卡,再将信息输入给GPU,GPU完成解密,解压等操作后,再将信息输出到显示屏

二 操作系统(Operator System)

2.1 基本概念

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。操作系统分为

• 内核(进程管理,内存管理,⽂件管理,驱动管理)• 其他程序(例如函数库,shell(前面提过)程序等等)

安卓就是使用了Linux的内核

printf的本质是自己把自己的数据写到了硬盘 显示屏

2.2 设计OS的目的

对下,与硬件交互,管理所有的软硬件资源(手段而非目的)对上,为⽤⼾程序(应⽤程序)提供⼀个良好的执⾏环境(目的)
访问操作系统,就必须调用系统函数--本质就是库,只不过是系统提供

2.3 核心功能

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

2.4 如何理解"管理"

先描述再组织

举例子 校长 :管理者

        辅导员:执行者

         学生:被管理者

对于成千上万的学生的多项数据,校长先对学生数据进行描述,然后再进行管理,对学生的指令交给辅导员来执行

如:校长就是程序员,辅导员就是操作系统,学生就是数据,程序员先用类 结构体等进行描述,然后再用stl等数据结构进行组织,对数据的增删查改对交给操作系统执行

2.5 理解系统调用

操作系统要向上提供相应的服务,但操作系统又不相信任何人和用户

举例子理解

银行就是一个典型例子,银行要对人们提供服务,但又不相信任何人(不会让你进钱库进行存钱于取钱),而是让你在前台的小窗与工作人员交流操作

Read more

Redis 核心数据结构:String 类型深度解析与 C++ 实战

Redis 核心数据结构:String 类型深度解析与 C++ 实战

Redis 核心数据结构:String 类型深度解析与 C++ 实战 前言 在当今数据驱动的世界里,Redis 以其卓越的性能和丰富的数据结构,已成为内存数据库领域的翘楚。无论是作为高速缓存、消息队列,还是分布式锁的实现方案,Redis 的身影无处不在。而在 Redis 提供的所有数据结构中,String 类型无疑是基石中的基石。它不仅是构建其他复杂结构的基础,其自身强大的命令集也足以应对各种复杂的业务场景。 本文将以广受欢迎的 C++ Redis 客户端库 redis-plus-plus 为实战工具,系统性地、由浅入深地剖析 Redis String 类型的核心命令。我们将从最基础的 SET 和 GET 操作讲起,逐步探索包括过期时间设置、条件更新、批量操作、子字符串处理以及原子计数器在内的各种高级用法。 本文旨在为您提供一份不仅包含“如何做”,更解释“为什么这么做”的详尽指南。我们将深入探讨 redis-plus-plus

By Ne0inhk
C++的核心--继承

C++的核心--继承

目录 前言 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 (一)单继承与多继承 (二)菱形继承 (三)菱形虚拟继承 八、继承的总结和反思 结语 前言 在C++ 编程世界里,继承是一项极为关键的特性,它为代码的复用和层次化设计提供了强大支持。掌握继承机制,对于编写高效、可维护的C++ 代码至关重要。今天,就让我们一起深入探究C++ 中的继承。 一、继承的概念及定义 继承是面向对象程序设计实现代码复用的重要手段。它允许我们在保持原有类特性的基础上进行扩展,产生新的类,即派生类。这体现了面向对象程序设计的层次结构,从简单到复杂逐步构建。 定义格式上,以 class Student : public

By Ne0inhk
C++ 网络编程详解(全集超详细)

C++ 网络编程详解(全集超详细)

一、网络编程基础 1. 计算机网络体系结构 OSI七层模型 OSI(Open Systems Interconnection)七层模型是一个理论上的网络通信框架,由国际标准化组织(ISO)提出。它将网络通信分为七个层次,每一层都有特定的功能和协议: 1. 物理层(Physical Layer) * 负责传输原始比特流(0和1)。 * 定义物理介质(如电缆、光纤)的特性,如电压、传输速率等。 * 典型协议:Ethernet(物理层部分)、RS-232。 2. 数据链路层(Data Link Layer) * 将比特流组织成帧(Frame),并进行错误检测(如CRC校验)。 * 管理物理地址(MAC地址)和局域网(LAN)通信。 * 典型协议:Ethernet(MAC层)、PPP。 3.

By Ne0inhk
【Linux系统】C/C++的调试器gdb/cgdb,从入门到精通

【Linux系统】C/C++的调试器gdb/cgdb,从入门到精通

各位读者大佬好,我是落羽!一个坚持不断学习进步的学生。 如果您觉得我的文章还不错,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页:落羽的落羽 文章目录 * 一、调试前的预备知识 * 二、gdb/cgdb的使用 * 1. 启动,查看代码 * 2. 基础调试命令 * 3. 监视变量相关命令 * 4. 设置条件断点 一、调试前的预备知识 程序发布的方式有两种,debug模式和release模式。 * debug模式:生成的可执行程序中会包含程序的调试信息,便于程序员进行调试代码。 * release模式:会剥离或不生成这些调试信息。这使得文件更小,但也意味着调试器几乎无法工作,release版本程序无法进行调试。 Linux的gcc/g++,按照我们之前的写法gcc -o $@ $^,默认生成的是release版本的程序,是无法进行调试的。要在命令后加-g选项,指定以debug方式发布,debug模式下的程序我们才能进行调试。 gcc -o $@ $^ -g 二、gdb/cgdb的使用

By Ne0inhk