计算机基础
文章平均质量分 90
讲解计算机系统原理,从底层了解计算机运行机制。
猩火燎猿
互联网大厂架构,知识传递,互通有无!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计算机系统虚拟内存
虚拟内存是一种扩展物理内存的技术,通过分页机制将磁盘空间作为辅助存储,使进程能使用比实际内存更大的地址空间。其核心是地址转换和页面置换:硬件通过页表将虚拟地址映射到物理地址,当访问不在内存中的页面时触发缺页异常,由操作系统调入所需数据。虚拟内存支持内存隔离、多任务和高效管理,但频繁的磁盘交换会导致性能下降(抖动)。现代系统采用多级页表、TLB快表和大页技术优化性能,并通过LRU等算法管理页面置换。原创 2025-11-01 00:15:00 · 1117 阅读 · 0 评论 -
计算机基础(四) 计算机存储器层次结构
计算机存储器层次结构通过分层组织(寄存器、缓存、主存、辅助存储等)实现性能与成本的平衡,遵循局部性原理提升访问效率。关键点包括:1)多级缓存管理(L1/L2/L3 Cache)的映射与替换策略;2)虚拟内存实现机制(页表、置换算法);3)性能优化技术(数据局部性、预取、对齐等)。典型问题如缓存命中率、伪共享、TLB缺失等可通过代码实验(矩阵遍历、多线程结构体访问)和工具(perf、VTune)进行分析。原创 2025-10-22 00:15:00 · 907 阅读 · 0 评论 -
计算机基础(三)计算机算术和逻辑操作
本文系统介绍了计算机中的算术与逻辑操作原理及应用。算术运算部分详细讲解了整数和浮点数的二进制运算方法,包括补码表示、加减乘除及其硬件实现;逻辑运算部分阐述了与、或、非、异或等基本位操作及其应用技巧。特别强调了补码系统的优势,以及位运算在算法优化、状态压缩等方面的实际应用。文章还提供了大量代码示例,包括补码运算、位操作技巧、浮点数处理等,并深入探讨了这些操作在计算机底层硬件中的实现原理。最后总结了位运算在解决经典算法问题中的高效应用,如统计1的个数、交换变量、判断2的幂等。原创 2025-10-21 00:15:00 · 733 阅读 · 0 评论 -
SendFile详解
sendfile是一种操作系统提供的零拷贝技术,用于高效传输文件数据。它通过在内核空间直接将文件从磁盘复制到网络Socket,避免了用户空间的数据拷贝,显著提升大文件传输性能。Netty通过FileRegion和FileChannel.transferTo()方法实现sendfile功能,适用于静态资源服务器等场景。但需注意其局限性:不支持SSL/TLS加密、依赖操作系统实现,且在内存数据传输中不可用。实际应用中需结合流控、分片传输和异常处理机制,同时考虑不同平台的兼容性差异。原创 2025-09-11 14:41:56 · 855 阅读 · 0 评论 -
CPU负载和使用率区别
CPU负载和使用率是衡量系统性能的两个关键指标,但它们含义不同。CPU负载反映等待处理的进程数,而使用率显示CPU实际工作时间占比。高负载不一定伴随高使用率,比如I/O等待可能导致进程排队但CPU空闲。反之,单个计算密集型进程可能使CPU满载而负载不高。实际分析时应结合两者及其他指标(如内存、磁盘),使用top、uptime等工具综合判断。当负载长期超过CPU核心数时,应考虑扩容或优化应用。正确理解二者的区别有助于准确诊断系统性能问题。原创 2025-10-09 14:23:45 · 694 阅读 · 0 评论 -
Linux 进程优先级与调度器实现
本文介绍了Linux进程优先级与调度机制,包括普通进程和实时进程的优先级设置方式(nice值和sched_priority)。详细解析了CFS(完全公平调度器)的实现原理,重点说明其通过红黑树管理进程、基于虚拟运行时间(vruntime)的调度算法,以及权重与nice值的对应关系。同时介绍了实时调度器(SCHED_FIFO/SCHED_RR)的工作机制。文章还提供了进程优先级设置方法、内核调度参数调整建议,并通过源码分析展示了调度核心流程。最后给出实际应用案例,说明如何优化系统性能以满足不同场景需求。原创 2025-09-23 17:21:39 · 791 阅读 · 0 评论 -
Linux 内核竞争条件、临界区、锁机制
竞争条件是并发程序中多个线程/进程同时访问共享资源导致结果不可预测的问题。Linux内核通过多种同步机制解决:自旋锁适合短临界区,互斥锁支持睡眠等待,信号量实现资源计数,读写锁提升读性能,RCU优化高并发读场景,原子操作处理简单变量。合理选择锁类型(根据临界区长度、运行环境等)能保证数据一致性和系统稳定性。内核中广泛使用这些机制保护链表、计数器等共享资源的并发访问。原创 2025-09-23 15:27:48 · 746 阅读 · 0 评论 -
Linux 内核物理内存分配
本文深入解析Linux内核物理内存分配机制,重点介绍伙伴系统和Slab/Slub分配器的实现原理。伙伴系统采用分阶管理策略(free_area数组),通过合并相邻空闲块减少碎片,核心流程包括水位检查、order查找和块拆分。Slab/Slub分配器则针对小对象优化,在伙伴系统分配的页上构建对象池。文章详细分析了alloc_pages()、kmalloc()等关键函数的源码实现,通过流程图展示分配决策过程,并列举内核模块加载等典型场景。原创 2025-09-23 12:36:58 · 1049 阅读 · 0 评论 -
Linux 内核页表与地址空间
本文系统介绍了虚拟内存管理中的页表机制及其相关技术。首先阐述了页表的核心作用,包括地址转换、内存保护、共享与回收功能。随后详细分析了x86和ARM架构下的页表结构,包括32位与64位系统的多级页表设计差异。文章深入解析了页表项(PTE)的组成信息,并探讨了Linux内核中的页表管理实现。针对性能优化,重点讲解了TLB缓存机制、缺页异常处理流程以及内核页表隔离(KPTI)安全技术。最后通过进程内存管理结构体分析,全面展示了虚拟地址空间划分与特权级别的关系。原创 2025-09-23 09:38:43 · 1106 阅读 · 0 评论 -
Linux 进程调度算法
Linux进程调度算法经历了O(n)到O(1)再到CFS的演变。CFS通过红黑树管理就绪队列,按虚拟运行时间排序实现公平调度,支持优先级、组调度和负载均衡。实时调度策略(如SCHED_FIFO/RR)适用于高实时性场景。可通过调整nice值、cgroups和内核参数(如调度周期、时间片)进行性能优化。关键源码位于kernel/sched/fair.c,包含红黑树结构、进程选择等核心功能。常用工具包括nice、chrt、top等,可监控和调整调度策略。原创 2025-09-21 21:30:28 · 797 阅读 · 0 评论 -
Linux 进程描述符和任务结构
本文介绍了Linux内核中进程描述符task_struct的核心内容。task_struct是内核管理进程/线程的关键数据结构,包含进程状态、标识符、调度信息、内存管理、文件系统等成员。文章详细解析了task_struct的主要字段及其作用,包括进程标识、状态管理、调度实体、内存描述符等。同时讲解了进程树组织方式,以及如何通过task_struct中的链表成员遍历进程树和所有进程。此外,还阐述了task_struct在调度和内存管理中的核心作用,如调度实体维护、优先级管理、内存描述符管理等。最后给出了相关源原创 2025-09-25 00:15:00 · 755 阅读 · 1 评论 -
Linux 进程创建
本文系统介绍了Linux进程创建与调度机制。进程创建主要通过fork()、vfork()、clone()等系统调用实现,内核采用写时复制(COW)技术优化性能。调度方面,Linux使用CFS(完全公平调度器)管理进程,基于红黑树按vruntime值选择运行进程。文章详细解析了进程创建流程、调度算法实现,并提供了相关内核源码位置和用户空间API使用方法。此外还介绍了进程优先级设置、CPU亲和性等调优技巧,为深入理解Linux进程管理机制提供了全面参考。原创 2025-09-21 18:15:56 · 809 阅读 · 1 评论 -
Linux 内核编译
本文介绍了Linux内核源码树的目录结构及编译方法。源码树顶层包含arch(架构相关)、drivers(驱动)、fs(文件系统)等核心目录,每个目录有特定功能模块。编译前需安装gcc等工具,通过make menuconfig配置内核选项,建议使用-j参数多核加速编译。编译过程可控制输出信息量,结果生成bzImage内核镜像和System.map符号表等文件。最后给出了从获取源码到安装的完整流程示例,包括内核配置、编译优化和常见问题处理技巧。原创 2025-09-21 15:48:19 · 1072 阅读 · 1 评论 -
计算机基础(一)系统处理器体系结构
摘要:本文系统介绍了处理器体系结构,包括主流架构类型(CISC、RISC等)、核心组成单元(ALU、FPU等)和指令执行流程。重点分析了现代处理器的并行机制(流水线、超标量等)和缓存设计,并探讨了低功耗、可扩展指令集等设计趋势。对Y86-64/Y86-84教学用指令集进行了详细说明,包括指令分类、编码格式和寄存器编码,通过具体示例展示了指令编码方法。最后提供了处理器架构的面试简答模板,为计算机体系结构学习提供系统参考。原创 2025-09-24 08:00:00 · 1107 阅读 · 1 评论 -
计算机基础(二)运算详解
本文介绍了C语言中的位运算、逻辑运算和移位运算。位运算包括按位与、或、异或、取反及移位操作,常用于底层开发、算法优化和权限控制。逻辑运算用于布尔值处理,包括逻辑与、或、非。移位运算可实现高效乘除运算。文中通过代码示例演示了各类运算的具体应用,如权限管理、位掩码操作等,并对比了逻辑运算与位运算的区别。最后提供了面试常见问题的解答模板,包括位运算判断奇偶的方法。原创 2025-09-23 08:00:00 · 901 阅读 · 1 评论
分享