Skip to content

这是我自己21年考计算机三级Linux时,使用官方教材做的一些重点笔记,已经通过了,说明是有点用的,分享出来

Notifications You must be signed in to change notification settings

zxj17815/linux-3-exam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 

Repository files navigation

计划安排

学习书籍为官方三级考试Linux教程

日期 章节 页码 程度 笔记
0724 1.1、1.2 3~16 一般 第1章
0725 1.3~1.5 17~49 一般
0726 2~ 50~61 一般 第2章
0727 3.1、3.2 62~80 一般 第3章
0728 3.3~3.5 80~93 一般 第3章
0729 4.1、4.2 94~105 重要 第4章
0730 4.3、4.4 105~137 重要

计算机体系结构与操作系统

  1. ”计算机科学的奠基人“、”人工智能之父“ 英国数学家图灵(1912-1954)图灵奖
  2. ”现代计算机之父“、”博弈论之父“ 美籍匈牙利 冯诺伊曼(1903-1957)
  3. 冯诺伊曼结构计算机由 控制器、运算器、存储器、输入设备、输出设备 五部分组成(控制器和运算器构成现在CPU)
  4. 计算机的主要研究方向为 系统研究 即设计实现计算机,包含计算机的理论研究和计算机系统设计实现(硬件、软件),应用研究 即使用计算机解决实际问题
  5. 计算机体系(系统)结构是与计算机系统组织和实现相关的基本理论、工作原理、设计方法和技术的总称
  6. 摩尔定律,每过 18个月,芯片上可以集成的集体管数量将翻一倍
  7. 计算机结构层次:
    0层:数字逻辑层,主要是实现计算机的硬件的逻辑电路和连接线路
    1层:微体系结构层,通过控制器和存储器的微指令集设计计算机系统架构
    2层:传统机器层,通过机器语言设计计算机体系结构
    3层:操作系统层,使用操作系统的管理命令管理和调度计算机系统中的软硬件资源
    4层:汇编语言层,连接高级语言和机器语言,编译器(编译程序)将高级语言翻译成汇编语言、汇编器(汇编程序)将汇编语言翻译成机器语言
    5层:高级语言层,普通程序员使用如c,java,python带语言完成程序
    6层:应用程序层,面向普通使用者的
  8. 指令集是一个计算机系统支持的所有机器指令的集合,软硬件层面的分界
  9. 计算机系统工作的基本过程:程序员编写的软件经编译器翻译成可执行程序,即一个机器的指令序列,然后由底层硬件一条条读取指令执行,该过程即代表,软件的最终体现为指令集中的各种指令。
  10. 指令集是计算机设计中重要的一环,指令集对上限定类软件的基本功能,对下制定了硬件实现的功能目标
  11. 基本指令格式:操作码+操作数(地址);依据操作数量的不同可以分为 零地址指令、一地址指令、二地址指令、三地址指令、多地址指令;如加法指令需要操作码和三个操作数【加法操作码+加数操作数(地址)+加数操作数(地址)+结果保存操作数(地址)】
  12. 按指令的寻址空间来分,寻址方式:立即数寻址、寄存器寻址、主存寻址、堆栈寻址
  13. 指令的操作码以及操作数在计算机中用二进制表示,为了方便记忆使用助记符(如加法是ADD、减法是SUB,传送是MOV等),汇编语言通常采用采用助记符。
    例子,将寄存器AX等值设为0010H,寄存器BX等值设为0020H,然后将AX和BX内容相加,结果保存在AX中。
    MOV AX,0010H    
    MOV BX,0020H    
    ADD AX,BX   
    
  14. 指令集体系结构(ISA,Instruction Set Architecture)分为 CISC(复杂指令系统计算机 Complex Instruction Set Computer)、RISC(精简指令系统 Reduced Instruction Set Computer)
  15. 常用等ISA为:X86、ARM、MIPS
  16. 在CPU和主存之间有高速缓冲存储器(Cache),Cache和主存储器的地址映射方式有三种:
    • 全相联映射
    • 直接映射
    • *组相联映射
  17. 在采用全相联映射和组相联映射的系统中,当Cache满的时候需要使用替换策略,常用的替换策略有 随机法(RAND)、先进先出法(FIFO)、最近最少使用法(LRU)
  18. Cache与主存之间的数据一致性,通过两种常用的Cache写操作方式来保证:写直达、写回
  19. 缓存一致性协议 最经典的是 MESI(Modified Exclusive Shared or Invalid),MESI协议Cache Line状态:修改、独占、共享、失效
  20. 传统的单核CPU由控制器和运算器这两个主要部件组成。
  21. 多核处理器(CMP,Chip Multi-Processor):
    • 同构多核:计算内核相同、地位对等
    • 异构多核:计算内核不同、地位不对等
    • 各核心之间数据的共享和同步,基于总线共享的Cache结构(每个内核共享二级或三级Cache,结构简单,通信速度高,可扩展性差)、基于片上的互联结构(每个核心有自己的Cache,核心之间通过消息通信,可扩展性好,硬件结构复杂软件改动大)
  22. CPU指令执行的过程:取指令(IF)➡️指令译码(ID)➡️执行指令(EX)➡️访问数据(MEM)➡️结果写回(WB),以上五个阶段形成一个指令周期(CPU取出并执行一条指令所需的全部时间称为指令周期)
  23. �CPU周期(机器周期),一个CPU周期包含若干个时钟周期,时钟周期定义为CPU时钟频率的倒数,是计算机中最基本、最小的时间单位
  24. 操作系统从用户角度看,为用户提供的服务:程序开发、程序运行、I/O设备访问、文件访问、系统资源的访问、错误检测和响应、日志服务
  25. 操作系统从系统角度看,计算机就是一组软硬件资源的集合,操作系统负责管理这些资源,资源按作用分:处理器,存储器、I/O设备、文件(程序和数据)
  26. 现代操作系统一般具有 并发、共享、虚拟、异步(随机、不确定性)这四个基本特征,还有安全和可扩展性
    • 并发:两个或多个事件在同一时间间隔内发生
    • 共享
  27. 并行:两个或多个事件在同一时刻发生
  28. 从资源管理的角度,操作系统五大基本功能:处理器管理、存储管理、设备管理、文件管理、作业管理
  29. 进程:计算机中的程序在某数据集合上帝一次运行活动,是系统进行资源分配和调度的基本单位;并发环境中程序的执行过程
  30. PCB(Process Control Block)进程控制块是进程存在的唯一标准
  31. 进程和程序的区别:
    • 进程是个动态概念,程序是个静态概念
    • 进程有并发特征,程序没有
    • 进程有生命周期,只在计算机运行期间才有可能存在;程序可以在外存长期保存
    • 进程和程序之间并不总是一一对应的,一个程序执行在不同数据集上就成为不同进程
    • 进程与程序的组成不同,进程实体的组成包括程序数据和进程控制块PCB
  32. 线程:线程包含在进程中,一条线程就是进程中一个单一顺序的控制流,在一个进程中可以并发多个线程。线程<进程
  33. 进程的状态:运行态、就绪态、等待态、(新建态、终止态)
  34. 5种进程状态转换:新建➡️就绪、就绪➡️运行、运行➡️就绪、运行➡️等待、等待➡️就绪、运行➡️终止
  35. 文件的物理结构:顺序结构、链接结构、索引结构
  36. 文件存储空间管理方法:空闲表法、空闲链表法(成组链接法)、位示图法
  37. 文件目录管理,文件控制块(File Control Block,FCB),单级目录、二级目录、多级目录(树形目录结构),在树形目录结构中,从根到任何文件都有唯一路径;现代操作系统基本上都是树形目录结构
  38. 文件共享:
    • 基于索引节点的共享方式-硬链接:引入索引节点,把文件的物理地址及其他文件属性等信息放到索引节点中,文件目录项中只包含文件名和指向索引节点的指针;在索引节点中应有一个链接计数器(count字段)用于表示链接到本索引节点的目录数量(当count=2时说明有两个目录链接到文件上,或者说有两个用户共享此文件)
    • 利用符号链实现的共享方式-软链接:创建一个Link类型的文件(符号链),内容只保存被共享文件的路径名,当访问符号链时,操作系统会根据符号链的内容将访问操作转到被共享的文件

Linux系统概述

  1. 1964年 MULTICS分时操作系统(贝尔实验室、麻省理工、美国通用电气)
  2. 1969年 Ken Thompson、Dennis Ritchie 开发了UNIX系统和C语言
  3. 用于教学的功能有限的类UNIX系统——MINIX Andrew Tanenbaum
  4. 1991年10月5日 Linux系统(0.0.2版本,目前最新5.5.7) Linus Torvalds(linux之父)
  5. 1984 GNU计划和自由软件基金会 里查德.斯托曼
  6. 1994年3月 Linux 1.0 发布
  7. 1996年6月 Linux 2.0 发布
  8. Linux操作系统版本分为内核版本和发行版本
  9. 内核-设备驱动、文件系统、进程管理、网络通信等

Linux系统使用基础

  1. 常用的桌面 KDE、GNOME、MATE、Cinnamon、Unity
  2. 可以在低配置运行的桌面 Fluxbox、Xfce、JWM、Fvwm、fvwm95
  3. 一般的命令格式:命令 [选项] [参数]
  4. w/who命令查看已登录的用户信息,w还可以看到其他用户的执行任务的情况 w [-h 不显示输出信息标题;-l 用详细格式输出;-s 用简洁格式输出] [用户名] who [-a 列出所有信息,相当于所有选项;-b 列出系统最近的启动时间; -l 列出所有可登录的终端信息; -m 仅列出当前终端信息;-q 列出在本地系统上的用户数和用户数的清单;-r 显示当前系统运行级别;-s 仅显示名称、线路和时间字段,是who命令默认选项;-u 显示当前每个用户的用户名、登录终端、登录时间、、线路活动和进程标识] [file 默认是从/var/run/utmp文件获取登录用户信息,也可以通过指定文件来获取]
  5. echo命令可以将命令行中的参数显示到标准输出(屏幕)上,-e 选项支持反斜线控制和字符转换;-n 选项内容不会换行显示
  6. date命令可以显示和修改时间 -s 选项设置时间 data -s "01:01:01 2021-08-20"
  7. passwd是密码配置命令 ``passwd [选项] [用户名]`;普通用户只能修改自己的秘密,root用户可以修改自己和普通用户的密码
  8. Linux下的软件包分为 源码包二进制包
  9. 源码包通常使用Tarball工具压缩,格式为*.tar.gz,Tarball是Linux系统的一款打包工具,可以对源码包进行打包压缩
  10. 二进制包说编译之后的包,有RPM和DPKG两大包管理系统
  11. RPM安装包的命令格式为rpm -ivh [包全名];可以多个包安装,用空格分开rpm -ivh a.rpm b.rpm c.rpm
  12. RPM升级包rpm -Uvh [包全名] U大写表示该软件如果没有安装则直接安装,若已安装则升级到最新版本;rpm -Fvh [包全名] F大写标识如该软件没安装则不会安装
  13. RPM卸载rpm -e [包全名]
  14. RPM查询rpm -q [包全名] q代表query;查询所有已安装的软件包rpm -qa qa代表 query all;可以使用查找符rpm -q |grep httped; 查询软件包相关信息rpm -qi [包全名] i 代表 information信息;查询未安装软件包的信息rpm -qip [包全名] p表示package 未安装的软件包
  15. 使用RPM安装软件包必须考虑与其他RPM包的依赖关系,rpm -qR [包全名]可以用来查询已安装软件包所依赖的其他包;rpm -qRp [包全名]可以查看未安装软件吧的依赖关系

shell脚本编程基础

  1. shell是一个交互性命令解释器(用C语言编写的程序)——一个读入并解释用户输入命令的程序,它是连接

  2. 通过cat /etc/shells 可以查看脚本的解释程序(即shell的种类) 最常见的Bourne shell(sh)、C shell(csh)、Korn shell(ksh)和Bourne-again shell(bash)

  3. shell脚本文件第一行#! /bin/bash 说明使用那种shell脚本编写

  4. bash别名设置就是赋予一条命令或一列命令新的名称,可以将别名设为缩写或者使用别名创建已有的命令自定义变体 如alias ll='ls -l'

  5. 脚步执行的三种方法:

    1. Linux下创建的文件默认是不可执行文件,运行脚本前首先要修改文件的权限,增加可执行权限chomd u+x [文件] ,然后直接运行./sh01,这种方法在脚本的第一行一定要定义使用的解释器#! /bin/bash
    2. 把脚本文件名作为参数传递给解释器程序 bash sh01
    3. 以重定向的方式让bash从给定的文件中读取命令行bash < sh01
  6. 环境变量PATH的值决定了shell将到哪些目录中寻找可执行程序,可以通过echo $PATH查看PATH的内容

  7. 通配符:

      • 匹配任意字符的任意次数出现
    1. ? 匹配任意单个字符
    2. [] 匹配改字符组所限定的任何一个字符
    3. [^ ]或者[! ]匹配不在该字符组的任何一个字符
    4. {string1,string2,...} 匹配其中一个指定的字符串
  8. 引用字符: 转义字符“\” echo It is warm\(and sunny\)\;come over and visit

    1. 单引号 echo 'It is warm(and sunny);come over and visit'
    2. 双引号 可以使$、\和倒引号符号保留特殊含义
    echo "the dir is <$HOME>;the useris is <$USER>" 
    1. 倒引号` 由倒引号括起来的字符串将被shell解释为命令行,shell会先执行该命令再用该命令的标准输出内容取代倒引号部分
     today=`date`
     echo Today is $today
  9. 输入输出重定向 >箭头指向的方向,就是数据流动的方向

  10. 常用重定向符:

    1. command <file 将文件作为命令的输入
    2. command <<分界符 从标准输入中读入,直到遇到分界符才停止
    3. command >file 将命令的正确结果输入到file中 覆盖文件
    4. command >>file 将命令的正确结果输入到file中 追加文件
    5. 文件描述符 0 表示标准输入 1表示标准输出 2表示错误输出,输入时默认为0,输出时默认为1,输出时添加2则输出错误信息command 2>file,2>file之间不能有空格
  11. 使用;分号连接多条命令则会按顺序执行

  12. 使用&&连接命令则只有在前一条命令执行成功时才会执行后面的命令

  13. 使用||连接命令则只有前一条命令执行错误,后一条命令才会执行

  14. 小括号在执行组命令时,需要重新开启一个子shell来执行。大括号是在当前shell中执行。

  15. 管道符| 前一个命令的输出是后一个命令的输入

  16. 后台命令符 &

  17. shell变量赋值=号两边不能有空格,如果字符串有空格就必须用加上引号name="zhang jay"

  18. 程序在引用变量名前要加上"$"符号 echo $name

  19. 防止变量名出现歧义可以用大括号括起来{}echo ${name},注意不能用小括号,$()等价于倒引号(``)

  20. bash的数组仅支持一维数组,数组内元素使用空格分割array name=(val1 val2 ...);或者单独定义array name[0]=val1;可以使用declare命令显式声明一个数组而不赋值declare -a name;读取数组使用${数组名[下标]}的方式 echo ${name[0]};如果没有给下标则默认下标为0 即echo ${name}echo ${name[0]}一样;通过echo ${name[*]}echo ${name[@]}获取数组全部值,* 和 @ 区别,前者将数组合并为一个词,后者是多个词

  21. shell命令位置参数变量

    1. $n n为数字代表:$0代表命令本身,$1代表第一个参数,$2代表第二个参数,当参数超过十个时要用大括号把数字括起来 ${10}
    2. $*: 代表命令行中所有参数,把所有参数看成一个整体
    3. $@: 代表所有参数,每个参数区别对待
    4. $#: 命令行所有参数的个数
  22. 环境变量也是系统预定义变量,环境变量是全局变量

  23. export 变量名 将用户自定义变量成为全局变量

  24. 环境变量PATH的作用是决定了shell将到哪些目录中寻找命令或可执行程序

  25. 设置变量set 注销变量 unset,查询变量的方式有三种,set、env和export。env可以查询所有环境变量、set可以查询局部和全局变量

  26. 所有变量默认为字符串类型

  27. declare 声明变量类型 -设置类型属性; +取消属性; -a声明数组型; -i声明整型; -r只读; -x环境变量;

  28. Let和expr变量,可以用来声明变量:dd=$(expr $aa + $bb);let dd=$aa+$bb;或者使用算术表达式ff=$ (( $aa + $bb ))

  29. shell if语句;测试条件用test xxxx或者方括号内[ xxxxx ](方括号两边都要有空格);0为真、1为假

    if test -f "$1"
        then echo "$1 is an ordinary file"
    elif [ -w "$1" ]
        then echo "$1 is can write"
    else
        then echo "$1 not an ordinary file"
    fi
  30. lt:less than 小于 le:less than or equal to 小于等于 eq:equal to 等于 ne:not equal to 不等于 ge:greater than or equal to 大于等于 gt:greater than 大于

  31. case语句,每个case分支要用双分号结尾 “;;”

    #! /bin/bash
    echo -n "delete file?(yes/no)"
    read answer
    case $answer in
        "yes") echo "your answer is yes!"
                rm file;;
        "no") echo "do not!";;
        *) echo "choice is error!";;
  32. while 语句

    i=1
    sum=0
    while [ "$i" -le 100 ]
    do 
        (( sum+=i ))
        (( i++ ))
    done
    echo "The sum is $sum"
    # 输出结果 5050
  33. unit语句,与while正好相反 当判断不成立时进行循环

  34. for循环,在循环期间可以使用break关键字直接跳出结束循环

    sum=0
    for(( i=1;i<=100;i++ ))
    do
        if (( i>=50 ));then
            break
        if
        (( sum+=i ))
    done
    echo "The sum is $sum"
    # 输出结果 5050

    值循环表达式

    sum=0
    for n in 1 2 3 4 5 6
    do 
        echo $n
        (( sum+=n ))
    done
    echo $sum
  35. select in 语句

    echo "what is your favourite OS?"
    select name in "Linux" "Windows" "Mac OS"
    do 
        echo "You have selected $ name"
    done

    运行结果

    what is your favourite OS?
    1) Linux
    2) Windows
    3) Mac OS
    #? 

    键盘输入1后:

    what is your favourite OS?
    1) Linux
    2) Windows
    3) Mac OS
    #? 1
    You have selected Linux
    

用户管理

  1. 用户和用户组的对应关系 一对一、一对多、多对一、多对多
  2. 用户名与ID的对应关系在/etc/passwd文件中
  3. 用户组名称ID的对应关系在/etc/group
  4. /etc/passwd 中用x表示此用户设有密码,真正密码在/etc/shadow中
  5. Linux密码采用SHA512散列加密算法
  6. /etc/group 是用户组配置文件,组信息存放在/etc/gshadow文件中
  7. 用户添加 useradd 用户名
  8. /etc/login.defs 文件用于创建用户时,对用户的一些基本属性设置默认值
  9. 配置密码 Passwd 用户名
  10. 修改用户信息 Usermod [选项] 用户名
  11. passwd -S 查看用户密码信息 chage -l 用户名 查看详细密码信息。Chage存在的意义是可以使用户在第一次登录后,必须修改密码,账户才能正常使用。两者还能修改密码
  12. userdel [选项] 用户名删除用户的相关数据,-r 同时删除用户目录

后记

发现2022年又暂停了等级考试里的三级Linux和四级Linux,本来还打算直接准备上四级的... 可能是出来的太快,意识到教材和题库练习什么的没有准备充分, 不知道什么时候恢复,也不知道后面出来的教材是不是还是这样的

About

这是我自己21年考计算机三级Linux时,使用官方教材做的一些重点笔记,已经通过了,说明是有点用的,分享出来

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published