看完这篇操作系统,和面试官扯皮就没问题了。

操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层

通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和CPU进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。

2

解释一下操作系统的主要目的是什么

操作系统是一种软件,它的主要目的有三种

3

操作系统的种类有哪些

操作系统通常预装在你购买计算机之前。大部分用户都会使用默认的操作系统,但是你也可以升级甚至更改操作系统。但是一般常见的操作系统只有三种:Windows、macOS和Linux。

4

操作系统结构

4.1

单体系统

在大多数系统中,整个系统在内核态以单一程序的方式运行。整个操作系统是以程序集合来编写的,链接在一块形成一个大的二进制可执行程序,这种系统称为单体系统。

在单体系统中构造实际目标程序时,会首先编译所有单个过程(或包含这些过程的文件),然后使用系统链接器将它们全部绑定到一个可执行文件中

在单体系统中,对于每个系统调用都会有一个服务程序来保障和运行。需要一组实用程序来弥补服务程序需要的功能,例如从用户程序中获取数据。可将各种过程划分为一个三层模型

除了在计算机初启动时所装载的核心操作系统外,许多操作系统还支持额外的扩展。比如I/O设备驱动和文件系统。这些部件可以按需装载。在UNIX中把它们叫做共享库(sharedlibrary),在Windows中则被称为动态链接库(DynamicLinkLibrary,DLL)。他们的扩展名为.dll,在C:Windowssystem32目录下存在1000多个DLL文件,所以不要轻易删除C盘文件,否则可能就炸了哦。

4.2

分层系统

分层系统使用层来分隔不同的功能单元。每一层只与该层的上层和下层通信。每一层都使用下面的层来执行其功能。层之间的通信通过预定义的固定接口通信。

4.3

微内核

为了实现高可靠性,将操作系统划分成小的、层级之间能够更好定义的模块是很有必要的,只有一个模块---微内核---运行在内核态,其余模块可以作为普通用户进程运行。由于把每个设备驱动和文件系统分别作为普通用户进程,这些模块中的错误虽然会使这些模块崩溃,但是不会使整个系统死机。

MINIX3是微内核的代表作,它的具体结构如下

在内核的外部,系统的构造有三层,它们都在用户态下运行,最底层是设备驱动器。由于它们都在用户态下运行,所以不能物理的访问I/O端口空间,也不能直接发出I/O命令。相反,为了能够对I/O设备编程,驱动器构建一个结构,指明哪个参数值写到哪个I/O端口,并声称一个内核调用,这样就完成了一次调用过程。

4.4

客户-服务器模式

微内核思想的策略是把进程划分为两类:服务器,每个服务器用来提供服务;客户端,使用这些服务。这个模式就是所谓的客户-服务器模式。

客户-服务器模式会有两种载体,一种情况是一台计算机既是客户又是服务器,在这种方式下,操作系统会有某种优化;但是普遍情况下是客户端和服务器在不同的机器上,它们通过局域网或广域网连接。

客户通过发送消息与服务器通信,客户端并不需要知道这些消息是在本地机器上处理,还是通过网络被送到远程机器上处理。对于客户端而言,这两种情形是一样的:都是发送请求并得到回应。

5

什么是按需分页

在操作系统中,进程是以页为单位加载到内存中的,按需分页是一种虚拟内存的管理方式。在使用请求分页的系统中,只有在尝试访问页面所在的磁盘并且该页面尚未在内存中时,也就发生了缺页异常,操作系统才会将磁盘页面复制到内存中。

6

多处理系统的优势

随着处理器的不断增加,我们的计算机系统由单机系统变为了多处理系统,多处理系统的吞吐量比较高,多处理系统拥有多个并行的处理器,这些处理器共享时钟、内存、总线、外围设备等。

多处理系统由于可以共享资源,因此可以开源节流,省钱。整个系统的可靠性也随之提高。

7

什么是内核

在计算机中,内核是一个计算机程序,它是操作系统的核心,可以控制操作系统中所有的内容。内核通常是在bootloader装载程序之前加载的第一个程序。

这里还需要了解一下什么是bootloader。

bootloader又被称为引导加载程序,它是一个程序,能够将计算机的操作系统放入内存中。在电源通电或者计算机重启时,BIOS会执行一些初始测试,然后将控制权转移到引导加载程序所在的主引导记录(MBR)。

8

什么是实时系统

硬实时操作系统规定某个动作必须在规定的时刻内完成或发生,比如汽车生产车间,焊接机器必须在某一时刻内完成焊接,焊接的太早或者太晚都会对汽车造成永久性伤害。

软实时操作系统虽然不希望偶尔违反最终的时限要求,但是仍然可以接受。并且不会引起任何永久性伤害。比如数字音频、多媒体、手机都是属于软实时操作系统。

你可以简单理解硬实时和软实时的两个指标:是否在时刻内必须完成以及是否造成严重损害。

9

什么是虚拟内存

虚拟内存是一种内存分配方案,是一项可以用来辅助内存分配的机制。我们知道,应用程序是按页装载进内存中的。但并不是所有的页都会装载到内存中,计算机中的硬件和软件会将数据从RAM临时传输到磁盘中来弥补内存的不足。如果没有虚拟内存的话,一旦你将计算机内存填满后,计算机会对你说

呃,不,对不起,您无法再加载任何应用程序,请关闭另一个应用程序以加载新的应用程序。对于虚拟内存,计算机可以执行操作是查看内存中最近未使用过的区域,然后将其复制到硬盘上。虚拟内存通过复制技术实现了妹子,你快来看哥哥能装这么多程序的资本。复制是自动进行的,你无法感知到它的存在。

10

什么是进程和进程表

操作系统为了跟踪每个进程的活动状态,维护了一个进程表。在进程表的内部,列出了每个进程的状态以及每个进程使用的资源等。

11

什么是线程,线程和进程的区别

这又是一道老生常谈的问题了,从操作系统的角度来回答一下吧。

我们上面说到进程是正在运行的程序的实例,而线程其实就是进程中的单条流向,因为线程具有进程中的某些属性,所以线程又被称为轻量级的进程。浏览器如果是一个进程的话,那么浏览器下面的每个tab页可以看作是一个个的线程。

下面是线程和进程持有资源的区别

线程不像进程那样具有很强的独立性,线程之间会共享数据

创建线程的开销要比进程小很多,因为创建线程仅仅需要堆栈指针和程序计数器就可以了,而创建进程需要操作系统分配新的地址空间,数据资源等,这个开销比较大。

12

使用多线程的好处是什么

多线程是程序员不得不知的基本素养之一,所以,下面我们给出一些多线程编程的好处

13

什么是RR调度算法

14

导致系统出现死锁的情况

死锁的出现需要同时满足下面四个条件

15

RAID的不同级别

RAID称为磁盘冗余阵列,简称磁盘阵列。利用虚拟化技术把多个硬盘结合在一起,成为一个或多个磁盘阵列组,目的是提升性能或数据冗余。

RAID有不同的级别

16

什么是DMA

DMA的中文名称是直接内存访问,它意味着CPU授予I/O模块权限在不涉及CPU的情况下读取或写入内存。也就是DMA可以不需要CPU的参与。这个过程由称为DMA控制器(DMAC)的芯片管理。由于DMA设备可以直接在内存之间传输数据,而不是使用CPU作为中介,因此可以缓解总线上的拥塞。DMA通过允许CPU执行任务,同时DMA系统通过系统和内存总线传输数据来提高系统并发性。

17

多线程编程的好处是什么

对不起,我忍不住想偷笑

ps:DougLea大佬开发的JUC工具包,此处不加狗头。

18

什么是设备驱动程序

在计算机中,设备驱动程序是一种计算机程序,它能够控制或者操作连接到计算机的特定设备。驱动程序提供了与硬件进行交互的软件接口,使操作系统和其他计算机程序能够访问特定设备,不用需要了解其硬件的具体构造。

19

进程间的通信方式

19.1

通信概念

进程间的通信方式比较多,首先你需要理解下面这几个概念

竞态条件:即两个或多个线程同时对一共享数据进行修改,从而影响程序运行的正确性时,这种就被称为竞态条件(racecondition)。

临界区:不仅共享资源会造成竞态条件,事实上共享文件、共享内存也会造成竞态条件、那么该如何避免呢?或许一句话可以概括说明:禁止一个或多个进程在同一时刻对共享资源(包括共享内存、共享文件等)进行读写。换句话说,我们需要一种互斥(mutualexclusion)条件,这也就是说,如果一个进程在某种方式下使用共享变量和文件的话,除该进程之外的其他进程就禁止做这种事(访问统一资源)。

一个好的解决方案,应该包含下面四种条件

忙等互斥:当一个进程在对资源进行修改时,其他进程必须进行等待,进程之间要具有互斥性,我们讨论的解决方案其实都是基于忙等互斥提出的。

19.2

解决方案

进程间的通信用专业一点的术语来表示就是InterProcessCommunication,IPC,它主要有下面几种通信方式

20

进程间状态模型

当一个进程开始运行时,它可能会经历下面这几种状态

图中会涉及三种状态

三种状态会涉及四种状态间的切换,在操作系统发现进程不能继续执行时会发生状态1的轮转,在某些系统中进程执行系统调用,例如pause,来获取一个阻塞的状态。在其他系统中包括UNIX,当进程从管道或特殊文件(例如终端)中读取没有可用的输入时,该进程会被自动终止。

程序调度指的是,决定哪个进程优先被运行和运行多久,这是很重要的一点。已经设计出许多算法来尝试平衡系统整体效率与各个流程之间的竞争需求。

当进程等待的一个外部事件发生时(如从外部输入一些数据后),则发生转换4。如果此时没有其他进程在运行,则立刻触发转换3,该进程便开始运行,否则该进程会处于就绪阶段,等待CPU空闲后再轮到它运行。

21

调度算法都有哪些

调度算法分为三大类:批处理中的调度、交互系统中的调度、实时系统中的调度

21.1

批处理中的调度

先来先服务

这个算法的强大之处在于易于理解和编程,在这个算法中,一个单链表记录了所有就绪进程。要选取一个进程运行,只要从该队列的头部移走一个进程即可;要添加一个新的作业或者阻塞一个进程,只要把这个作业或进程附加在队列的末尾即可。这是很简单的一种实现。

不过,先来先服务也是有缺点的,那就是没有优先级的关系,试想一下,如果有100个I/O进程正在排队,第101个是一个CPU密集型进程,那岂不是需要等100个I/O进程运行完毕才会等到一个CPU密集型进程运行,这在实际情况下根本不可能,所以需要优先级或者抢占式进程的出现来优先选择重要的进程运行。

最短作业优先

需要注意的是,在所有的进程都可以运行的情况下,最短作业优先的算法才是最优的。

21.2

交互式系统中的调度

交互式系统中在个人计算机、服务器和其他系统中都是很常用的,所以有必要来探讨一下交互式调度

轮循调度

优先级调度

事实情况是不是所有的进程都是优先级相等的。例如,在一所大学中的等级制度,首先是院长,然后是教授、秘书、后勤人员,最后是学生。这种将外部情况考虑在内就实现了优先级调度(priorityscheduling)

它的基本思想很明确,每个进程都被赋予一个优先级,优先级高的进程优先运行。

最短进程优先

可以看到,在三轮过后,T0在新的估计值中所占比重下降至1/8。

有时把这种通过当前测量值和先前估计值进行加权平均从而得到下一个估计值的技术称作老化(aging)。这种方法会使用很多预测值基于当前值的情况。

彩票调度

可以把彩票理解为buff,这个buff有15%的几率能让你产生速度之靴的效果。

22

页面置换算法都有哪些

最好的算法是老化算法和WSClock算法。他们分别是基于LRU和工作集算法。他们都具有良好的性能并且能够被有效的实现。还存在其他一些好的算法,但实际上这两个可能是最重要的。

23

影响调度程序的指标是什么

会有下面几个因素决定调度程序的好坏

24

什么是僵尸进程

僵尸进程是已完成且处于终止状态,但在进程表中却仍然存在的进程。僵尸进程通常发生在父子关系的进程中,由于父进程仍需要读取其子进程的退出状态所造成的。

THE END
1.每天了解一条产业链:操作系统部门动态信息技术部操作系统产业链中的各个环节紧密联系,彼此之间相互依赖。硬件制造商和操作系统开发商的合作确保了操作系统能够在不同硬件平台上运行; 设备制造商采购硬件和操作系统,并处理好操作系统和硬件的兼容问题;应用开发商为用户提供各类丰富多样的应用程序,丰富了操作系统功能。 https://www.zgcsswdx.cn/info/9519.html
2.软件开发中的运行环境和运行平台是什么意思啊?运行平台指你开发好的软件放在什么(一般指)操作系统上使用,比如你用java开发的软件是跨平台的,98,https://ask.zol.com.cn/x/4778348.html
3.什么是操作系统?数字经济观察网软信官网操作系统(Operating System,简称OS)是一种内置的程序,用来协作计算机的各种硬件,以与用户进行交互。它是计算机系统的核心软件,负责管理计算机的硬件和软件资源,并为计算机程序的运行提供基础环境。 操作系统是计算机系统中至关重要的基础性系统软件,它是计算机硬件与上层软件之间的桥梁,为用户和计算机硬件之间的交互提供了https://www.szw.org.cn/20241030/68084.html
4.操作系统之程序运行环境2、虚拟机技术:虚拟机技术允许用户在本机上运行其他操作系统的应用程序。通过虚拟机软件(如Virtual Box、VMWare等),用户可以在一个操作系统中模拟出另一个操作系统的运行环境,从而实现在不同操作系统间无缝切换和运行应用程序。 3、跨平台技术:跨平台技术使得应用程序能够在不同的操作系统上运行而无需进行大量的修改https://blog.csdn.net/qq_39311377/article/details/144094316
5.如何用一套代码运行跨多操作系统应用提到跨平台,要先理解什么是“平台”,这里的平台,就是指应用程序的运行环境,例如操作系统,或者是Web浏览器,具体的像HarmonyOS、Android、iOS、或者浏览器,都可以叫做平台。 跨平台框架,就是一个应用的开发框架,开发者基于这个框架开发的应用,可以分别在不同的平台上运行,业界比较知名的比如:React Native、Flutter或者https://developer.huawei.com/consumer/cn/forum/topic/0203111252423257247
6.编程必备基础之操作系统腾讯云开发者社区之前说过进程是操作系统进行资源分配和调度的基本单位,而线程是操作系统进行运行调度的最小单位,线程包含在进程之中,是进程中实际运行的工作单位,一个进程可以并发多个线程,每个线程执行不同任务。 一个进程可以有多个线程,一个进程中的线程共享资源,计算机对进程的调度,实际上是对进程中的线程进行调度https://cloud.tencent.com/developer/article/2381043
7.操作系统简介进程管理:操作系统管理和控制计算机系统中的各个进程(程序的执行实例),包括进程的创建、调度、同步、通信等。 内存管理:操作系统负责管理计算机系统的内存,包括内存的分配、回收、虚拟内存管理等,确保程序能够正确、高效地运行。 文件系统管理:操作系统负责管理计算机系统中的文件系统,包括文件的创建、读写、删除、权限控制https://www.ctyun.cn/zhishi/p-448236
8.谈谈我的「数字文具盒」运行平台数字基建准备工作完成以后,就要准备搭建运行平台;简单来说运行平台是云服务器与应用服务的中间层起着承上启下的作用。例如操作系统的选择、运行模式的规划、数据存储的模式、系统安全的完善。 因为我只有一台性能有限的云服务器,所以运行平台达到的最终目的是应用服务高内聚,低耦合。 https://www.jianshu.com/p/38cefa79c799
9.操作系统:驱动数字世界的核心引擎与未来增长蓝海生态构建能力:操作系统通过提供统一的开发平台和应用接口,吸引开发者构建丰富的应用生态,满足用户多样化需求。 资源管理能力:高效的资源管理算法能够优化系统性能,提升用户体验,如多任务处理、内存管理等。 安全性与稳定性:操作系统内置的安全机制能够保护用户数据安全,防止恶意软件入侵,确保系统稳定运行。 https://maimai.cn/article/detail?fid=1855382715&efid=sDLgVGCsbYti-ihnJFFHaw
10.操作系统是如何运行可执行文件的?可执行文件执行结束,操作系统会自动清理它占用的各种资源 一切平台,无论x86、arm还是risc v;一切操作https://www2.zhihu.com/question/430325644
11.如何在Windows10(Linux的Windows子系统)上运行Linux(包括Ubuntu选择操作系统 选择一个投影程序(可选) 描述您的问题 得到答案 几十年来,我们一直使用Windows和Linux这两个不同的平台。有时我们喜欢Windows的平滑UI功能,有时出于某些安全目的希望迁移到Linux。但是现在,Microsoft开始拥抱开源社区,并且Microsoft Store上提供了Ubuntu。那意味着现在 ubuntu可以在Windows 10中启动 Windohttps://zh.gov-civil-braga.pt/how-run-linux-windows-10-windows-subsystem
12.著作权申请时源程序和文档编写方法软件开发3.2 运行环境 3.2.1 运行的硬件环境 和申请表一致。 3.2.2 该软件的运行平台/操作系统 和申请表一致。 3.2.3 软件运行支撑环境/支持软件 和申请表一致。 4 软件架构 4.1 软件架构 介绍软件的功能,绘制模块框图。 4.2 文件结构 介绍软件源程序的文件结构,可绘制框图。 4.3 数据库结构 介绍软件的数据库结构,可https://yiqifu.baidu.com/cknowledge_10048297534
13.进迭时空RISCV架构芯片平台成功运行OpenHarmony操作系统近日,在进迭时空工程师的努力下,OpenHarmony操作系统v4.0版本成功在进迭时空自研生态产品MUSE Pi上运行。这标志着OpenHarmony操作系统完成了与进迭时空量产的高性能RISC-V 芯片适配,让进迭时空芯片平台支持的操作系统更加多元,为开发者们提供更丰富的选择。 OpenHarmonhttps://www.gsi24.com/a/1942.html
14.运行java程式的平台java语言的运行平台是什么运行java程式的平台 java语言的运行平台是什么 1 运行环境 = 操作系统 + 硬件 2 Windows 克服了 CPU 以外的硬件差异 3 不同操作系统的 API 不同 4 FreeBSD Port 帮你轻松使用源代码 5 利用虚拟机获得其他操作系统环境 6 提供相同运行环境的 Java 虚拟机https://blog.51cto.com/u_16099326/11189833
15.蚂蚁看看下载2024安卓手机版3、该软件运行的平台/操作系统Android 8.0以上平台4、软件运行支撑环境/支持软件Android 8.0以上平台如发现版本老旧,欢迎邮件反馈tousu@liqucn.com,或移步蚂蚁看看官网下载最新版 介绍 微剧短剧 尽在其中 蚂蚁看看,一般又称蚂蚁看看微短剧。 微一下 剧视界蚂蚁看看微短剧播放平台,视频3.0时代杰作。以微短剧为爆点https://m.liqucn.com/os/android/rj/9309965554092.wml
16.如何通过虚拟化服务器实现多个操作系统的同时运行?随着信息技术的不断发展,虚拟化技术已经成为了实现多个操作系统同时运行的重要手段之一。通过虚拟化服务器,用户可以在一台物理服务器上运行多个虚拟机,每个虚拟机可以独立运行不同的操作系统和应用程序,从而实现了资源的高效利用和应用的灵活部署。本文将介绍虚拟化技术https://www.mfisp.com/28441.html