《深入理解计算机系统》----笔记

【个人学习使用】

IEEE: 电气和电子工程师协会

早期微型机机型: PC/XT 、 AT(286)、 386、 486 , 最初Linus Torvalds的Linux系统就是用在AT(386)486上。

x86架构: 
1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生了。
x86指的是特定微处理器执行的一些计算机语言 指令集 ,定义了芯片的基本使用规则,一如今天的x64、IA64等。

一个字母占一个字节
系统中的文件信息都是由一串位组成
目标程序也称为可执行目标文件

GCC : 由GNU开发的编译器(在Linux终端中使用gcc 【option】文件名, 对指定的文件进行编译)
GNU : 操作系统,GUN架构(本来想开发出一套简单稳定的操作系统,后来由于时间问题,使用了Linux做内核,所以现在的Linux系统是 GNU/Linux架构,即,Linux内核,GNU环境)
...$ gcc wang.c -o wang

C语言中的#include 相当于python中的import,都为预处理,复制别的文件到当前文件中的作用。
#include 原本不属于C语言的语法,是为编译器而设计的,让编译器来处理复制过程。。
以‘# ’开头的在第一个环节执行

gcc编译文件完整的有四个过程 预处理器(预处理#),编译器(转换成汇编语言 .s),汇编器(转换成机器语言),连接器(转成可执行文件)

linux中的bash其实是缩写: Linux之bash介绍
bash是众多Linux shell的一种, linux默认使用bash

系统的硬件组成:
基本概念:
总线: 贯穿整个系统的一组电子管道,传送信息,传送定长的字节块-->字,字长(字中的字节数)是一个基本的系统参数,目前大多数机器的字长分为4个字节(32位)和 8个字节(64位)两种。
桥: I/O设备:输入输出  --- 系统I/O芯片(SI/O):主要管理中低速外部设备;集成了中断控制器、DMA控制器。
          桥分为南桥和北桥,北桥是主板芯片组的主导芯片(南桥主要管理中低速外部设备,北桥主要负责CPU与内存,CPU和AGP之间的通信, 点击查看详情
主存: 临时存储设备
处理器: CPU ,中央处理单元 (处理器的核心是一个字长的存储设备或寄存器,称为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令---即含有该条指令的地址)
     PC: 程序计数器
     寄存器文件
     AUL :  算术/逻辑单元
直接存储器存取技术: DMA(控制器集成在 南桥

计算机中CPU访问各 存储器快慢排序: 寄存器 > 缓存 > 内存 > 硬盘  (高速缓存的速度几乎和寄存器一样快)


缓存就是内存中的高速缓存(cache),缓存分一级缓存(L1)和二级缓存(L2),二级比一级约慢5倍【比较新的甚至有三级告诉缓存】
内存的范围很广, 分为只读(ROM)和随机存储器(RAM)和 上述所说的高速缓存存储器(cache)

高速缓存是一个相对性的概念,按存储器访问速度的排名,当前级的是下一级的高速缓存。



SRAM : 高速缓存,静态的,一位由 6个晶体管组成
DRAM:主存, 动态的, 一位由一个晶体管和一个电容组成
所以相同空间的容量还是主存大得多

操作系统: 为应用程序和硬件之间插入的一层软件
操作系统的两个基本功能:1.防止硬件被失控的程序滥用; 2.向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。
操作系统通过几个基本的抽象概念(进程、虚拟存储器和文件)来实现上述两个功能。
文件是对I/O设备的抽象表示
虚拟存储器是对主存、磁盘I/O设备的抽象表示
进程是对处理器、主存和I/O设备的抽象表示

并发运行: 一个进程和另一个进程的指令是交错执行的。
多核处理器同时能够执行多个程序。
无论是在单核还是多核系统中,一个CPU处理器都像是在并发的执行多个进程,这是通过处理器在进程间切换来实现的。
操作系统实现这种交错执行的机制称为 上下文切换
操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是 上下文。它 包含许多信息,例如PC和寄存器文件的当前值,以及主存的内容。

shell (壳), 提供使用者使用界面


线程 : 一个进程实际上可以可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
虚拟内存(虚拟存储器):是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常被分隔成多个物理内存碎片,还有部分暂时储存在外部磁盘储存器上,在需要时进行数据交换 
文件:文件就是字节序列。每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以视为文件。系统中所有的输入输出都是通过使用一小组称为Unix I/O的系统函数调用读写文件来实现的。
注:
     字节序列:
     分为网络字节序和主机字节序
     网络字节序:大端储存方式     高低低高    (大端法)
     主机字节序:小端储存方式     高高低低    (小端法)

超线程:有时称同时多线程

并发:指一个同时具有多个活动的系统。(一个人吃三个馒头,轮换着吃,直到三个都吃完)
并行:指的是用并发使一个系统运行得更快。(三个人同时吃三个馒头)
并行可以在系统多个抽象层上运用,1.线程级并行;2.指令级并行;3.单指令、多数据并行。

计算机中的一些抽象的概念(重要):
文件(I/O设备)
虚拟存储器(I/O设备和主存)
指令集结构(处理器)
进程(指令集结构和粗呢存储器)
虚拟机(进程和操作系统)

C语言的由来:
unix和c都是在贝尔实验室诞生的。

ISO C99 是C语言的官方标准第二版

gcc 和 bash是系统的两个重要组成部分。(gcc是GNU项目开发出来的工具之一)

大多数计算机使用的是8位的块,或者字节,作为最小的可寻址的存储器单位,而不是在存储器中访问单独的位。机器程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能地址的集合称为 虚拟地址空间

学习计算机操作系统的一个基础(基本)思想: 系统中的所有信息都是由一串位表示的。
区分不同数据对象的唯一方法是我们读到这些数据对象时的 上下文
那么上下文的概念就比较抽象了,暂时理解为功能代码执行时的环境。

未完待续。。。

































猜你喜欢

转载自blog.csdn.net/wys578/article/details/80700932