Linux基础|青训营笔记
计算机硬件
计算机五大基本单元
控制器:接受指令,解码指令,调度指令,并且通过总线将指令发送到其他单元,以控制它们执行指令。
运算器:计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。它由ALU(算术逻辑单元)和其他寄存器组成。
存储器单元:用于存储程序和数据。分为内存和外存,内存一般指主存储器,外存一般指磁盘等外部储存设备。
输入单元:是计算机中的输入设备,用于接收外部数据并将其传输到计算机系统中。
输出单元:是计算机中的输出设备,用于将计算机系统中的数据传输到外部环境中。
计算机操作系统
定义:管理和控制计算机系统中的硬件和软件资源,用于在用户和系统硬件之间传递信息。
承上启下:
- 承上:在操作系统之上可以运用我们的计算机应用程序
- 启下:可以直接与硬件做出交互
操作系统启动流程
Linux系统概览
发展简史:
1.1969年,Uniix诞生于贝尔实验室
2.1984年,贝尔实验室将Unix商业化
3.1984年,Tanenbaum开发Minix操作系统用于教学并开放源代码
4.1984年,Richard M.Stallman发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
5.1991年,Linus Torvalds:受Minix影响实现初版的Linux内核
6.1992年,Linux内核以GPL协议发行V1.0
Linux版本:
- 内核版本
- 发行版本
Linux内核 + 常用软件 = Linux发行版本
应用领域:
-IT服务器(操作系统、虚拟化和云计算)
-嵌入式和智能设备
-个人办公桌面
-学术研究与软件开发
Linux系统结构
基本组成:
内核
Linux操作系统的核心部分,它管理计算机硬件的资源,包括CPU、内存、磁盘、网络等。它是操作系统与硬件之间的接口,提供了一个操作系统所需的各种基本服务和功能,如进程管理、文件系统、内存管理、网络协议栈等。
shell
Shell是用户与Linux内核之间的接口,是一个命令解释器,提供了一种命令行界面供用户进行交互。在Shell中,用户可以输入命令和参数,执行脚本和程序,管理文件和目录等。
文件系统
文件系统时Linux操作系统中用于管理文件和目录的机制,时用户与操作系统之间进行文件交互的接口。Linux支持多种文件系统,如ext4、NTFS、FAT32等。它们管理者磁盘上的文件和目录,并提供文件读写、权限控制等基本功能。
应用程序
应用程序时运行在Linux操作系统上的各种软件,如文本编辑器、浏览器、视频播放器、编译器等。Linux操作系统拥有众多的应用程序,涵盖了各种领域,可以满足不同用户的需求。
体系结构:
用户空间
指应用程序运行的空间,包括用户应用程序、库、各种进程、服务等。用户空间的特点时受限制的权限,应用程序只能访问自己所拥有的资源,如自己的进程空间、自己的内存、自己的磁盘空间等。同时,用户控件还包括了各种shell,用户可以通过shell进行命令行操作,从而控制整个系统。
内核空间
指操作系统内核运行的空间,包括各种驱动程序、系统调用等。内核空间的特点是拥有系统级的权限,可以访问所有的资源,包括CPU、内存、磁盘、网络等。内核空间的代码通常运行在特权级别最高的模式下,可以直接进行操作硬件,因此内核空间的代码很少出错,一旦出错会导致整个系统崩溃。
[用户空间和内核空间之间通过系统调用进行通信。应用程序可以通过系统调用请求内核提供服务,如读写文件、网络通信、进程管理等。内核收到系统调用后会根据请求提供相应的服务,并返回结果给应用程序。]
进程管理:
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源(即独立性)
- 一个CPU核同一时间只能运行一个进程
- 进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别
进程调度:
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
文件系统:
- 文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。
- 不同的文件有不同的类型
- Liux文件系统是采用树状的目录结构,
- 最上层是 /(根)目录
读取流程:
用户权限
- 普通用户账户:在系统中进行普通作业
- 超级用户账户:在系统中对普通用户和整个系统进行管理
组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
文件权限关于用户有三个概念:
- 所有者:文件的所有者
- 所在组:文件的所有者所在的组
- 其他人:除文件所有者及所在组外的其他人
[每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)]
软件包管理
软件包
通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
软件包管理
- 底层工具:主要用来处理安装和删除软件包文件等任务
- 上层工具:主要用于数据的搜索任务和依赖解析任务
上层与底层工具的区别
底层工具
主要用于底层的软件包管理操作,例如软件包的安装、卸载、更新等,其主要特点包括:
- 以命令行为主要界面;
- 操作灵活、功能强大;
- 操作相对复杂,需要较高的技术水平。
常见的底层工具包括:
- DPKG:Debian Linux 系统的底层软件包管理工具;
- RPM:Red Hat Linux 系统的底层软件包管理工具;
- yum:基于 RPM 的高级包管理器;
- apt:基于 dpkg 的高级包管理器。
上层工具
则更加注重用户友好性,提供了一些图形化界面和便捷的操作方式,其主要特点包括:
- 提供图形化界面,操作简单方便;
- 可以方便地搜索、安装和卸载软件包;
- 功能相对有限。
常见的上层工具包括:
- Synaptic:适用于 Debian 系统的上层软件包管理工具;
- Yumex:适用于 Red Hat 系统的上层软件包管理工具;
- Apper:适用于 KDE 桌面环境的上层软件包管理工具;
- Gnome-Software:适用于 Gnome 桌面环境的上层软件包管理工具。