zoukankan      html  css  js  c++  java
  • 操作系统 part4

    1、操作系统的启动

    CPU加电后,执行BIOS(基本IO处理系统)。BIOS会进行硬件的自检和初始化,然后把加载程序(BootLoader)从磁盘上的引导扇区中加载到指定位置0x7c00。然后控制权交给加载程序,加载程序将操作系统的数据和代码加载到内存,然后把控制权交给操作系统。

    2、系统调用、异常、中断

    中断:

    • 硬件产生中断标记
    • 保存当前处理状态,保存现场
    • 根据中断,进行中断服务程序处理
    • 清除中断标记
    • 恢复之前保存的处理状态

    异常:

    • 得到异常编号
    • 异常处理(杀死异常程序、重新执行异常指令)
    • 恢复现场

    开销:

    • 切换内核态用户态时间上的开销
    • 建立中断/异常/系统调用号与对应服务例程映射关系的初始化
    • 建立内核堆栈
    • 验证应用程序的参数
    • 内核空间数据拷贝到用户空间的开销

    3、内存分配算法

    1.首次适配算法(First Fit):
    空闲区按地址从低到高排序,找到第一个不小于请求空间的内存块,分割并分配出去。
    优点:简单,快速
    缺点:易产生外部碎片

    2.最优适配算法(Best Fit):
    按照空闲块的大小进行排序,找到一个最适合的空闲块,分割并分配出去。
    优点:简单,当大部分分配是小尺寸时很有效
    缺点:外部碎片,重分配慢

    3.最差分配算法(Worst Fit):
    按空闲块大小排序,每次找到最大的空闲块,分割并分配出去。
    优点:快,分配的是中等尺寸效果很好
    缺点:外部碎片,重分配慢,先破碎大的空闲块以致大分区无法被分配

    4、连续内存分配中的碎片整理

    压缩

    实现:移动分配给程序的内存分区,以合并外部碎片。
    条件:程序可以动态重定位(使用绝对地址移动后出错);压缩的时机,选择等待的进程。
    开销:频繁地在内存进行拷贝,开销也会变大。

    交换

    实现:抢占等待的程序,回收他们的内存,把这些进程的数据等等放到外存。
    开销:在内外存交换数据,磁盘的IO读写很慢,开销很大。还要考虑交换哪些程序。

    参考文献:

    操作系统_清华大学(向勇、陈渝)

  • 相关阅读:
    Android PopupWindow显示位置和显示大小
    线性回归与梯度下降
    nginx启动过程分析
    项目管理学习笔记之三.绩效分析
    会计总论读书笔记
    电子书阅读及工具
    mybatis-mysql小优化
    List去重
    JAVA8之lambda表达式详解,及stream中的lambda使用
    linux部署mongodb及基本操作
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12782017.html
Copyright © 2011-2022 走看看