1 计算机硬件
- 五大基本单元:
- 控制器
- 运算器
- 存储器单元
- 输入单元
- 输出单元
2 计算机操作系统
- 承上启下的作用
- 管理计算机资源
- 处理器管理
- 存储器管理
- 设备管理
- 文件管理
- 提供用户接口
- 命令接口
- 图形用户接口
- 程序接口
- 管理计算机资源
- 操作系统:mac、Linux、windows、安卓、鸿蒙
- 操作系统启动流程
- 基于BIOS引导操作系统启动的模式
- 基于UEFI引导操作系统启动的模式(当前主流)
- 简单理解BIOS UEFI是固化在主板上的一段程序,主要作用就是让计算机在开机的时候就能执行和解析到这段程序,当这段程序启动以后会执行一系列的初始化,并找Bootloader<--操作系统引导程序),会找到并运行这段程序,当Bootloader运行后,就可通过Boodloader加载并运行相应的OS,拉起操作系统
- 两个的区别:
- UEFI是BIOS优化升级版本,BIOS有一些限制与问题,比如有BIOS自检(即开机时会对硬件进行一些检查,导致启动速度变慢,UEFI优化了自检的流程,系统启动速度有明显提升
- BOIS默认会和MBR磁盘分区形式配合,导致无法引导启动2.2t容量以上的磁盘;而UEFI会配合GPT这种分区模式,可以引导超过2.2t容量以上的磁盘启动
3 Linux系统概览
- Linux发展简史
- Linux版本
- 内核版本
- 发行版本 = Linux内核 + 常用软件
- Debian:Debian、Ubuntu
- Red Hat系列
- ......
- 查看Linux系统内核版本
方法一
uname -a
方法二
cat /proc/version 查看Linux内核版本
cat /etc/os-release 查看Linux系统是哪个发行版本的
- Linux系统应用领域
- IT服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究与软件研发
4 Linux系统结构
- Linux基本组成(4部分)
- 内核:操作系统的底层能力,比如内存管理、文件系统管理、进程管理、硬件资源管理
- shell:命令解释器,可以通过shell输入一些指令来实现和Linux内核的一些交互,从而达到管理或者使用Linux里的资源
- 文件系统:负责把用户的文件存到磁盘硬件中
- 应用程序
- Linux体系结构
- 用户空间:应用程序、glibc
- 内核空间:系统调用、内核、平台架构相关代码
- 是硬件与软件之间的中间层
- 是一个资源管理程序
- 提供一组面向系统的命令:外部的系统可以与内核系统进行交互
- 从安全角度说,用户空间和内核空间是隔离的,也就是用户程序崩溃,也不会对内核空间按造成影响;权限角度,内核程序运行于内核空间,拥有最高级别的权限,有访问硬件设备的所有权限及对系统资源管理的权限,而应用程序运行在用户空间,拥有较低级别的权限,只能看到允许使用的部分系统资源,不能直接访问内存和硬件设备.所以Linux通过权限的划分保证资源的分配和管理的可控,保证系统的可控可靠
- 应用程序的上下文切换(程序系统调用过程):应用程序默认运行于用户空间,当用户发起io请求,即在底层通过glibc发起一次系统调用,程序就从用户态切换到内核态,会由内核代表程序运行于内核空间,当程序进入内核态就有了最高级别权限,也就有了与硬件设备通信的能力,当本次任务完成,程序又会重新从内核态切换回用户态
- 内核漫画 FTP文件传输21端口,目前快不用了 中间层两个肩扛管道的企鹅说明了,进程(企鹅)之间是允许进行管道通信的
Linux系统结构
- 进程管理
- 一个CPU核同一时间只能运行一个进程
- 有自己的地址空间,占用一定的系统资源
- 一个cpu核同一时间只能运行一个进程
- 由他的进程id(pid)和他父进程的进程id(ppid)唯一识别
- 启动进程时,是通过父进程拉起一个子进程的,即将父进程作为一个模板创建一个新的进程,然后将子进程的一些系统资源、内容映射到新创建的进程中,并不是通过接口创建一个全新的进程的
- pid0 pid1 pid2
- 查看进程信息
ps -ef | grep nginx 查看启动的nginx进程
top -p 93824 查看某个进程
kill 93824 关闭进程
top 全部进程动态实时图(类似资源管理器)
-
进程调度
- 定义:是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程
- 进程状态
- R(TASK_RUNNING),可执行状态
- S(TASK_INTERRUPTIBLE),可中断的睡眠状态
- D(TASK_UNINTERRUPTIBLE),不可中断的睡眠状态
- T(TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态
- Z(TASK_DEAD-EXIT_ZOMBIE),退出状态,进程成为僵尸进程
- X(TASK_DEAD-EXIT_DEAD),退出状态,进程即将被销毁
- 进程调度的原则
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
- 进程的系统调用
- 用户程序会频繁地在用户空间和内核空间切换
-
文件系统
-
Linux系统中一切皆文件
-
文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件
-
对这些的操作,接口调用统一
-
Liux文件系统是采用树状的目录结构,最上层是 /(根)目录
- bin:经常接触到的可执行命令
- dev:设备文件的目录
- root:超级管理员权限目录
- home:用户信息的目录
- sbin:超级管理员的二进制命令行目录
- 通过目录树的形式把所有文件挂载到操作系统下
-
虚拟文件系统(VFS)
- Linux有这么多不同的文件系统,通过VFS做了中间的抽象和抹平差异使命令能发送到各个文件中,达到读写等操作,实现对用户提供统一调用接口
df -T df命令报告文件系统磁盘空间利用率 mount mount命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息 -
文件基本操作 ls 查看文件夹下内容 mkdir demo 创建文件夹 mv demo /home 移动demo 文件夹到 /home rm -r demo 删除demo文件夹 touch file.txt 创建空文件 cp file.txt file_bak.txt 复制文件
-
文件读取流程 当接收到用户请求时,会找用户请求的一些文件,将文件内容读取出来返回给用户:用户缓冲区找,找缓存 没有时,发起系统调用,再分为内核中有缓存和无缓存的情况
-
-
用户权限
- 用户账户
- 普通用户账户
- 超级用户账户:即root
- 组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
w 查看当前登录用户信息 groups 查看用户当前所属的组(一个用户可以属于不同的组) id xxxx 查看用户的uid信息 - 用户账户
-
文件权限
- 文件权限关于用户有三个概念:
- 所有者:文件的所有者
- 所在组:文件的所有者所在的组
- 其他人:除文件所有者及所在组外的其他人
- 每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)
- 文件权限关于用户有三个概念:
-
用户权限操作
cd / && mkdir demo && ls -ld demo
sudo useradd ceshi
sudo passwd ceshi
su ceshi
cd demo
touch index.js
sudo chown -R ceshi:ceshi ./demo
su ceshi
cd demo
touch index.js
Linux软件包
- 软件包
- 通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
- 软件包管理
- 底层工具:主要用来处理安装和删除软件包文件等任务
- 上层工具:主要用于数据的搜索任务和依赖解析任务
- 软件包管理工具
- RPM:Red Hat Linux 系统的底层软件包管理工具;
- DPKG:Debian Linux 系统的底层软件包管理工具;
- Debian 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<keyword>
列出所有已安装的包:apt list-installed
- Debian配置软件源
- npm:前端包管理工具
- 通常Debian系的Linux软件源配置文件:/ect/apt/sources.list
- 查看系统代号:在镜像地址后加/dists
- 查看软件分支:在镜像地址后加/pool