1. 程式人生 > >2017-2018-1 20155218 實驗三 實時系統

2017-2018-1 20155218 實驗三 實時系統

創建 互斥 mage 分享圖片 mar 單詞 應用 文件中 實時

2017-2018-1 20155205 實驗三 實時系統

實驗一:

要求:
(1)學習使用Linux命令wc(1)
(2)基於Linux (3)Socket程序設計實現wc(1)服務器(端口號 是你學號的後6位)和客戶端
(4)客戶端傳一個文本文件給服務器
(5)服務器返加文本文件中的單詞數
過程:
  1. 使用man來查看wc(1)
    技術分享圖片
    技術分享圖片
    按照要求,我們需要實現-w的功能;
  2. 按照要求實現wc(1)的功能:
int mywc(FILE *fp)
{
    char buffer[LEN];
    int i=0,count=0;
    while(fgets(buffer,LEN,fp)!=NULL)
    {
        while(buffer[i]!=‘\0‘)
        {
            if(buffer[i]==‘ ‘ || buffer[i]==‘,‘ || buffer[i]==‘.‘ || buffer[i]==‘!‘ ||buffer[i]==‘?‘)
                 ++count;
            i++;
        }
        i=0;
    }
    return count;
}

結果截圖:
技術分享圖片
技術分享圖片

實驗二:

要求:

使用多線程實現wc服務器並使用同步互斥機制保

證計數正確
對比單線程版本的性能,並分析原因
結果截圖:

技術分享圖片

原因分析

多線程是指程序中包含多個執行流,即在一個程序中可以同時運行多個不同的線程來執行不同的任務,也就是說允許單個程序創建多個並行執行的線程來完成各自的任務。運用多線程可是實現一個server端對多個client端,提高樂性能。

多線程的好處:

可以提高CPU的利用率。在多線程程序中,一個線程必須等待的時候,CPU可以運行其它的線程而不是等待,
這樣就大大提高了程序的效率。

多線程的不利方面:

線程也是程序,所以線程需要占用內存,線程越多占用內存也越多;
多線程需要協調和管理,所以需要CPU時間跟蹤線程;
線程之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;
線程太多會導致控制太復雜,最終可能造成很多Bug;

多線程處理的優點

同步應用程序的開發比較容易,但由於需要在上一個任務完成後才能開始新的任務,所以其效率通常比多線程應用程序低。如果完成同步任務所用的時間比預計時間長,應用程序可能會不響應。多線程處理可以同時運行多個過程。例如,文字處理器應用程序在您處理文檔的同時,可以檢查拼寫(作為單獨的任務)。由於多線程應用程序將程序劃分成獨立的任務,因此可以在以下方面顯著提高性能:
多線程技術使程序的響應速度更快,因為用戶界面可以在進行其他工作的同時一直處於活動狀態。
當前沒有進行處理的任務可以將處理器時間讓給其他任務。
占用大量處理時間的任務可以定期將處理器時間讓給其他任務。
可以隨時停止任務。
可以分別設置各個任務的優先級以優化性能。

是否需要創建多線程應用程序取決於多個因素。在以下情況下,最適合采用多線程處理:
耗時或大量占用處理器的任務阻塞用戶界面操作。
各個任務必須等待外部資源(如遠程文件或 INTERNET 連接)。
碼雲鏈接

2017-2018-1 20155218 實驗三 實時系統