操作系统面试题

news2024/11/25 11:45:07

操作系统

  • 一、简介篇
    • 1.解释一下什么是操作系统
    • 2.操作系统的主要功能
    • 3.软件访问硬件的几种方式
    • 4.操作系统的主要目的是什么
    • 5.为什么Linux系统下的应用程序不能直接在Windows下运行
    • 6.什么是用户态和内核态
    • 7.用户态和内核态如何切换
    • 8.什么是内核
  • 二、进程和线程篇
    • 1.多处理系统的优势
    • 2.什么是进程表
    • 3.什么是进程、线程,已经它们之间的区别
    • 4.什么是上下文切换
    • 5.使用多线程的好处
    • 6.进程终止的方式
    • 7.进程间的通信方式
    • 8.进程状态模型
  • 三、内存管理篇
    • 1.什么是按需分页
    • 2.什么是虚拟内存
    • 3.虚拟内存的实现方式
    • 4.内存为什么分段
  • 四、文件系统篇
    • 1.提高文件系统性能的方式
      • (1)高速缓存
      • (2)块提前读
      • (3)减少磁臂运动
      • (4)磁盘碎片整理
    • 2.RAID的不同级别
  • 五、IO篇
    • 1.操作系统的时钟是什么
    • 2.中断处理的过程
    • 3.什么是DMA
    • 4.直接访问内存的特点
  • 六、死锁篇
    • 1.什么是僵尸进程
    • 2.死锁产生的原因
    • 3.死锁产生的必要条件
    • 4.死锁的恢复方式

一、简介篇

1.解释一下什么是操作系统

(1)操作系统是管理硬件和软件的一种应用程序

(2)操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。

(3)它为计算机硬件和软件提供了一种中间层,使应用软件和硬件进行分离,让我们无需关注硬件的实现,
	把关注点更多放在软件应用上

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

2.操作系统的主要功能

(1)进程管理:主要作用就是任务调度,在单核处理器下,操作系统会为每个进程分配一个任务,进程管理的
	工作十分简单;而在多核处理器下,操作系统除了要为进程分配任务外,还要解决处理器的调度、分配和
	回收等问题

(2)内存管理:主要是操作系统管理内存的分配和回收,在进程需要时分配内存以及在进程完成时回收内存,
	协调内存资源,通过合理的页面置换算法进行页面的换入换出

(3)文件管理:有效地管理文件的存储空间,合理地在组织和管理文件系统,为文件访问和文件保护提供更
	有效地方法及手段

(4)设备管理:根据确定的设备分配原则对设备进行分配,使设备与主机能够并行工作,为用户提供良好的
	设备使用界面

(5)提供用户接口:提供了访问应用程序和硬件的接口,使用户能够通过应用程序发起系统调用从而操纵
	硬件,实现想要的功能

3.软件访问硬件的几种方式

软件访问硬件其实就是一种I/O操作,软件访问硬件的方式也就是IO操作的方式有哪些

选择和衡量I/O控制方式的原则:
数据传送速度足够快,能满足用户的需求但又不丢失数据
系统开销小,所需地处理控制程序少
能充分发挥硬件资源的能力,使I/O设备尽可能忙,而CPU等待时间尽可能少
以CPU为中心,数据传送通过一段程序来实现:
(1)直接访问:由用户进程直接控制主存或CPU和外围设备之间的信息传送,直接程序控制方式又
	        称为忙/等待方式

(2)中断驱动:为了减少程序直接控制方式下CPU的等待时间以及提高系统的并行程度,系统引入了中断
			机制。中断机制引入后,外围设备仅当操作正常结束或异常结束时才向CPU发出中断请求。
			在I/O设备输入每个数据的过程中,由于无需CPU的干预,一定程度上实现了CPU与I/O
			设备的并行工作

采用硬件方法:
(3)DMA直接内存访问:为了进一步减少CPU对I/O操作的干预,防止因并行操作设备过多使CPU来不及处理
				  或因速度不匹配而造成的数据丢失现象,引入了DMA控制方式

(4)通道控制方式:通道是独立于CPU的专门负责输入输出控制的处理机,它控制设备与内存直接进行
				数据交换。有自己的通道指令,这些指令由CPU启动,并在操作结束时向CPU发出
				中断信号

4.操作系统的主要目的是什么

(1)管理计算机资源,这些资源包括CPU、内存、磁盘驱动器、打印机等

(2)提供一种图形界面,提供了用户和计算机之间的桥梁

(3)为其他软件提供服务,操作系统与软件进行交互,以便为其分配运行所需的任何必要资源

5.为什么Linux系统下的应用程序不能直接在Windows下运行

(1)Linux系统和Windows系统的格式不同,格式就是协议,就是在固定位置有意义的数据。
	Linux下的可执行程序文件格式是elf      而Windows下的可执行程序是PE格式,它
	是一种可移植的可执行文件

(2)Linux系统和Windows系统的API不同,这个API指的就是操作系统的API,Linux中的
	API被称为系统调用,是通过 int 0x80 这个软中断实现的。而Windows中的API是放
	在动态链接库文件中的,也就是DDL(里面包含代码和数据)。Linux中的可执行程序获得
	系统资源的方法和Windows不一样,所以显然是不能在Windows中运行的

6.什么是用户态和内核态

用户态和内核态是操作系统的两种运行状态

(1)内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的
	CPU可以从一个程序切换到另外一个程序,并且占用CPU不会发生抢占情况,一般处于特权级0的状态
	我们称之为内核态

(2)用户态:处于用户态的CPU只能受限的访问内存,并且不允许访问外围设备,用户态下的CPU不允许
	独占,也就是说CPU能够被其他程序获取

7.用户态和内核态如何切换

所有的用户进程都是运行在用户态的,用户程序的访问能力有限,一些比较重要的比如从硬盘读取数据,从
键盘获取数据的操作则是内核态才能做的事情,而这些数据却又对用户程序来说非常中要,所以就设计到两
种模式下的切换

用户态发生系统调用/异常/外围设备的中断,就会切换到内核态去执行处理,处理结束后又切换到用户态

8.什么是内核

在计算机中,内核是一个计算机程序,它是操作系统的核心,可以控制操作系统中所有的内容

二、进程和线程篇

1.多处理系统的优势

(1)多处理器系统的吞吐量比较高,多处理器系统拥有多个并行的处理器

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

2.什么是进程表

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

3.什么是进程、线程,已经它们之间的区别

(1)进程是一段正在执行的程序代码,是操作系统进行资源分配和调度的最小单位

(2)线程是进程中的单条流向,每个进程可以分为多个线程,线程是操作系统执行的最小单位

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

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

4.什么是上下文切换

(1)上下文切换是一种将CPU资源从一个进程分配给另一个进程的机制

(2)从用户角度看,计算机能够并行运行多个进程,这恰恰是操作系统通过快速上下文切换造成的结果

(3)在切换过程中,操作系统需要先存储当前进程的状态(包括内存空间的指针,当前执行完的指令等等),
	再读入下一个进程的状态,然后执行此进程

5.使用多线程的好处

(1)能够提高对用户的响应速度

(2)可以实现线程间的资源共享

6.进程终止的方式

(1)正常退出:多数进程由于完成了工作而终止。当编译器完成了所给定程序的编译之后,会执行一个
	        系统调用告诉操作系统它完成了工作。

(2)错误退出:发现了严重错误而退出。

(3)严重错误:由进程引起的错误,通常是程序中的错误所导致的。例如执行了一条非法执行,引入不
			存在的内存,或者除数是0等。

(4)被其他进程杀死:某个进程执行系统调用告诉操作系统杀死某个进程

7.进程间的通信方式

(1)消息传递:是进程间实现通信和同步等待的机制,使用消息传递,进程间的交流不需要共享变量直接
	        就可以进行通信;消息传递分为发送方和接收方

(2)先进先出队列:指的是两个不相关联进程间的通信,两个进程之间可以彼此相互进程通信,这是一种
				全双工通信方式

(3)管道:用于两个相关进程之间的通信,这是一种半双工的通信方式,如果需要全双工,需要另外一个管道

(4)直接通信:在这种进程通信方式中,进程与进程之间只存在一条链接,进程间要明确通信双方的命名

(5)间接通信:是通信双方不会建立直接连接,而是找到一个中介者,这个中介者可能是个对象等等,进程
			可以在其中放置消息,并且可以从中删除消息,以此达到进程间通信的目的

(6)消息队列:是内核中存储消息的链表,它由消息队列标识符进行标识,这种方式能够在不同进程之间
			提供全双工通信连接

(7)共享内存:是使用所有进程之间的内存来建立连接,这种类型需要同步进程访问来相互保护

8.进程状态模型

(1)新建态:进程刚创建出来的时候

(2)就绪态:指的是可运行,但因为其他进程正在运行而处于就绪状态

(3)运行态:指的是进程实际占用CPU时间片运行时

(4)阻塞态:指的是不具备运行条件,正在等待被CPU调度

(5)终止态:指的是进程执行完毕,到达结束点或者一位内错误而不得不终止进程

三、内存管理篇

1.什么是按需分页

(1)在操作系统中,进程是以页为单位加载到内存中的,按需分页是一种虚拟内存的管理方式

(2)在使用请求分页的系统中,只有在尝试访问页面所在的磁盘并且该页面尚未在内存时,也就是发生了
	缺页异常,操作系统才会将磁盘页面复制到内存中

2.什么是虚拟内存

(1)虚拟内存是一种内存分配方案,是一项可以用来辅助内存分配的机制

(2)使用虚拟内存就实现了可以同时加载多个应用程序,提高内存空间利用率

(3)物理内存本身是不限制访问的,任何地址都可以读写,这样就存在安全问题

(4)直接使用物理内存会存在进程间的安全问题,各个进程间没有独立的地址空间,一个进程由于执行
	错误指令或是恶意代码都可以直接修改其它进程的数据,甚至修改内核地址空间的数据

3.虚拟内存的实现方式

虚拟内存中,允许将一个作业分多次调入内存。采用连续分配方式时,会使相当一部分内存空间都处于暂时
或永久的空闲状态,造成内存资源的严重浪费,而且也无法从逻辑上扩大内存容量。因此,虚拟内存的实现
方式需要建立在离散分配的内存管理方式的基础上。有以下三种方式:

(1)请求分页存储管理

(2)请求分段存储管理

(3)请求段页式存储管理

4.内存为什么分段

(1)使程序可以重定位,避免两个相同程序编译出来的地址相同而导致无法运行的情况

(2)为了能够访问到所有的内存

四、文件系统篇

1.提高文件系统性能的方式

(1)高速缓存

(1)最常用的减少磁盘访问次数的技术是使用块高速缓存或者缓冲区高速缓存

(2)高速缓存指的是一系列的块,它们逻辑上数于磁盘,但实际基于性能的考虑被保护在内存中

(3)检查全部的读请求,查看在高速缓存中是否有所需要的块。如果存在,可执行读操作而无需访问磁盘。
	如果检查块不再高速缓存中,那么首先把它读入高速缓存,再复制到所需要的地方。之后对同一个块
	的请求都通过告诉缓存来完成。

(4)由于在高速缓存中有许多块,所以需要某种方法快速确定所需的块是否存在。常用方法是将设备和磁盘
	地址进行散列操作。然后在散列表中查找结果。具有相同散列值的块在一个链表中连接在一起这样就可以
	沿着冲突链查找其他块。

(5)如果告诉缓存已满,此时需要调入新的块,则要把原来的某一块调出高速缓存,如果要调出的块在上次
	调入后已经被修改过,则需要把它写回磁盘。

(2)块提前读

(1)在需要用到块之前试图提前将其写入高速缓存从而提高命中率。

(2)许多文件都是顺序读取,如果请求文件系统在某个文件中生成块k,文件系统执行相关操作并且在完成
	之后,会检查高速缓存,以便确定块k+1是否已经在告诉缓存中。如果不在,文件系统会为k+1安排一个
	预读取。

(3)只适用于实际顺序读取的文件,对随机访问的文件不适用

(3)减少磁臂运动

(1)把有可能顺序访问的块放在一起,从而减少磁盘臂的移动次数

(4)磁盘碎片整理

(1)移动文件使它们相互挨着,并把所有的至少是大部分的空闲空间放在一个或多个大的连续区域内

2.RAID的不同级别

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

(1)RAID 0 - 无容错的条带化磁盘阵列
(2)RAID 1 - 镜像和双工
(3)RAID 2 - 内存式纠错码
(4)RAID 3 - 比特交错奇偶校验
(5)RAID 4 - 块交错奇偶校验
(6)RAID 5 - 块交错分布式奇偶校验
(7)RAID 6 - P + Q冗余

五、IO篇

1.操作系统的时钟是什么

时钟也被称为计时器,负责维护时间、防止一个进程长期占用CPU时间等其他功能

2.中断处理的过程

3.什么是DMA

(1)DMA的中文是直接内存访问,它意味着CPU授予IO模式权限在不涉及CPU的情况下读取或写入内存

(2)也就是DMA不需要CPU的参与

(3)由于DMA设备可以直接在内存之间传输数据,而不是使用CPU作为中介,因此可以缓解总线上的拥塞

(4)DMA通过允许CPU执行任务,同时DMA系统通过系统和内存总线传输数据来提高系统的并发性

4.直接访问内存的特点

(1)数据传送以数据块为基本单位

(2)所传送的数据从设备直接送入主存,或者从主存直接输出到设备上

(3)仅在传送数据块开始和结束时才需要CPU的干预,而整块数据的传送则是在控制器的控制下完成

六、死锁篇

1.什么是僵尸进程

(1)是指已完成且处于终止状态,但在进程表中却仍然存在的进程

(2)僵尸进程通常发生在父子关系的进程中,由于父进程仍需要读取子进程的退出状态所导致的

2.死锁产生的原因

(1)资源竞争
(2)程序执行顺序不当

3.死锁产生的必要条件

(1)同一时刻只能有一个进程访问某个资源
(2)一个资源在等待某个资源时,不是放已经占有的资源
(3)分配给一个进程的资源除非他自己释放,不能被其他进程抢占
(4)形成首尾相连的循环等待

4.死锁的恢复方式

(1)通过抢占恢复:将某个进程的资源强制取走给其他进程使用,使用完又送回

(2)通过回滚恢复:为了进行恢复,要回滚到上一个较早的检查点,此时可以对资源再次进行分配

(3)杀死进程恢复:直接杀死一个进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Raft分布式共识算法学习笔记

1. Raft算法 Raft算法属于Multi-Paxos算法,它是在Multi-Paxos思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态,在理解和算法实现上都相对容易许多 从本质上说&am…

HTML 扫盲

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录前言HTML 结构快速生成代码框架HTML 常见标签注释标签标题标签: h1-h6段落标签:p换行标签:br格式化标签…

MySQL优化策略

1、 sql优化 1.1 SQL 语句简化,简化是 SQL 优化的一大利器,因为简单,所以优越。 1.2 尽可能避免或者杜绝多表复杂关联,大表关联是大表处理的噩梦,一旦打开了这个口子,越来越多的需求需要关联,…

HTTPS协议之SSL/TLS详解(下)

目录 前言: SSL/TLS详解 HTTP协议传输安全性分析 对称加密 非对称加密 证书 小结: 前言: 在网络世界中,存在着运营商劫持和一些黑客的攻击。如果明文传输数据是很危险的操作,因为我们不清楚中间传输过程中就被哪…

Spring从精通到入门

Spring1.spring了解2. Spring实现2.1 添加依赖2.2 Spring实现2.2.1 xml配置实现2.2.1.1 Bean标签属性1.spring了解 spring重要性 在当前的系统中,spring的重要性and占比性高达50%,无论是在ssm、ssh等框架中,spring始终屹立在前方,…

Postman创建Elasticsearch(2.4版本)索引

一、创建索引二、删除索引三、其他1、查看es信息2、查看索引test信息3、test索引下mapping查看4、elasticsearch 2.2.1下载一、创建索引 1、请求方式:PUT2、请求地址:地址 索引名3、请求数据 {"settings": {"number_of_shards": …

C语言offsetof(TYPE, MEMBER)全解

offsetof(TYPE, MEMBER) 是一个宏定义,用于计算一个结构体中某个成员的偏移量。 其第一个参数 TYPE 是一个结构体类型,第二个参数 MEMBER 是 TYPE 中的一个成员变量名。 它将返回类型为 size_t 的整数,表示 MEMBER 相对于 TYPE 起始地址的偏…

inode和逻辑块,目录的结构,挂载的实现 源码级分析linux内核的文件系统的结构

bitmap.c 位图相关 封装了set_bit clear_bit find_first_zero clear_block等操作位图的宏 对应i节点位图和逻辑块位图有对应的四个函数 free_inode, new_inode,free_block, new_block new_block 创建逻辑块 通过super_block找到逻辑块位图,给逻辑块位图的第一个…

Spring Boot中的bean注入方式和原理

Spring Boot是一个非常流行的Java框架,它可以帮助开发者快速地构建高效、健壮的应用程序。依赖注入是Spring Boo其中一个重要的功能,就是将一个对象注入到另一个对象中,以便它们可以相互协作。在Spring Boot中,依赖注入是通过bean…

Python如何获取大量电影影评,做可视化演示

前言 《保你平安》今天上映诶,有朋友看过吗,咋样啊 这是我最近比较想看的电影了,不过不知道这影评怎么样,上周末的点映应该是有蛮多人看的吧,可以采集采集评论看过的朋友发出来的评论,分析分析 这周刚好…

2023年斋月倒计时,跨境卖家该如何做好选品和营销?

2023年斋月即将到来,这是一个伊斯兰教徒们非常重要的节日,同时也是跨境卖家们迎接销售高峰的时期。在2023年的斋月期间,跨境卖家应该如何做好选品和营销呢?本文Nox聚星将和大家好好聊一聊。 根据2022年的数据,斋月期间…

【巨人的肩膀】MySQL面试总结(一)

💪 目录💪1、什么是ER图2、数据库范式了解吗3、超键、候选键、主键、外键分别是什么?4、为什么不推荐使用外键与级联5、什么是存储过程6、drop、delete与truncate区别7、数据库设计通常分为那几步8、什么是关系型数据库9、什么是SQL10、MySQL…

SpringBoot整合Redis实现高并发数据缓存

目录什么是缓存为什么要用缓存Redis为什么这么快实现一个用户信息的缓存方式一:利用RedisTemplate实现导入依赖添加配置添加redis工具类及配置类开发mapper接口service层controller层测试方式二:采用SpringBoot注解开启缓存在启动类添加EnableCaching注解…

旋转框目标检测mmrotate v1.0.0rc1 之RTMDet训练DOTA的官方问题解析整理(四)

关于rotated_rtmdet_l-coco_pretrain-3x-dota_ms.py配置文件的batchsize和学习率设置问题:回答:如何在mmrotate中绘制特征图问题:回答:你好AllieLan,您可以尝试使用https://github.com/open-mmlab/mmyolo/blob/main/de…

Java Class 加密工具 ClassFinal

Jar包加密工具 ClassFinal介绍环境依赖使用说明下载加密命令行示例maven插件方式无密码模式机器绑定启动加密后的jar启动参数给密码不加密码参数直接启动1. 密码文件获取2. 交互输入参考资料介绍 ClassFinal 是一款 java class 文件安全加密工具,支持直接加密jar包…

KDHL-600A 回路电阻测试仪

一、产品概述 武汉凯迪正大KDHL-600A回路电阻测试仪是用于测量开关、断路器、变压器等设备的接触电阻、回路电阻的专用测试设备。其采用典型的四线制测量法,通过输出一个直流电流,施加于被测体的两个端钮之间,并测量电流流过被测体所产生的压…

Node.js简介

客户端访问网页时向服务器端发送请求要访问服务器中的页面,服务器收到请求后向数据库中进行搜索,搜索到相关数据然后返回结果给客户端显示; 这个过程就类似于:客人(客户端)去饭馆(服务端&#…

TryHackMe-VulnNet: Active(ez 域渗透)

VulnNet: Active VulnNet Entertainment在他们以前的网络中遇到了不好的时光,该网络遭受了多次破坏。现在,他们移动了整个基础架构,并再次聘请您作为核心渗透测试人员。您的目标是获得对系统的完全访问权限并破坏域。 这应该是我在thm打的最…

Uipath Excel 自动化系列15-Protect Sheet(保护工作表)

活动描述 Protect Sheet(保护工作表):在 Excel 中启用对指定工作表的保护,以便无法对其进行任何其他更改,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 提示:Protect Sheet活动功能类似Excel文件【审阅】菜单栏下的保护工作簿功能&#…

TencentOS Server 安装 PostgreSQL

TencentOS 简介 2019 年,随着腾讯公司外部客户的需求,以及公司开源协同战略的推进,tlinux 对外开源并进行了品牌升级,升级为 TencentOS Server。TencentOS 包含三大场景,分别如下: TencentOS Server&…