随笔分类 - 计算机操作系统
摘要:首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。 静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被
阅读全文
摘要:SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 API API API(Application Programming Interface,应用编程接口)其实就是操作系统留
阅读全文
摘要:1. 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。2. 内存包含的范围非常广,一般分为只读存储器(R
阅读全文
摘要:存储器在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右。内存和寄存器就是为了解决存储器读写速度慢而产生的多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存的主要存储介质,但从20世纪70年代开
阅读全文
摘要:线程与进程的比较 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年发布了这本书的第一版,直到今天,《深入理解计算机系统》已经成为计算机领域不可多得的经典教材,每一个程序员都应该读一读这本
阅读全文
摘要:1.对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象。 函数使用它们实参的值 来计算返回值,成为该函数调用表达式的值。除了实参之外,每次调用还会拥有另外一个值——本次调用的上下文——这就是this关键字的传值。 如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法。当通
阅读全文
浙公网安备 33010602011771号