计算机三级Linux应用与开发技术知识地图与易错点复习 简介面向备考全国计算机三级Linux应用与开发技术的考生这份知识点整理围绕计算机体系结构与操作系统基础展开适合冲刺阶段梳理概念、对照教材查漏补缺。内容涵盖冯诺依曼体系结构、计算机系统层次、指令集与CISC/RISC、Cache-主存-辅存三级存储、地址映射与替换算法、MESI缓存一致性协议并延伸到操作系统特征、五大资源管理功能、处理器管理及内核态与用户态等考点。压缩包共1个docx文件约231KB便于打印标注和按章节复习。已有1126人学习下载可作为理解硬件基础与操作系统原理的轻量提纲帮助考生把零散知识串成复习框架。1. 知识地图这门考试到底在考什么计算机三级考试 Linux 应用与开发技术很多人第一反应是“背命令”真翻开知识点会发现完全不是这么回事。它其实是两条线并排走一条是计算机体系结构与操作系统原理另一条是 Linux 的实际操作能力。前一条线考的是冯诺依曼五大部件、七层系统结构、Cache 三种映射、进程三态转换这类“看不见摸不着”的东西几乎每次都以选择题形式出现后一条线才是命令、shell 脚本、用户与文件管理。真正拉开分差的往往不是ls会不会用而是原理题那几分有没有稳稳拿到。整份知识点的骨架很规整体系结构给地基操作系统原理讲资源怎么被管起来Linux 命令和 shell 脚本把原理落到具体操作用户管理和文件管理再把前面所有东西串成一条线。适合已经上手过 Linux、但知识点是碎的、需要一次性串成地图的人。2. 体系结构与操作系统原理从冯诺依曼到进程三态2.1 冯诺依曼结构与七层系统结构冯诺依曼体系有三个绕不开的要点数制采用二进制程序指令和数据统一存储计算机按程序顺序执行。按照这个结构设计出来的机器由五部分组成——控制器、运算器、存储器、输入设备、输出设备。其中控制器和运算器合起来就是现代通用计算机的中央处理器也就是传统意义上的单核 CPU。主存储器里存放要执行的程序和要处理的数据运行时 CPU 自动、按顺序从主存里一条一条取指令执行。这里有个很好记的对应关系冯诺依曼结构把现实世界的时空观映射进了机器存储体系对应空间域指令顺序执行过程对应时间域。理解了这一层后面讲存储层次、讲程序局部性都能接上。计算机系统按功能可以切成多级层次结构从下往上是层次名称说明第 0 层数字逻辑层最底层硬件逻辑第 1 层微体系结构层硬件实现细节第 2 层传统机器层机器语言视角第 3 层操作系统层资源管理第 4 层汇编语言层汇编程序员视角第 5 层高级语言层高级语言程序员视角第 6 层应用程序层最终用户视角系统结构设计者关心的是机器语言或汇编语言程序员所看到的计算机结构也就是第 2 层往上这一段的接口形态。这个“关心哪一层”的表述在选择题里出现过容易和“操作系统设计者关心哪层”混淆记的时候把主语和层号绑在一起背。2.2 指令集、CISC 与 RISC 的分野指令集是一个计算机系统支持的所有机器指令的集合它常被看作软硬件之间的分界面。最普通的指令格式是“操作码 操作数地址”用二进制数据表示。按操作数数量不同指令格式分成零地址、一地址、二地址、三地址和多地址指令按寻址空间分寻址方式有立即数寻址、寄存器寻址、主存寻址和堆栈寻址四种。从功能角度看常见指令类型包括数据传输指令、算术运算指令、逻辑运算指令、程序控制指令、输入输出指令、处理器控制和调试指令。因为指令集本身有很强的系统性和复杂性它也被称为指令集体系结构 ISAInstruction Set Architecture。按指令系统的复杂程度ISA 分成两大阵营这个对比表建议直接背下来对比项CISC复杂指令系统计算机RISC精简指令系统计算机追求目标强化指令功能减少程序指令条数提高处理器性能与并行度指令种类多功能复杂少功能单一指令格式不规整规范统一寻址方式丰富简化性能思路靠减少指令条数提效靠简化结构、方便流水与并行、提高超大规模集成电路使用效率梳理下来会发现这两个阵营不是“谁更先进”的关系而是两种设计哲学。CISC 的思路是让每条指令干更多事程序短一点RISC 的思路是把指令做小做整齐让处理器内部可以并行处理。考试里经常反过来问“减少指令种类、规范指令格式、简化寻址方式是为了什么”答案指向 RISC 的性能路径。2.3 存储层次、Cache 映射与一致性现代通用计算机的存储系统是五层结构从上到下依次是寄存器组、高速缓冲存储器 Cache、主存储器、辅助存储器、脱机存储器。规律很直白越往上速度越快、价格越高越往下容量越大。这个“速度—价格—容量”的三角关系是存储层次存在的根本原因也是后面所有 Cache 话题的出发点。存储层次能成立理论依据是程序访问的局部性它包含两方面时间局部性最近访问过的内容很可能在短期内被再次访问。典型例子是程序中的循环循环体的指令要被反复执行。空间局部性某个存储单元被访问短时间内它附近的存储单元也会被访问。“Cache—主存—辅存”是存储体系里最重要的三级层次通常拆成两个两级系统来讨论。“Cache—主存”层次的理论依据就是程序局部性“主存—辅存”两级存储系统也叫虚拟存储系统它被提出来是为了满足应用程序对高速大容量主存的需求、扩大存储系统容量。把这两组对应关系弄反是这一节最经典的失误。Cache 与主存之间最基本的地址映射方式有三种映射方式特点是否需要替换算法全相联映射主存任意块可放入 Cache 任意行需要直接映射主存块只能放到唯一确定的行不需要组相联映射组间直接、组内全相联需要在采用全相联映射和组相联映射的系统中主存向 Cache 传送新块而 Cache 已满时就要用替换算法换出某一块。常用的是随机法 RAND、先进先出 FIFO、最近最少使用 LRU。LRU 命中率通常最好代价是维护成本高。Cache 读写过程会引出数据一致性问题。一致性体现在两个方面一是 Cache 和主存之间的数据一致性通过特定的写操作方式来保证即写直达 write through 和写回 write back二是各个处理器内核私有 Cache 之间的数据一致性在多核处理器中靠缓存一致性协议维护最经典的是 MESI 协议。MESI 把 Cache Line 的状态分成四种状态英文含义MModified已修改与主存不一致本核独占EExclusive独占与主存一致仅本核持有SShared共享多个核持有与主存一致IInvalid失效不可用提示写直达和写回解决的是“Cache 与主存”这一对的一致性MESI 解决的是“核与核”这一对的一致性两个问题的层级不同不要混答。2.4 四大特征与五大功能操作系统的资源按作用大致分四类处理器、存储器、I/O 设备和文件。对这四类资源的管理构成操作系统内核的主要功能。现代通用操作系统一般具有四个基本特征并发、共享、虚拟、异步。并发是指两个或多个事件在同一时间间隔内发生共享是指系统中的软硬件资源可被多个并发执行的进程共同使用而不是被某个进程独占虚拟是把一个物理实体变为一个或多个逻辑上的对应物异步又称随机性或不确定性指相同环境和初始条件下、同一数据集上运行的同一程序每次执行的顺序和所需时间都不一定相同。最容易错的是并发和并行。并行是指两个或多个事件在同一时刻发生并发是同一时间间隔内发生一个是“时刻”一个是“时间段”这个区别几乎每年都会被拿来出题。从资源管理角度看操作系统具备五大基本功能处理器管理、存储管理、设备管理、文件管理和作业管理。处理器管理核心是中断处理和进程管理。存储管理主要功能是内存空间的分配与回收、地址转换、内存空间的扩充和存储保护。用户源程序变成可在内存中执行的程序要经过编译、链接、装入三步。设备管理负责处理器内核与外部设备间的数据交互包括把设备分配给请求使用它的进程、处理 CPU 与设备间的 I/O 通信、响应设备中断请求、维护和回收设备。文件管理负责文件管理的部分称为文件系统涉及文件的逻辑组织和物理组织、目录结构和管理。常用文件物理结构有顺序结构、链表结构、索引结构。作业管理作业是用户在一次计算过程或事务处理中要求计算机系统所做工作的总和也是用户向系统提交任务的基本单位包括作业的输入输出以及调度和控制。2.5 中断机制与进程三态处理器上运行的指令按权限分两种特权指令只能被操作系统内核使用涉及改变机器状态、修改寄存器内容、启动设备等敏感操作非特权指令所有程序都能使用。处理器运行状态相应分为内核态和用户态内核态能执行所有指令用户态只能执行非特权指令。用户态切换到内核态有三种方式系统调用、异常、外围设备的中断。三种方式都通过中断机制发生。中断是指 CPU 对系统发生的某个事件做出的一种反应它使 CPU 暂停正在执行的程序保留现场后自动执行相应的处理程序处理完该事件后若被中断进程优先级最高则返回断点继续执行被“打断”的程序。引起中断的事件或发出中断请求的来源叫中断源中断源向 CPU 提出的处理请求叫中断请求被打断程序的暂停点叫断点。中断概念还有一个发展就是访管指令访问管理指令即系统调用的使用。按功能划分中断源分为五类机器故障中断、I/O 中断、外部中断、程序性中断、访管中断。其中访管中断是执行“访问管理程序”指令产生的作用是让 CPU 从用户态转入管理态由操作系统根据不同编号引进不同处理从而为用户态程序提供对系统资源使用请求的服务。注意在配置了通道的计算机系统中用户程序需要输入/输出时引起的中断属于访管中断不是 I/O 中断。这个点翻车率极高判断依据是“谁发起的”——用户程序主动请求走的是访管。进程是计算机中的程序在某数据集合上的一次运行活动是系统进行资源分配和调度的基本单位。进程和程序的区别可以做成一张对照表对比项进程程序动态性动态概念静态概念并发性具有并发特征没有生命周期有生命期仅在运行期间存在可在外存长期保存对应关系一个程序在不同数据集上运行即不同进程与进程不总是一一对应组成程序、数据和控制块指令与数据为了描述进程的动态变化过程系统引入进程控制块 PCB并根据它感知进程的存在。PCB 是进程存在的唯一标志。线程则是被处理器调度运行的最小单位线程被包含在进程之中一条线程就是进程中一个单一顺序的控制流一个进程可以并发多个线程。进程有三种基本状态运行态 running、就绪态 ready、等待态 wait又称阻塞态 blocked 或睡眠态 sleep。实际系统中还会增加新建态 new 和终止态 exit。这里有一句必须记牢的定义已经获得除 CPU 以外的所有运行所需资源的进程处于就绪状态。反过来说缺资源的是等待态只缺 CPU 的是就绪态。作业的运行轨迹与之类似一个作业从交给计算机系统到执行结束退出一般经历提交、后备、执行、完成四个状态。3. Linux 命令与软件包管理从提示符到 RPM 全流程3.1 命令格式、提示符与家目录打开终端后看到的那一行提示符本身就是一道小题[rootlocalhost ~]# # root 当前登录用户 # localhost 当前系统简写主机名完整名为 localhost.localdomain # ~ 用户当前所在目录 # # 命令提示符超级用户为 #普通用户为 $提示符里四段信息各有含义考试常问“#和$分别代表什么”。家目录又称主目录是用户登录后的初始位置。超级用户的家目录是/root普通用户的家目录是/home/用户名。初始登录状态下用户创建的文件都放在家目录里。切换目录用cd。Linux 命令的基本格式是命令 [选项] [参数]。选项分短格式和长格式短格式如-l是英文简写长格式如--all是完整英文单词。选项用于调整命令的执行方式参数则是命令的操作对象。这个“选项调方式、参数是对象”的区分看着简单实际做题时经常把包名当选项、把选项当参数。3.2 终端查询与输出类命令w和who都能查看服务器上目前已登录的用户信息区别在于w除了知道登录用户信息还能看到每个用户执行任务的情况。w的基本格式是w [选项] [用户名]后面只跟用户名表示只显示该用户信息-h不显示输出信息的标题-l用详细格式输出-s用简洁格式输出。who的基本格式是who [选项] [file]不指定文件时默认通过/var/run/utmp获取登录用户信息-a列出所有信息-b列出系统最近启动时间-l列出所有可登录的终端信息-m仅列出当前终端信息相当于who am I-u显示名称、线路和时间字段。echo把命令行参数显示到标准输出。-n取消输出后行末的换行符号-e支持反斜线控制的字符转换。-e支持的常用控制字符包括\\输出反斜线本身、\a警告音、\b退格、\c取消行末换行、\f换页、\n换行、\r回车、\t制表符、\v垂直制表符、\0nnn按八进制 ASCII 码输出、\xhh按十六进制 ASCII 码输出。# 输出不换行 echo -n loading # 用制表符分隔两段内容并在末尾加换行 echo -e name\tage\n # 按十六进制 ASCII 码输出字符 A echo -e \x41第一条命令的-n让光标停在输出末尾第二条用-e打开转义\t变成制表符、\n变成换行第三条\x41是十六进制写法对应字符 A。这一组参数在选择题里常以“哪个选项支持转义字符”的形式出现答案就是-e。date显示或设定系统日期与时间date -s可以设定当前时间但只有 root 权限才能设置。passwd是密码配置命令格式为passwd [选项] 用户名。普通用户仅能修改自己的密码root 可以修改自己和普通用户的密码普通用户修改自己的密码需要先输入旧密码root 不用。3.3 用户与用户组/etc/passwd 与 useradd 全流程用户名和 UID 的对应关系存储在/etc/passwd文件中用户密码信息存放在/etc/shadow。两个文件的权限差别很大这也是常考点/etc/passwd权限是rw-r--r--所有用户都可读/etc/shadow权限是rw-------只有 root 能读写。/etc/passwd每行用户信息划分为 7 个字段字段含义要点用户名用户名字符串登录标识密码占位x真正密码在/etc/shadowUID用户标识号取值 0—65535允许不同用户名共用同一 UIDGID初始组标识号初始组只能一个附加组可以多个描述性信息备注字段常见为全名或说明主目录登录后的访问目录root 为/root普通用户为/home/用户名默认 shell登录解释器通常为/bin/bashUID 的分配区间要记住1—499 供系统程序使用普通用户 UID 从 500 开始。useradd的创建过程是一条完整的链路系统先读取/etc/login.defs和/etc/default/useradd两个配置文件按其中定义的规则添加用户然后在/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四个文件中写入用户数据接着在/etc/default/useradd设定的目录下建立用户主目录最后把/etc/skel目录中的所有文件复制到该主目录中一个新用户才算创建完成。用户信息的其他维护命令# 修改用户信息-L 临时锁定用户-U 解锁 usermod -L 用户名 # 修改用户密码状态密码有效期等 chage [选项] 用户名 # 删除用户-r 表示同时删除用户家目录 userdel -r 用户名 # 用户间切换带 - 表示连同环境变量一起切换 su - 用户名 # 组管理 groupadd [选项] 组名 groupmod [选项] 组名 groupdel 组名 # 把用户加入组 / 从组中移除 gpasswd -a 用户名 组名 gpasswd -d 用户名 组名userdel只有 root 能用-r会一并删掉主目录和邮箱/var/spool/mail/用户名。su的-选项是关键带-时不仅切换身份还把当前使用的环境变量PATH、MAIL 等切换成目标用户的不带-只是临时切换身份环境变量没跟着换很多命令会莫名其妙报错。groupdel仅适用于删除那些不是任何用户初始组的组删初始组会留下无主用户。gpasswd选项为空时表示给组设置密码仅 root 可用。3.4 软件包分类与 RPM 全流程Linux 的软件包细分为两种源码包和二进制包。Linux 常用打包压缩格式是tar.gz因此源码包又被称为 TarballTarball 是一款打包工具。两大主流的二进制包管理系统是 RPM 包管理系统和 DPKG 包管理系统。RPM 包有默认安装路径最好不要手动指定路径存放内容/etc/配置文件/usr/bin/可执行命令/usr/lib/函数库/usr/share/doc/文档/usr/share/man/手册页安装命令是rpm -ivh 包全名三个参数分别是-i安装install、-v显示更详细信息verbose、-h打印安装进度hash。涉及包全名的命令一定要注意路径可以一次装多个包用空格隔开。安装完成后可以尝试启动服务service 服务名 start|stop|restart|status四个动作对应启动、停止、重启、查看状态。升级有两条命令区别在于“没装过怎么办”# 若该软件没安装过则直接安装已安装则升级至最新版本 rpm -Uvh 包全名 # 若该软件没有安装则不会安装必须已装较低版本才能升级 rpm -Fvh 包全名卸载用rpm -e 包名-e即 erase。卸载必须考虑包之间的依赖性先装httpd后装它的功能模块mod_ssl卸载时就必须先卸mod_ssl再卸httpd否则报错。命令支持--nodeps不检测依赖直接卸载但不推荐。查询是 RPM 里分支最多的一块把选项和对象对上就不会乱命令作用记忆点rpm -q 包名查询是否安装queryrpm -qa查询所有已安装软件包常配合grep过滤rpm -qi 包名查询软件包详细信息i 即 informationrpm -qip 包全名查询未安装包的信息p 即 package需绝对路径加包全名rpm -ql 包名查询已安装包包含的所有文件及安装位置l 即 listrpm -qlp 包全名查询未安装包包含的文件及打算安装的路径l prpm -qf 系统文件名反向查询文件属于哪个包f 即 file最后一条有几个限定条件只有使用 RPM 安装的文件才能用-qf查询手动方式建立的文件查不到。rpm -qa常和管道配合比如rpm -qa | grep httpd可以找出所有含包名的软件包。4. Shell 脚本与文件管理通配符、重定向与文本三剑客4.1 shell 脚本与三种运行方式shell 本身是一个用 C 语言编写的程序是连接用户和内核的桥梁。脚本第一行的#!/bin/bash中#!用来声明该脚本使用哪种 shell 编写从而调用相应的解释程序执行#则是当行注释符用来说明程序功能、结构、算法和变量作用提高可读性。Linux 中创建文件默认是不可执行文件必须修改权限、为文件增加可执行权限之后才能在命令行模式下直接输入相对路径./文件名运行。# 创建脚本文件 touch hello.sh # 写入内容第一行声明解释器 cat hello.sh EOF #!/bin/bash # 输出一行提示 echo hello linux EOF # 增加可执行权限 chmod x hello.sh # 用相对路径运行 ./hello.sh # 查看系统支持的 shell 种类 cat /etc/shellschmod x给文件加上执行位./表示在当前目录查找两者缺一不可。脚本能否执行还与环境变量 PATH 有关PATH 的值决定了 shell 到哪些目录中寻找命令或可执行程序用户运行命令时会在这些目录下按顺序依次搜寻。脚本运行有三种方式把脚本权限设置为可执行后在提示符下直接运行把脚本名作为参数传递给 shell 程序把脚本以输入重定向的方式传递给 bash。三种方式都能跑通区别在于是否依赖执行权限、是否新开子 shell。4.2 通配符与三种引号文件名的扩展称为通配 Globbing五个符号覆盖了绝大多数场景通配符含义*匹配任意字符的 0 次或多次出现?匹配任意单个字符[ ]匹配该字符组所限定的任何一个字符[^ ]或[! ]匹配不在该字符组中的任何一个字符{string1,string2,…}匹配其中一个指定的字符串转义字符\的作用方向要记准按下转义字符前遇特殊字符按特殊含义执行加上转义字符后按普通含义执行。shell 中的引用字符有三种差别全在“保留什么”上引号效果单引号 引用一串字符所有字符都当普通字符不做任何解释双引号 引用一串字符但保留$、\和倒引号的特殊含义倒引号 被 shell 解释为命令行先执行该命令用输出结果取代整个倒引号部分双引号里$代表引用变量的值倒引号代表引用命令。三者的差异用一段对比最直观namelinux # 单引号原样输出$name 不展开 echo $name # 双引号$name 展开为 linux echo $name # 倒引号先执行 date 命令用其输出替换整个部分 echo now is date第一条输出字面量$name第二条输出linux第三条把date的执行结果嵌进了字符串。注意到$、反斜线和倒引号在双引号中依然保留特殊含义这是双引号与单引号唯一但关键的差别。4.3 输入输出重定向与命令连接符输入输出方向就是数据的流动方向。标准输入重定向有两种写法commandfile把文件作为命令的输入如wc -lfile统计文件行数command分界符从标准输入中读入直到遇见分界符才停止用特定分界符代替默认的 CtrlD 结束输入。标准输出重定向有两种commandfile以覆盖方式把正确输出写到文件文件不存在会自动创建、存在则原内容被覆盖commandfile以追加方式写出。输出重定向的完整写法是fdfile或fdfilefd 表示文件描述符不写默认为 1。三个描述符必须记住描述符名称说明0stdin标准输入1stdout标准输出2stderr错误输出如果要把正确信息和错误信息都保存到同一个文件写法是# 正确输出写入 file1错误输出重定向到标准输出后一并写入 grep li si file file1 21 # 正确与错误输出都丢弃/dev/null 相当于系统垃圾箱数据不可恢复 grep li si file /dev/null 21第一条里21表示让文件描述符 2 指向文件描述符 1 当前的位置于是两类输出进了同一个文件。这里有个硬性要求21之间不允许有空格fd之间也不允许有空格。另外grep li si file会把si和file都当成文件名因为grep的模式后面跟的是文件列表。命令连接符决定多条命令之间的逻辑关系连接符执行规则;顺序执行依次跑完逻辑与前一条正确执行后一条才执行||逻辑或前一条执行错误后一条才执行小括号()和大括号{}都能把若干命令括起来逻辑上视为一条命令。启动 shell 时这个 shell 是交互的执行完一条命令接着显示下一个提示符始终在前台等待用户在交互 shell 中运行外部命令或执行脚本时交互 shell 会创建一个子 shell运行结束后子 shell 进程结束。后台进程在运行过程中与用户无交互无交互指的是不响应用户的输入和终端控制信号但后台命令一样会把结果输出到显示器上。4.4 文件与目录操作命令Linux 中所有文件和目录都被组织成从根节点/开始的倒置树状结构文件系统按名访问文件。文件是文件系统中存储数据的一个命名对象是用户最小的逻辑存储单元由数据项和文件控制块两部分组成文件控制块被称为索引节点。按数据项是否有结构文件分为无结构文件字符流文件和有结构文件如目录文件通常 Linux 的文件类型划分为普通文件、目录文件、链接文件及设备文件。说明目录或文件名位置有绝对路径和相对路径两种前者从根目录/写起后者相对于当前路径。文件操作命令里查看类的一组# 显示文件内容-n 对所有行编号-b 只对非空行编号 cat -n file # 合并文件file3 原内容会被覆盖不存在则自动创建 cat file1 file2 file3 # 分页显示 more file # 显示前 k 行不指定行数默认显示 10 行 head -n 5 file # 显示后 k 行-f 监听文件新增内容CtrlC 中止 tail -f file # 只修改文件访问时间 touch -a file复制、删除、移动三个命令的常用选项要分清命令常用选项作用cp-a相当于-d、-p、-r的集合-d源为软链接时目标也为软链接-i覆盖前询问-l建立硬链接-s建立软链接-p保留原属性-r递归复制目录复制文件或目录rm-f强制删除-i删除前询问-r递归删除目录及内容永久性删除mv-f强制覆盖-i交互移动目标存在时询问-n目标存在则不覆盖也不询问-v显示移动过程-u源文件更新时才升级目标移动或重命名cp的-r用于复制目录此时目标必须是目录不改名复制到/tmp/下写作cp file /tmp/改名复制写作cp file /tmp/text加-i会在覆盖前询问。目录操作命令# -p 递归创建所有目录-m 手动指定权限而不用默认权限 mkdir -p /data/a/b # 递归删除空目录 rmdir -p /data/a/b # 切换目录~ 代表当前用户主目录- 代表上次所在目录. 当前目录.. 上级目录 cd ~ # 显示当前所在目录 pwd # 显示全部文件包括以 . 开头的隐藏文件 ls -a排序和统计两个命令常组合使用sort按 ASCII 码值比较升序输出-r反向排序wc的-l只统计行数、-w只统计单词数、-m只统计字符数。链接命令ln是容易被忽略的一节硬链接和软链接的区别必须搞清楚对比项硬链接软链接创建命令ln 源文件 目标文件ln -s 源文件 目标文件数据同步修改任一方另一方数据都改变通过指向源文件访问跨文件系统不能跨分区建立可以链接目录不能链接目录可以4.5 grep、sed、awk 的分工grep全称 global regular expressions print在一个或多个文件中搜索特定字符模式这个模式可以是单一字符、字符串、单词或句子。正则表达式是描述一组字符串的模式可以是纯文本也可以是产生模式的特殊字符与通配符的含义并不相同正则符号含义c*匹配 0 个或多个字符 c.匹配任何一个字符且只能是一个字符[xyz]匹配方括号中任意一个字符[^xyz]匹配方括号外字符的所有字符^行首定位符$行尾定位符grep -n 模式 文件名会在每一行最前面列出行号。注意c*和通配符*不是一回事正则里的*修饰的是它前面的那个字符通配符里的*匹配任意字符串。sed主要用来自动编辑一个或多个文件简化对文件的反复操作。选项-n只显示匹配处理的行-e执行多个编辑命令一般用;代替-i直接在文件中修改而不是输出到屏幕-f从脚本文件读取内容并执行。常用编辑命令包括p打印匹配行、d删除指定行、a在匹配行后追加、i在匹配行前插入、c整行替换、r读取文件内容、w写入文件、s字符串替换。# 打印第 2 行-n 抑制默认输出只留匹配行 sed -n 2p file # 把全文中的 old 替换为 new-i 直接写回文件 sed -i s/old/new/g file第一条不加-n的话会把整份文件连同重复行一起打出来-n加上p才是“只打印第 2 行”。第二条的s/old/new/g是替换语法末尾g表示一行内全部替换不加只替换每行第一个。awk更适合格式化文本、做较复杂的格式处理。它的主要特性之一是处理文本数据的能力强会自动给一行中的每个数据元素分配变量$0代表整个文本行$1代表第 1 个数据字段$2代表第 2 个依此类推。默认字段分隔符是任意空白字符空格或制表符要指定其他分隔符用-F选项。# 输出每行第一个字段-F 指定冒号为分隔符 awk -F: {print $1} /etc/passwd # BEGIN 在处理前执行END 在处理后执行 awk BEGIN {print The File Contents: } {print $0} END {print End of File} file第一条把/etc/passwd按冒号切开取第一列正好取出所有用户名第二条演示三段式结构BEGIN块在读取文件前执行一次主体块对每行执行END块在处理完后执行一次。5. 易漏点与易错点五处最容易翻车的地方5.1 原理部分的三处易漏易漏点一Cache—主存与主存—辅存的理论依据被对调。为什么会漏两个两级系统长得很像都涉及“上一级 下一级”复习时只看结构图不看依据。怎么补把“Cache—主存靠程序局部性”“主存—辅存即虚拟存储、目的是扩大容量”这两句话连起来背虚拟存储的关键词是“扩大”局部性的关键词是“访问规律”两套词互不重叠混不起来。易漏点二并发与并行的定义互换。为什么会漏日常说话里两个词几乎同义教材上的区别只差“时间间隔”和“时刻”几个字。怎么补记成“并发看时段、并行看时刻”再加一个具体画面——单核上多个进程轮流跑是并发多核上多个进程同时跑是并行。易漏点三就绪态与等待态的判定条件。为什么会漏两个状态的描述都带“等待”题干稍作改写就分不清。怎么补只抓一句硬标准——已获得除 CPU 以外所有运行所需资源的是就绪态。凡题干里出现“缺少某资源I/O、信号量等”一律落到等待态只差 CPU 的就是就绪态。5.2 命令部分的两处易错易错点一su带不带-当成一回事。为什么错两条命令都能切换用户表面看不出差别直到发现某些命令找不到、环境变量还是旧用户的才知道踩了坑。怎么补把-理解成“连环境一起搬过去”带-才是完整切换身份与环境不带只是临时换人。凡是题目问“切换用户后环境变量是否改变”答案就锁定在-上。易错点二rpm的查询选项和对象配错。为什么错-q、-qa、-qi、-ql、-qf长得太像-p又是叠加在后面的修饰复习时容易整块吞下去不拆开看。怎么补把选项拆成“动作 对象”两层来记q是查询动作i是信息、l是文件列表、f是反查文件所属包p只是把对象从“已安装”换成“未安装的包文件”所以带p的命令后面必须跟绝对路径加包全名。另外记住一个边界-qf只能查 RPM 装出来的文件手工创建的文件查不到。6. 复习清单与查漏补缺一张自测表收尾复习到后期最容易犯的错是“什么都看过一遍但不知道自己哪儿没记住”。比较有效的做法是拿一张表逐项自测能合上书用自己的话讲出来就划掉讲不出来的当天补。下面这张清单按知识块排列可以直接照着过知识块自测问题是否过关冯诺依曼五大部件是哪五个哪两个合起来是 CPU层次结构七层从 0 到 6 分别叫什么设计者关心哪一层指令集指令格式由什么组成四种寻址方式CISC/RISC两者的目标、指令种类、寻址方式差异存储层次五层顺序局部性分哪两种各举一例Cache三种映射三种替换算法写直达与写回MESI四个状态全称与含义操作系统特征并发、共享、虚拟、异步并发与并行的区别五大功能处理器、存储、设备、文件、作业各自管什么中断用户态到内核态三条路五类中断进程进程与程序的区别PCB 的地位三态转换条件命令格式提示符四段含义短选项与长选项写法用户管理/etc/passwd七个字段两个文件权限RPM安装、升级、卸载、查询各写一条命令shell三种运行方式三种引号区别重定向0/1/2 是什么21怎么写才对文本处理grep、sed、awk各擅长什么表格里最该反复过的是后面四行也就是命令与 shell 部分。原理题背熟了就稳命令题却是“看一遍会、隔三天忘”只能靠手敲。建议把每条命令都在终端里跑一遍尤其是rpm -qip、rpm -qf、sed -i、awk -F:这几条带参数的光看文字根本记不住参数位置。查漏补缺还有一个笨但管用的办法把错题按“原理类”和“命令类”分开记。原理类的错题回头翻对应的定义原文命令类的错题直接抄到一张便签上每天开机先在终端敲一遍。我当初就是吃了这个亏觉得su和su -反正都能切用户没当回事结果考试里一道问环境变量的题直接把我卡住。从那以后我每次复习这类“长得像”的命令都强制走一遍“写出差异表 在终端各跑一次”的流程再没在同类题上翻过车。这份整理覆盖了从体系结构到文件管理的六个模块按上面的顺序过一遍再拿最后这张表自测比自己从头刷命令效率高得多。需要完整版 docx 的按平时找资料的渠道搜文件名就行。希望帮到你。本文还有配套的精品资源点击获取