2017-11-03 10 views
-1

以下は、特定の数の整数を持つ "data.txt"ファイルを読み込み、それに基づいて構造体関数を作成し実装するためのコードです* argv []の位置1の値(0か1のいずれか)で、ラウンドロビンスケジューリングアルゴリズムのFCFSスケジューリングアルゴリズムを介してこれらの値を実行します。構造体を適切に使用しているかどうか、私が持っていても、選択されたアルゴリズムにそれらの値を渡す方法はわかりません。また、プロセスが実行されている間にプロセスを印刷することになっていますが、これはFCFSにとっては単純ですが、ラウンドロビンでは簡単ではありません。私は立ち往生し、どのように進めるか分かりません。構造体を作成してリストを作成し、アルゴリズムをスケジューリングする

#include<stdio.h> 

struct task{ 
    int burst; 
    int pid; 
    struct task *next; 
    int finish; 
}; 


int main(int argc, char *argv[]) 
{ 
    FILE *input = fopen("data.txt","r"); 
    int burst_time; 
    while(fscanf(input,"%d",&burst_time)!=EOF){ 
      struct task *tmp; 
      tmp = malloc(sizeof(struct task)); 
      tmp->burst = burst_time; 
      head = tmp; 
      tmp->next = tmp; 
      tail->next = tmp; 
      tmp->next = head; 
      tail=tmp; 

    } 
    if(argv[1] == 0) 
    { 

    } 

    if(argv[1] == 1) 
    { 

    } 
} 

答えて

0

現実的に、あなたは、ラウンドロビンを使用する予定がある場合は、あなたのプロセスを整理する別の方法を持っている必要があります。

「サービスタスク」と呼ばれるメインでは、argv [1] == ROUND_ROBINの間にアクティブになる別の機能を持つとします。

これをwhileループの中で実行します。次に、特定のセクションで一時停止したり待ったりしないという考え方に基づいて、すべてのコードを構築する必要があります。これは、通常、一連の独立したswitch文を作成し、条件が満たされた場合に状態が変更されることを意味します。

これは、コードをすばやく実行できるようにすることで、必要なラウンドロビン部分をバックグラウンドで完了できるようにします。

エンベデッドCの経験があるかどうかわかりませんが、MicrochipはMicrochip Harmonyプログラムでこのような優れた例があります。これは無料で簡単にさまざまなタスクの実行方法や状態を簡単に設定できる例です手元にあるタスクを保持していないインタフェース用に構成されています。

関連する問題