前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试整理学习专题2:操作系统

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

作者头像
程序员洲洲
发布2024-06-07 08:58:33
630
发布2024-06-07 08:58:33
举报
文章被收录于专栏:项目文章

1、并发和并行的理解?

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

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

同步:一个同步调用发出之后,调用者需要一直等待返回结果。有返回结果后,才能执行后续的操作。 异步:当一个异步调用发出之后,调用者不需要立刻等待返回结果,实际处理这个调用的部件在完成之后,通过状态、回调来通知调用者。 阻塞:调用结果返回前,线程会被挂起,即阻塞。 非阻塞:即使调用结果没有返回,也不会阻塞当前的线程。

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

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

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

进程可以使得多个程序并发执行,提高资源的利用率与系统的吞吐量,但是带来一些缺点。 1、进程在同一时间只能干一件事 2、进程在执行的过程中如果被阻塞了,整个进程就会被挂起,即使进程中有些工作不依赖等待的资源,但是仍然会被阻塞不被执行。

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

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

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

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

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

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、什么是死锁。

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

10、产生死锁的原因:

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

资源可以分为两类: 1、可剥夺资源。即可以被其他进程或者系统剥夺。CPU和主存都属于这类可剥夺的资源。 2、不可剥夺资源:当该资源分配给某个进程后,不能强行回收了。如打印机等。

11、死锁产生的必要条件:

1、互斥条件:进程要求对所分配资源进行排他性控制,即在一段时间某个资源仅为一个进程使用。 2、请求和保持条件:当进程因请求资源而阻塞,对已经获得的资源保持不放。 3、不剥夺资源:进程已获得的资源未使用之前,不能剥夺,只能自己释放。 4、环路等待:发生死锁时,必然存在一个进程-资源的环形链。

12、解决死锁的基本方法。

1、预防死锁。 2、避免死锁。 3、检测死锁。 4、解除死锁。

13、预防死锁的办法?

1、破坏请求条件:一次性分配所有资源,就不会再有请求了。 2、破坏请求-保持条件:只要一个资源得不到分配,就不会给这个进程分配其他的资源。 3、破坏不可剥夺的条件:当某个进程获得了部分资源,但是得不到其他的资源,则释放已经占有的资源了。 4、破坏环路等待条件:系统给每类资源一个编号,每一个进程按编号递增的顺序请求条件,释放则相反

14、避免死锁的办法?

1、安全状态。

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

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

15、如何解除死锁?

1、剥夺资源:挂起某些死锁进程,并且抢占该资源。但同时应该防止被挂起的进程长时间得不到资源。 2、撤销进程:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源。撤销的原则可以按进程的优先级和撤销进程的代价的高低进行。 3、进程退回:让一个或多个进程回退到足以避免死锁的地步。进程回退时自愿释放资源而不是被剥夺,这个方法要求系统保持进程的历史信息,设置还原点。

16、缓冲区溢出?危害?

缓冲区为暂时放置输入或输出资料的内存。缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 危害:程序崩溃导致拒绝服务和跳转并且执行一段恶意代码。

17、分段、分页的区别?

18、物理地址、逻辑地址、虚拟内存的概念。

19、页面置换算法有哪些?

20、动态链接库和静态链接库的理解?

21、外中断和异常什么区别关系

22、一个程序从开始运行到结束的完整过程?

题目中的开始指的是手动 点击打开一个应用程序那一刻开始算起。

四个过程:预编译、编译、汇编、链接 (1)预编译:主要是处理源代码文件中的以“#”开头的预编译指令。

(2)编译:把预编译之后产生XXX.i或者XXX.ii文件进行一系列的词法分析、语法分析、语义分析及优化之后,生成相应的汇编代码文件。

(3)汇编: 将汇编代码转成机器可以执行的指令(机器码文件)。汇编器的汇编过程相对于编译器来说更加简单,没有复杂的语法,也没有语义,更不需要做到指令优化,只是根据汇编指令和机器指令的对照表一一翻译过来,汇编过程有汇编器as完成。 经过汇编之后,产生目标文件(与可执行文件格式几乎一样)xxx.o(linux下),xxx.obj(windows下)。

汇编这一块可以参照:汇编语言及学习(大学相关课程)以至更好的理解机器码的执行等,汇编有专门的语言,就叫汇编语言。

(4)链接:将不同的源文件产生的目标文件进行链接,从而形成一个可以执行的程序,链接分为静态链接和动态链接。

23、什么是用户态与内核态?

这是两种操作系统的运行状态。

  • 内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,比如网卡、硬盘等。处于内核态的CPU可以从一个程序切换到另外一个程序,并且CPU不会发生抢占情况,一般处于特权级0的状态我们称为内核态。
  • 用户态:处于用户态的CPU只能受限的访问内存,并且不允许被访问外围设备。用户态下的CPU不允许独占,也就是说CPU能够被其他程序获取。。

为什么要有用户态和内核态。 答:计算机有一些比较危险的操作,设置闹钟、内存清理等等,都需要特定的状态,也就是内核态下完成,如果随意的进行操作,那么很容易造成系统崩溃或者不可挽回的灾难。

24、用户态和内核态如何进行切换的?

25、进程终止的方式?

由于以下条件进行触发: 1、正常退出。 2、错误退出。 3、严重错误(非自愿) 4、被其他进程杀死(非自愿)

26、守护进程、僵尸进程、孤儿进程等?

27、如何避免僵尸进程。

28、介绍几种典型的锁?

29、常见的内存分配错误

30、内存交换中被换出的进程保存在哪里?

保存在磁盘中,也就是外存中。

31、原子操作如何实现的?

32、抖动说一下?

也叫颠簸现象。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、并发和并行的理解?
  • 2、同步、异步、阻塞、非阻塞的概念。
  • 3、进程、线程基本概念、区别?
  • 4、为什么有了进程,还要有线程。
  • 5、进程的状态转换?(转换)
  • 进程间的通信方式有哪些?
  • 8、进程的调度算法:
  • 9、什么是死锁。
  • 10、产生死锁的原因:
  • 11、死锁产生的必要条件:
  • 12、解决死锁的基本方法。
  • 13、预防死锁的办法?
  • 14、避免死锁的办法?
  • 15、如何解除死锁?
  • 16、缓冲区溢出?危害?
  • 17、分段、分页的区别?
  • 18、物理地址、逻辑地址、虚拟内存的概念。
  • 19、页面置换算法有哪些?
  • 20、动态链接库和静态链接库的理解?
  • 21、外中断和异常什么区别关系
  • 22、一个程序从开始运行到结束的完整过程?
  • 23、什么是用户态与内核态?
  • 24、用户态和内核态如何进行切换的?
  • 25、进程终止的方式?
  • 26、守护进程、僵尸进程、孤儿进程等?
  • 27、如何避免僵尸进程。
  • 28、介绍几种典型的锁?
  • 29、常见的内存分配错误
  • 30、内存交换中被换出的进程保存在哪里?
  • 31、原子操作如何实现的?
  • 32、抖动说一下?
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档