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

发布于:2025-06-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、编译与工具链

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 笔试 / 面试高频考点!

 


网站公告

今日签到

点亮在社区的每一天
去签到