1、计算机硬件
5大单元
控制器:可以接受指令解码,调度指令
运算器:算数和逻辑单元
运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。存储器单元
用于存储程序和数据。它分为内存和外存两部分,内存一般指主存储器,外存一般指磁盘等外部存储设备
输入单元 用于接收外部数据并将其传输到计算机系统中。例如,键盘、鼠标、扫描仪等都是输入单元
输出单元:用于将计算机系统中的数据传输到外部环境中。例如,显示器、打印机、喇叭等都是输出单元
2、计算机操作系统
管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
管理计算机资源:处理器、存储器、设备管理、文件管理 提供用户接口:命令接口、图形用户接口、程序接口
操作系统本身也是一种程序,如何在开机时被执行的呢?
BIOS---BIOS自检-----bootloader----os
BIOS(Basic Input/Output System,基本输入输出系统)
UEFI ------bootloader----os
UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)
3、linux 版本:
内核版本
发行版本
linux内核+常用的软件=linux发行版本
主流的linux版本有debian redhat slackware 国产系列 查看linux内核版本
linux体系结构 硬件层 内核层 应用程序层 用户层 包含shell
4、用户空间和内核空间
a、用户空间,指的是应用程序运行的空间,包含SHELL
b、内核空间,通常运行在特权级别最高的模式 1与2 通过系统调用进行通信
IO请求 1、应用程序通过系统调用向内核发起IO请求
2、内核收到,检查合法性
3、合法,加入等待队列,控制权移交应用程序
4、IO完成请求后,一个中断信号给到内核
5、内核在中断程序中检查等待队列,完成的进行移除,并将数据复制到应用程序,多个请求的话,内核会进行调度
6、处理完成,内核向应用程序发布信号,已完成
7、应用程序收到信号,继续执行逻辑,IO请求完成
系统调用
1、用户指定调用的类型和参数
2、控制权转移内核,切换内核态
3、操作系统会执行系统调用,处理
4、处理完成,返给用户程序,切换用户态
内核
1、内核是硬件与软件的中间层
2、内核是一个资源管理程序
3、内核提供一组面向系统的命令
linux的进程管理
进程是正在执行的程序和命令 进程是操作系统中正在执行的一个程序或命令的实例。每个进程都有一个唯一的进程标识符(PID)和一组相关的系统资源
进程命令 查看启动的nginx进程 ps aux grep nginx
查看某个进程 ps -p top -p 查看资源使用的情况 关闭指定进程 kill 全部进程动态实时视图 top 用快捷键q退出top指令
系统中运行的程序远远大于CPU的核数,那Liux系统是如何实现同时运行这么多程序的? 进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程: 它负责将系统中的进程分配到 CPU 的执行时间。因为一个系统中同时可能有很多进程需要运行,而 CPU 的时间是有限的,因此需要对这些进程进行调度,以便让它们都得到适当的时间片,从而使整个系统运行更加高效
进程的状态
R(TASK-RUNNING)可执行状态
S(TASK-INTERRUPTIBLE)可中断的睡眠转台
D(TASK-UNINTERRUPTIBLE)不可中断的睡眠状态
T(TASK-STOPPED OR TASK-TRACED) 暂停状态或者跟踪状态
Z(TASK-DEAD-EXIT-ZOMNIE) 退出状态 僵尸进程
X(TASK -DEAD-EXIT-DEAD) 推出状态,进程即将销毁
进程调度的目标是提高系统的资源利用率和响应速度,通过有效地利用 CPU 时间,让系统可以同时运行多个进程,从而实现高效的资源共享。常见的进程调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等
linux
1、用户程序发起系统调用,例如调用打开文件的系统调用 open()。
2、程序经过用户态内核态切换后,进入内核态执行系统调用。
3、内核执行系统调用,并返回结果给用户程序,例如返回一个文件句柄。
4、程序再次经过内核态用户态切换后,回到用户态执行后续代码。
linux文件系统
树状的目录结构
最上层是根目录 (/)
Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?
linux 为不同的文件系统提供了统一的操作方式
就是虚拟文件系统(virtual,file system)
VFS
在 VFS 中,对所有的文件系统都采用统一的操作方式,这些操作会被映射到各个具体文件系统所对应的操作函数上。通过这种方式,VFS 能够屏蔽不同文件系统的差异性,为上层应用程序提供了一个统一的视图,使得应用程序不必关心文件的具体存储细节,而只需要关注文件操作本身。
因此,无论是 ext4、NTFS、FAT32 还是其他文件系统,应用程序都可以使用同样的方式来访问它们。这也是 Linux 系统在文件系统方面具有很强可扩展性和兼容性的一个重要原因。
df -T
命令报告文件系统磁盘空间利用率
mount
挂载文件系统适用,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区信息
简单文件操作命令
1S#查看文件夹下的内容
mkdir demo #创建文件夹
mv demo /home # 移动demo 文件夹到、home
re-r demo#删除demo文件夹
touch file.txt #创建空文件
cp file.txt file-bak.txt #复制文件
文件读取流程
(图片比较容易理解)
用户空间
内核空间
硬件空间
linux用户权限
用户账号
1、普通用户账号
2、超级用户账号(在系统中对普通用户和整个系统进行管理)
组账户
1、标准组(可以容纳多个用户)
2、私有组(用户只有自己)
查看当前登录的用户信息:w
查看当前用户所属的组:groups
查看用户的uid信息:id
文件权限关于用户的三个概念
1、所有者
2、所在组
3、其他人
每个用户对文件都有不同的权限
包括读(R) 写(W) 执行(X)
d rwx r-x r-x
文件类型 所有者 所在住 其他人
基础用户操作命令
在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
这是三个命令组合在一起执行的语句。
1、cd / 切换到根目录
2、mkdir demo 创建名为demo的文件夹
3、ls -ld demo 查看demo文件夹的详细信息,包括文件夹的权限等。其中,ls是查看文件和目录的命令,-l选项是显示详细信息,-d选项是显示目录自身信息,而不是显示目录内文件信息。
cd /&&mkdir demo &&1s -1d demo
创建一个用户,并赋予可写操作
sudo useradd
表示以管理员权限执行添加用户的操作,而 ceshi 则是指定要创建的用户的用户名。执行该命令后,系统会创建一个新的用户账户,并在系统中为其分配一个用户ID、主目录和默认shell等
sudo useradd ceshi
以管理员权限执行添加用户的操作
ceshi
ceshi 则是指定要创建的用户的用户名。执行该命令后,系统会创建一个新的用户账户,并在系统中为其分配一个用户ID、主目录和默认shell等
sudo passwd ceshi
设置用户密码
其中sudo是用来获得超级用户权限,passwd是用来设置用户密码的命令,ceshi是指定要设置密码的用户
su ceshi
切换ceshi用户登录
在当前终端中切换到用户ceshi的身份。通过执行这个命令,你可以在终端中执行ceshi用户具有权限的操作
cd demo
进入demo文件夹
touch index.js
创建index.js文件,提示无权限,需要给ceshi 用户demo 文件夹的权限
sudo chown -R ceshi :ceshi ./demo
目录下的demo 文件夹内的所有文件和拥有者和所有组全部改成ceshi 用户和ceshi 组,其中-R参数表示递归修改
su ceshi
切换ceshi 用户登录
cd demo
进入demo 文件夹
touch index.js
创建index.js 文件成功
linux系统软件包管理器
软件包:通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
软件包管理:
底层工具:主要用来处理安装和删除软件包文件等任务
底层工具主要用于底层的软件包管理操作,例如软件包的安装、卸载、更新等,其主要特点包括:
以命令行为主要界面;
操作灵活、功能强大;
操作相对复杂,需要较高的技术水平。
常见的底层工具包括:
DPKG:Debian Linux 系统的底层软件包管理工具;
RPM:Red Hat Linux 系统的底层软件包管理工具;
yum:基于 RPM 的高级包管理器;
apt:基于 dpkg 的高级包管理器。
上层工具:主要用于数据的搜索任务和依赖解析任务
提供图形化界面,操作简单方便;
可以方便地搜索、安装和卸载软件包;
功能相对有限
的上层工具包括:
Synaptic:适用于 Debian 系统的上层软件包管理工具;
Yumex:适用于 Red Hat 系统的上层软件包管理工具;
Apper:适用于 KDE 桌面环境的上层软件包管理工具;
Gnome-Software:适用于 Gnome 桌面环境的上层软件包管理工具。
常用的命令
apt update 列出所有可更新的软件清单
apt install 安装特定的软件
apy install
安装多个软件包
apt update更新指定软件
apt remove(package-name>删除软件包指令
apt search 查找软件包命令
apt list -installed 列出所有已经安装的包
管理软件源
通常debian 系的linux软件源配置文件:/etc/apt/sources.list