写在前面
本次课程,徐里桐老师从五个方面为我们讲解了Linux的基本概念和一些常用操作,讲的非常细致和清晰,因此本篇笔记主要是针对一些老师没提到或是带过的知识进行了解与总结。
计算机硬件
| 基本单元 | 功能 | 示例设备 |
|---|---|---|
| 输入单元 | 将外部信息转换为计算机可识别的格式,以便后续处理。 | 键盘、鼠标、摄像头、传感器等 |
| 输出单元 | 将计算机处理后的信息转换为人类可识别的格式,并将其呈现出来。 | 显示器、打印机、音箱、震动器等 |
| 控制单元 | 控制计算机的操作流程,包括指令的译码和执行、数据的传输、外部设备的控制等。 | 中央处理器、控制器、调度器、存储控制器等 |
| 算术逻辑单元 | 执行算术和逻辑运算,例如加减乘除、比较大小、逻辑与或非等。 | 运算器、逻辑单元、加法器、乘法器等 |
| 主存储器 | 存储计算机程序和数据,包括操作系统、应用程序、用户数据等。 | 随机存取存储器(RAM)、只读存储器(ROM)、闪存、硬盘等设备。 |
计算机操作系统
1. 辨析BIOS、UEFI及Bootloader
BIOS: 一种老旧的固件,存在于早期个人计算机中。在计算机开机时,BIOS会运行一系列自检程序,然后搜索引导设备来加载操作系统。BIOS的主要限制是其32位架构,内存限制,以及对硬盘驱动器容量的限制。
UEFI: 一种新的固件,使用一个独立的启动分区来存储引导程序和驱动程序,并支持64位架构,从而可以使用更多的内存和更大的硬盘驱动器。UEFI还支持更多的外设和安全功能,如Secure Boot和固件级密码保护。
Bootloader: 是启动操作系统的第一阶段,通常被称为引导阶段。其主要任务是将操作系统内核从磁盘加载到内存中,并启动操作系统。它通常会检查文件系统,确定操作系统的位置,并加载必要的驱动程序和模块,以便操作系统能够正确地启动和运行。
2. 操作系统启动流程
文字描述:
- 打开电源
- 硬件自检
- 寻找可引导的设备,如硬盘。这就好比你进门前要找钥匙一样
- 读取引导扇区(包含Bootloader),由Bootloader将控制权转移到操作系统内核
- 操作系统内核开始运行,并继续完成其他启动任务,如初始化系统设备等。这就好比你进入房间后需要打开灯、调整温度、开启电视一样
- 正常使用,你可以做你想干的事啦
Linux系统概览
查看Linux系统版本
cat /etc/os-release
NAME="Ubuntu" --------------操作系统名称
VERSION="21.04 (Hirsute Hippo)" --------------版本号
ID=ubuntu --------------操作系统ID
ID_LIKE=debian --------------所基于发行版的ID
PRETTY_NAME="Ubuntu 21.04" --------------操作系统较详细名称
VERSION_ID="21.04" --------------版本ID
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=hirsute
UBUNTU_CODENAME=hirsute
Linux系统结构
1. GNU C Library(glibc)
在上课时,老师通过这张图给我们介绍了Linux体系结构,提到用户空间和内核空间在一定程度上是相互独立的。那么,如何实现两个空间之间的交流呢?显然,glibc是这个中间桥梁。
glibc是Linux系统中的标准C库,它是一组C语言函数和符号的集合,为Linux系统提供了对系统调用和其他底层功能的访问。它是一种动态链接库,它在运行时被加载到内存中,使得应用程序能够调用其中的函数。
2. top命令分析
- PID:进程的唯一标识符
- USER:进程的拥有者
- PR:进程的静态优先级别(PR值越低,进程优先级别越高,系统会优先为其分配CPU资源)
- NI:进程的动态优先级别(NI值越低,进程优先级别越高,系统会给予其更多的CPU时间)
- VIRT:进程使用的虚拟内存量
- RES:进程占用的物理内存量
- SHR:进程使用的共享内存量
- S:进程的状态(R表示运行,S表示睡眠,Z表示僵尸进程)
- %CPU:进程占用CPU的使用率
- %MEM:进程占用内存的使用率
- TIME+:进程占用CPU的时间
- COMMAND:进程的命令名称或者完整的命令行参数
3. Linux中的中断
- 中断是指CPU暂停正在执行的程序,转而执行另一个处理器中的程序,以响应外部设备(如磁盘驱动器、网络接口卡、键盘等)的请求。
- 中断可以分为硬件中断和软件中断。硬件中断是由硬件设备引发的,例如磁盘驱动器完成一次读写操作后发出的中断信号;而软件中断是由操作系统内核中的代码触发的,例如系统调用、异常和信号等。
- 此处的中断类型显然属于软件中断(系统调用),CPU收到中断信号后会停止当前正在执行的程序,保存执行现场的状态,然后开始执行中断处理程序。中断处理程序执行完毕后,CPU会重新处理之前未处理完的程序。
4. 管理用户&用户权限操作常用指令
管理用户
| 指令名称 | 功能 | 示例 |
|---|---|---|
| useradd | 创建新用户 | useradd yony |
| passwd | 设置或更改用户的密码 | passwd tony |
| usermod | 修改现有用户的属性(如家目录,所属组等) | usermod -d /home/tony tony(将Tony家目录更改为/home/tony) |
| whoami | 显示当前登录用户的用户名 | whoami |
| id | 显示当前用户的UID和所属组的GID | id |
用户权限
| 指令名称 | 功能 | 示例 |
|---|---|---|
| chmod | 更改文件或目录的权限 | chmod u+rwx myfile |
| chown | 更改文件或目录的所有者和所属组 | chown tony:developers myfile(所有者:tony,所属组:developers) |
| chgrp | 更改文件或目录的所属组(可被chown代替) | chgrp developers myfile |
| su | 切换用户身份(如果没有提供任何参数,则默认切换为超级用户 root) | su tony |
| sudo | 以其他用户的身份运行命令(默认情况下以超级用户 root 的身份运行) | sudo apt-get update |
Linux软件包管理
Nginx概述
Nginx 是一种高效的开源服务器软件,可以用于处理大量的同时连接,同时消耗资源很少。它可以扮演多种角色:
- Web服务器——可以提供静态和动态内容,支持HTTP、HTTPS、SMTP等多种协议,支持多种后端语言,如PHP、Python、Java等。具有高并发、低资源占用的优点,可以处理大量的同时连接。
- 反向代理服务器——以根据请求的URL、IP地址等条件来动态地将请求转发到后端服务器上,避免单点故障,提高网站的可靠性和稳定性。(这里关于“反向代理”的定义详解这位朋友的笔记:“详解正向代理与反向代理”)
- 静态资源服务器——用于快速传输静态资源,如图片、CSS、JavaScript等。Nginx可以处理大量的静态资源请求,并具有较低的资源占用率和高效的传输速度。