操作系统之常考面试题

操作系统之常考面试题


目录:

  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.死锁忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值