一、计算机硬件
1、主要构成:控制器、运算器、存储器单元、输入单元、输出单元
2、解释
1)控制器:协调指挥其他部件进行工作,控制器负责从内存中获取指令并解释执行。协调计算机中各个部件的工作。控制器和运算器共同组成了cpu。
2)存储器:分为外存和内存,外存举例:磁盘,框区都属于外存。
3)输入单元:包括键盘、鼠标等,它们用于实现用户与计算机之间的交互。
4)输出单元: 显示器,它们用于实现用户与计算机之间的交互。
二、操作系统
1、操作系统:操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。简单来说就是:管理计算机的硬件和软件,承上启下。
2、启动流程:通过BIOS,UEFI,可以理解为这两个东西是运行在磁盘上的一段代码。UEFI是通过BIOS的升级版本。
3、操作系统的主要功能
操作系统的主要功能包括:
- 硬件管理:操作系统负责管理计算机的硬件资源,如CPU、内存、磁盘、输入输出设备等。
- 进程管理:操作系统负责管理计算机上运行的进程,包括进程的创建、调度、同步和通信等。
- 文件管理:操作系统负责管理计算机上的文件和目录,包括文件的创建、删除、读写和保护等。
- 内存管理:操作系统负责管理计算机的内存资源,包括内存分配、回收和保护等。
- 设备驱动:操作系统负责管理计算机上的设备驱动程序,以支持各种不同类型的硬件设备。
常见的操作系统有Windows、macOS、Linux等。
三、linux操作系统
(一)linux版本
1、内核版本
2、发行版本 = 内核版本 + 常用软件
(二)、查看linux系统内核版本
方法一: uname -a
方法二: cat /prov/version
四、linux基本组成
1、内核:主要分为五部分:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。进程调度 (SCHED) 控制进程对CPU的访问。linux内核的作用概括来说就是它负责管理计算机的硬件和软件资源。
2、shell:命令解释器,通过shell达到与内核的交互,从而达到管理和使用linux的一些资源。
3、文件系统: 将用户文件存入磁盘中。Linux文件系统的设计目的是用来存储文件和管理文件。理念是:一切都是文件。
4、应用:运行在用户空间的应用程序,它们通过系统调用与内核交互,完成各种任务。
五、linux体系结构
linux体系结构主要分为用户空间和内存空间,内核的作用可以概括为:
1、内核是硬件和软件之间的中间层,理解为它负责管理计算机的硬件和软件资源,为应用程序提供服务。
2、内核是一个资源管理程序,它负责管理计算机的内存、CPU、输入输出设备等资源,以确保系统的稳定 运行。
3、内核提供一组面向系统的命令,这些命令可以用来管理系统资源、执行任务和进行系统维护等操作。这些命令通常由系统管理员使用,用来对系统进行管理和维护。
六、linux系统结构(进程管理)
(一)、进程特点
1、进程是正在执行的程序和命令。
2、进程有自己的地址空间,占有一定的资源。
3、一个cpu核同一时间只能运行一个进程。
4、进程由它的进程ID(PID)和父进程ID(PPID)唯一识别。
qus: 为什么使用父进程创建子进程?
anw: 在Linux系统中,进程的创建是通过父进程调用fork()函数来实现的。这个函数会创建一个新的进程,它是父进程的副本。新创建的子进程会继承父进程的许多属性,但也有一些区别。这种设计可以让操作系统更好地管理和调度进程,因为它可以通过父子关系来组织进程。此外,这种设计也使得进程间通信更加容易,因为父子进程之间可以共享某些资源。
(二)、查看进程信息的命令
1、查看启动的nginx进程:ps -ef | grep nginx
2、查看某个进程:top -p 90384 (进程号)
3、关闭进程:kill 90384 (进程号)
4、全部进程实时动态图: top
(三)进程调度
(四)进程调度原则
进程调度是指操作系统在多个进程之间选择一个进程将其送上CPU执行。调度程序通常会遵循一些原则来决定哪个进程应该被执行。这些原则包括:
- 所有进程都应该获得公平的CPU时间。
- 一个cpu核同一时间只能运行一个进程
- 对比逻辑CPU而言,进程调度使用轮询方式执行,当轮询完成则回到第一个进程反复。
- 进程执行时间与进程执行量成正比。
额外补充几点
- 效率:调度程序应该最大化CPU的利用率。
- 响应时间:调度程序应该尽量减少用户等待响应的时间。
- 吞吐量:调度程序应该最大化单位时间内完成的进程数量。
根据这些原则,操作系统会采用不同的调度算法来实现进程调度。常见的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、优先级调度、时间片轮转(RR)和多级反馈队列调度(MLFQ)等。
七、linix文件系统
(一)Linux文件系统:是用来存储和管理文件的。
它的设计理念是“一切皆文件”,这意味着在Linux系统中,所有的资源都被视为文件,包括硬件设备。硬件所形成的文件通常称为设备文件。这样用户就可以通过读写文件的方式来访问硬件设备,这样带来的优势也是显而易见的。
例如,linux权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了
Linux文件系统不仅包含着文件中的数据,而且还有文件系统的结构。Linux用户和应用程序看到的文件、目录、软连接及文件保护信息等都存储在其中。此外,Linux文件系统采用树状结构图,方便归类和整理,方便文件的查找和管理
que: linux有很多不同的文件系统,如何完成对外提供统一的API:
ans:虚拟文件系统,虚拟文件系统是一个内核软件层,它为用户程序提供文件和文件系统操作的统一接口,屏蔽不同文件系统的差异和操作细节。它的作用是处理与 linux 标准文件系统相关的所有系统调用,并为各种文件系统提供一个通用的接口
(二)查看文件系统的命令:
1、df -T / mount: 查看文件系统的磁盘利用率
2、ls: 查看文件夹下内容
3、mkdir: 创建文件夹
4、rmdir:删除空目录
5、cp:复制文件或目录。
6、 mv:移动或重命名文件或目录。
7、touch:创建空文件或更改文件时间戳。
额外补充一些基础命令:
- pwd:显示当前工作目录。
- cat:查看文件内容。
- more/less:分页查看文件内容。
- head/tail:查看文件的开头/结尾部分内容。
- nano/vi/vim: 编辑文本文件。
(三)文件读取流程
读取文件流程概括:
- 应用程序通过系统调用(如
read)发起文件读取请求。 - 内核接收请求并检查文件描述符是否有效,以及用户是否有权限访问该文件。
- 内核检查文件数据是否已经缓存在页缓存(page cache)中。如果是,则直接从页缓存中读取数据;否则,内核将文件数据从磁盘读取到页缓存中。这一步可以通过DMA技术来加速。
- 内核将文件数据从页缓存复制到应用程序的用户空间缓冲区。
- 应用程序可以访问用户空间缓冲区中的文件数据。
需要理解的几个概念:
DMA:是一种硬件技术,它允许某些硬件子系统(如磁盘控制器)在不经过CPU的情况下直接访问系统内存。这样可以减少CPU的负担,提高数据传输效率。
在文件读取流程中,DMA可以用来将数据从磁盘直接传输到内存中的文件读取缓冲区,而不需要经过CPU。这样可以大大提高文件读取的速度
八、linux用户权限
(一)用户账户
1、w:显示当前登录用户的信息。
2、groups: 查看当前用户所属的组
3、id:显示当前用户的UID、GID和所属组。
(二)文件权限
1、每个用户对文件都有不同的权限,读(R),写(W), 执行(X)。
九、linux软件包管理
1、软件包:通常指的是一一个应用程序, 它可以是一一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
2、软件包管理
底层工具:主要用来处理安装和删除软件包文件等任务,DPKG, RPM
上层工具:主要用于数据的搜索任务和依赖解析任务,APT, YUM, DNF
ps: 不同的Linux发行版使用不同的软件包管理系统来管理软件包,常见的有apt(用于Debian、Ubuntu等)、yum(用于Red Hat、CentOS等)、pacman(用于Arch Linux等)等。
上层工具相当于 把底层工具要做的事情做好了。
(二)、Debian APT常用命令
1、列出所有可更新的软件清单命令: apt update
2、安装指定的软件命令: apt install <package. name>
3、安装多个软件包: apt install <package_1> spackape_2> <package_3>
4、更新指定的软件命令; apt update <packape_name>
5、删除软件包命令: apt remove <package_name>
6、查找软件包命令: apt search
7、列出所有已安装的包: apt list --Installed
(三)Debian 配置软件源