热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【操作系统】经典面试题吐血整理

进程与线程的区别在引入线程之前,进程是资源分配的基本单位也是cpu调度的基本单位。但是在引入线程之后,cpu调度的基本单位变成了线程。之所以引入线程是为了提高系统的并发性,减


  • 进程与线程的区别



    • 在引入线程之前,进程是资源分配的基本单位也是cpu调度的基本单位。但是在引入线程之后,cpu调度的基本单位变成了线程。之所以引入线程是为了提高系统的并发性,减少进程并发带来的时空开销。他们的所占用的内存空间不同,通信方式不同。



  • 进程间的通信方式



    • 管道: 速度慢, 容量有限, 只有 父子之间的进程能通信.






    • 消息队列: 容量受到系统限制.


    • 共享内存: 速度快, 但要保持同步



  • 线程间通信方式



    • 同步:这里讲的同步是指多个线程通过 synchronized 关键字这种方式来实现线程间的通信.

    • while轮询的方式:这种方式会 浪费CPU资源. 就类似于现实生活中, 某个人一直看着手机屏幕是否有电话来了. 而不是在干别的事情,当有电话来时,响铃通知TA电话来了。

    • wait /notify 机制:好处就是CPU的利用率提高了. 坏处是如果通知过早, 会打乱程序的执行逻辑.


  • 进程间的调度





  • 死锁是什么,如何解决死锁



    • 各进程互相等待对方手里的资源,导致进程都阻塞,无法向前推进


    • 预防死锁


    • 避免死锁:银行家算法


    • 死锁检测:死锁定理,资源分配图的简化


    • 死锁解除:撤销,回退



  • 实现多线程的方式



    • 用户级线程


    • 内核级线程


    • 多线程模型



  • 磁盘调度算法(6种)



    • 先来先服务


    • 最短寻道时间优先


    • SCAN


    • C-SCAN


    • LOOK


    • C-LOOK



  • 进程调度算法(6种)



    • 先来先服务

    • 短作业优先

    • 高响应比优先

    • 优先级调度算法

    • 时间片轮转调度

    • 多级反馈队列算法


  • 操作系统的功能



    • 进程管理


      • 进程管理主要是要实现进程线程之间调度,处理进程之间的同步和互斥问题,以及可能产生的死锁等问题。



    • 内存管理


      • 内存空间的分配和回收(非连续分配中有基本分页和基本分段),虚拟存储技术(请求分页,请求分段,缺页中断),内存空间扩充(覆盖交换),地址转换,存储保护等。



    • 文件管理


      • 对文件目录的管理(FCB indoe),如何实现文件共享(硬链接软链接),文件保护(口令加密访问控制),对非空闲磁盘块的管理(连接分配,索引分配),以及对空闲磁盘块的管理(位示图法,空闲链表法,成组链法),磁盘调度,磁盘管理(低级格式化,磁盘分区,逻辑格式化)。



    • 设备管理


      • 这一块主要的知识就是中断处理(程序直接控制,中断驱动方式,DMA方式,通道控制)






推荐阅读
  • 本文详细探讨了Java中Volatile关键字的工作原理、优化技巧及其在实际开发中的应用场景,特别是在提高多线程环境下数据可见性和减少锁竞争方面的优势。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文深入探讨Java编程语言的关键特性,包括但不限于其简洁性、强大的面向对象能力、跨平台兼容性、安全机制、高效性能及多线程支持等方面。文章旨在为开发者提供全面理解Java特性的指导。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 想搭建一个能够稳定支持每日500万页面浏览量(PV)的网站架构吗?了解500万PV的实际意义,以及如何计算服务器需要处理的并发请求量,是成功构建高效架构的关键。本文将从基础概念出发,深入探讨实现这一目标所需的技术细节和策略。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 性能测试工具的选择与应用
    本文探讨了性能测试工具的重要性及其在软件测试中的作用,重点介绍了选择合适性能测试工具的考量因素,并对几种常用的性能测试工具进行了对比分析。 ... [详细]
  • Spring Security核心概念与应用实践
    本文详细介绍了Spring Security的核心机制,包括其作为一系列过滤器的工作原理,如何实现用户认证与授权,以及常见的配置方法和高级特性如CSRF防护。 ... [详细]
  • 本文探讨了实时操作系统中的两种主要调度策略——速率单调调度与最早期限优先调度,并深入分析了多处理器环境下的调度挑战及优先级反转问题的解决方案。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
author-avatar
莣Q楽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有