资源简介
这是csapp最后一个lab, proxylab。填补了代码实现了一个网络代理,总的来说不是很难,希望对大家有帮助
代码片段和文件信息
#include
typedef struct
{
char send_message[MAXLINE];
char back_message[MAX_object_SIZE];
unsigned int lru;
char *back_bufp;
}cache_t;
cache_t cache[CACHE_NUM];
sem_t mutex_t;
void cache_init();
int find_cache(char *);
int find_replacement();
void replace_cache(char * char * int int);
void update_lru(int);
static unsigned int req_time = 0;
void cache_init()
{
int i;
for(i = 0 ; i < CACHE_NUM ; ++i)
{
memset(cache[i].back_message ‘\0‘ sizeof(cache[i].back_message));
memset(cache[i].send_message ‘\0‘ sizeof(cache[i].send_message));
cache[i].lru = 0;
cache[i].back_bufp = NULL;
}
return;
}
/* check cache hit */
int find_cache(char * send_message)
{
int i;
for(i = 0 ; i < CACHE_NUM ; ++i)
if(strncasecmp(send_message cache[i].send_message MAXLINE) == 0)
break;
return i;
}
/* find the replace cache */
int find_replacement()
{
int t = INF ret = -1 i;
for(i = 0 ; i < CACHE_NUM ; ++i)
{
if(cache[i].lru < t)
{
t = cache[i].lru;
ret = i;
}
}
return ret;
}
/* update access time of each cache block*/
void update_lru(int index)
{
/* the time is a global variable so we have to protect it*/
P(&mutex_t);
++req_time;
cache[index].lru = req_time;
V(&mutex_t);
}
/* do replacement*/
void replace_cache(char * send_message char * back_message int bias int index)
{
int i;
for(i = 0 ; i < MAXLINE ; ++i)
cache[index].send_message[i] = send_message[i];
for(i = 0 ; i < MAX_object_SIZE ; ++i)
cache[index].back_message[i] = back_message[i];
cache[index].back_bufp = cache[index].back_message + bias;
/* the time is a global variable so we have to protect it*/
P(&mutex_t);
++req_time;
cache[index].lru = req_time;
V(&mutex_t);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1732 2013-12-29 22:41 proxyhandin\cache.c
文件 17716 2013-12-29 22:41 proxyhandin\csapp.c
文件 5581 2013-12-29 22:41 proxyhandin\csapp.h
文件 427 2013-12-29 22:41 proxyhandin\Makefile
文件 595 2013-12-29 22:41 proxyhandin\port_for_user.pl
文件 9195 2013-12-29 23:21 proxyhandin\proxy.c
文件 1001 2013-12-29 22:41 proxyhandin\README
目录 0 2013-12-29 22:50 proxyhandin
文件 633150 2015-01-14 10:25 proxylab测试报告.docx
----------- --------- ---------- ----- ----
669397 9
- 上一篇:csapp lab archlab 解答
- 下一篇:AD5933资料
相关资源
- Training Syllabus MP3标头
- TCP IP通信labview程序
- labview魔方程序
- 一个labview仿真的函数信号发生器.vi
- labview编程软件滤波器以及编写程序设
- labview语音输入输出
- labview中的DAQ助手采集多个通道电压
- Labview与CH372CH375的通信测试
- LabVIEW钢琴实例
- 编程实现二维DCT变换
- silicon lab公司的收音IC SI47XX全套开发工
- 图像二值化
- 用FFT对信号进行频谱分析
- nachos-lab 02
- Tone-Reservation
- QGA 量子遗传算法
- 差分形式的阻滞增长模型
- 遗传算法的M文件
- LabVIEW入门与实战开发100例190153
- LABVIEW做的蓝牙数据发送程序.vi
- VCS lab 和 VCS lab guide
- 基于labview的变声器
- 基于labview的方差标准差计算(求方差
- smart和labview通讯(smart_connet.vi)
- LabVIEW 数据采集 模拟量+编码器(Daq
- LabVIEW 声音信号的采集与存储.vi
- LabVIEW步进电机控制.vi
- 多通道数据采集.vi(labview)
- labview智能电梯(6层电梯.vi)
- 用labview编写的一个神经网络Vi图
评论
共有 条评论