当前位置: 首页 > news >正文

Linux 核心知识点整理(高频考点版)

一、编译与工具链

GCC 编译流程

  • 四阶段:预处理(-E,处理头文件 / 宏)→ 编译(-S,生成汇编)→ 汇编(-c,生成目标文件)→ 链接(生成可执行程序),顺序必须严格
  • 常用选项-Wall(开启大部分警告)、-Werror(警告视为错误),-w 是关闭警告(少用)。

交叉编译

  • 必需组件:gcc(编译器)、glibc(标准库)、binutils(汇编 / 链接工具),tmake 不是必需(是 Qt 构建工具)。

二、进程与线程

进程基础

  • 核心概念:进程是程序的动态执行实例(不是静态的),是资源管理最小单位,包含 PCB(进程控制块,动态维护进程状态)。
  • 标识:PID 唯一标识进程,PPID 是父进程 ID(可为 0,如 init 进程)。
  • 状态:基本状态是运行、就绪、阻塞,僵死态是特殊状态(非基本)。
  • 创建与控制
    • fork:调用一次返回两次(父进程返回子进程 PID,子进程返回 0),用于创建子进程。
    • wait/waitpid:父进程阻塞等待子进程结束,waitpid 更灵活(可指定子进程、支持选项)。

线程(pthread 库)

  • 关键函数
    • pthread_create:创建线程,arg 传参给线程函数。
    • pthread_join:等待线程结束,获取返回值。
    • pthread_exit:主动退出当前线程
    • pthread_cancel:向目标线程发取消请求(不是退出当前线程)。
  • 同步:条件变量必须配合互斥锁使用,解决线程竞争。

三、内存管理

堆栈核心区别

特性栈(Stack)堆(Heap)
分配方式系统自动分配 / 释放(函数调用驱动)用户手动 malloc/free 管理
内存连续性连续不连续(动态分配,易产生碎片)
存储内容局部变量、返回地址、函数参数动态分配的大数据、复杂结构
增长方向向低地址增长向高地址扩展
大小限制固定(默认 8MB 左右,可调整)动态扩展(受物理内存 / 交换空间限制)

易错点

  • 栈参数入栈顺序:从右往左(如 func(a,b,c)c 先入栈)。
  • 静态变量:存储在全局 / 静态区,不入栈。
  • 堆分配:找 “足够大” 的空闲块(非严格匹配申请大小),头部用多字节(如 4/8 字节)存元数据。

四、文件与权限

文件权限(10 位格式)

  • 结构:[文件类型][所有者权限][组权限][其他用户权限],例:-rwxr-xr--
  • 第三段(5-7 位):文件所有者所在组的权限

文件操作

  • open 标志:O_RDWR(读写)、O_RDONLY(只读)、O_WRONLY(只写),操作完需 close 释放描述符。

五、系统服务与运行级别

服务管理

  • 启动脚本:传统存 /etc/rc.d/init.d/,运行级别脚本存 /etc/rc.d/rcN.dN 是级别)。
  • 脚本前缀:S(启动)、K(停止),无 C 开头
  • 命令:service 服务名 操作(如 service sshd restart)。

六、网络与通信

协议核心区别(TCP/UDP)

特性TCP(传输控制协议)UDP(用户数据报协议)
连接性面向连接(三次握手建连)无连接
可靠性可靠(确认、重传、排序)不可靠(无确认,丢包不重传)
适用场景文件传输、网页访问(需可靠)视频通话、广播(追求效率)
端口复用单连接(需 TIME_WAIT 释放端口)支持多应用同时用(如 DNS 服务)

Socket 关键

  • 类型:SOCK_STREAM(TCP)、SOCK_DGRAM(UDP)、SOCK_RAW(原始套接字),无 SOCK DTRAN
  • 函数原型:socket(int family, int type, int protocol)(创建套接字)。

七、其他高频考点

设备文件

  • 串口设备:Linux 下是 ttyS0(Windows 是 COM1)。

进程通信(IPC)

  • 常用方式:管道、消息队列、共享内存(填这三个必对)。

中断服务程序

  • 设计原则:短小、避免复杂操作,不能返回计算结果给主程序

一句话总结:记住编译流程、进程线程核心函数、堆栈区别、权限结构、TCP/UDP 差异,这些是 Linux 笔试 / 面试高频考点!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/254336.html

相关文章:

  • Mac电脑 Office 2024 LTSC 长期支持版(Excel、Word、PPT)
  • 《超级处理器》怎么安装到WPS/excel(最后有下载地址)
  • 李宏毅《生成式人工智能导论》| 第1讲:什么是生成式人工智能
  • 一体机主板步入大存储时代,存储突围到性能质变
  • OpenAI 公布《走向理解与预防失准泛化:由“角色特征”驱动的突现性失准》研究总结
  • MySql升级安装、socket 及密码重置
  • 3.1 Hector_mapping初体验
  • langchain框架中各种Agent(LLMSingleAgent ReactAgent Plan-and-Execute Agent)原理方式对比
  • Spring Boot 虚拟线程 vs WebFlux:谁更胜一筹?
  • Ascend上如何进行带宽测试
  • Spring Boot + MyBatis + Vue:构建高效全栈应用的实战指南
  • px4仿真使用fastlio的定位数据飞行
  • 用流行民族戏腔三种方式打开国风爆款《闲人填梦》,邓超予的跨界演绎引领文化传播新高度!
  • QSqlDatabase: QSQLITE driver not loaded
  • 小孙学变频学习笔记(三)变频器的逆变器件—IGBT管(上)
  • 16.大数据监控
  • Kafka Broker处理消费者请求源码深度解析:从请求接收到数据返回
  • WHAT - React Native 开发 App 从 0 到上线全流程周期
  • React 新框架的一些实践心得(关注业务的话,框架的设计封装思路)
  • 【研发工具】.Net创建多项目模板(Visual Studio)
  • 设计模式 | 单例模式——饿汉模式 懒汉模式
  • 从零开始的云计算生活——第二十天,脚踏实地,SSH与Rsync服务
  • uni-app总结5-UTS插件开发
  • Axios 拦截器实现原理深度剖析:构建优雅的请求处理管道
  • Vue-11-前端框架Vue之应用基础父组件传值到子组件props的使用
  • TDengine 集群超能力:超越 InfluxDB 的水平扩展与开源优势
  • 具身机器人
  • Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
  • SQL等价改写优化
  • VACM 详解:SNMPv3 的访问控制核心