zoukankan      html  css  js  c++  java
  • 操作系统学习基础

    clip_image001 操作系统程序的运行提供环境

    clip_image001[1] 操作系统是直接运行在硬件上的特殊软件

    clip_image001[2] CPU的中断是操作系统的生命所在!

    clip_image002 学习操作系统需要注意的地方

    clip_image001[3] 了解C内存模型/UNIX/地址

    clip_image003

    CPU Clock Rates

    由于速度差异,CPU和外设通过中断并行工作

    多道程序出现,并发执行

    多用户同时使用一个机器,互不干涉

    clip_image002[1] 重点:C语言内存结构

    该C语言内存模型在物理上存在,实际并上不存在,栈只有在运行的时候才存在,堆也是(在可执行文件中没有)

    环境变量可看作栈的一部分,是main的参数。

    clip_image004 参数调用过程中的跳转,考虑为什么这样实现!

    参数和局部变量在变量的角度看是一样的

    clip_image001[4] 从硬盘拿到可执行文件放到内存

    clip_image001[5] windows下可执行文件的扩展名:.exe , .sys , .com ,.bat等

    clip_image001[6] 一般操作系统会读可执行文件的128个字符

    CPU得知道寄存器运行的途径,并进行控制。

    每个地址是有多个寄存器的

    中断用于解决CPU与外设的操作关系

    中断:外设为了让CPU了解自己的信息给出的刺激

    CPU只有一个管脚,中断控制器连CPU,外设连中断控制器,中断是在当前指令完成后发生的,查中断向量表,找地址,中断处理程序。win2000之前的都不算现代操作系统

    很小的操作系统:μCos 、Cos——C:Card

    单道批处理系统与多道批处理系统

    Real-Time System 实时系统——可预期

    硬实时:必须在规定时间内完成

    软实时:尽力而为,如互联网

    clip_image001[7] 实时系统与交互系统是矛盾的,桌面系统是结合了软实时的交互系统

    操作系统从User mode进入Kernel mode需要由swi(software interrupt 软中断)指令触发exception。

    所有User模式下软件的系统调用(System Call)都是通过swi指令进入Kernel模式的。Glibc中包含了一系列的System Call,如常用的open、read、write、ioctl,每个System call对应一个System call number。每个System call在kernel中都有相应函数来完成。在_vector_start开始的向量表中SWI exception handle将从vector_swi开始执行。实际vector_swi代码在entry_common.s中。Vector_swi主要做的事情就是根据user mode执行swi时存在寄存器中的system call number找到kernel中对应的handler routine,并跳转到该routine执行。

    CPSR (current program status register)程序状态寄存器,包含条件码标志、中断禁止位、当前处理器模式以及其他状态信息。

    从异常exception返回时要修改CPSR,从而恢复到Exception发生时的CPU mode继续执行。

    clip_image005

  • 相关阅读:
    flex
    当前不会命中断点 源代码与原始版本不一致
    c setjmp longjmp
    VS 快捷键设置
    Lua C API 遍历 table
    lua class
    复习 C++ 中类的函数指针
    apache ab
    rabbitmq
    协程 coroutine
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5940297.html
Copyright © 2011-2022 走看看