Tan's Blog.

Tan's Blog.

Tough life needs no explanation

CSAPP 套接字接口(续)
套接字接口accept函数TCP服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址了。TCP客户端依次调用socket()、connect()之后就向TCP服务器发送了一个连接请求。TCP服务器监听到这个请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。 #include<sys/socket.h> int accept(int listenfd,struct sockaddr *addr,int *addrlen);//返回:成功为非负连接...
CSAPP 网络编程
CS编程模型每个网络应用都是基于客户端-服务器模型的。客户端-服务器模型中的基本操作是事务。一个客户端-服务器事务由以下四步组成:1.当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。2.服务器收到请求后,解释它,并以适当的方式操作它的资源。3.服务器给客户端发送一个响应,并等待下一个请求。4.客户端收到响应并处理它 网络客户端和服务器通常运行在不同的主机上,并通过计算机网络的硬件和软件资源来通信。对主机而言,网络是一种I/O设备,是数据源和数据接收方从物理上而言,网络是一个按照地理远近组成的层次系统。最低层是LAN(局域网),最流行的局域网技术是以太网。 套接字接口套接字接...
搭建一个网站
前期准备一台云虚拟主机、域名、网站模版 搭建步骤购买主机购买一台网络云虚拟主机,可以考虑阿里云、腾讯云、百度云等,我选择购买了阿里云虚拟主机,接下来就以阿里云虚拟主机为例。打开阿里云官网,点产品->企业应用->云虚拟主机,我选择的这一款是基础款,三年597,适合个人入门建站。选择购买后,要选择机房,不同的机房没什么太大区别,主要选离自己近的。还有一个要选择好操作系统,这个根据自己的需求,后期也可以进行更换。网站开发语言为 PHP、HTML、WAP,数据库为MySQL、SQLite请选择Linux操作系统;网站开发语言为 ASP、.NET、HTML,数据库为 ACCESS、SQ...
CSAPP动态内存分配和回收
动态内存分配动态内存分配器维护着一个进程的虚拟内存区域,称为堆。对于每个进程,内核维护着一个变量brk,它指向堆的顶部。分配器分为两种类型:显式分配器: 应用显式地释放任何已分配的块。隐式分配器: 分配器检测一个已分配块何时不再被程序使用,那就释放这个块。隐式分配器也叫垃圾收集器,自动释放未使用的已分配块的过程称为垃圾收集. malloc和free#include <stdlib.h> void *malloc(size_t size); void free(void *ptr); malloc: 分配至少size字节的存储器块,这个块会为可能包含在这个块内的任何数据对象类型...
CSAPP虚存的使用和管理
物理寻址和虚拟寻址使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译。地址翻译需要CPU硬件和操作系统之间的紧密合作。CPU芯片上叫做存储器管理单元的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容是由操作系统管理的。 地址空间一个地址空间的大小是由表示最大地址所需要的位数来描述的。一个包含N=2^n个地址的虚拟地址空间就叫做一个n位地址空间。现代操作系统典型的支持32位或者64为虚拟地址空间。一个系统还有一个物理地址空间,它与系统中物理存储器的M个字节相对应。 虚拟内...
CSAPP Y86-64的流水线实现
流水线的概述简单来说流水线这个概念出现在我们日常生活中,比如餐厅的服务线和自动汽车清洗线都是应用于这个原理。流水线化的一个重要特性就是提高了系统的吞吐量,不过它也会轻微地增加延迟。 流水线的局限性1、不一致的划分之前的是一个理想的流水线化的系统,每个阶段需要的时间都相同。而实际系统通过各阶段的延迟一般是不同的。且运行时钟的速率是由最慢阶段的延迟限制的。2、流水线过深,收益反而下降例如,我们把计算分成6个阶段,每个阶段需要50ps。在每对阶段之间插入流水线寄存器就得到了一个六阶段流水线。这个系统的最小时钟周期为50+20=70ps,吞吐量为14.29GIPS。性能比3阶段流水提高了14.2...
CSAPP Y86-64顺序的实现
Y86-64的顺序实现跟踪irmovq指令的执行一条指令的执行过程通常可以分为取指->译码->执行->访存->写回->更新PC,下面以irmovq指令为例,详细的解释这条指令的执行过程。 阶段 通用 具体 irmovq V,rB irmovq $128,%rsp 取指 icode:ifun<-M1[PC]rA:rB<-M1[PC+1]valC<-M8[PC+2]valP<-PC+10 M1[0x016]=3:0M1[0x015]=f:4valC<-M1[0x018]=128valP<-0x020 译...
CSAPP逻辑设计
逻辑设计与HCL这部分内容应该是之前上过的一门课-数字电路设计与分析的精简版了吧,主要是讲各种逻辑电路的设计。 逻辑门基本的逻辑门类型有:AND、OR、NOT逻辑门是活动的,输入变化输出就会变化。 表达式1.单个位eq = (a && b) || (!a && !b) 这个表达式的结果分析,只有a 和 b 都为 0 或者都为 1 的时候,输出才为1。(a && s) || (b && !s) 我们分析如果s为1,则结果为a,否则结果为b。2.多个位eq=(A==B) 这里A和B都是int型的,表达式是在判断64位字A和B中的...
CSAPP浮点数操作
浮点代码处理器的浮点体系结构包括多个方面,会影响对浮点数据操作的程序如何被映射到机器上,包括:1) 如何存储和访问浮点数据。通常是通过某种寄存器方式来完成。2) 对浮点数据操作的指令。3) 想函数传递浮点数参数和从函数返回浮点数结构的规则。4) 函数调用过程保持寄存器的规则——例如,一些寄存器被指定为调用者保存,而其他的被指定为被调用者保存。AVX浮点体系结构允许数据存储在16个YMM寄存器中,它们的名字为%ymm0~%ymm15。每个YMM寄存器都是256位(32位)。 浮点传送和转换操作浮点传送和转换操作指令汇总 指令 源1 源2 目的 描述 vmovss M32 NU...
CSAPP数据结构
计算机系统学习数组分配和访问数组的基本原则数组是某种基本数据类型数据的集合,对于数据类型 T 和整型常数 N,数组的声明如下: T A[N] 上面的 A 称为数组名称。它有两个效果:1.它在存储器中分配一个 L*N 字节的连续区域,这里 L 是数据类型 T 的大小(单位为字节)2.A作为指向数组开头的指针,如果分配的连续区域的起始地址为xa,那么这个指针的值就是xa 指针运算C语言允许对指针进行运算,而计算出来的值会根据该指针引用的数据类型的大小进行伸缩。也就是说,如果 P 是一个执行类型 T 的数据的指针,P 的值为 xp,那么表达式P+i 的值为 xp+L*i,这里 L 是数据类型...
avatar
Yolanda
witness me