IO--磁盘理论
磁盘从圆心由内向外被分成多个磁道,而每个磁道会被划分成多个连续的扇区
扇区是磁盘寻址的最小单位,而实际上分配空间最小的单位是簇(cluster),因此导致文件大小和实际占用空间大小不一样
磁盘读写数据开销:
1.寻道时间,磁盘臂移动到特定磁道的开销=启动磁盘臂开销+所需移动磁道数*特定常量
2.扭转延迟:将目标扇区移动到磁头的时间,与磁盘转数成反比
3.数据传输:从磁盘读取/写入数据的开销=读写文件大小/(每秒转数*每扇区字节数)
磁盘调度算法:
1.先来先服务算法:first come first service
对Disk IO进行队列化,一次服务,公平简单,但不能降低寻道时间
2.最短寻道时间
优先反复服务离当前最近的请求,减少寻道时间,但会导致离当前磁道较远的请求永远得不到响应
3.扫描算法
在最短寻道时间的基础上优化,寻找从当前位置到目标位置中间最近一个服务对象,这样保证离当前磁道最远的目标也能得到响应,但是响应需要等到较长时间
4.轮回扫描算法:
类似电梯工作机制,在最外层磁道和最里层磁道间来回移动,寻找最近的服务对象,降低两端磁道请求的响应延长度,相对公平并且能有效减少总体寻道时间。
局部性原理
空间局部性:当前数据周围的数据有较高可能被读取
时间局部性:当前数据有可能在后续时间呗再次读取
空间局部性:预读(Read-ahead)
时间局部性:延迟写(Delay write)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现