精简指令集(RISC)
- 指令简单:每条指令仅一个基础操作(如仅寄存器加法),需多条指令完成复杂任务。
- 高效流水线:简化硬件,提升频率,适合并行。
- 依赖编译器:软件优化替代硬件复杂性,代表如ARM、RISC-V。
复杂指令集(CISC)
- 指令复杂:单条指令可完成多步操作(如内存访问+计算)。
- 代码紧凑:用更少指令实现功能,节省内存。
- 硬件复杂:需解码微指令,功耗高,代表如x86。
操作系统
是一种内置的程序,用来协作计算机的各种硬件,以与用户进行交互。
操作系统主要包括以下几个方面的功能 :
1、进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况 下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题 。
2、存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。
3、设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。
4、文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
5、作业管理是负责处理用户提交的任何要求。
6、异常处理:处理程序运行中的异常
7、权限管理:
内核kernel
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
- 中央处理器(CPU)调度
- 通过进程调度算法(如时间片轮转、优先级调度)分配CPU时间给多个程序。
- 实现多任务并行(如同时运行浏览器、音乐播放器),避免程序独占CPU。
- 示例:当你在后台下载文件时,内核确保前台游戏仍流畅运行。
- 内存管理
- 分配/回收物理内存和虚拟内存,防止程序越权访问。
- 使用分页/分段技术隔离进程内存(如Chrome崩溃不会影响Word)。
- 关键机制:虚拟内存将磁盘空间扩展为“备用RAM”,避免内存耗尽死机。
- 设备驱动与I/O控制
- 通过设备驱动程序统一管理硬件(键盘、显卡、硬盘)。
- 抽象硬件接口:应用程序只需调用
read()/write(),无需关心硬盘型号。 - 示例:打印文件时,内核将数据从应用传递到打印机驱动。
文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件系统的功能包括:管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。
Linux:EXT4
Windows:NTFS
用户界面UI
用户和计算机交互的界面叫做UI
图形化界面:Windows桌面
命令行:linux终端
操作系统工作
示例:通过电脑浏览器观看视频
1、用户通过UI界面打开浏览器
2、内核为浏览器分配内存
3、内核创建并将浏览器进程装进内存
4、内核调动网络协议栈
5、调用网卡驱动访问网络
6、调用显卡渲染视频,调用声卡驱动将电信号转化为声信号
Linux目录结构
根目录
/为linux的根目录,系统中所有的文件都存储在根目录
家目录/root与/home
/root是root用户的家目录,里面仅存放root用户的个人文件和环境配置(如SSH密钥、脚本),仅root用户可访问,普通用户无权查看或修改
/home是用户的家目录,每创建一个用户都会在该目录下为用户创建一个家目录
/etc系统配置目录
网卡配置
/etc/sysconfig/network-scripts目录下存放的是linux网卡的配置文件
仓库配置
/etc/yum.repos.d/CentOS-Base.repo 提供操作系统基础软件包,包含内核、系统库(glibc)、基础命令(coreutils)、系统服务(systemd)等。
/etc/yum.repos.d/CentOS-AppStream.repo提供应用软件和开发工具,包含编程语言(Python/PHP/Node.js)、数据库(MySQL/PostgreSQL)、容器工具(Podman)、开发库(如 GCC、Rust)及文档等。
/etc/yum.repos.d/CentOS-Extras.repo提供补充工具和第三方集成,包含云平台工具(如 cloud-init)、容器运行时(docker-ce 早期版本)、社区维护的实用工具(如 epel-release 的依赖包)等。
在这三个文件中的mirrorlist字段:指定一个动态生成的镜像服务器列表的 URL,包含多个 baseurl 地址(由官方或第三方维护),YUM 会从中自动选择最优镜像。
baseurl字段:直接指定软件仓库的固定访问地址,单点故障:若目标服务器不可用,需手动切换地址。
SELinux
SELinux(Security-Enhanced Linux)是美国国家安全局对于强访问控制的实现,与之相对还有自主访问控制。
SELinux有三种模式,disabled关闭SELinux、enforcing强制管控严格限制操作、permissive是SELinux生效但是会将各种操作记录下来以便审计。
SELinux的配置文件/etc/selinux/config中有SELINUXTYOE字段用于指定策略类型。
| 策略名称 | 说明 |
|---|---|
| targeted | 仅对“网络服务/守护进程”启用 SELinux 强制策略,对普通用户进程几乎不限制;是大多数发行版的默认选择,兼顾安全与易用。 |
| strict | 对系统中所有进程(包括普通用户 shell、应用程序等)都施加 SELinux 强制策略;最严格,也最容易产生拒绝访问,需要大量自定义规则,日常很少使用。 |
| mls(Multi-Level Security) | 在 targeted 或 strict 的基础上增加多级安全/保密级别(MLS/MCS),用于需要严格数据分级或军事/政企保密场景;日常桌面/服务器通常不会启用。 |
/var目录
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的文件,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/var/log:系统和服务日志(syslog、nginx/access.log),在能够写入日志的情况下可以写入木马获取shell/var/lib:应用程序数据,mysql数据库、docker容器数据/var/spool:队列数据(/var/spool/mail邮件队列)/var/log/secure:安全认证日志(ssh登录建立日志)/var/log/messages:核心系统日志(替代通用syslog)
大小会动态增长、目录中文件部分可删除、部分数据可能需要备份,一般大小可能有10G以上,建议单独分区存储
/tmp目录
存放临时文件的目录,全局可读写重启会清空。
可删除,比较小1G左右
/usr目录
usr(unix system resource)存放静态用户应用程序和文件
一般不可删除,文件静态只读
/boot目录
存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
系统内核kernel除非在此目录中
/lib和/lib64目录
/lib目录存放32位系统核心库文件
/lib64存放64位系统的核心库文件
/bin与/sbin目录
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
文件
linux根据文件内容识别文件类别,若123.txt文件和111文件中写入了同样的内容系统会判断这两个文件类型相同。
touch创建文件
touch filename
可批量创建文件
touch file1 file2
mkdir创建目录
mkdir 目录名称或路径
CP复制
cp 某一文件 另一个文件或路径
cp -r 目录 目录
mv 移动文件/重命名文件
rm删除
rm -r 删除目录
rm -f 强制删除
rm -rf 强制删除目录(不提示)
文件备份
在文件后面加上.back后缀
CentOS-Extra.repo ==> CentOS-Extra.repo.back
cat与tail
cat filename,查看某一文件的全部内容
cat filename | less
tail命令,默认只查看文件末尾10行
| 选项 | 作用 | 示例 |
|---|---|---|
-n N 或 -N |
末尾 N 行 | tail -20 file |
-n +N |
从第 N 行开始一直显示到结尾 | tail -n +100 huge.csv |
-c N |
末尾 N 字节 | tail -c 1K image.iso |
-f |
实时跟踪文件增长(阻塞式) | tail -f app.log |
-F |
-f 的加强版,文件被轮转/重建后仍继续跟踪 |
tail -F /var/log/messages |
-q |
静默模式,多文件时不打印文件名 | tail -q -n 1 *.log |
--pid=PID |
进程结束后自动退出 tail -f |
tail -f --pid=$(pgrep nginx) /var/log/nginx/error.log |
其他查看文件命令
| 命令 | 说明 | 备注 |
|---|---|---|
cat |
直接全部打印 | 适合小文件 |
tac |
倒序打印(最后一行先出) | cat 的反写 |
nl |
带行号打印 | nl file |
bat/ccat |
彩色高亮版 cat | 需额外安装 |
| 命令 | 说明 | 常用键 |
|---|---|---|
less |
上下翻页、搜索 | q退出,/搜索 |
more |
早期分页器,功能少 | 回车下一行,空格下一屏 |
most |
多窗口分页器 | 需安装 |
| 命令 | 说明 | 示例 |
|---|---|---|
head |
开头 N 行/字节 | head -n 20 file |
tail |
结尾 N 行/字节,可实时跟踪 | tail -f /var/log/messages |
| 命令 | 说明 | 示例 |
|---|---|---|
hexdump -C |
十六进制+ASCII 并列 | hexdump -C binfile |
xxd |
vim 自带十六进制查看 | xxd file | less |
od |
八进制/十六进制转储 | od -t x1 file |
GNU计划
GNU计划是由理查德·斯托曼于1983年9月27日发起的自由软件协作项目,旨在创建完全自由的操作系统。该项目采用GNU通用公共许可证(GPL),允许用户自由使用、修改和分发软件,同时禁止添加额外限制。
斯托曼于1985年创立自由软件基金会(FSF)支持项目开发。至1990年,GNU已完成Emacs编辑器、GCC编译器等核心组件,但缺乏操作系统内核 。1991年林纳斯·托瓦兹开发出Linux内核后,1992年GNU工具与Linux结合形成完整的GNU/Linux操作系统。GNU自主开发的Hurd内核仍在持续开发中,其软件也被移植到Windows、Mac OS等平台。
GPL协议
GPL(通用公共许可证) 是一种广泛使用的开源软件许可证,旨在确保软件的自由使用、修改和分发权利。它由自由软件基金会(FSF)发布,强调软件的开放性和用户的自由。
核心特点:
- 自由使用和分发:用户可以自由运行、复制和分发软件,包括商业用途,但必须遵守 GPL 的条款。
- 强制开源:任何基于 GPL 软件的修改或衍生作品都必须以 GPL 协议发布,并公开源代码。这种特性被称为“传染性”或“Copyleft”。
- 禁止闭源发布:如果软件使用了 GPL 代码,则整个软件必须开源,不能以闭源形式发布。
- 附带源代码:无论以何种形式发布软件,都必须同时提供源代码。例如,若通过网络分发二进制文件,需提供源代码的下载链接。
- 允许收费但需公开源码:开发者可以对软件的分发或服务收取费用,但必须无偿提供完整的源代码。
