面试整理学习专题2:操作系统(一)

简介: 并行指两个或者多个事件同一时刻发生,并发是两个或者多个事件在同一时间间隔发生;并行是在不同实体上的多个事件,并发是在同一实体上的多个事件(如单核CPU轮转时间片)

1、并发和并行的理解?

并行指两个或者多个事件同一时刻发生,并发是两个或者多个事件在同一时间间隔发生;

并行是在不同实体上的多个事件,并发是在同一实体上的多个事件(如单核CPU轮转时间片)。


2、同步、异步、阻塞、非阻塞的概念。

同步:一个同步调用发出之后,调用者需要一直等待返回结果。有返回结果后,才能执行后续的操作。

异步:当一个异步调用发出之后,调用者不需要立刻等待返回结果,实际处理这个调用的部件在完成之后,通过状态、回调来通知调用者。

阻塞:调用结果返回前,线程会被挂起,即阻塞。

非阻塞:即使调用结果没有返回,也不会阻塞当前的线程。


3、进程、线程基本概念、区别?

进程:是系统进行资源分配和调度的独立单位,是系统中的并发执行的单位。

线程:进程的一个实体,是CPU调度和分派的最小的基本单位,有时候被称为轻量级进程等,比进程更小的能够独立运行的基本单位。

50909f85db5858b16d6b4393d3e462f4_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_17,color_FFFFFF,t_70,g_se,x_16.png


4、为什么有了进程,还要有线程。

进程可以使得多个程序并发执行,提高资源的利用率与系统的吞吐量,但是带来一些缺点。

1、进程在同一时间只能干一件事

2、进程在执行的过程中如果被阻塞了,整个进程就会被挂起,即使进程中有些工作不依赖等待的资源,但是仍然会被阻塞不被执行。


所以引入了线程,作为并发执行的基本单位,减小程序在并发执行时候的时间与空间开销,提高并发的性能。


5、进程的状态转换?(转换)

进程转换有:就绪态、运行态、阻塞态。

进程有:创建态和终止态,但是他们无法循环转换。

22f5ba0508d60d880e2cc6a12b2c1fe9_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_18,color_FFFFFF,t_70,g_se,x_16.png


进程间的通信方式有哪些?

IPC:InterProcess Communication 进程间通信。

是指在不同进程之间传播或者交换信息。

通常有管道、消息队列、信号量、共享存储、Socket、Streams等。


管道:

1、半双工,具有固定的读端和写端。

2、只能用于父子进程或者兄弟进程之间的通信。

3、可以看成一种特殊的文件,对于他的读写可以使用普通read、write函数。

但不是普通的文件,不属于其他任何文件系统,只存在内存之中。


命名管道:

1、FIFO可以在无关的进程之间交换数据,与无名管道不同;

2、FIFO有路径与之相关联,他以一种特殊设备文件形式存在文件系统之中。


消息队列:

1、消息的连接表、放在内核中,一个消息队列由一个标识符ID标识。

2、面向记录的, 消息具有特定的格式以及优先级。

3、独立于发送与接收进程。进程终止时,消息队列及其内容不会被删除。

4、可实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按照消息的类型读取。


信号量:

1、计数器,实现进程之间的互斥与同步,而不是用于存储进程间通信数据。

2、信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。

3、基于操作系统的PV操作,程序对信号量的操作都是原子操作。

4、每次对信号量的PV操作不限于对信号量+1或者-1,可以加减任意正整数。

5、支持信号量组。


共享内存:

1、指两个或者多个进程共享一个特定的存储区域;

2、最快的一种IPC,因为进程是直接对内存进行存取。


8、进程的调度算法

1、先来先服务。

也叫作先进先出,顾名思义,当每个进程就绪之后,就加入就绪队列。当前正在运行的进程停止之后,选择在就绪队列中存在时间最长的进程进行运行,既可以用于作业调度,又可以用于进程调度。


2、时间片轮转法。

主要用于分时系统,将所有就绪进程按照到达时间的先后次序排成一个队列,进程调度程序总是选择第一个进行执行。即先来先服务的原则,但是只能运行一个时间片。


3、短作业优先调度法。

从后备队列中选择一个或者若干个估计运行时间最短的作业,将他们调入内存运行。是一个非抢占策略。


4、最短剩余时间优先调度算法。

这个是针对最短进程优先增加了抢占机制的版本,进程调度总是选择预期剩余时间最短的进程。当一个进程加入到就绪队列时,可能比当前运行的进程具有更短的剩余时间,所以只要该进程就绪了,那么就可能抢占当前正在运行的进程。存在的危险:长进程饥饿。


5、高响应比优先调度算法。

主要用于作业调度。对先来先服务和短作业优先调度算法的一种综合平衡。

同时考虑每个作业的等待时间和估计运行时间,进行作业调度时,计算后备作业队列中每个作业的响应比,选出响应比最高的


6、优先级调度算法。


9、什么是死锁

指多个进程在进行过程中因为争夺资源而造成的一个僵局,如果没有外力作用,将无法再向前推进继续工作。如图所示。

94ab0e5256df023ac167b3a82d62e7f6_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_16,color_FFFFFF,t_70,g_se,x_16.png


10、产生死锁的原因

系统中存在一些不可剥夺的资源,当两个或者两个以上进程占有自身资源,并且请求对方资源时,导致每个进程都无法推进。可能会由于竞争资源或进程推进顺序不当造成。


资源可以分为两类:

1、可剥夺资源。即可以被其他进程或者系统剥夺。CPU和主存都属于这类可剥夺的资源。

2、不可剥夺资源:当该资源分配给某个进程后,不能强行回收了。如打印机等。


11、死锁产生的必要条件

1、互斥条件:进程要求对所分配资源进行排他性控制,即在一段时间某个资源仅为一个进程使用。

2、请求和保持条件:当进程因请求资源而阻塞,对已经获得的资源保持不放。

3、不剥夺资源:进程已获得的资源未使用之前,不能剥夺,只能自己释放。

4、环路等待:发生死锁时,必然存在一个进程-资源的环形链。


12、解决死锁的基本方法

1、预防死锁。

2、避免死锁。

3、检测死锁。

4、解除死锁。


13、预防死锁的办法?

1、破坏请求条件:一次性分配所有资源,就不会再有请求了。

2、破坏请求-保持条件:只要一个资源得不到分配,就不会给这个进程分配其他的资源。

3、破坏不可剥夺的条件:当某个进程获得了部分资源,但是得不到其他的资源,则释放已经占有的资源了。

4、破坏环路等待条件:系统给每类资源一个编号,每一个进程按编号递增的顺序请求条件,释放则相反


14、避免死锁的办法?

1、安全状态。

fc289c7c518678eb8aaef179cfb86f15_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_17,color_FFFFFF,t_70,g_se,x_16.png

2、单个资源的银行家算法。

47c2478d8aff85733c295d0f7bba3ad5_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_16,color_FFFFFF,t_70,g_se,x_16.png

3、多个资源的银行家算法。

e998b79791a6ccebb28a081855afce83_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_18,color_FFFFFF,t_70,g_se,x_16.png


15、如何解除死锁?

1、剥夺资源:挂起某些死锁进程,并且抢占该资源。但同时应该防止被挂起的进程长时间得不到资源。

2、撤销进程:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程的优先级和撤销进程的代价的高低进行。

3、进程退回:让一个或多个进程回退到足以避免死锁的地步。进程回退时自愿释放资源而不是被剥夺,这个方法要求系统保持进程的历史信息,设置还原点。

相关文章
|
2月前
|
机器学习/深度学习 Dart 前端开发
移动应用与系统:构建现代数字生态的基石在当今这个高度数字化的社会中,移动应用与操作系统已成为我们日常生活不可或缺的一部分。它们不仅改变了我们的沟通方式,还重塑了我们的工作、学习和娱乐模式。本文将深入探讨移动应用开发的基础、移动操作系统的功能以及这两者如何共同塑造了我们的数字世界。
随着智能手机和平板电脑的普及,移动应用与系统的重要性日益凸显。它们不仅为用户提供了便捷的服务和丰富的功能,还为开发者提供了广阔的创新平台。本文将介绍移动应用开发的基本概念、技术栈以及最佳实践,并探讨主流移动操作系统的特点和发展趋势。通过分析移动应用与系统的相互作用,我们可以更好地理解它们在现代社会中的重要地位。
|
1月前
|
算法 前端开发 Java
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
这篇文章总结了单链表的常见面试题,并提供了详细的问题分析、思路分析以及Java代码实现,包括求单链表中有效节点的个数、查找单链表中的倒数第k个节点、单链表的反转以及从尾到头打印单链表等题目。
31 1
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
|
5月前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
120 1
|
1月前
|
Java 应用服务中间件 程序员
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
26 4
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
109 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
网络协议 算法 数据库
|
3月前
|
缓存 网络协议 算法
这些年背过的面试题——网络和操作系统基础篇
本文是技术人面试系列网络和操作系统基础篇,面试中关于网络和操作系统基础都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
3月前
|
消息中间件 存储 缓存
面试准备-操作系统
面试准备-操作系统
|
2月前
|
运维 Ubuntu Linux
操作系统发行版特性学习
操作系统发行版特性学习
|
5月前
|
前端开发 Java C#
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库

热门文章

最新文章