Linux底层基础知识

一.汇编,C语言,C++,JAVA之间的关系

汇编,C语言,C++可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C,Linux等编写而成的一个操作系统(面向os)

不同的芯片,底层的CISC指令集不同,所以其机器码有区别,因此汇编不能跨平台。特定的CPU下只能执行特定的机器码。Java生成字节码,只有Java虚拟机识别,Java虚拟机跨平台,因此Java跨平台。

二.CPU架构,指令集,汇编,硬编码之间的关系

CPU架构

1.CISC(复杂指令集)

  1. Intel芯片

2.RISC(精简指令集)

1.ARM芯片

  1. Mac M1、M2芯片

相同的CPU架构,不同OS,汇编不一样,机器码一样

CISC的优点:

1.复杂指令:CISC允许在单条指苓执行多个低级操作,例加载值、进行算术运算和将结 果存储回内存,这在一定程度上可以减少需要的指令数量。

2.节省内存:由于单个指令可以执行多个操作,所以CISC可以减少对内存的使用。

3.易于编译:由于CISC的指令集更接近于高级语言,编译器可以更容易地将高级语言代码翻 译为机器代码。

CISC的缺点:

1.硬件复杂性:由于指令集的复杂性,CISC架构的处理器在硬件实现上通常会更复杂。

2.功耗较高:由于硬件复杂性,CISC处理器可能需要更多的电力来执行指令。

3.性能:复杂的指令可能需要多个时钟周期来执行,这可能影响到性能。

三.ASM、NASM、ATT、ARM之间的关系

MASM、NASM、ATT和ARM是与汇编语言相关的术语和工具。

MASM(Microsoft Macro Assembler)是微软开发的汇编语言编译器,用于x86架构的处理器。

NASM(Netwide Assembler)是一种开源的汇编语言编译器,支持多种处理器架构,包括x86和ARM。

ATT(AT&T Syntax)是一种汇编语言的语法风格,常用于UNIX系统和GNU工具链。

ARM(Advanced RISC Machines)是一种处理器架构,广泛应用于移动设备和嵌入式系统。

总结一下,MASM和NASM是汇编语言编译器,用于编写汇编语言程序。ATT是一种汇编语言的语法风格,可以与不同的汇编语言编译器一起使用。ARM是一种处理器架构,可以使用不同的汇编语言编写程序。
Linux是一个开源操作系统内核,它可以运行在多种不同的架构上,包括但不限于:

  • x86架构:包括Intel和AMD的处理器,如x86-64(64位)和x86(32位)。
  • ARM架构:广泛应用于移动设备和嵌入式系统,如ARMv7和ARMv8。
  • Power架构:用于IBM Power Systems服务器和一些嵌入式系统。
  • MIPS架构:用于一些嵌入式系统和网络设备。
  • SPARC架构:用于Oracle的SPARC服务器。
  • RISC-V架构:一个开源的指令集架构,逐渐得到广泛采用。
    总之,Linux是一个多架构的操作系统内核,可以在多种不同的处理器架构上运行。

四.寄存器、CPU缓存、内存之间的关系

寄存器、CPU缓存和内存是计算机系统中不同层级的存储设备,它们之间有着紧密的关系。

  1. 寄存器(Registers):寄存器是位于CPU内部的存储设备,用于暂存和快速访问数据和指令。寄存器是CPU执行指令所必需的组成部分。它们具有非常快速的访问速度,但容量相对较小。寄存器通常由硬件设计者定义和使用。
  2. CPU缓存(CPU Cache):CPU缓存是位于CPU内部的高速缓存存储器,用于提高CPU和主内存之间的数据传输效率。它通过在CPU和主内存之间建立缓存层,存储频繁访问的数据和指令,以提供更快的访问速度。常见的CPU缓存包括L1缓存、L2缓存和L3缓存等级别,容量逐级增大而访问速度逐级降低。
  3. 内存(Memory):内存是用于存储程序和数据的设备,它通常指的是主内存(RAM)。内存提供了比寄存器和缓存更大的存储容量,但访问速度相对较慢。CPU从内存中读取指令和数据,并将计算结果写回内存。

关系:寄存器、CPU缓存和内存都是计算机系统中不同层级的存储设备。寄存器作为最快的存储设备,存储着CPU的工作数据和指令。CPU缓存作为CPU的高速缓存存储器,存储了频繁访问的数据和指令。而内存作为存储器的最大部分,存储了程序和数据,但访问速度相对较慢。在计算过程中,CPU会尽量从寄存器和缓存中获取数据,以提高执行速度,当数据不在寄存器和缓存中时,才会从内存中读取或写入数据。因此,寄存器、CPU缓存和内存共同协作,提供了不同层级的存储器层次结构,以满足计算机系统对存储和访问的需求。

当程序执行时,CPU首先从内存中加载指令和数据到寄存器或缓存中进行操作。寄存器提供了最快速的访问速度,因为它们直接位于CPU内部。CPU会频繁地使用寄存器来执行计算、存储中间结果和控制程序的状态。

然而,寄存器的数量有限,容量也比较小。当寄存器无法容纳全部数据时,CPU会使用缓存。缓存通常分为几个层级,以便根据访问频度和访问模式来优化数据的存储和访问。缓存是位于CPU和内存之间的快速存储器,其目的是减少CPU访问内存的次数,提高访问速度。

最后,内存是存储程序和数据的主要设备,它具有较大的容量,但相比寄存器和缓存,访问速度较慢。当寄存器和缓存不能满足CPU需要的数据时,CPU会从内存中读取或写入数据。

总结来说,寄存器、CPU缓存和内存之间的关系是:寄存器提供了最快速的数据存储和访问,缓存作为介于寄存器和内存之间的高速存储器,提供了更大容量的存储和快速的访问,而内存则是存储程序和数据的主要设备,容量最大但访问速度最慢。它们共同协作,以满足计算机系统的存储和访问需求。

寄存器分类

Linux底层知识涉及操作系统的基本概念、内核、文件系统以及与硬件的交互等内容。以下是一些与Linux底层知识相关的主题:

  1. 操作系统基础:了解操作系统的概念、组成部分和基本功能,包括进程管理、内存管理、文件系统等。

  2. 内核:Linux内核是操作系统的核心,负责管理系统资源、控制进程和提供系统调用接口。了解内核的结构、模块、调度器和驱动程序等是重要的底层知识。

  3. 文件系统:Linux使用各种文件系统来管理存储设备上的数据。常见的文件系统包括EXT4、Btrfs、XFS等。了解文件系统的层次结构、文件组织方式以及文件权限和扩展性等是必要的。

  4. 设备驱动程序:了解设备驱动程序是如何与硬件交互的,包括字符设备、块设备和网络设备驱动程序的编写和加载过程。

  5. 系统启动过程:了解Linux系统的启动过程,包括BIOS/UEFI引导、引导加载程序(如GRUB)、内核启动和初始化过程等。

  6. 内存管理:学习操作系统如何管理内存,包括虚拟内存、分页和分段机制、物理内存管理等。

  7. 进程管理:了解进程的概念、进程控制块、线程和进程调度算法等,以及相关的系统调用和工具。

  8. 网络管理:包括网络协议栈、网络设备驱动程序、网络配置和管理等底层网络知识。

  9. 性能优化和故障排查:学习如何分析和优化系统性能,以及如何排查和解决常见的系统故障和错误。

这只是Linux底层知识的一些主要方面。要深入了解这些主题,可以通过阅读相关的操作系统教材、内核文档、技术博客和参与开源社区等途径进行学习和实践。

相关推荐
大树882 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 小时前
Linux 11 动态监控指令top
linux
Inhand陈工4 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩5 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_5 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈5 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix