zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155339 第八周课下作业

    2017-2018-1 20155339 第八周课下作业

    测试三

    1.基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
    2.服务器响应消息格式是

    客户端IP:XXXX
    服务器实现者学号:XXXXXXXX
    当前时间: XX:XX:XX

    上方提交代码
    3.提交一个客户端至少查询三次时间的截图测试截图
    提交至少两个客户端查询时间的截图测试截图

    过程与结果

    • 首先实现两个客户端的连接,学习了课本上的代码,并且实现,如下图。

    • 实现规定要求的客户端和服务器,我用的是书上的代码,所以只需要改一下echo函数,将其中的输出有多少字节改成输出指定内容,因为需要输出时间,所以我在csapp.h中加入了time.h头文件。运行结果如下

    遇到的问题

    • 问题:在解决这道题中最主要的问题就是导入csapp.h头文件,一直出现问题。
    • 解决方法:上网搜索试了很多方法,也请教了成功了的同学,都不行。后来无奈之下自己改了一下csapp.h,问题终于解决了。

    家庭作业

    • 4.47
      参考了教材4-20的图,练习了这道题

    取指阶段 icode:ifun =M1[PC]= D:0
    valP<-PC+1//下一条指令地址  
    译码阶段:valB <- R[%ebp]//得到ebp的值,也就是新的栈指针esp的值  
    执行阶段:valE <- valB+4//栈指针的值加4  
    访存阶段:valM <-M4[valB]//读ebp中的值  
    写回阶段:R[%esp] <- valE //把更新后的指针赋值给esp  
    R[%ebp] <- valM//弹出的ebp的值  
    
    • 4.48
    取指阶段:icode:ifun = M1[PC] = C:0 
    rA:rB <- M1[PC+1]
    valC <- M4[PC+2]
    valP <- PC+6   
    译码阶段:valB <- R[rB]   
    执行阶段:valE <- valB+valC
    SetCC
    访存阶段 
    写回阶段  R[rB] <- valE 
    

    多进程与多线程

    多进程实现daytime

    实现过程

    • 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。
    • 通过多进程实现daytime,需要用到fork()函数来创建子进程,由于fork()函数会调用父进程fork()函数之后的内容,因此每个客户端可以实现同一个服务器的同一服务。
    • 代码链接

    实现结果

    • 服务器

    • 客户端一

    • 客户端二

    多进程实现daytime

    • 虽然通过进程节省了一笔内存的开销,但是比起进程还是会有些差距,进程对内存的开销更小。

    基础知识

    • 线程就是把一个进程分为很多片,每一片都可以是一个独立的流程。
    • Linux下创建一个线程可以调用pthread_create()函数来创建线程,int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg);,其中第一个参数为指向线程标识符的指针。
      第二个参数用来设置线程属性。
      第三个参数是线程运行函数的起始地址。
      最后一个参数是运行函数的参数。

    实现过程

    • 对于前面两种情况下的代码进行改进,调用了pthread_create()函数来运行多线程。

    代码链接

    实现结果

    • 服务器

    • 客户端一号

    • 客户端二号

    遇到的问题

    • 问题一:当编辑的时候,提示如下问题

    • 解决方法:编译的时候加上-lpthread,问题得打解决。

  • 相关阅读:
    debian安装后sudo不能用的问题
    分组筛选数据,某个数据字段比如说患者就诊超过一次的,身份证号会重复出现的,sql语句,备忘用的
    《精通Git》翻译系列(二)
    配置mysql允许远程连接
    raspberry pi下使用mp3blaster播放mp3音乐
    MSSQL常用语句备注1
    设计的四大原则
    在树莓派下安装mysql的相关查询记录
    查看数据库日志,收缩数据库
    芒果功效与作用
  • 原文地址:https://www.cnblogs.com/pingcpingcuo/p/7821771.html
Copyright © 2011-2022 走看看