一、计算机硬件
五大基本单元
1.控制器
协调和指挥计算机中其他部件进行工作
2.运算器
进行算数和逻辑运算 控制器与运算器共同组成了一个CPU单元
3.存储器单元
内存 外存 磁盘、光驱...
4.输入单元
鼠标、键盘...
5.输出单元
显示器、音箱...
二、计算机操作系统
操作系统: 管理和控制计算机系统中的硬件和软件资源,用于在用户和系统硬件之间传递信息
作用
1.管理计算机资源
处理器管理、存储器管理、设备管理、文件管理
2.提供用户接口
命令接口、图形用户接口、程序接口
计算机启动流程
两种途径:BIOS和UEFI
(固化在主板上的一段程序,开机时就能执行和解析这段程序,进行初始化)
BIOS--优化升级-->UEFI
三、Linux系统概览
Linux版本
内核版本 发行版本 Linux内核+常用软件=Linux发行版本
查看Linux系统内核版本
方法1:
uname -a
方法2:
cat /proc/version
查看发行版本
cat /etc/os-release
四、Linux基本组成
(一)4个主要部分
1. 内核
提供操作系统的底层能力(内存管理、进程管理、文件系统管理、硬件资源的管理)
2. shell
命令解释器,实现交互
3. 文件系统
4. 应用程序
(二)Linux体系结构
应用程序发起请求,从底层GNU C Library发起了一次系统调用,程序从用户态切换到了内核态,由内核代表程序运行于内核空间,程序拥有了与硬件设备通信的能力,任务完成后,程序从内核态切回用户态。
- 内核是硬件和软件的中间层,实现了两者间的交互
- 两个进程间允许通信
- 进程可以直接访问文件系统
(三)Linux系统管理
进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个CPU核同一时间只能运行一个进程
- 进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别
查看进程信息
查看启动的nginx进程
ps -ef | grep nginx
查看某个进程具体信息
top -p 93824//进程号
关闭指定进程
kill 93824//进程号
全部进程动态实时视图
top
进程调度
进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程
进程状态
- R:可执行状态
- S:可中断的睡眠状态
- D:不可中断的睡眠状态
- T:暂停状态或跟踪状态
- Z:退出状态,进程成为僵尸进程
- X:退出状态,进程即将被销毁
调度原则
- 一个CPU核同一时间只能运行一个进程
- 每个进程由近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
(四)Linux系统结构
文件系统
Linux中一切皆文件(文件、目录、设备、套接字...) 保证了操作的统一,接口调用的统一
虚拟文件系统(VFS)
- 对应用层提供一个标准的文件操作接口
- 对文件系统提供一个标准的文件接入接口 抹平不同文件间的差异,实现统一
查看文件系统类型
df命令报告文件系统磁盘空间利用率
df -T
mount命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息
mount
文件基本操作
ls //查看文件夹下的内容
mkdir demo //创建文件名
mv demo /home //移动demo文件夹到/home
rm -r demo //删除demo文件夹
touch file.txt //创建空文件
cp file.txt file_bak.txt //复制文件
nginx进程先去用户缓冲区进行寻找,查看是否有数据缓存,有直接读取返回,没有的话,发起一次系统调用(系统io),从用户态转到内核态,接着到内核缓冲区中读取,有则读取返回,没有则通过DMA向磁盘发送文件读取请求,DMA将相关数据拷贝到内核缓冲区--...-->用户缓冲区--CPU拷贝-->Socket缓冲区--DMA--网卡-->用户
用户权限
用户账户
- 普通用户账户:在系统中进行普通作用
- 超级用户账户:在系统中对普通用户和整个系统进行管理
组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
查看用户信息
查看当前登录用户信息
w
查看当前用户所属的组
groups
查看用户的uid信息
id ××××//用户名
文件权限
- 所有者:文件的所有者
- 所在组:文件的所有者所在的组
- 其他人:除文件的所有者及所在组外的其他人
用户权限操作
//在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd / && mkdir demo && ls -ld demo
sudo useradd ceshi //创建一个用户,并赋予可写操作
sudo passwd ceshi //设置用户密码
su ceshi //切换ceshi用户登录
cd demo //进入demo文件夹
touch index.js //创建index.js文件,提示无权限,需要给ceshi用户demo文件夹的权限
sudo chown -R ceshi:ceshi ./demo //demo文件夹写权限赋子其他人
su ceshi //切换ceshi用户登录
cd demo //进入demo文件夹
touch index.js //创建index.js文件成功
五、软件包管理
- 软件包 通常指一个应用程序(GUI应用程序、命令行工具或其他软件程序需要的软件库)
- 软件包管理
- 底层工具:主要用来处理安装和删除软件包文件等任务,DPKG、RPM...
- 上层工具:主要用于数据的搜索任务和依赖解析任务,APT、YUM、DNF...
APT常用命令
- 列出所有可更新的软件清单命令: apt update
- 安装指定的软件命令: apt install <package_name>
- 安装多个软件包: apt install <package_1> <package_2> <package_3>
- 更新指定的软件命令: apt update <package_name>
- 删除软件包命令: apt remove <package_name>
- 查找软件包命令: apt search
- 列出所有已安装的包: apt list --installed