《操作系统》知识框架整理(下)

简介: 《操作系统》知识框架整理

第 3 章 内存管理


3.1 内存管理的概念


3.1.1 什么是内存


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105662331



(1)什么是内存?有何作用?



(2)常用数量单位&内存地址



(3)逻辑地址(相对地址)vs物理地址(绝对地址)



(4)从写程序到程序运行:编译、链接、装入


编译:将高级语言翻译成机器语言


链接:将编译后形成的一组目标模块与所需库函数链接在一起,形成一个完整的装入模块


装入:将装入模块装入内存运行



(5)装入的三种方式


绝对装入、静态重定位、 动态重定位


①绝对装入



②静态重定位



③ 动态重定位


允许程序在内存中移动


需要重定位寄存器的支持



(6)链接的三种方式


静态链接、装入时动态链接、运行时动态链接


① 静态链接


在程序运行之前,将各目标模块和所需的库函数就打包成一个完整的可执行文件



②装入时动态链接


将各目标模块装入内存时,边装入边链接的方式



③运行时动态链接


在程序执行中需要该目标模块时,才对它进行链接。



3.1.2 内存管理的四个内容


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105667165


主要负责四种管理:


  • 内存空间的分配与回收


  • 内存空间的扩充


  • 地址转换


  • 存储保护



(1)内存空间的分配与回收



(2)内存空间的扩展(实现虚拟性)



(3)地址转换


逻辑地址与物理地址的转换,也称为地址重定位


有三种地址重定位方式,即三种装入方式



(4)内存保护


保证各进程在各自内存空间内运行,互不干扰


两种内存保护方式:


  1. 在CPU中设置一对上、下限寄存器


  1. 采用重定位寄存器和界地址寄存器进行越界检查


 


3.1.3 覆盖技术与交换技术的思想


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105713460



感觉不太重要


3.1.4 内存的分配与回收


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105714392


内存的分配与回收是内存管理的内容之一


分配分 :连续分配和非连续分配


连续分配:指为用户进程分配的必须是一个连续的内存空间


连续分配又包含三种:单一连续分配、固定分区分配、动态分区分配



(1)单一连续分配



(2)固定分区分配



(3)动态分区分配(可变分区分配)



(1)系统要用怎样的数据结构记录内存的使用情况呢?


空闲分区表和空闲分区链



(2)当多个空闲分区都能满足要求时,应该选择哪个分区进行分配?



(4)外部碎片和内部碎片


 


3.1.5 动态分区分配的四种算法


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105718027


首次适应算法、最佳适应算法、最坏适应算法、临近适应算法



(1)首次适应算法



(2)最佳适应算法



(3)最坏(大)适应算法



(4)临近适应算法



(5)四种算法归纳比较



3.1.6 分页存储


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105907291


前面说内存分配分连续分配和非连续分配;连续分配又有三种方法:单一连续分配、固定分区分配和动态分区分配。其中动态分区分配又有四种算法。


这里讲非连续分配;非连续分配又分三种,这里讲第一种分页存储




(1)为什么学习分页存储?



(2)基本分页存储管理的思想



(3)分页存储的重要概念



(4)如何实现地址的转换


地址转换即逻辑地址到物理地址



(5)如何计算页号和页偏移量




(6)如何知道页面在内存中的起始地址?


 


3.1.7 分页存储管理:1.基本地址变换结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105909842



(1)页表寄存器



(2)地址变换过程



一道例题加深印象:



3.1.8 分页存储管理:2.快表的地址变换结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105929440


基本地址变换的改进版



(1)局部性原理



(2)快表(TLB)



引入快表后,地址变换的过程的文字描述:



(3)基本地址变换与块表地址变换的比较



3.2 虚拟内存管理


内存管理的第二个内容,内存空间的扩展,即虚拟内存


3.2.1 虚拟内存的基本概念


参考链接:https://blog.csdn.net/weixin_43914604/article/details/105977595



 


(1)传统存储管理的特征、缺点



(2)局部性原理



(3)虚拟内存的定义和特征


虚拟内存的三大主要特征:


  1. 多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。


  1. 对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。


  1. 虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量远大于实际的容量。



(4)如何实现虚拟内存技术


需要建立在离散分配的内存管理方式基础上



第 4 章 文件管理


4.1 文件系统


4.1.1 文件管理的概念和功能


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106276876


作为系统资源的管理者是操作系统的三大功能之一;


文件管理又是作为系统资源的管理者提供四大功能之一。




操作系统应该向上提供哪些功能



 


从上往下看,文件应该如何存放在外存?



4.1.2 文件逻辑结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106277412




1.无结构文件


又称流式文件



2.有结构文件


又称记录式文件


根据每条记录的长度是否相等,又分定长记录可变长记录两种




(1)顺序文件



 


(2)索引文件



(3)索引顺序文件



 


(4)多级索引顺序文件


将10^6个记录的文件分成100* 100* 10000



4.1.3 文件目录结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106298565




文件控制块



 


可对目录的操作



(1)单级目录



(2)两级目录结构



(3)多级目录结构(树形目录结构)


绝对路径和相对路径



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wntd4vg-1637133554643)(C:\Users\14051\AppData\Roaming\Typora\typora-user-images\image-20211117113610770.png)]


树形目录结构可以很方便地对文件进行分类,但是不便于实现文件的共享,于是提出了无环图目录结构。


(4)无环图目录结构




索引节点(FCB的改进)瘦身




4.1.4 文件物理结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106303759


 



文件块、磁盘块


 



(1)连续分配


 



连续分配缺点:


 


 



(2)链接分配:隐式和显式


链接分配采取离散分配的方式,可以为文件分配离散的磁盘块,分为隐式链接和显式链接两种。


隐式链接


磁盘利用率高,不会有碎片问题。




显式链接


 



链接分配总结



(3)索引分配


下面的不总结了;文件管理好像面试不问


第5章 I/O管理


5.1 I/O管理概述



5.1.1 I/O设备简介


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106136127


(1)什么是I/O设备?


将数据输入到计算机的设备,或者可以接收计算机输出的外部设备。属于计算机中的硬件部分。



(2)I/O设备分类


按使用特性分


  1. 人机交互类外部设备:鼠标、键盘


  1. 存储设备:移动硬盘,光盘


  1. 网络通信设备:调制解调器


按传输速率分


  1. 低速设备:鼠标,键盘


  1. 中速设备:激光打印机


  1. 高速设备:磁盘


按信息交换单位分


  1. 块设备:传输速率较高,可寻址,即对它可随机读写任一块。如磁盘传输数据的基本单位:磁盘块


  1. 字符设备:传输速率较慢,不可寻址,在输入输出时常采用中断驱动方式。如鼠标键盘输入字符


(3)I/O设备组成


I/O设备由**机械部件和电子部件(I/O控制器、设备控制器)**组成。



下面细讲I/O控制器。


5.1.2 I/O控制器


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106136990


(1)四大功能


  1. 接收和识别CPU发出的命令


  1. 向CPU报告设备的状态


  1. 数据交换


  1. 地址识别



(2)三大组成


  1. CPU与控制器之间的接口:实现控制器与CPU之间的通信


  1. I/O逻辑:负责识别CPU发出的命令,并向设备发出命令


  1. 控制器与设备之间的接口:实现控制器与设备之间的通信



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZJOIV57y-1637133554645)(C:\Users\14051\AppData\Roaming\Typora\typora-user-images\image-20211117144409457.png)]


(3)两种寄存器编址方式


  1. 物理映像


  1. 独立编址



5.1.3 OS控制I/O设备的四种方式


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106144829


  1. 程序直接控制方式


  1. 中断驱动方式


  1. DMA方式


  1. 通道控制方式


每种方式需要注意的问题:


1.完成一次读写操作的流程


2.CPU干预的频率


3.数据传送的单位


4.数据的流向


5.主要缺点和主要优点


5.1.4 I/O软件的层次结构


参考链接:https://blog.csdn.net/weixin_43914604/article/details/106147270


(1)I/O软件层次总览



5.2 I/O核心子系统


什么是I/O核心子系统?


I/O核心子系统 = 设备独立性软件 + 设备驱动程序 + 中断处理程序



5.2.4 缓冲区管理

参考链接:https://blog.csdn.net/weixin_43914604/article/details/106274269

[外链图片转存中…(img-1zYOKj9p-1637133554646)]


  1. 程序直接控制方式


  1. 中断驱动方式


  1. DMA方式


  1. 通道控制方式


每种方式需要注意的问题:


1.完成一次读写操作的流程


2.CPU干预的频率


3.数据传送的单位


4.数据的流向


5.主要缺点和主要优点

目录
相关文章
|
1月前
|
机器学习/深度学习 Android开发 开发者
探索移动应用开发的未来:跨平台框架与操作系统的融合
【8月更文挑战第3天】 在移动应用开发的浪潮中,跨平台框架和移动操作系统之间的融合正开启新的篇章。本文将深入探讨如何通过Flutter等框架简化开发流程,同时分析iOS和Android系统的最新动态,并预测未来的发展趋势。
32 4
|
16天前
|
Web App开发 敏捷开发 测试技术
自动化测试框架的设计与实现探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第26天】本文旨在探讨自动化测试框架的设计原则、核心组件和实现方法。通过分析自动化测试的优势,我们深入讨论了框架设计的关键考虑因素,包括模块化、可重用性、可扩展性和易维护性。文章还介绍了如何利用流行的测试工具和编程语言来实现一个高效的自动化测试框架,并通过实例展示了框架的应用。
|
1月前
|
机器学习/深度学习 人工智能 Android开发
未来趋势下的移动应用开发:探索跨平台框架与操作系统的融合
在数字化时代的浪潮中,移动应用开发正经历着前所未有的变革。随着消费者需求的多样化和市场竞争的加剧,开发者们正在寻求更为高效、灵活的解决方案来应对挑战。本文将深入探讨移动应用开发的未来趋势,特别是跨平台框架的发展以及它们如何与不同的移动操作系统相融合。我们将从技术演进的角度出发,分析当前市场上流行的框架,并预测未来可能的发展方向。通过具体案例和技术解析,本文旨在为读者提供一个全面而深入的视角,以理解移动应用开发领域的最新动态。
|
2月前
|
人工智能 物联网 Android开发
探索移动应用开发的未来之路:跨平台框架与操作系统的融合
在本文中,我们将深入探讨移动应用领域的最新发展趋势,特别是跨平台框架如何重新塑造移动应用的开发和部署。通过分析当前市场上流行的移动操作系统,如Android和iOS,以及它们对跨平台技术的支持情况,我们将展示开发者如何在保持原生性能的同时,实现代码复用和应用快速部署。文章还将探讨人工智能、物联网等新兴技术如何与移动应用开发相结合,为未来的移动生态系统带来创新。最后,我们将讨论这些技术变革对用户体验、安全性和隐私保护的影响。
|
1月前
|
前端开发 Android开发 开发者
移动应用开发的未来:探索跨平台框架与操作系统的融合
在数字化时代的浪潮中,移动应用成为了我们日常生活的一部分。随着技术的不断进步,移动应用开发领域也迎来了新的变革。本文将深入探讨移动应用开发的新趋势,特别是跨平台框架的兴起以及它们如何与不同的移动操作系统相融合,为开发者和用户带来前所未有的便利和效率。从React Native到Flutter,我们将一探这些工具如何重塑开发生态,同时分析它们对移动操作系统的影响和未来可能的发展路径。
|
1月前
|
开发框架 前端开发 API
探索移动应用开发的未来:跨平台框架与操作系统的融合
在数字时代,移动应用成为人们日常生活的一部分。随着移动设备和操作系统的多样化,开发者面临着前所未有的挑战。本文深入探讨了移动应用开发的发展趋势,尤其是跨平台技术如Flutter和React Native如何改变游戏规则,以及这些变化对移动操作系统的影响。通过实例分析,我们预见未来移动应用开发将更加便捷、高效,且能够无缝地跨越不同平台,为用户提供一致的体验。
22 0
|
2月前
|
敏捷开发 监控 Devops
自动化测试框架的选择与实践揭秘操作系统的心脏:内核
【7月更文挑战第31天】在软件开发的生命周期中,测试阶段占据着举足轻重的地位。随着敏捷开发的流行和DevOps文化的渗透,自动化测试成为提升软件交付速度和质量的关键工具。本文将探讨自动化测试框架的选择标准,并通过一个实际案例来展示如何有效实施自动化测试策略,旨在为读者提供一套清晰的指导思路和实操经验。
18 0
|
2月前
|
前端开发 Android开发 开发者
《移动应用开发的未来:跨平台框架与操作系统的协同进化》
在移动技术不断演进的背景下,移动应用开发正面临着前所未有的挑战与机遇。本文深入探讨了移动应用开发的现状与未来趋势,特别是跨平台框架的发展如何影响开发者和用户。通过分析Flutter、React Native等主流框架的优势与局限,结合iOS和Android操作系统的最新更新,文章揭示了跨平台技术如何在提高开发效率的同时保证用户体验。此外,本文还讨论了移动操作系统对应用性能的影响,以及开发者如何利用这些系统特性来优化应用。
|
4月前
|
开发框架 前端开发 Android开发
移动应用开发的未来:跨平台框架与原生操作系统的融合
【5月更文挑战第31天】 在本文中,我们将探讨移动应用开发领域的最新趋势,特别是跨平台开发框架和原生移动操作系统之间的融合。随着移动设备用户数量的不断增加,开发人员面临着在不同平台上提供一致体验的挑战。我们分析了跨平台工具如React Native和Flutter的兴起,以及它们如何利用原生系统特性来优化性能和用户体验。此外,文章还讨论了移动操作系统的最新进展,包括Android和iOS对开发者支持的增强。最后,我们提出了一个关于未来移动应用开发的预测,并强调了持续集成、自动化测试和云服务在现代移动开发流程中的重要性。
|
4月前
|
机器学习/深度学习 人工智能 前端开发
移动应用开发的未来:跨平台框架与操作系统的融合
【5月更文挑战第31天】 随着智能手机和平板电脑等移动设备在现代生活中的普及,移动应用已成为日常生活不可或缺的一部分。本文将探讨移动应用开发的最新趋势,特别是跨平台开发框架的兴起以及它们如何与各种移动操作系统相互作用。通过分析当前市场上流行的跨平台解决方案如React Native、Flutter和Xamarin,我们揭示了这些技术如何使开发人员能够更高效地创建兼容多个平台的应用程序。同时,文章还将讨论移动操作系统的最新发展,以及它们是如何适应并支持这些新的开发实践。最后,我们将展望移动应用开发的未来发展,包括人工智能、机器学习集成以及对用户体验的影响。