操作系统常见面试题(一)

操作系统常见面试题(一)

操作系统基础

1、什么是操作系统?

  1. OS是管理计算机硬件与软件资源的程序,是计算机的基石。
  2. OS本质上是一个可以运行在计算机上的软件程序,主要用于管理计算机硬件和软件资源。
  3. OS的存在屏蔽了硬件层的复杂性。
  4. OS的内核时OS的核心部分,负责系统的内存、硬件设备、文件系统和应用程序的管理。内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

2、OS的主要功能

  1. 进程和线程的管理:进程的创建、撤销、阻塞、唤醒、进程间的通信等。
  2. 存储管理:内存的分配管理、外存的分配和管理。
  3. 文件管理:文件的读写创建和删除等。
  4. 设备管理:设备的请求或释放,以及设备启动等功能。
  5. 网络管理:管理计算机网络的使用。
  6. 安全管理:用户的身份认证、访问控制、文件加密等,防止非法用户对系统资源的访问和操作。
用户态和内核态

1、什么是用户态和内核态?

  • 用户态:用户态运行的进程可以直接读取用户程序的数据,拥有较低的权限。当应用程序需要执行某些特殊权限的操作时,如读写磁盘、网络通信等,需要向OS发起系统调用请求,进入内核态。
  • 内核态:内核态的进程几乎可以访问计算机的任何资源,用于非常高的权限。当OS收到进程的系统调用请求时,会从用户态切换到内核态,执行相应的系统调用,并将结果返回给进程,再返回用户态。

2、为什么要分为两个状态?只有一个内核态不行吗?

同时具有两个状态是为了保证计算机系统的安全性、稳定性和性能。

3、用户态和内核态如何切换?

用户态切换到内核态的 3 种方式

  1. 系统调用:用户态进程主动要求切换到内核态的一种方式,主要是为了使用内核态才能执行的功能,如读取磁盘资源。其核心是使用了OS为用户特别开放的一个中断实现的。
  2. 中断:由外部设备向CPU发出中断信号,CPU暂停正在执行的指令而去执行与中断信号对应的处理程序,如果之前正在执行的指令时用户态下的,那就发生了由用户态向内核态的切换。
  3. 异常:CPU在执行用户态下的程序时,发生了实现不可预知的异常,则会触发由当前进程切换处理此异常的内核相关程序中,转换到了内核态。
系统调用

1、何为系统调用?

系统调用是应用程序 与OS之间进行交互的一种方式 ,通过系统调用,应用程序可以访问OS底层的资源如文件、设备、网络等。

2、系统调用的过程?

  1. 用户态程序发起系统调用,发起中断。
  2. 当前CPU执行的程序中断,跳转到中断处理程序,内核程序开始处理系统调用。
  3. 内核处理完成后,主动触发中断,切换回用户态工作。

系统调用的过程

进程和线程

1、什么是进程和线程?

  • 进程 :计算机中运行的一个程序实例,是系统进行资源分配和调度的基本单位。
  • 线程 :是OS能够 进行运算调度的最小单元,线程是线程的子任务,是进程内的执行单元。

2、进程和线程的区别?

  • 线程是进程划分成的更小的运行单元,一个进程在其执行过程中可以产生多个线程。
  • 各个进程是独立的,但各个线程则不一定,同一进程中的线程很有可能互相影响。
  • 线程执行开销小,但不利于资源的管理和保护;而进程正好相反。

3、有了进程为什么还要线程?

  • 进程切换开销大,线程切换成本低。
  • 线程更轻量级,一个进程可以创建多个线程。
  • 多个线程可以并发处理不同的任务,而进程只能在一个时间干一件事。
  • 同一进程内的线程共享内存和文件,互相通信无需调用内核。

4、线程间的同步方式有哪些?

线程同步机制是指在多线程编程中,为了保证线程之间互不干扰而采用的一种机制。常见的线程同步机制有:

  1. 互斥锁:最常见的线程同步机制。允许只有一个线程同时访问被保护的临界区(共享资源)。
  2. 条件变量:用于线程间通信,允许一个线程等待某个条件满足,而其他线程可以发出信号通知等待线程。通常与互斥锁一起使用。
  3. 读写锁:允许多个线程同时读取共享资源,但是只允许一个线程写入资源。
  4. 信号量:用于控制多个线程对共享资源进行访问的工具。

5、进程有哪几种状态?

  • 创建new:进程正在被创建,尚未到就绪状态。
  • 就绪ready:进程已处于准备运行状态。万事俱备只欠东风。此时的线程只要获得的处理器资源就可以运行了。
  • 运行running:正在处理器上运行。
  • 阻塞waiting:正在等待某一事件而暂停运行,如等待某资源可用或IO操作完成,即使处理器空闲该进程也不能运行。
  • 结束terminated:正在充系统中消失,进程正常结束或其他原因中断退出运行。

进程状态图转换图

6、进程的调度算法?

进程调度算法是OS中用来管理和调度进程执行的方法。

  1. 先来先服务:按照进程到达的先后顺序执行,最早到达的先执行,直到完成或阻塞。
  2. 短作业优先:优先选择运行时间最短的进程运行
  3. 高响应比优先:综合考虑等待时间和服务时间的比率,选择具有最高响应比的进程来执行
  4. 时间片轮转:将CPU时间划分为时间片,每个进程在一个时间片内运行,然后切换到下一个进程
  5. 最高优先级:为每个进程分配一个优先级,优先级较高的进程先执行。可能导致优先级低的进程长时间等待,可能引发饥饿问题。
  6. 多级反馈队列:将进程划分为多个队列,每个队列具有不同的优先级,进程在队列之间移动。具有更高优先级的队列的进程会更早执行,而长时间等待的进程会被提升到更高优先级队列。
  7. 最短剩余时间优先:每次选择剩余执行时间最短的进程来执行。
  8. 最大吞吐量:最大化单位时间内完成的进程数量。

7、僵尸进程和孤儿进程?

  • 僵尸进程:子进程已经终止,但是其父进程仍在运行,但是父进程没有调用wait()或waitpid()等系统调用来获取子进程的状态信息,释放子进程占用的资源,此时子进程被称为僵尸进程。
  • 孤儿进程:一个进程的父进程已经终止或不存在,当时该进程仍在运行。通常是因为父进程意外终止或为及时调用系统调用来回收子进程导致。

整理自JavaGuide

  • 44
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值