zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155205 实验三 实时系统

    2017-2018-1 20155205 实验三 实时系统

    实验步骤

    • 任务一
    学习使用Linux命令wc(1)
    基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
    客户端传一个文本文件给服务器
    服务器返加文本文件中的单词数
    

    首先,要想作为一个合格的程序员,要先查看wc的帮助文档。

    我们可以看到wc有四个参数,对两个文档测试一下,可以看到输出了字节数、字数和行数。

    接下来编写一个自己的wc。

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    int countChar(char input[]){
        int p_input = 0;
        int count = 0;
        int word = 0;
        char ch;
    
        while(p_input < strlen(input)){
            ch = input[p_input];
            if(ch==' '){
                if(word){ //读取到空字符,而之前是非空字符,则说明读完了一个单词
                    count++;
                    word = 0;
                }
            }else{ //读取到第一个非空字符,说明是单词的开始
                word = 1;
            }
            p_input++;
        }
        return count;
    }
    
    int main()
    {
        char input[256];
        int p_input = 0;
        int count = 0;
        FILE *fp = fopen("text.txt","r");
    
        fgets(input,256,fp);
        fclose(fp);
    
        count = countChar(input);
        printf("Your words count:
    %d
    ",count);
    
        return 0;
    }
    

    再将mywc写到server中,统计字数后将结果返回给client。

    • 任务二
    使用多线程实现wc服务器并使用同步互斥机制保证计数正确
    对比单线程版本的性能,并分析原因
    

    实验结果:

    分析:只有单线程的话,服务器与客户端之间不能形成一对多的服务体制。在操作系统课中,我们学到多线程能有效地避免代码阻塞,并且提高程序的运行性能。

    实验总结

    • 多线程的优点:

      (1)多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态;

      (2)当前没有进行处理的任务时可以将处理器时间让给其它任务;

      (3)占用大量处理时间的任务可以定期将处理器时间让给其它任务;

      (4)可以随时停止任务;

      (5)可以分别设置各个任务的优先级以优化性能。

    • 多线程的缺点

      (1)等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。

      (2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过一定程度时,多线程的特点主要表现在其缺点上,比如用独立的线程来更新数组内每个元素。

      (3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。

      (4)对公有变量的同时读或写。当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序员无法预知的。

  • 相关阅读:
    Screen会话命令 Linux
    Recommender Systems中Yehuda Koren 和 Ma Hao的paper
    Matlab 程序结束后发送短信或者邮件
    Chrome浏览器在Windows 和 Linux下的键盘快捷方式
    KL距离,Kullback-Leibler Divergence
    PLSA及EM算法
    求具体矩阵的逆矩阵
    memory-based 协同过滤(CF)方法
    推荐方法总结
    SpringBoot和SpringCloud配置
  • 原文地址:https://www.cnblogs.com/haoliberale/p/7859829.html
Copyright © 2011-2022 走看看