计算机系统
zyh littleWorld
这个作者很懒,什么都没留下…
展开
-
深入理解计算机系统 2.2.2-2.2.3
2.2.2 无符号数的编码2.2.3 补码编码注意点:反码 原码大早上浪费了时间半小时时间打公式。教训原创 2022-03-09 09:35:35 · 117 阅读 · 0 评论 -
深入理解计算机系统 2.1.7-2.2.1
2.1.7 C语言中的位级运算按位布尔掩码运算!!!todo一道题2.1.8 C语言的逻辑运算结果只有0x01 和 0x00(1 和 0。true 和false)2.1.9 C语言中的移位运算 左移: 低位补零逻辑右移: 高位补0算术右移:高位补有效位2.2 整数表示2.2.1 整型整数类型范围: 无符号比有符号多一位2.2.2 无符号数的编码...原创 2022-02-28 10:54:06 · 334 阅读 · 0 评论 -
深入理解计算机系统 2.1.3-2.1.6
2.1.3 寻址和字节顺序上一节讲到字数据大小,也就是一个指针本身的大小。它用来寻址。面对跨域多字节的对象咋办?一个字节一个字节挨着存呗,地址存最小的那个(首地址)。(这也明白了前面说的,字节是最小的寻址单元)。谁在前谁在后?比如0x12 34 56,现存12 还是 56?这就是小端法和大端法。为啥要关注字节顺序?一个原因是,当使用强制类型转化的时候,大、小端法会导致结果不同。比如还是这个int型数据 0x12 34 56,它要占4个字节00 12 34 56 ,如果强制转化成char类型访问,大端法会原创 2022-02-26 23:01:23 · 272 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0222
2.1.2 字数据大小经常说64位、32位计算机,指的是什么?有什么区别?指的是:访问计算机的虚拟地址,需要用到指针,指针的长度就叫做字长(word size),w,它限制了能访问地址的范围 0~2的w次方-1。所以64位一共有2的64次方-1个地址区别:比如存储数据时,对于long类型数据,32位会分配8字节(32位)给他,64位的计算机会分配8字节(64个字节)来存储这个数据。上面说到指针可以存储数据的地址,前一个笔记说到字节是最小的寻址单元,(也就是说一个字节要占一个地址),那么对于跨字节(原创 2022-02-22 21:06:37 · 70 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0220
今天开始第二章(好像是第三遍开始看了。。。)大多数计算机使用8bit(1字节)作为最小的、可寻址的内存单位今天翻了两三个小时,终于在男朋友的提示下,把十进制、二、十六进制的转化明白了些我脑海里的核心问题,为啥给n进制的数x 乘以 n 就是在后面补个0?比如 10 * 10 = 100; 二进制 110 * 2 = 1100;用乘法分配律,比如110 * 2 等价于1002 + 10 * 2 + 02 == 1000 + 100 + 0 = 1110,就是每一位都向前进了一位,看起来就像是结尾补了个0原创 2022-02-20 22:36:38 · 108 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0202
前面学到 hello 执行需要借助键盘、磁盘、cpu、显示器等硬件设备,比如hello程序向显示器输出东西、shell从键盘读取输入,实际上,这些程序并没有直接访问硬件,而是借助操作系统(内心os:终于进入操作系统的内容了)。操作系统通过几个抽象概念,方便用户控制各种复杂的硬件进程一个处理器能同时执行1个进程的代码,通过上下文切换来支持多个并发进程线程:一个线程中至少包含一个线程(这个不太理解,后面12章应该会细讲)虚拟内存是对主存和IO设备的抽象,每个线程仿佛独自占用一个主存,这是因为他提原创 2022-02-02 16:50:46 · 255 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0127
补充一下几天前的笔记前几天学习到,执行hello程序时,hello程序被从磁盘复制到cpu再复制到显示器,:花了大量时间搬运数据,这对于执行程序是额外的开销,应该减少这个时间。怎么减少?提高搬运速度。提高哪里的搬运速度?提高搬运慢的地方的速度。哪里搬运慢?从磁盘到cpu慢为啥慢? 因为越大的存储介质,从里面找东西就越慢?运行的就慢?咋办?加个中间区域,把大块头中常用的东西先找出来存上,存成小块头没看懂的地方:高速缓存的局部性原理,也就是,访问局部的数据更快...原创 2022-01-30 19:57:01 · 355 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0126
今天把昨天没看完的翻译过程看了下,也就是把人类的语言(C程序)翻译成机器的语言(二进制,可执行目标程序)。翻译完了,机器就能读&执行了运行程序(读取、翻译)都包含哪些步骤?shell将用户输入 ./hello读取到寄存器再放内存中用户按enter 结束输入加载hello文件:从磁盘中复制hello文件到主存中cpu 执行把hello word字符串从主存复制到寄存器文件-复制到显示设备-到屏幕...原创 2022-01-26 09:49:24 · 187 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记0124
数月后的一个早上,我重拾《计算机操作系统》,继续啃这个难懂的大部头,一是去年已经学了两章不想半途而废,而是昨天看了许多自动驾驶的知识,感到需要扩充技术眼界,而不是局限在工作的业务中,一直在低端领域徘徊。希望这会是个好的开始,今年花3-5个月的时间看完这本书,每天在博客上记录所学。2022-1-24序言“模仿硬件仅用位操作完成复杂的运算”,感觉很厉害!“模仿tracker 和 hacker 去破解密码以及攻击自身的程序”,这才是真正的程序员!“实现简单但功能强大的Shell 和 Proxy”,哇原创 2022-01-24 09:24:56 · 1046 阅读 · 0 评论 -
深入理解计算机系统-系列学习笔记 0125
今早赖床了,只是抓紧看了10分钟的书。我决定以后用费曼学习法,把学习到的东西写出来,提高学习效率,防止努力半天一无所获。问题1. hello.c 从创建到执行发生了什么?起点(昨天看的): hello.c 是个ASCII码编码的文本文件,本质上存储的是一堆010101。怎么转换的?一个字符由一个字节编码,一个字节有八个bit(最大255)。编译,*.c是给人看的,怎么转成机器能看懂的?1) 预编译:加载头文件 (#include <stdio.h>)2)转成汇编语言 (比如main 函原创 2022-01-25 11:16:19 · 500 阅读 · 0 评论