2 Linux基础 | 青训营笔记

113 阅读7分钟

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