C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のオペレーティングシステムでの固定(または静的)パーティション分割


このチュートリアルでは、オペレーティングシステムの固定パーティションについて学習します。

固定パーティション オペレーティングシステムのメモリを管理するためのものです。これは古い手法です。メモリを等しいブロックに分割します。各ブロックのサイズは事前定義されており、変更できません。

メモリは連続したプロセスに使用されます。

プロセスサイズに基づいてメモリを割り当てるサンプルプログラムを見てみましょう。

#include<iostream>
using namespace std;
int main() {
   int blockNumber = 5, processesNumber = 3;
   int blockSize[5] = {4, 4, 4, 4, 4}, processSize[3] = {1, 2, 3};
   int flags[5], allocation[5];
   for(int i = 0; i < 5; i++) {
      flags[i] = 0;
      allocation[i] = -1;
   }
   // allocating the blocks to processes
   for(int i = 0; i < processesNumber; i++) {
      for(int j = 0; j < blockNumber; j++) {
         if(flags[j] == 0 && blockSize[j] >= processSize[i]) {
            allocation[j] = i;
            flags[j] = 1;
            break;
         }
      }
   }
   for (int i = 0; i < blockNumber; i++) {
      if (flags[i] == 1) {
         cout << "Process " << processSize[allocation[i]] << " is allocated" << endl;
      }
   }
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます。

Process 1 is allocated
Process 2 is allocated
Process 3 is allocated

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++でのラインリフレクション

    2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <

  2. C++の対角トラバースII

    numsというリストのリストがあるとすると、numsのすべての要素を対角線順に表示する必要があります。 したがって、入力が次のような場合 その場合、出力は[1,6,2,8,7,3,9,4,12,10,5,13,​​11,14,15,16]になります。 これを解決するには、次の手順に従います- 配列retを定義する 1つの2Dアレイvを定義する 初期化i:=0の場合、i