2.1 操作系统

【考点讲解】

操作系统是计算机专业的必修课,也是测试岗位面试的常客。
操作系统这门课程比较偏向于理论知识,不像学习编程语言一样具备实操性,这就导致了很多同学在学习操作系统时,常常会觉得枯燥乏味,有的同学甚至会跳过对操作系统的学习,因为不学习操作系统的知识,只要懂得基本的编程语言的语法,也可以写出简单的程序。
但事实上,操作系统的知识是相当重要的,比如:你的公司准备要进行双十一大促,大促之前需要你写压测脚本,对一些服务接口进行压测。如果你不知道多线程,你又怎会利用多线程来模拟多个用户发起请求呢?如果你不了解CPU、内存及网络IO,你又如何去监控服务器性能呢?
面试中常常会问到操作系统原理导论、CPU调度、内存管理、进程线程、IO系统和文件系统等内容,有时候还会针对进程和线程去设计有关并发操作的编程题,具有一定的难度,大家在准备面试时,一定不要忘了加强对操作系统及相关考点的复习。
下面列举了测试岗面试中有关操作系统的比较高频的考点:
  • 操作系统原理导论
  • 作业管理
  • 进程与线程相关概念
  • 内存管理
  • I/O操作
  • Linux操作
操作系统原理导论:需要弄明白什么是操作系统、CPU与内核的关系、能够知道操作系统的特征有哪些。
进程与线程的相关概念:需要知道什么是线程、什么是进程,然后再深入了解线程同步机制、进程间的通信等知识,此外,多线程和多进程的优缺点和使用场景也是面试高频考题。
内存管理:众所周知,内存是计算机系统里面的一个重要组成部分,主要用于存储数据和指令,将数据和指令提供给CPU进行读取运算。我们需要知道操作系统的内存管理的工作原理,尤其是CPU、内存和硬盘三者间的联系要弄明白,并且还需要知道物理内存和虚拟内存的关系。
I/O操作:需要弄明白什么是I/O操作,以及I/O操作有哪些类型。
Linux操作:大家在日常的生活和学习中,可能比较熟悉Windows和MacOS的操作,对于Linux的操作可能会比较陌生。但是Linux操作系统在Web应用领域广泛流行,因其安全性和稳定性都较为优秀,很多企业都选择将Web服务部署到Linux服务器上。除了需要对Linux和文件系统有一定的认识,我们应该更要掌握基本的Linux命令,这些都是未来测试工作中使用特别高频的技能。

【例题示例】

2.1.1 什么是操作系统?

【考点映射】
  • 操作系统原理导论
【出现频度】★★★★
【难度】★★★

【参考答案】
操作系统(Operating System,简称 OS),是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境集合。从本质上来说,操作系统是管理计算机硬件与软件资源的软件程序。
操作系统存在屏蔽了硬件层的复杂性。 对用户开放计算机硬件操作接口,使得操作计算机更加便利。
操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

【知识点延伸】
操作系统的基本特征包括并发、共享、虚拟和异步。
1. 并发
并发是指两个或多个事件在同一时间间隔内发生,在多道程序环境下,一段时间内宏观上有多个程序在同时执行,而在同一时刻,单处理器环境下实际上只有一个程序在执行,故微观上这些程序还是在分时的交替进行。操作系统的并发是通过分时得以实现的。操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的实施程序能并发执行。
2. 共享
资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可以分为 互斥共享方式(同一段时间内只允许一个进程访问该资源)和 同时访问方式(系统中还有一种资源,允许在一段时间内由多个进程“同时”对它进行访问。这里所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替的对该资源进行访问即“分时共享”。)。
3. 虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实的,即实际存在的;而后者是虚的,是用户感觉上的事物。相应的,用于实现虚拟的技术,成为虚拟技术。在操作系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存和虚拟外部设备。
操作系统的虚拟技术可归纳为:时分复用技术和空分复用技术。
4. 异步
由于资源等因素的限制,使进程的执行通常都不可能“一气呵成”,而是以“停停走走”的方式运行。进程是以人们不可预知的速度向前推进的,即进程的异步性。


2.1.2 什么是操作系统的内核?内核和CPU有什么区别?

【考点映射】
  • 操作系统原理导论
【出现频度】★★★★
【难度】★★☆

【参考答案】
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供计算机最核心的功能,比如:进程管理、内存管理、I/O管理、文件管理、网络管理等。内核决定着系统的性能和稳定性。
中央处理器(CPU),是电子计算机的主要设备之一,是电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。
区别:CPU是计算机硬件的范畴,是电脑中的核心配件。而内核是操作系统软件的范畴。


2.1.3 进程和线程的区别是什么?

【考点映射】
  • 进程与线程相关概念
【出现频度】★★★★★
【难度】★★☆

【参考答案】
区别:
  1. 调度:在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。
  2. 拥有资源:进程是拥有资源的基本单位,而线程不拥有系统资源,单线程可以防伪其隶属进程的系统资源。
  3. 并发性:在引入线程的操作系统中,不仅进程之间可以并发执行,线程之间也可以并发执行,从而是操作系统具有更好的并发性,大大提高了系统的吞吐量。
  4. 系统开销:线程开销极小。
  5. 地址空间和其他资源:进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,进程内的线程对进程外的其他进程不可见。
  6. 通信方面:进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读写进程数据段来进行通信。

【知识点延伸】
(1)进程、线程相关的知识点
代码:代码就是程序员用开发工具所支持的语言写出来的源代码文件。这是一个存储在硬盘的静态文件。
程序:是一组计算机能识别和执行的指令。源代码通过编译后就会生成二进制的可执行文件(程序)。