• 计算机是怎么跑起来的



    计算机是如何工作的?探索主内存,以DDR5为例
    一直是关注软件方面比较多,抱着从硬件角度梳理一下思路的愿望翻阅此书,结果被前言的“今天,计算机正在以惊人的速度发展变化着,变得越来越复杂,而这期间产生了许多技术,但是人们并没有过多的时间去深入学习每一门技术,这就是问题的根源。稍微看了看技术手册,只学到了表层的使用方法,觉得自己“反正已经达到目的了”,这就是现状”直接拉进坑现在这么多《21天精通xx》,到头来还是给我国人对于效率追逐下的急功近利。
    虽然此书写于2003年,作为日新月异的IT业,很多描述确实过时了,但是我赞同作者的一点就是:做学问有三点知识范围基础中的基础知识目标。层出叠现的新兴技术是学问的“应用层”,而经过这么多年还没有改变的才是“基础层”,这才是根基,而我觉得这本书讲的如是也,而这也是此书称为经典的缘由。
    下面是个人笔记精华和章节核心要点的梳理:

    第1章 “计算机的三大原则”。

    原则1:计算机只能够做输入、运算、输出三种操作
    原则2:程序是指令和数据的集合
    原则3:计算机有自己的处理方法(对计算机来说什么都是数字)
    硬件由大量IC(集成电路)组成;函数(方法、语句、子例程(无返回值)、子程序(有返回值));•Net(xmlsoap);面向组件编程的方法是通过将组件(程序的零件)组装到一起完成程序;面向对象编程的方法是先如实地对现实世界的业务建模,之后再把模型搬到程序中;

    第二章《微机原理》

    cpu、内存、i/o、电源、电路、时钟发生器/信号clk、
    数据/地址总线、控制引脚、外部设备(DMA直接存储器访问控制)

    第三章《汇编语言》

    机器语言 汇编语言
    cpu寄存器(a累加器f标志寄存器 bc de hl ix iy sp栈顶指针 pc程序指针 程序就是依靠不断变化的PC寄存器Program Counter的值运行起来的)
    i/o寄存器 (「0」端口a数据寄存器、「1」端口b数据寄存器、「2」端口a控制寄存器、「3」端口b控制寄存器)207、255、0
    在内存中,每个地址的功能都一样,既可用于存储指令又可用于存储数据。
    而I/O则不同,地址编号不同(即寄存器的类型不同),功能也就不同
    指令的分类,按功能这些指令可以分成运算、与内存的输入输出和与I/O的输入输出三类
    机器语言=地址+汇编语言
    根据CPU种类的不同,有的CPU使用大端序,有的CPU使用小端序(将数据由高位到低位顺序地存储到内存的存储顺序则叫作“大端序”(Big Endian))
    JP LOOP 跳转指令

    第四章 程序流程

    三种:顺序、条件分支、循环
    特殊:中断处理(特殊条件分支)、事务驱动
    流程图、
    在这些高级语言中,程序员使用“程序块”表示循环而不是跳转指令
    根据比较操作的结果,跳转到之前处理过的步骤就是循环;跳转到之后尚未处理的步骤就是条件分支
    所谓结构化程序设计就是“为了把程序编写得具备结构性,仅使用顺序执行、条件分支和循环表示程序的流程即可,而不再使用跳转指令”
    作为计算机硬件上的行为,无论是条件分支还是循环都必须使用跳转指令实现
    中断处理:以硬件形式连接到CPU上的I/O模块会发出中断请求信号,CPU根据该信号执行相应的中断处理程序。在诸位使用的个人计算机上,中断请求信号是由连接到周边设备上的I/O模块发出的
    事务驱动:用事件驱动的方式编写那些工作在GUI(Graphical User Inteface,图形用户界面)环境中的应用程序,事件驱动是一种适用于GUI环境的编程风格,在这种环境中用户可以通过鼠标和键盘来操作应用程序
    顺序:CPU中的PC寄存器的值会自动更新
    条件分支和循环:在高级语言中用程序块表示,在机器语言和汇编语言中用跳转指令表示,在硬件上是通过把PC寄存器的值设为要跳转到的目的地的内存地址来实现

    第五章 算法

    辗转相除法(最大公约数)、哨兵(一种含有特殊值的数据,可用于标识数据的结尾等)、最大公倍数:两数乘积除以最大公倍数
    典型算法
    算法:步骤明确有限、机械非直觉、终止结果明确
    编程优化、计算机处理速度、数字规律、先在纸上写算法

    第六章 《数据结构》

    内存、变量、数组(ds基础)、典型ds:栈、队列、结构体、链表、二叉树
    变量:是数据的容器,实质是按照变量所存储数据的大小被分配到的一块内存空间。
    数组:可以高效地处理大量的数据。数组的实质是连续分配的一块特定大小的内存空间。
    在内存中存储数据的空间是连续分布的
    数组是数据结构的基础,只要使用数组就能通过程序实现各种各样的算法以处理大量的数据。通常把像变量i这样的用于记录循环次数的变量称为循环计数器(Loop Counter)。数组之所以方便,就是因为可以把循环计数器的值与数组的索引对应起来使用。
    二叉树多用于实现那些用于搜索数据的算法,比如“二分查找法”。比起只使用链表,使用二叉树能够更快地找到数据

    第七章 面向对象

    c++、java、c#(被命名为C++,是因为C++在C语言的基础上增加了面向对象的机制这一点。另外,将C++进一步改良的编程语言就是Java和C#语言)
    面向对象编程通过把组件拼装到一起构建程序:可以说类就是程序的组件(Component)。面向对象编程的关键在于能否灵活地运用类
    能够提升程序的开发效率和可维护性

  • 相关阅读:
    算法通关村第17关【青铜】| 贪心
    Selenium选择器小结
    linux 通过拷贝所有oracle文件进行数据库恢复
    Nginx 同一端口下部署多个 Vue3 项目
    小程序很少很少
    网络隔离环境下的跨网数据传输,如何保障安全性?
    【开源三方库】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的组件框架
    嵌入式低功耗WiFi设备保活功耗分析
    【毕业设计】深度学习 python opencv 动物识别与检测
    SpringBoot集成swagger
  • 原文地址:https://blog.csdn.net/qq_43813373/article/details/126758095