摘要:
线程与进程的比较 1) 调度。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。2) 阅读全文
摘要:
"同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的. "异步模式"则完全不同,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程 阅读全文
摘要:
感想 终于看完了《深入理解计算机系统》这本巨著。从今年1月初到现在5月底,历时5个月。做了一本笔记,写了九篇文章。 由于看的是英文版,进度比较慢。但即使用了这么久的时间,仍然是非常值得的。这本书所教给我的东西是其它任何地方都难以学到的,它所讲述的是一个系统,而不是零散的体系结构、操作系统、网络编程。 阅读全文
摘要:
阅读经典——《深入理解计算机系统》09 本文,我们将使用C语言从零开始实现一个支持静态/动态网页的Web服务器。我们把这个服务器叫做Tiny。 背景知识 客户端-服务器编程模型 使用socket处理请求与响应 HTTP协议与静/动态网页 关键代码解析 实验效果与源码 背景知识 Web服务器使用HTT 阅读全文
摘要:
阅读经典——《深入理解计算机系统》08 本文将介绍存储器层次结构以及局部性对程序性能的影响。 什么是存储器层次结构? 局部性 什么是存储器层次结构 这个词大家也许并不陌生,计算机中的存储器从寄存器、缓存到内存、硬盘,形成了一个层次结构。为什么不用单一的一种存储设备,比如只用硬盘呢?因为每一种存储设备 阅读全文
摘要:
阅读经典——《深入理解计算机系统》07 本文将介绍非常实用的程序性能优化手段,并用一个案例来详细说明。 为什么要优化程序性能? 衡量性能的指标 未优化版本 提取重复操作 减少函数调用 避免内存读写 还能进一步优化吗? 循环展开 提高并行性 重结合变换 总结 为什么要优化程序性能? 对于c代码而言,从 阅读全文
摘要:
阅读经典——《深入理解计算机系统》05 本文讲述三个比较冷门的话题:联合、数据对齐和缓冲区溢出攻击。 联合体 数据对齐 栈帧为什么必须16字节对齐? 缓冲区溢出攻击 联合体 在C语言中有这么一个不常用的数据类型union,往往被人们遗忘。它就是联合体。 与结构体类似,都是用来封装多种数据类型,但含义 阅读全文
摘要:
阅读经典——《深入理解计算机系统》06 本文,我们要做一件大胆的事情,从零开始实现一个全新的指令集架构,以此深入理解处理器的工作原理。 指令集发展历史概况 Y86指令集 指令集及其编码 硬件控制语言HCL 存储器和时钟 指令的分阶段执行 SEQ的状态改变周期 SEQ的各阶段实现 流水线的一般原则 流 阅读全文
摘要:
阅读经典——《深入理解计算机系统》04 函数调用时的栈结构变化是一个很有趣的话题,本文就来详细剖析这个过程。 栈帧结构 寄存器使用惯例 这段代码的含义? 栈帧结构 在计算机系统概述中我们介绍了虚拟地址空间,其中有一部分是栈,用于函数调用和存放局部变量。本文将详细介绍这部分栈空间是如何使用的。 首先引 阅读全文
摘要:
阅读经典——《深入理解计算机系统》03 复合型类型转换的内在原理 局部变量一定进内存? 奇葩的加载有效地址指令leal if...else和三元运算符 复合型类型转换的内在原理 上一篇文章的最后,我们讲解了复合型类型转换,比如从short到unsigned相当于分两步,先从short转换到int,再 阅读全文
摘要:
阅读经典——《深入理解计算机系统》01 信息是什么 文件 Hello World程序的生命周期 开始运行Hello World 虚拟地址空间 总结 <h3 id="what_is_information">信息是什么?</h3> 信息就是位+上下文。 怎么理解呢?其实计算机系统中的所有信息都是一个一 阅读全文
摘要:
阅读经典——《深入理解计算机系统》02 基本数据类型 大小端模式 整型数范围与C标准 复合型类型转换——从short到unsigned <h3 id="what_is_information">基本数据类型</h3> 让我们复习一下C语言中基本数据类型的字节数 名称32位64位 char 1 1 s 阅读全文
摘要:
本系列来源自:https://www.jianshu.com/p/67688d8e9f37 前言 Randal E.Bryant和David R. O'Hallaron于2003年发布了这本书的第一版,直到今天,《深入理解计算机系统》已经成为计算机领域不可多得的经典教材,每一个程序员都应该读一读这本 阅读全文
摘要:
gcc是“GNU Compiler Collection”的缩写,从字面意思可以知道它是一个编译器集。gcc不止可以编译器c语言,还能用于c++,java,object-C等语言程序。但是在这里,我们的嵌入式学习中,目前只去关注gcc在C语言方面的编译功能。 .什么是交叉编译器 在嵌入式系统开发中, 阅读全文
摘要:
1.对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象。 函数使用它们实参的值 来计算返回值,成为该函数调用表达式的值。除了实参之外,每次调用还会拥有另外一个值——本次调用的上下文——这就是this关键字的传值。 如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法。当通 阅读全文
摘要:
最近很多人都在问我,到底什么才是区块链,区块指的是啥(居民区?行政区?@_@ ),怎么就把区块给链上了,链上又能做什么,一个链子怎么又搞出一堆听不懂的币出来了,这个币我怎么没见过...... 区块链都快变成问题链了。其实我很能理解大家的这种焦虑,在这么一个万众创新的时代,每天都有很多新名词产生,每段 阅读全文