zoukankan      html  css  js  c++  java
  • OS总结(一):操作系统基础

    1、操作系统的启动

    (1)CPU、I/O、内存通过总线连接

    (2)DISK:存放OS

    (3)BIOS:基本I/O处理系统(basic I/O system)

    (4)Bootloader:加载OS到内存中

    (5)当电脑通电时,段寄存器CS和指令寄存器IP能够确定一个内存地址,例如:CS : IP = 0xf000 : fff0

    (6)POST(加电自检),寻找显卡和执行BIOS,确定其他外设是否正常

    (7)步骤:

    • BIOS:将Bootloader从磁盘的引导扇区(512字节)加载到0x7c00;跳转到 CS : IP = 0000 : 7c00 的内存区域(以便下一步)
    • Bootloader:将操作系统的代码和数据从硬盘加载到内存中;跳转到操作系统的起始地址

    (8)系统调用:(来源于应用程序)应用程序主动向操作系统发出服务请求

    (9)异常:(来源于不良的应用程序)非法指令或其它花的处理状态(e.g.内存出错)

    (10)中断:(来源于外设)来自不同的硬件设备的计时器和网络的中断

    (11)为什么应用程序不能直接访问硬件而是通过操作系统:

    • 计算机运行时,内核是被信任的第三方
    • 只有内核可以执行特权指令
    • 为了方便应用程序

    (12)三种状态的产生源头

    • 中断:外设(鼠标、键盘、网卡、显卡等,可以产生各种事件)
    • 异常:应用程序意想不到的行为(e.g.异常,恶意程序,应用程序需要的资源为被满足)
    • 系统调用:应用程序请求操作系统提供服务(打开文件、读写文件、发送网络包等)

    (13)三种状态的处理时间

    • 中断:异步
    • 异常:同步
    • 系统调用:同步或者异步

    (14)操作系统对三种状态的响应

    • 中断:持续,对用户应用程序是透明的
    • 异常:杀死或者重新执行意想不到的应用程序指令
    • 系统调用:等待和持续

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

    (1)中断和异常的处理机制:中断是外设的事件,异常是CPU的事件;中断和异常迫使CPU访问一些被中断和异常服务访问的功能

    (2)中断处理机制

      硬件:设置中断标记(CPU初始化)

    • 将内部/外部事件设置中断标记
    • 中断事件的ID(程序访问的中断向量地址 )

      软件(操作系统):

    • 保存当前处理状态
    • 中断服务程序处理
    • 清除中断标记
    • 恢复之前保存的处理状态

    (3)异常处理机制

      异常:异常编号

    • 保存现场
    • 异常处理:杀死产生异常的程序;重新执行异常指令
    • 恢复现场

    (4)系统调用

    • 一条指令会触发一个系统调用。
    • 程序访问主要是通过高层次的API接口而不是直接进行系统调用。
    • 通常情况下,存在与每个系统调用相关的序号,系统调用接口根据这些序号来维护表的索引。
    • 系统调用接口调用内核态中预期的系统调用,并返回系统调用的状态和其它任何返回值。
    • 用户不需要知道系统调用是如何实现的,只需要获取API和了解操作新系统将什么作为返回结果。操作系统接口的细节大部分都隐藏在API中,并通过运行程序支持的库来管理。
    • 用户态:应用程序在执行的过程中,CPU执行的特权级的状态(很低,不能访问特殊机器指令和IO)。
    • 内核态:应用程序在执行的过程中,CPU执行的特权级的状态(高,操作系统可以执行CPU任何一条指令)。
    • 系统调用时涉及到特权级从用户态到内核态的转换,应用程序和操作系统有各自的堆栈,这两个变化比函数调用的开销更大,但更安全和可靠。(而程序调用是在一个栈空间实现参数的调用和返)。

    (5)跨越操作系统边界的开销:在执行时间上超过程序调用

      开销包括:

    • 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销;
    • 建立内核堆栈(操作系统和应用程序的堆栈不一样);
    • 验证参数(操作系统会检查数据);
    • 内核态映射到用户态的地址空间,更新页面映射权限(内存拷贝开销);
    • 内核态独立地址空间TLB。
  • 相关阅读:
    第二十九课 循环链表的实现
    第二十八课 再论智能指针(下)
    第二十七课 再论智能指针(上)
    第二十六课 典型问题分析(Bugfix)
    普通new和placement new的重载
    leetcode 581. Shortest Unsorted Continuous Subarray
    leetcode 605. Can Place Flowers
    leetcode 219. Contains Duplicate II
    leetcode 283. Move Zeroes
    leetcode 217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/horacle/p/14347446.html
Copyright © 2011-2022 走看看