八股文——操作系统

本文深入探讨了操作系统的概念,包括内核、系统调用、进程与线程的区别,以及进程的五种状态。文章还介绍了进程间通信的多种方式,如管道、信号量和消息队列等。进一步讲解了线程同步的三种方法:互斥量、信号量和事件。讨论了操作系统中常用的调度算法,如FCFS、SJF和多级反馈队列等,并阐述了死锁产生的条件及其避免策略。此外,详细阐述了内存管理的重要性,包括连续分配与非连续分配管理方式,以及页式、段式和段页式管理机制。最后,介绍了虚拟地址空间、虚拟内存的局部性原理以及页面置换算法,如LFU、LRU、FIFO和OPT。

八股文——操作系统

1、什么是操作系统

  • 操作系统(简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石
  • 操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。
  • 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统 筹着各种相关事项。
  • 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬 件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件 的桥梁,决定着系统的性能和稳定性。

2、什么是系统调用
首先在介绍系统调用之前,先说一下用户态和系统态。

  • 用户态(user mode) : 用户态运行的进程可以直接读取用户程序的数据。

  • 系统态(kernel mode):可以简单的理解系统态运行的进程或程序几乎可以访问计 算机的任何资源,不受限制。
    我们运行的程序基本都是运行在用户态,如果我们调用操作系统提供的系统态级别的子功能,就需要进行系统调用了。也就是说在我们运行的用户程序中,凡是与系统态级别的资源有关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
    这些系统调用按功能大致可分为如下几类:

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。

  • 文件管理。完成文件的读、写、创建及删除等功能。

  • 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。

  • 进程通信。完成进程之间的消息传递或信号传递等功能。

  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。

3、进程和线程的区别
从 JVM 的角度来说一下线程和进程之间的关系:
在这里插入图片描述
从上图可以看出:一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (JDK1.8 之后的元空间)资源,但是每个线程有自己的程序计数器、虚拟机栈 和 本地方法栈。
总结: 线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线 程。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程 中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相 反。

4、进程有哪几种状态?
我们一般把进程大致分为 5 种状态,这一点和线程很像!

  • 创建状态(new) :进程正在被创建,尚未到就绪状态。
  • 就绪状态(ready) :进程已处于准备运行状态,即进程获得了除了处理器之外的 一切所需资源,一旦得到处理器资源(处理器分配的时间片)即可运行。
  • 运行状态(running) :进程正在处理器上上运行(单核 CPU 下任意时刻只有一个进程处于运行状态)。
  • 阻塞状态(waiting) :又称为等待状态,进程正在等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成。即使处理器空闲,该进程也不能运行。
  • 结束状态(terminated) :进程正在从系统中消失。可能是进程正常结束或其他原因中断退出运行。

5、进程间的通信常见的的有哪几种方式呢?
大概有 7 种常见的进程间的通信方式。

  • 管道/匿名管道(Pipes) :用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。存在于内存中。
  • 有名管道(Names Pipes) : 匿名管道由于没有名字,只能用于亲缘关系的进程间通信。
### 计算机操作系统常见面试题与基础知识 #### 虚拟内存与物理内存的关系 虚拟内存的概念是指操作系统为每个进程提供了一个独立的地址空间,而这些地址并不直接对应于实际的物理内存位置。当应用程序请求分配大量内存(如8GB),这仅意味着在虚拟地址空间中预留了一部分区域,并不立即占用真实的物理资源[^1]。只有当程序尝试访问这部分保留下来的虚拟地址时,才可能引发缺页异常,从而促使操作系统从可用池中划拨相应的实体存储单元。 #### 操作系统的位数影响 对于运行环境而言,无论是采用32-bit架构还是64-bit架构的操作系统都会显著影响可管理的最大内存容量以及寻址方式。在一个典型的32位体系结构下,理论上能够支持最高达4GB大小的数据段;然而现代多数服务器和个人电脑都已转向更高效的64位平台,在此之上可以轻松突破TB级别的界限来满足高性能计算需求[^1]。 #### SWAP交换分区的作用 Swap技术作为扩展RAM能力的一种手段被广泛应用于各类Unix/Linux发行版当中。即使硬件配置较低的情况下也能借助硬盘上的特定区域充当额外缓冲区的角色——即所谓的“页面文件”。每当现有工作集超出当前安装的实际DRAM总量时,则会将暂时不用的部分数据移至磁盘保存起来以便释放更多即时使用的空间给更重要的任务执行[^1]。 #### 句柄 vs 指针 的区别 尽管表面上看二者似乎都是用来指向某些对象或者变量的东西,但实际上它们之间存在着本质差异:前者是由微软设计出来专门用于表示各种不同类型资源抽象层面上的一个编号型标识符(通常是无符号整数),后者则是C/C++编程语言里非常基础且强大的功能之一,可以直接操控具体的机器级地址值并对其进行读写操作[^3]。 #### Java 中观察者模式的应用场景 在软件开发领域特别是面向对象范式的实践中,“Observer Pattern”扮演着极其重要的角色。例如构建图形界面组件库的时候经常会遇到这样的情况—用户交互动作触发了一系列后续逻辑流程的变化过程。此时就可以利用该设计思路创建一个主题类负责维护一系列监听器列表,并在其内部状态发生改变之后依次调用各个成员的方法告知他们最新的动态信息[^2]。 ```java // 定义 Subject 接口 public interface Subject { void registerObserver(Observer o); void removeObserver(Observer o); void notifyObservers(); } // 实现具体的通知机制 class ConcreteSubject implements Subject { ... } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值