Linux底层基础知识
一.汇编,C语言,C++,JAVA之间的关系
汇编,C语言,C++可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C,Linux等编写而成的一个操作系统(面向os)
不同的芯片,底层的CISC指令集不同,所以其机器码有区别,因此汇编不能跨平台。特定的CPU下只能执行特定的机器码。Java生成字节码,只有Java虚拟机识别,Java虚拟机跨平台,因此Java跨平台。
二.CPU架构,指令集,汇编,硬编码之间的关系
CPU架构
1.CISC(复杂指令集)
- Intel芯片
2.RISC(精简指令集)
1.ARM芯片
- 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缓存和内存是计算机系统中不同层级的存储设备,它们之间有着紧密的关系。
- 寄存器(Registers):寄存器是位于CPU内部的存储设备,用于暂存和快速访问数据和指令。寄存器是CPU执行指令所必需的组成部分。它们具有非常快速的访问速度,但容量相对较小。寄存器通常由硬件设计者定义和使用。
- CPU缓存(CPU Cache):CPU缓存是位于CPU内部的高速缓存存储器,用于提高CPU和主内存之间的数据传输效率。它通过在CPU和主内存之间建立缓存层,存储频繁访问的数据和指令,以提供更快的访问速度。常见的CPU缓存包括L1缓存、L2缓存和L3缓存等级别,容量逐级增大而访问速度逐级降低。
- 内存(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底层知识的一些主要方面。要深入了解这些主题,可以通过阅读相关的操作系统教材、内核文档、技术博客和参与开源社区等途径进行学习和实践。
相关文章:

Linux底层基础知识
一.汇编,C语言,C,JAVA之间的关系 汇编,C语言,C可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C,…...

JUC并发编程--------线程安全篇
目录 什么是线程安全性问题? 如何实现线程安全? 1、线程封闭 2、无状态的类 3、让类不可变 4、加锁和CAS 并发环境下的线程安全问题有哪些? 1、死锁 2、活锁 3、线程饥饿 什么是线程安全性问题? 我们可以这么理解&#…...

机器视觉之Basler工业相机使用和配置方法(C++)
basler工业相机做双目视觉用,出现很多问题记录一下: 首先是多看手册:https://zh.docs.baslerweb.com/software 手册内有所有的源码和参考示例,实际上在使用过程中,大部分都是这些源码,具体项目选择对应的…...

Centos nginx配置文档
1、安装nginx: yum install nginx 2、Nginx常用命令 查看版本:nginx -v 启动:nginx -c /etc/nginx/nginx.conf 重新加载配置:nginx -s reload 停止:nginx -s stop 3、Nginx反向代理配置 nginx配置详解 1、Nginx配置图 详情可以查看:http://nginx.org/ru/docs/example…...

2023/9/14 -- C++/QT
作业: 仿照Vector实现MyVector,最主要实现二倍扩容 #include <iostream>using namespace std;template <typename T> class MyVector { private:T *data;size_t size;size_t V_capacity; public://无参构造MyVector():data(nullptr),size(…...
golang在goland编译时获取环境变量失效
在golang中, 我们通常使用os包来获取环境变量,如: os.Getenv() os.LookupEnv() 等。 但如果我们使用goland编译器,在编译是,这时操作环境变量,会发现os包读取到的环境变量值不变: 新增后&am…...

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了
一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了。 在互联网数据大爆炸的这几年,各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的…...

蓝桥杯 题库 简单 每日十题 day3
01 约数个数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 1200000 有多少个约数(只计算正约数)。 解题思路 枚举,从1开始一直到1200000本身都作为1200000的除数,…...

基于SSM+Vue的高校实验室管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

C语言天花板——指针(初阶)
🌠🌠🌠 大家在刚刚接触C语言的时候就肯定听说过,指针的重要性以及难度等级,以至于经常“谈虎色变”,但是今天我来带大家走进指针的奇妙世界。🎇🎇🎇 一、什么是指针&…...

关于第一届全球电子纸创新应用金奖征集评选及报名指南
重要通知 |关于第一届全球电子纸创新应用金奖征集评选及报名指南https://mp.weixin.qq.com/s/RWsZtmJ20-NZXMG0k0rwPA?wxwork_useridEPIA 从2004年,Sony推出全球首款电纸书阅读器至今20载,这期间,到底诞生了多少种创新产品&#…...
idea搭建项目找不到Tomcat
idea搭建项目找不到Tomcat_idea没有tomcat配置项_ZYRL的博客-CSDN博客...

类和对象三大特性之继承
全文目录 继承的概念定义格式继承关系和访问限定符final 基类和派生类对象赋值转换继承中的作用域派生类的六个默认成员函数构造函数拷贝构造函数operator析构函数 友元和静态成员友元静态成员 各种继承形式菱形继承虚继承菱形虚拟继承对象模型 继承和组合 继承的概念 通过继承…...

Debian 12安装Docker
1.更新系统包 #apt update 2.安装依赖包 #apt install apt-transport-https ca-certificates curl gnupg lsb-release 3.添加Docker源 (1)添加Docker 官方GPG密钥 #curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/s…...

小谈设计模式(4)—单一职责原则
小谈设计模式(4)—单一职责原则 专栏介绍专栏地址专栏介绍 单一职责原则核心思想职责的划分单一变化原则高内聚性低耦合性核心总结 举例图书类(Book)用户类(User)图书管理类(Library)…...

ATF(TF-A) EL3 SPMC威胁模型-安全检测与评估
安全之安全(security)博客目录导读 ATF(TF-A) 威胁模型汇总 目录 一、简介 二、评估目标 1、数据流图 三、威胁分析 1、信任边界 2、资产 3、威胁代理 4、威胁类型 5、威胁评估 5.1 端点在直接请求/响应调用中模拟发送方FF-A ID 5.2 端点在直接请求/响应调用中模拟…...

AI绘画Stable Diffusion原理之扩散模型DDPM
前言 传送门: stable diffusion:Git|论文 stable-diffusion-webui:Git Google Colab Notebook部署stable-diffusion-webui:Git kaggle Notebook部署stable-diffusion-webui:Git AI绘画,输入一段…...

NSS [西湖论剑 2022]real_ez_node
NSS [西湖论剑 2022]real_ez_node 考点:ejs原型链污染、NodeJS 中 Unicode 字符损坏导致的 HTTP 拆分攻击。 开题。 附件start.sh。flag位置在根目录下/flag.txt app.js(这个没多大用) var createError require(http-errors); var express require(express); v…...

MySQL常用函数集锦 --- 字符串|数值|日期|流程函数总结
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、字符…...

GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
文章目录 前言一、关于数据仓库需求场景分类二、数据仓库线下部署场景2.1、线下部署场景介绍及优劣势说明2.2、线下部署场景对应的客户需求 三、数据仓库公有云部署场景3.1、公有云部署场景介绍及优劣势说明3.2、公有云部署场景对应的客户需求 四、为何重视数据共享(…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...