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读写很慢,开销很大。还要考虑交换哪些程序。

    参考文献:

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

  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12782017.html
Copyright © 2011-2022 走看看