首页 > 其他分享 >操作系统八股

操作系统八股

时间:2024-11-20 17:19:25浏览次数:1  
标签:八股 操作系统 算法 线程 切换 进程 内存

操作系统

用户态和内核态

内核态(Kernel Mode):CPU可以执行所有的指令和访问所有的硬件资源。有更高的权限

用户态(User Mode):CPU只能执行部分指令集,无法直接访问硬件资源

安全性,稳定性,隔离性

线程和进程

进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

线程组之间只能共享资源

每个进程都有独立的代码和数据空间(程序上下文),每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小

协程是一种用户态的轻量级线程,其调度完全由用户程序控制,而不需要内核的参与

进程隔离性独立性,崩溃不会对其他进程产生很大影响

为什么进程之下还要设计线程

多进程的这种方式:进程之间如何通信,共享数据?维护进程的系统开销较大,如创建进程时,分配资源、建立 PCB;终止进程时,回收资源、撤销 PCB;进程切换时,保存当前进程的状态信息;

进程切换和线程切换的区别?

进程切换:进程切换涉及到更多的内容,包括整个进程的地址空间、全局变量、文件描述符等。因此,进程切换的开销通常比线程切换大。
线程切换:线程切换只涉及到线程的堆栈、寄存器和程序计数器等,不涉及进程级别的资源,因此线程切换的开销较小。

线程切换为什么比进程切换快,节省了什么资源

线程切换比进程切换快是因为线程共享同一进程的地址空间和资源,线程切换时只需切换堆栈和程序计数器等少量信息,而不需要切换地址空间

进程的状态(五种状态)

进程上下文

cpu上下文:CPU 寄存器和程序计数器

进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源,会把交换的信息保存在进程的 PCB

进程间通讯

匿名管道,命名管道,消息队列,共享内存,信号量,socket

共享内存怎么实现的

共享内存的机制,就是拿出一块虚拟地址空间来,映射到相同的物理内存中

线程间通讯有什么方式

互斥锁、读写锁、条件变量、自旋锁和信号量

进程调度算法

先来先服务调度算法,最短作业优先调度算法,高响应比优先调度算法,时间片轮转调度算法,最高优先级调度算法,多级反馈队列调度算法

死锁发生条件

资源互斥,持有并等待,不可剥夺,环路等待

操作系统内存管理

虚拟内存可以使得进程对运行内存超过物理内存大小
由于每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。这就解决了多进程之间地址冲突的问题。
页表里的页表项中除了物理地址之外,还有一些标记属性的比特,比如控制一个页的读写权限,标记该页是否存在等。在内存访问方面,操作系统提供了更好的安全性。

虚拟内存:是操作系统提供给每个运行中程序的一种地址空间,每个程序在运行时认为自己拥有的内存空间就是虚拟内存,其大小可以远远大于物理内存的大小

内存分页由于内存空间都是预先划分好的,所以不会有外部碎片。
但是,因为内存分页机制分配内存的最小单位是一页,所以针对内存分页机制会有内部内存碎片的现象。

内存地址转换

把虚拟内存地址,切分成页号和偏移量;
根据页号,从页表里面,查询对应的物理页号;
直接拿物理页号,加上前面的偏移量,就得到了物理内存地址。

程序的内存布局

代码段,二进制可执行代码;
数据段,已初始化的静态常量和全局变量;
BSS 段,未初始化的静态变量和全局变量;
堆段,动态分配的内存
文件映射段,动态库、共享内存等
栈段,局部变量和函数调用的上下文栈

堆和栈的区别

分配方式:堆又程序员动态分配,栈由系统自动分配
内存管理:堆要程序员手动管理释放
大小;

fork 阶段会复制父进程的页表

copy on write

在修改共享资源时,不直接修改原始数据,而是在新的副本上进行操作,并最终将修改结果写回原始数据,可以容忍读操作并发,但写操作需要互斥执行

操作系统会把主进程的「页表」复制一份给子进程,页表对应的页表项的属性会标记该物理内存的权限为只读。

在发生写操作的时候,操作系统才会去复制物理内存,这样是为了防止 fork 创建子进程时,由于物理内存数据的复制时间过长而导致父进程长时间阻塞的问题

介绍一下brk,mmap

malloc 申请内存的时候,会有两种方式向操作系统申请堆内存。
方式一:通过 brk() 系统调用从分配内存(小于 128 KB)
方式二:通过 mmap() 系统调用在文件映射区域分配内存;(大于 128 KB)

操作系统内存不足的时候会发生什么

CPU 就会产生缺页中断
如果没有空闲的物理内存,那么内核就会开始进行回收内存的工作,后台内存回收(异步),直接内存回收(同步),OOM直接兜底杀掉内存最高的进程

回收内收

基于LRU
文件页
回收干净页的方式是直接释放内存,回收脏页的方式是先写回磁盘后再释放内存
匿名页
它们回收的方式是通过 Linux 的 Swap 机制,Swap 会把不常访问的内存先写到磁盘中,然后释放这些内存

页面置换有哪些算法

最佳页面置换算法(OPT)
先进先出置换算法(FIFO)
最近最久未使用的置换算法(LRU)
时钟页面置换算法(Lock)
最不常用置换算法(LFU)

什么是中断?

CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务

外部中断分为可屏蔽中断和不可屏蔽中断
内部中断分为陷阱、故障、终止

中断的流程

发生中断
中断响应
中断处理

中断作用

处理突发事件,提高工作效率

网络IO模型

阻塞I/O模型
非阻塞I/O模型
I/O复用模型
信号驱动I/O模型
异步I/O模型

服务器处理并发请求有哪几种方式?

单线程web服务器方式
多线程web服务器方式
I/O多路复用web服务器
多路复用多线程web服务器

io多路复用

epoll 的 边缘触发和水平触发有什么区别?

零拷贝是什么

标签:八股,操作系统,算法,线程,切换,进程,内存
From: https://www.cnblogs.com/nowiam/p/18558853

相关文章

  • 并发编程八股
    并发编程保证数据的一致性事务管理,锁机制,版本控制线程的创建方式继承Thread类,重写其run()方法,调用start()方法启动线程实现Runnable接口,重写run()方法,调用start()方法启动线程实现Callable接口与FutureTask使用线程池(Executor框架)停止一个线程的运行异常法停止:线程......
  • 计网八股
    计网网络OSI模型和TCP/IP模型OSI网络模型主要有7层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层TCP模型应用层,传输层,网络层和网络接口层tcp在传输层ip在网络层HTTP、HTTPS、CDN、DNS、FTP都是应用层协议用同一个TCP连接来发送和接收多......
  • java高频面试题(八股文)
    基础/集合1.ArrayList/LinkedList有什么区别?1、数据结构: 在数据结构上,ArrayList 和 LinkedList 都是 “线性表”,都继承于 Java 的 List 接口。另外 LinkedList 还实现了 Java 的 Deque 接口,是基于链表的栈或队列,与之对应的是 ArrayDeque 基于数组的栈或队......
  • GitHub 开源项目 Puter :云端互联操作系统
    每天面对着各种云盘和在线应用,我们常常会遇到这样的困扰。文件分散在不同平台很难统一管理,付费订阅的软件越来越多,更不用说那些烦人的存储空间限制了。最近在GitHub上发现的一个开源项目 Puter 彻底改变了我的在线办公方式。让人惊喜的是,这个项目在今年3月份宣布开......
  • 希冀 操作系统 实验lab1 内核、Boot和printf(保姆级教程 建议点赞收藏 未完成)
    这次我把所有代码都写出来方便大家复制(可以直接复制我的代码粘贴到终端执行)开始之前首先先拉取lab1的内容(一定先干这个,不然做不了实验!!!!!!!!!!!!!!!!)先切换到这个目录下cd20221105894-lab变为:输入gitpullgitcheckoutorigin/lab1 之后刷新一下你的学号-lab文件夹,如果改变了就好......
  • Java八股-Spring三级缓存,自动装配原理
    文章目录Spring的Bean生命周期Spring三级缓存循环依赖的解决过程结论Q&AQ:二级缓存是否是多余的?上面这个图只有一级缓存和三级缓存也能解决循环依赖,还能解决代理对象的问题了Q:光有一级缓存能不能解决@Autowire级别的循环依赖问题?Q:光有一级缓存和二级缓存,能不能解决@Aut......
  • 【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
    Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:在多任务操作系统中,进程优先级是影响任务调度的重要因素之一。操作系统通过设置不同的优先级来控制进程对CPU的使用权,从而实现资源的高效利用和任务的公平分配。本文......
  • 操作系统第九章课后习题全解:I/O设备
    文章目录单项选择题解答(1)以下关于I/O设备的中断控制方式说法正确的是。(2)通道是一种。(3)单处理机系统中,可并行的是。(4)缓冲有硬件缓冲和软件缓冲之分,硬件缓冲使用专用的寄存器作为缓冲器。软件缓冲使用。(5)程序员利用系统调用打开I/O设备时,通常使用的设备标识是。(6)使用户编制......
  • 操作系统第十章课后习题:文件系统
    文章目录单项选择题解答(1)文件系统中,文件访问控制信息存储的合理位置是。(2)文件的逻辑记录的大小是。(3)下列关于管道(pipe)通信的叙述中,正确的是。(4)同一个文件存储在不同的存储介质上,其组织形式。(5)下列文件物理结构中,适合随机访问且易于文件扩展的是。(6)为支持CD-ROM中视频文件......
  • format 命令是 Windows 操作系统中的一个命令行工具,用于格式化磁盘、分区或驱动器。格
     format|MicrosoftLearn format命令是Windows操作系统中的一个命令行工具,用于格式化磁盘、分区或驱动器。格式化过程会清除磁盘上的所有数据,并准备磁盘用于存储文件。它可以通过命令提示符(CMD)或者PowerShell来执行。format 命令的功能:清除数据:格式化磁盘会删除该......