zoukankan      html  css  js  c++  java
  • 深入理解计算机系统

    程序运行的基础
    程序语言到机器指令的过程

    • 1.hello.c 源程序一个文本文件,经过预处理(pre-processer)成为hello.i
    • 2.hello.i  修改的源程序,经过编译处理(compiler) 成为hello.s
    • 3.hello.s 汇编程序,经过汇编器(assembler)成为hello.o
    • 4.hello.o  一个二进制文件+printf.o 经过链接器linker成为可执行文件(executable) hello

    操作系统

    • 文件是对I/O设备的抽象
    • 虚拟内存是对I/O设备和主存的抽象
      提供了一个每个进程都独自使用主存的假象.
    • 进程是对处理器,主存,I/O设备的抽象
      处理器在进程间切换实现交错执行的机制称为上下文切换

    多线程和多进程

    • 进程:
      是并发执行的程序在执行过程中分配和管理资源的基本单位.一个程序可能包含多个进程.
    • 线程:
      是进程的一个执行单元,是进程内可调度实体.比进程更小的独立运行的基本单位
    • 线程可以共享资源,进程则是独立的地址空间.
      一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
    • 进程切换时,消耗的资源大,效率高。
      所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程

    机器表示和计算信息

    • 数据的大小(data size)
      这些都是对于64-bit机器而言,64位机器

    C declaration bytes
    short | 2
    int | 4
    long | 8
    char * | 8
    float | 4
    double | 8
    程序的机器级表示

    • the program counter called %rip
      存储下一个要执行命令的地址在内存中
    • integer register file:
      adresses or integer data
    • condition code registers :
      条件代码寄存器,if and while statements
    • vector register :
      one or more integer or floating-point values.
    • object dump:
      对象转储. use objdump 可以进行disassemblers.
    • 寻址的基本操作:
      immediate : 立即数寻址,register 寄存器寻址, absolute :绝对寻址,indirect :间接寻址
      base+diaplacement:基址加偏移量, indexed:变址寻址,scaled indexed:比例变址寻址

      信息的读取:
      注意区分内存地址和寄存器地址,以及他们的表达式及数据之间的移动
      算术运算和逻辑运算
      控制语句:
      各种控制语句要尽可能的了解
      控制语句不要去使用goto语句,这会使程序变得非常复杂.

    数组的分配和访问

    • 数组的定义
      数组的名称,数组元素大小,数组大小,起始地址,元素位置检索
      char a[12]
      int c[6]
      char *d[8]

      array element size total size start address element i
      a 1 12 (x_{a}) (x_{a}+i)
      c 4 24 (x_{c}) (x_{c}+4i)
      d 8 64 (x_{d}) (x_{d}+8i)

    • 多维数组(二维数组)
      (T D[R][C])
      数组元素查找

    [& D[i][j]=x_{D}+L(C*i+j)  ]

    系统层面的输入输出

    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    Android 新建项目报错(CANNOT RESOLVE SYMBOL R)
    GIT相关
    Java 语言基础
    StarUML
    public static void main(String[] args)的理解
    软件安装以及环境搭配
    基础
    字符串的格式化
    python里的正则表达式
    集合
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/9251016.html
Copyright © 2011-2022 走看看