asp.net 网站 相册,建设网站的情况说明,网站 建设服务器,百度seo什么意思一、相关概念
1.机器语言 机器语言#xff08;Machine Language#xff09;是一种计算机程序语言#xff0c;由二进制代码#xff08;0和1#xff09;组成#xff0c;可被计算机直接执行。机器语言是计算机硬件能够理解和执行的唯一语言。 机器语言通常由一系列的指令组…一、相关概念
1.机器语言 机器语言Machine Language是一种计算机程序语言由二进制代码0和1组成可被计算机直接执行。机器语言是计算机硬件能够理解和执行的唯一语言。 机器语言通常由一系列的指令组成每个指令都有其特定的操作码Opcode和操作数Operand。操作码指示计算机要执行的操作类型例如加法、乘法、跳转等而操作数则指示操作所涉及的数据。 2.汇编语言 汇编语言Assembly Language是一种计算机程序语言与机器语言密切相关但使用更具可读性的文本格式进行编写。汇编语言的指令通常与机器语言指令一一对应但是用易于理解的文本助记符Mnemonic来表示。 与机器语言相比汇编语言的语法更加高级因此编写和调试汇编语言程序通常比编写机器语言程序更容易。使用汇编语言编写的程序通常可以更加高效地运行因为程序员可以更好地控制计算机硬件的细节但也需要更多的时间和精力。 汇编语言程序需要经过汇编器Assembler的转换才能变成机器语言程序。汇编器将汇编语言指令转换为等效的机器语言指令以便计算机可以理解和执行。由于不同的计算机体系结构可能有不同的指令集和汇编语言语法因此汇编语言程序不具有可移植性。 关系
机器语言01---助记符---汇编语言
汇编语言由以下3类组成 1、汇编指令(机器码的助记符) 2、伪指令(由编译器执行) 3、其它符号(由编译器识别) 注意 指令和数据是应用上的概念。 在内存或磁盘上指令和数据没有任何区别都是二 进制信息。 3.进制
进制的本质
进制的本质思想是使用有限数量的符号数字来表示无限数量的数字。即查数
进制的运算
运算的本质即查数 加法 乘法 除法 4.数据宽度 数据宽度Data Width是指计算机处理器能够同时处理的位数或字节数。例如32位计算机处理器可以同时处理32位4字节的数据而64位计算机处理器可以同时处理64位8字节的数据。 数据宽度对于计算机处理数据的速度和精度有着重要的影响。较大的数据宽度通常能够提供更高的计算性能和精度因为更多的数据可以同时被处理从而减少了处理器需要执行的指令数。同时更大的数据宽度还可以支持更大的内存地址空间和更高的带宽从而提高了 5.有符号数和无符号数的理解 6.位运算的理解
位运算Bitwise operation是一种操作二进制位的运算它直接对二进制数的每一位进行操作而不考虑它们所代表的数值。位运算通常用于计算机底层的操作和优化如处理掩码、位域、加密和压缩等。位运算是一种非常基础和有用的运算方式能够用于计算机底层的优化和实现也可以用于高级的数据处理和算法设计。 常见的位运算符包括 按位与两个操作数的对应位都为1时结果为1否则为0。 按位或|两个操作数的对应位都为0时结果为0否则为1。 按位异或^两个操作数的对应位不同时结果为1否则为0。 按位取反~对操作数的每一位取反0变为11变为0。 左移将操作数的二进制表示向左移动指定位数右侧用0填充。 右移将操作数的二进制表示向右移动指定位数左侧用原始值的符号位填充。 位运算的一个重要应用是使用位掩码bit mask进行位操作以实现对特定位的控制和操作。位掩码是一个用于选定某些位并清除其他位的二进制掩码。
加法使用异或运算^和与运算来实现。首先对两个操作数进行异或运算然后对两个操作数进行与运算将结果左移一位再将异或运算的结果和这个结果相加直到与运算的结果为0为止
45 减法使用补码运算来实现。首先将减数取反然后将它与被减数相加再将结果取反就得到了减法的结果。 乘法使用位移和加法来实现。将乘数分解成若干个二进制位然后根据每个二进制位上的值来进行位移和加法运算
除法使用位移、减法和加法来实现。将被除数和除数都转换为二进制形式然后用被除数减去若干个除数的和直到被除数小于除数为止。 7.汇编环境说明 8.通用寄存器 寄存器是计算机内部的一种存储设备它可以存储和操作一些特定类型的数据。通用寄存器是计算机中用于一般目的的寄存器通常用来存储整数、地址等数据。通用寄存器在计算机内部使用的频率很高是指令集中的核心部分。 在计算机中CPU会将数据从内存中加载到寄存器中进行处理再将结果写回到内存中。通用寄存器的数量和名称可以因CPU的架构而异例如x86架构的CPU有8个通用寄存器分别是eax、ebx、ecx、edx、esi、edi、ebp和esp每个寄存器的大小为32位。 通用寄存器可以用于存储计算中的中间结果从而减少内存访问的次数提高计算速度。此外通用寄存器还可以用于函数调用、参数传递等方面提高程序的运行效率。在程序设计时需要考虑通用寄存器的使用以最大限度地提高程序的性能。
9.内存 内存是计算机中用于存储数据和程序指令的物理硬件设备。内存可以被视为计算机的大脑它是计算机中最重要的组成部分之一。 内存分为随机存储器RAM和只读存储器ROM两种类型。RAM 是一种易失性内存它可以读写并且在计算机关闭电源后数据会被清除。ROM 是一种非易失性内存只能读取数据不会被清除。 内存的主要功能是存储数据和程序指令计算机的中央处理器CPU从内存中读取数据和指令进行运算和处理。内存的大小决定了计算机可以同时存储和处理的数据和指令的数量和复杂度。 在计算机运行程序时操作系统会将程序和数据加载到内存中。程序的执行需要使用内存当程序需要更多内存时操作系统会动态地分配更多内存直到内存耗尽为止。 内存的速度很快但容量有限。因此程序员需要注意内存的使用避免浪费和内存泄漏以免影响程序的性能和稳定性。 内存如何存值 内存是计算机中用来存储数据和程序指令的设备。内存通常由一系列连续的存储单元组成每个存储单元都有一个唯一的地址可以用来标识和访问该单元。 内存中的值存储在这些存储单元中。要将一个值存储在内存中首先需要确定要存储的值的数据类型和大小。根据数据类型和大小可以确定需要分配多少个存储单元来存储该值。 例如一个整数通常需要四个字节32位因此需要分配四个连续的存储单元来存储它。在存储值之前需要将值转换为二进制格式然后按顺序将每个二进制位存储在对应的存储单元中。 当程序需要访问存储在内存中的值时它需要知道该值存储的地址。程序可以使用变量或指针来跟踪值的地址。通过将地址传递给内存管理单元程序可以读取或写入存储在该地址处的值。 存储单元
CPU对存储器的读写
在计算机中专门有连接CPU和其他芯片的导线通常称为总线。、 CPU是通过地址总线来指定存储单元的。地址总线上能传送多少个不同的信息CPU就可以对多少个存储单元进行寻址。 一个CPU有N根地址总线则可以说这个CPU的地址总线的宽度为N。 这样的CPU最多可T以寻找2的N次方个内存单元。数据总线的宽度决定了CPU和外界的数据传送速度。 CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称控制总线是一 些不同控制线的集合。 有多少根控制总线就意味着CPU提供了对外部器件的多少种控制。 所以控制总线的宽度决定了CRU对外部器件的控制能力。读或写 内存地址空间
对CPU来讲系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中它的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。 10.存储器芯片 二、底层原理
1.计算机的组成 2.存储器的层次结构
java-class-jvm(bite code)-os-汇编语言-CPU
3.进程和线程
进程和线程都是操作系统中的基本概念用于实现多任务处理和并发执行。 进程是一个正在运行的程序的实例。每个进程都拥有自己的内存空间、数据和状态它们之间相互独立互不影响。一个进程可以包含多个线程每个线程都是进程中的一个独立执行流程可以共享进程的内存空间和资源。 线程是进程中的一个独立执行流程每个线程拥有自己的栈、程序计数器和寄存器等寄存器状态但它们共享进程的内存空间和资源这包括代码、数据、文件、网络连接等。线程可以独立执行也可以与其他线程协作完成任务。 相比较而言线程更加轻量级创建和销毁的代价更小并且能够更快地切换执行状态因此多线程技术在实现并发处理和提高系统性能方面有着重要的作用。但同时多线程也会引入一些并发问题如死锁、竞态条件等需要开发者小心处理。 4.多核CPU CPU内存的三级缓存分别为L1缓存、L2缓存和L3缓存它们都是用来加速CPU读写内存的。 L1缓存位于CPU内部是CPU中最小且最快的缓存它通常包含指令缓存和数据缓存两部分。L1缓存的大小通常为几十KB它可以在一个CPU周期内完成一次读写操作因此它能够提供非常快的响应速度但是由于其容量较小容易产生缓存未命中的情况。 L2缓存位于CPU内部或CPU芯片附近通常是共享的多个CPU核心可以共用同一个L2缓存。L2缓存的容量一般为几百KB或几MB速度比L1缓存慢一些但比内存快得多可以在数个CPU周期内完成一次读写操作。 L3缓存位于CPU芯片外部通常是多个CPU核心共享的它的容量可以达到数十MB甚至几百MB速度比内存略快一些但比L2缓存慢得多。L3缓存的作用是为多个CPU核心提供一个共享的缓存可以减少CPU之间的竞争提高整个系统的性能。 三级缓存的层次结构可以通过缓存控制器来实现。在读写数据时CPU首先会查找L1缓存如果缓存未命中则会查找L2缓存最后才会访问内存。如果L3缓存存在则L2缓存会先查找L3缓存如果L3缓存也未命中则才会访问内存。由于缓存速度比内存快得多因此尽可能地利用缓存可以大大提高系统的性能。 CPU的缓存一致性协议是一组规则用于确保多个CPU的缓存中的数据在多核系统中保持一致。这些协议的主要目的是避免多个CPU访问相同的内存位置时发生数据不一致的情况。 其中最常见的缓存一致性协议是MESI协议该协议由四个状态表示缓存行的不同状态 修改Modified表示缓存行已被修改并且与主存中的数据不一致。 独占Exclusive表示缓存行已被读入但未被修改并且是唯一一个拥有该缓存行的CPU。 共享Shared表示缓存行已被读入但未被修改并且与其他CPU共享。 无效Invalid表示缓存行已被标记为无效即该缓存行未被读入或已被修改。 当一个CPU想要读取或写入某个内存位置时它会首先检查缓存行的状态然后根据状态执行相应的操作。如果缓存行的状态为“共享”则其他CPU可以读取该缓存行。如果缓存行的状态为“修改”则其他CPU必须从该CPU中获取最新的数据或者等待该CPU将数据刷新到主存中。 在多核系统中缓存一致性协议是非常重要的因为它可以确保所有CPU访问的数据是一致的避免了不一致的情况。缓存一致性协议也可以提高系统的性能因为它允许多个CPU同时访问相同的内存位置而无需等待其他CPU完成操作。
ordering程序的排列组合
指令是可以重排的
5.JVM内存屏障 JVM内存屏障Memory Barrier是一种同步机制用于确保多线程程序中的内存可见性和有序性。在多线程程序中由于线程之间的指令重排、缓存一致性等问题会导致共享变量的值在不同线程之间出现不一致的情况。内存屏障可以解决这些问题保证程序的正确性和可靠性。 在JVM中内存屏障分为读屏障和写屏障两种。读屏障读屏障用于确保内存可见性它保证在读操作之前的所有写操作都已经完成防止出现脏读的情况。在JVM中读屏障通过volatile关键字来实现。 写屏障写屏障用于确保内存有序性它保证写操作的顺序与程序代码的顺序一致防止出现写操作顺序不一致的情况。在JVM中写屏障通过synchronized关键字和Lock类来实现。 内存屏障的作用是保证程序的正确性和可靠性在多线程编程中非常重要。开发者需要注意在使用内存屏障时要遵循正确的规范和使用方法否则可能会产生意想不到的错误。同时在编写多线程程序时也要尽量避免使用共享变量以减少内存屏障的使用提高程序的性能和效率。