测试基础 基础理论 (一) 计算机基础

伍个一 · 2021年07月15日 · 2803 次阅读

半路出家从事软件测试,计算机基础相当薄弱,工作一段时间告诉我基础这个东西,不会的话会踩大坑。
这些知识点来源于网络,回归于网络。
如果发现有错误的地方,欢迎斧正!

测试人员需要了解计算机基础么?入行到现在的感触告诉我,基础能多有多深就学多深。《计算机系统概论》这本书提倡一个观点:从问题的开始到计算机运算出结果概述为七个层次,就可以完成问题到结果的转变。
第一层:问题到算法的转变
第二层:算法到程序设计语言的转换
第三层:程序到指令集结构(ISA)的转换
第四层:指令集结构到微观结构的转换
第五层:微观结构到电路的转换
第六层:电路到电路组件的转换
第七层:书中没找到,盲猜是电路组件的发现
如果我们所测产品是小程序,APP,Web 这种类型的话,所用到的知识大概处于第一层/第二层即可,如果我们所测的产品包含嵌入式,系统应用,算法产品,应该需要更深入的了解(没从事过,盲猜一波,个人认为能学会一层就起飞了)。
不知道我们接下来会从事什么产品,时刻准备着!

1 . 硬件简介

现在计算机系统由一个或多个处理器,主存,打印机,键盘,鼠标,显示器,网络接口以及各种输入输出设备构成。
如果不涉及嵌入式业务的情况下,我们测试人员不会直接和这些硬件打交道,而且我们不可能掌握所有计算机系统的细节。

1.1 主板


将各个组件连接起来形成一个完整的系统;为各个组件提供一个运行平台。

1.2 CPU

中央处理器

CPU 是计算机的大脑,它主要和内存进行交互,从內存中提取指令并执行它。CPU 的执行周期是从內存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后绠的指令。重复该循环直到程序运行完毕。
上面截图中红款里的内容,是在测试工作中需要了解的,例如配置 Nginx 的 work 数量,压测时进程池的数量,做队列时候的数量等

  • Intel:英特尔公司(core i3、i5、i7、i9、至强 E3、E5)
  • AMD

1.3 存储

1.3.1 内存

计算机中第二个主要的组件就是内存。理想情况下,内存应该非常快速 (比执行一条指令要快,从而不会拖慢 CPU 执行效率),而且足够大且便宜,但是目前的技术手段无法满足三者的需求。于是采用了不同的处理方式,存储器系统采用一种分层次的结构。

寄存器存在于 CPU 中,和 CPU 一样快
高速缓存由硬件控制,是 CPU 中的 L 级缓存
主存就是我们通常说的内存(RAM),临时性存储数据(断电后数据被清除),可以随时存储和读取数据。
磁盘就是我们说的硬盘,机械硬盘和固态硬盘

1.3.2 硬盘

  • 接口类型
IDE 已淘汰 133Mbps 左右
SATA PC 机使用 640 Mbps 左右
SCSI 服务器使用 600 Mbps 左右
FC 服务器使用 1G Mbps 左右
M.2 主流
  • 机械硬盘

机械硬盘分为:盘头、磁头、电动机、控制电路。

  • 硬盘容量=磁头数柱面数(扇区数、磁道)*512B

 

  • 1 个柱面存满后才会存下一个柱面,提高效率

 

  • 每个扇区存储 512B 数据
    • 分区类型
    • MBR
    •  分区类型:主分区、扩展分区、逻辑分区
    • 扩展分区不能够直接使用,必须分为多个逻辑分区
    • 主分区 + 扩展分区总数最大是 4 个,其中扩展分区最多有 1 个
    • 操作系统只能装到主分区中
    • GUID
    • 只有主分区,分区无个数限制

2. 计算机启动

这个过程,说实话有点复杂。了解这个过程,对我目前的工作而言仅有的帮助是知道嵌入式产品烧录程序之后为什么需要断电重启。

流程:BIOS-->MBR-->DPT-->PBR--> Boot mgr-->bcd-->Windows.exe-->Windows 内核加载 -->整个 windows7 系统
注释: 1、按下电源键,通电加载 BIOS 自检。
2、选择第一启动设备读取主引导记录(MBR)。
    3、主引导记录读取 DPT,查找活动分区。
    4、读取活动分区的 PBR,通过 PRB 来加载操作系统选择菜单
    5、加载操作系统内核,启动操作系统。

简单点来说就是我们主板 CMOS 芯片中保存着一个 BIOS 程序,类似于底层的系统,控制着系统启动后要先找哪个硬盘,再找哪个硬盘等,回顾使用 U 盘重装系统的过程,其中一步就是把 U 盘设置为第一启动盘。
找到启动盘之后,系统就启动成功了,如果你的计算机装了多个操作系统,那么在系统启动之后还会让选择启动哪个系统。

3. 操作系统

3.1 概述

这是一个操作系统的简化图,最下面的是硬件,硬件包括芯片、电路板、磁盘、键盘、显示器等我们上面提到的设备,在硬件之上是软件。

大部分计算机有两种运行模式:內核态和用户态,软件中最基础的部分是操作系统,它运行在內核态中,內核态也称为管态和核心态,它们都是操作系统的运行状态,只不过是不同的叫法而已。
操作系统具有硬件的访问权,可以执行机器能够运行的任何指令。
软件的其余部分运行在用户态下。用户接口程序 ( shell 或者 GUI) 处于用户态中,并且它们位于用户态的最低层,允许用户运行其他程序,例如 Web 浏览器、电子邮件阅读器、音乐播放器等。而且,越靠近用户态的应用程序越容易编写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换但你不能自行写一个操作系统或者是中断处理程序。这个程序由硬件保护,防止外部对其进行修改。

3.2 组成

4. 进制转换

小学内容,但是,不一定会。
关于进制转换,入行之后接触的嵌入式项目测试,然后分析协议的时候使用到的进制转化。二进制转十六进制,然后对比协议进行分析数据;
通常情况下要掌握使用代码来完成进制转换,例如:解析设备上送的消息,如果设备上送的是二进制报文,需要转换为 16 进制来对照协议分析数据

  • 二进制

二进制的组成为 0 和 1。计算机世界中的基础进制,通常用低电频(无限接近于)表示 0,高电频(无限接近于)表示 1。

  • 特点
    • 逢二进一,借一顶二

  • 十进制

日常使用的十进制

  • 十六进制

协议里常用的进制,例如:私有协议中制定 0B01 表示什么内容,TCP 的窗口大小是 16 位等

  • 八进制

工作中目前没接触到,知道怎么换算即可。

5. 进程和线程

最核心的内容,简单了解下先

操作系统中最核心的概念就是进程,进程是对正在运行中的程序的一个抽象。操作系统的其他所有內容都是围绕着进程展开的。进程是操作系统提供的最古老也是最重要的概念之一。即使使用的 CPU 也支持 (伪) 并发操作,它们会将一个单独的 CPU 抽象为多个虚拟机的 CPU。常说的 i7 和 i5 的区别,四核和八核,同版本 i7 比 i5 贵那么多的原因。
可以说:没有进程的抽象,操作系统将不复存在。

5.1 进程模型

在计算机上运行的软件,通常被组织为若干<顺序进程>,简称为进程。一个进程就是一个 正在执行的程序实例,进程包括程序计数器,寄存器和变量的当前值。从概念上说,每个进程都有各自的虚拟 CPU,但是实际情况是 CPU 会在各个进程之间来回切换。

有个核心的思想:进程是某一类特定活动 的总和,有程序,输入,输出以及状态。单个处理器可以被若干进程共享,它用于某种调度算法决定何时停止一个进程的工作。

5.2 进程状态

  • 运行态 运行态指是进程实际占用 CPU 时间片运行时
  • 就绪态,就绪态指的是可运行,但因为其他进场正在运行而处于就绪状态
  • 阻塞态,除非某种外部时间发生,否则进程不能运行

上图中的几种状态:

  1. 进程因为等待输入而阻塞
    1. 张三正在疯狂的使用微信给李四发消息 (微信正在运行)
  2. 调度程序选择另一个进程
    1. 李四迟迟不回消息,张三顺手打开英雄联盟 (微信这个进程处于被冷藏,阻塞状态,英雄联盟处于就绪状态)
  3. 调度程序选择一个进程开始运行
    1. 英雄联盟 趁机上位,于是张三就沉迷在召唤师峡谷 (英雄联盟处于运行状态,微信依旧被阻塞)
  4. 是出现有效的输入
    1. 李四回消息给张三,微信发出滴滴声,张三立马回消息 (微信从阻塞变为就绪 (运行),英雄联盟阻塞)

5.3 进程表项

背下来,混个脸熟,敲代码的时候避免不掉这些内容

5.4 线程

进程用于把资源集中在一起,线程则是 CPU 上调度执行的实体。

线程包含的内容如下

线程也有运行中,阻塞,就绪和终止的几种状态。每个线程都会有自己的堆栈。

5.5 进程间通信

顶不住了,解释不太清,看看就好,具体的敲代码理解

  • 竞态条件
  • 临界区
  • 忙等互斥
  • 睡眠与唤醒
  • 信号量
  • 互斥量
  • 管程
  • 消息传递

6. 死锁

上面提到,同一时刻只能每个资源由一个进程使用。
例如:打印机,如果同时打印两份文档并同时输出结果,能处理么?
操作系统中有很多独占性的资源,于是就授权给进程单独访问资源的能力。
两个独占性的进程访问某个资源时,会导致两个进程都被阻塞,并且两个进程都不会释放各自的资源,这种情况就是死锁。
死锁可以发生在任何层面,在不同的机器之前发生死锁,在数据库中发生死锁(表级锁,行级锁)等

  • 通信死锁

在通信过程中,只要一个信息被发出后,发送者就会启动一个定时器,定时器会记录消息的超时时间,如果超时时间到了但是消息还没有 返回,就会认为消息丢失并重新发送,通过这种方式,避免通信死锁。
例如:TCP 的连接超时时间,如果没有设置超时时间,某一端持续建立连接或者不断开连接,65535 个端口早晚会被占用完毕而导致没有端口可用。

  • 活锁

死锁是一直占用占用资源,榆木脑袋,不会转弯。
活锁就是太机灵,弄巧成拙。某些情况下,当进程意识到它不能获取所需要的下一个锁时,就会尝试礼貌的释放已经获得的锁,然后等待非常短的时间再次尝试获取。可以想像一下这个场景:当两个人在狭路相逢的时候,都想给对方让路,相同的步调会导致双方都无法前进。
就像张三和王五都暗恋李四,但是每次到表白的时候就感觉李四不喜欢自己,没有张开口,不表白又暗自伤心。就这样,三个人孤独终老。

8. 名词了解

  • 操作系统:管理计算机硬件与软件资源的系统软件,同时也是计算机系统的內核与基石。操作系统需要处理管理与配置內存、决定系统资源供需的优先次序、控制输入与输岀设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 (注意 Chrome,自成操作系统,已经有 Chrome OS 的出现了)

  • GUI/CLI: 是一种用户界面,允许用户通过图形,图标和音符与电子设备进行交互;CLI 是无用户界面,通过命令行与用户交互
  • Unix/BSD/Minix/Linux:早期的操作系统
  • DOS:磁盘操作系统
  • MS-DOS:运行在个人电脑上,最普遍使用的操作系统
  • 程序计数器:是一个 CPU 中的寄存器,表示程序在计算机序列中的位置
  • 堆栈寄存器:跟踪调用堆栈
  • 驱动程序:设备驱动程序,系统和硬件交互的程序
  • 等等

这个文档是目的更多是作为自己的沉淀,有些地方目前解释不清楚,后面有能力的话会慢慢补起来的。
语雀:https://www.yuque.com/docs/share/26b22e9a-5f76-4c2e-8de1-0c8c9bdf9699?#《计算机基础》

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册