• 2019年2月22日 深入理解计算机系统(CS:APP)第一章读书笔记


    考虑到自己对基础的掌握还是不够扎实,在重新回炉python之前,我计划用每天一章的速度回炉CS:APP。

    ----

    1. 信息就是位+上下文:

    所有数据在计算机中以位为最小单位存储,包括代码和程序、文件,上下文是对这些位数据的解读方式。

    2. 程序被其他程序编译成不同格式、3. 了解编译系统如何工作大有益处:

    GCC编译器编译的四个阶段程序为:预处理器(将源程序处理为被修改的源程序)、编译器(将修改后的源程序编译为汇编程序)、汇编器(输出汇编后的二进制程序)、链接器(链接多个二进制文件,输出可执行目标文件)

    了解不同语言的编译方式,有助于我们优化程序性能、理解出现的错误、避免安全漏洞。

    4. 处理器读并解释存储在存储器中的指令:

    image

    简单的说,计算机程序就是加载到存储器中,供处理器依次执行的程序。

    1.5 高速缓存、1.6 形成层次结构的存储设备

    由于硬盘、内存、存储器存在性能差异,通常来说,从磁盘中读数据比从主存中读数据的开销大1000万倍,而从寄存器中读数据比从主存中读数据快100倍。

    因此推出了高速缓存(SRAM: L1L2…),可以做到比从主存中读数据快5-10倍速度。

    image

    1.7 操作系统管理硬件

    操作系统的两个基本功能:防止硬件被失控的应用程序滥用;在控制复杂而又通常广泛不同的低级硬件设备方面,为应用程序提供简单一致的方法。//吐槽,从这点来看,安卓可以算是一个操作系统吗?

    1.7.1 进程、1.7.2 线程、1.7.3 虚拟存储器、1.7.4 文件

    程序在处理器运行过程中,操作系统会提供一个假象,就好像这个程序独占使用处理器、内存、IO设备,处理器看起来是连续不断的处理数据,这些现象就是通过进程的概念来实现。

    实际上,处理在处理程序的过程中,会同时处理多个程序,也就是多个进程同时并发运行,换个角度说,处理器处理多个进程是交错执行的,这种机制被称为上下文切换(context switching)。

    操作系统运行程序所需要的信息、状态、内存情况、执行位置等,统一称为上下文(context),任意一时刻,系统上都只有一个程序在运行,当操作系统决定转移到下一个程序执行时,就会发生上下文切换。

    发生上下文切换时,处理器指令会从应用程序代码切换到操作系统代码。

    通常我们认为一个进程只有单一的控制流(或者称为处理流),不过,一个进程实际上可以有多个称为线程的执行单元组成,每个线程共用进程的上下文,并共享执行代码。

    虚拟存储器同样是一个抽象概念,他提供了一个假象,好像所有进程都独占的使用主存,每个进程看到的存储器资源都是一致的:

    image

    从高到低依次为:

    内核虚拟存储器(用户态不可读)、用户栈、共享库的存储器映射区域、运行时堆、读/写数据、只读的代码和数据。

    简单来说,虚拟存储器是操作系统控制下的精密操作,包括地址翻译、页置换等,基本思路是把虚拟存储器内存保存在磁盘上,然后用主存作为磁盘的高速缓存。

    文件不过是存储的字节序列,每个I/O设备,都可以被看成是文件,所有文件的输入、输出都是用 Unix I/O的一组系统函数调用来实现。

    1.8 利用计算机网络和其它系统通讯

    从简单、单一角度看,网络是计算机系统中的一个I/O设备。

    1.9 下一章。

  • 相关阅读:
    面试题:JS中map的陷阱
    C#中正则表达式进行忽略大小写的字符串替换
    C#窗体钉在桌面、置底、嵌入桌面的办法
    创建C#串口通信程序详解
    为类和函数代码自动添加版权注释信息
    C# 如何编辑文件的摘要信息
    C# GDI在控件上绘图
    泛型Dictionary的用法详解
    Winform 导出成Excel打印代码
    C#反射深入学习
  • 原文地址:https://www.cnblogs.com/seenthewind/p/10416872.html
Copyright © 2020-2023  润新知