操作系统之常考面试题


目录:

  1. 操作系统概述
  2. 进程的描述与控制
  3. 存储器管理
  4. 处理调度与死锁

注:在牛客上复习java摘录的,便于自己复习。
地址连接:https://www.nowcoder.com/tutorial/94/a9220944ad014f55be4015c19247af91


1. 操作系统概述


  1. 谈谈,64位和32位的区别?

    参考回答:
    操作系统只是硬件和应用软件中间的一个平台。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设计。

  2. 谈谈,CentOS 和 Linux的关系?

    参考答案:
    CentOS是Linux众多得发行版本之一,linux有三大发行版本(:Slackware、debian、redhat),而Redhat有收费的商业版和免费的开源版,商业版的业内称之为RHEL系列,CentOS是来自于依照开放源代码规定而公布的源代码重新编译而成。可以用CentOS替代商业版的RHEL使用。两者的不同,CentOS不包含封闭源代码软件,是免费的。


2. 进程的描述与控制


  1. 请解释一下,LINUX下的线程,GDI类

    参考回答:
    LINUX实现的就是基于核心轻量级进程的”一对一”线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

    GDI类为图像设备编程接口类库。

2. 进程和线程的区别是什么?(重点)
  1. 进程是资源分配的最小单位,线程是程序执行的最小单位。
  2. 开销方面:每个进程独有独立的代码和数据空间,程序之间的切换会有较大的开销;线程可以看做是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。
  3. 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
  4. 内存分配:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而已,除CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程之间只能共享资源。
  5. 包含关系:一个进程可以有多个线程,线程是进程的一部分,所以线程也被称为轻量级进程。



3. 谈一谈,系统线程数量上限是多少?

参考回答:
Linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX。

这个限制可以在/usr/include/bits/local_lim.h中查看 ,对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源。

这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是8M=8192KB。

(普通用户最大线程数为1024,root用户没有限制)

  1. 请问,如何杀死一个进程?

    参考回答:
    Kill pid


3. 存储器管理


  1. 你怎么理解操作系统里的内存碎片,有什么解决办法?

    参考回答:
    内存碎片分为:内部碎片和外部碎片。

    内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;

    内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

    单道连续分配只有内部碎片。多道固定连续分配既有内部碎片,又有外部碎片。

    外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

    外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

    使用伙伴系统算法。

  2. 介绍一下,什么是页式存储?

    参考回答:

    主存被等分成大小相等的片,称为主存块,又称为实页。

    当一个用户程序装入内存时,以页面为单位进行分配。页面的大小是为2n ,通常为1KB、2KB、2n KB等


4. 处理调度与死锁


  1. 请谈一谈,系统如何提高并发性?
    考察:操作系统综合性

    参考回答:
    1、提高CPU并发计算能力
    (1)多进程&多线程
    (2)减少进程切换,使用线程,考虑进程绑定CPU
    (3)减少使用不必要的锁,考虑无锁编程
    (4)考虑进程优先级
    (5)关注系统负载

    2、改进I/O模型
    (1)DMA技术
    (2)异步I/O
    (3)改进多路I/O就绪通知策略,epoll
    (4)Sendfile
    (5)内存映射
    (6)直接I/O

2. 请谈一谈,什么情况下会发生死锁?解决死锁的策略有哪些?(重点)

  1. 什么是死锁?
    死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

  2. 死锁的四个必要条件
    互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
    请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
    不剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
    循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

  3. 处理死锁的策略
    1.死锁预防。如进程需要的所有资源,在一开始就全部申请好得到之后再开始执行。
    2.死锁避免。如进程每次申请申请资源的时候,根据一定的算法(银行家算法),去看该请求可不可能造成死锁,如果可能,就不给它分配该资源。
    3.死锁处理。破坏四个必要条件的其中一个,比如kill掉一个进程。
    4.死锁忽略。

操作系统之常考面试题相关推荐

  1. 计算机网络基础常考面试题总结

    计算机网络基础常考面试题总结 1.OSI,TCP/IP,五层协议的体系结构,以及各层协议 答:OSI分层 (7层):物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. TCP/IP分层(4层 ...

  2. php高中级程序员面试题,PHP 程序员面试笔试常考面试题精讲

    最近假期的原因,决定在chat开了这门课,希望对你有帮助. 主要总结汇总了 PHP 面试过程中最爱问的几道面试题.这些面试题可以很好的帮助面试者准备,并让你在面试过程中很好的回答这些面试题,轻松拿下 ...

  3. JS 异步编程及常考面试题

    JS 异步编程及常考面试题 并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 异步和这小节的知识点其实并不是一个概念,但是这两个名词确实是很多人都常会 ...

  4. JS 进阶知识点及常考面试题

    JS 进阶知识点及常考面试题 手写 call.apply 及 bind 函数 涉及面试题:call.apply 及 bind 函数内部实现是怎么样的? 首先从以下几点来考虑如何实现这几个函数 不传入第 ...

  5. JS 基础知识点及常考面试题(一)

    JS 基础知识点及常考面试题(一) 原始(Primitive)类型 涉及面试题:原始类型有哪几种?null 是对象嘛? 在 JS 中,存在着 6 种原始值,分别是: boolean null unde ...

  6. JS 基础知识点及常考面试题(二)

    JS 基础知识点及常考面试题(二) 涉及面试题:== 和 === 有什么区别? 对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换,这也就用到了我们上一章节讲的内容. 假如我们需要对比 ...

  7. ES6 知识点及常考面试题

    ES6 知识点及常考面试题 var.let 及 const 区别 涉及面试题:什么是提升?什么是暂时性死区?var.let 及 const 区别? 对于这个问题,我们应该先来了解提升(hoisting ...

  8. CSS常考面试题资料

    CSS常考面试题资料 都是网上搜集的资料 链接1<50道CSS基础面试题(附答案)>中的答案真的就只是答案吗? 链接2 50道CSS基础面试题(附答案)

  9. 由浅入深 65个JS常考面试题

    由浅入深逐个击破 JS常考面试题(上篇) 1. 介绍一下JS的基本数据类型,值是如何存储的? JavaScript一共有8种数据类型,其中有7种基本数据类型:Undefined.Null.Boolea ...

最新文章

  1. 安装setuptools与pip
  2. python多重循环导致内存不足_Python多重处理拒绝循环
  3. React(0.13) 定义一个动态的组件
  4. Dalvik Vm架构
  5. Java使用原子类进行多线程的 i++ 操作示例
  6. 鲜为人知的混沌工程,到底哪里好?
  7. react全局状态管理_react状态管理redux
  8. qt 使用插件astyle_astyle使用基础教程
  9. 腾讯广告的多媒体AI技术实战
  10. ajax是什么实现的步骤,AJAX使用步骤及实现过程
  11. python双目视觉三维重建代码_双目立体视觉的三维重建方法与流程
  12. [51单片机] 串口通讯 简单通信
  13. 计算机安全知识策划书,安全知识策划书
  14. 旋风解析磁力php,2018年免费引擎和正版旋风四核引擎棋力测试分析
  15. ISO14001环境管理体系认证申报要求有哪些
  16. linux下使用360wifi3,360 随身 WiFi3 在 Ubuntu 14.04 下的使用
  17. Java爬虫 爬取某招聘网站招聘信息
  18. u-boot的usb模块初始化
  19. 使用spool导出数据
  20. Check-N-Run: a Checkpointing System for Training Deep Learning Recommendation Models | NSDI‘ 22

热门文章

  1. 基于语音识别的微博签到系统
  2. 在Elasticsearch中查询Term Vectors词条向量信息
  3. 6.494 - Kindergarten Counting Game
  4. 什么是 Visual VM?
  5. CodeForces - 1476E Pattern Matching(字典树+拓扑)
  6. centos php imap,centos 5.5 64 php 添加imap 模块记录
  7. 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...
  8. 机器学习-降维之奇异值分解SVD算法原理及实战
  9. Dominant Indices(CF 1009 F)
  10. 最简单的基于FFMPEG的视频编码器(YUV编码为H.264)