Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна робота №5 (1)

.docx
Скачиваний:
3
Добавлен:
31.05.2020
Размер:
144.92 Кб
Скачать

Технічний коледж

НУ "Львівська політехніка"

Лабораторна робота 5 З ОС

Студент групи 31КІ Мартинюк Р.

Викладач

Різник О. Я.

Львів 2020

Мета: Створення алгоритму організації сторінок за використанням кванту часу з використання алгоритму переривання.

Код програми:

public class Main {

public static void main(String[] args)

{

printOrganized result = new printOrganized();

result.print_result();

}

}

public class DataBase

{

public int processNum;

public int size;

public int time;

public DataBase (int p, int s, int t)

{

this.processNum = p;

this.size = s;

this.time = t;

}

}

public class getData

{

private Scanner S = new Scanner(System.in);

private getNumber gN = new getNumber();

private getSize gS = new getSize();

private getTime gT = new getTime();

private getQuant gQ = new getQuant();

public DataBase[] array = new DataBase[4]; //структура

public int quant; //квант часу

public int length = array.length-1; //кількість сторінок пам'яті

public DataBase rez1;

void

get()

{

int count;

int i = 0;

while

(i < length)

{

array[i] = new DataBase(gN.get_(i+1), gS.get_(i+1), gT.get_(i+1));

i++;

System.out.println();

}

rez1 = new DataBase(gN.get_(i+1), gS.get_(i+1), gT.get_(i+1));

System.out.println();

quant = gQ.get_quant();

}

}

public class getNumber extends getSomething

{

public int get_(int n)

{

int number;

System.out.printf("Введіть номер програми %d:", n);

number = get();

return number;

}

}

public class getQuant extends getSomething

{

public int get_quant()

{

int quant;

System.out.print("\nВведіть квант часу (мс):");

quant = get();

return quant;

}

}

public class getSize extends getSomething

{

public int get_(int n)

{

int size;

System.out.printf("Введіть розмір сторінки %d:", n);

size = get();

return size;

}

}

public class getSomething

{

public int sth;

public int get ()

{

Scanner S = new Scanner(System.in);

if (S.hasNextInt()) sth = S.nextInt();

else

{

System.out.println("Ви ввели не число");

sth = get();

}

return sth;

}

}

public class getTime extends getSomething

{

public int get_(int n)

{

int time;

System.out.printf("Введіть час виконання сторінки %d:", n);

time = get();

return time;

}

}

public class printOrganized

{

private getData d = new getData();

public void

print_result ()

{

d.get();

int generalTime = 0;

for (int i = 0; i < d.length; i++) generalTime += d.array[i].time;

generalTime += d.rez1.time;

int j = 0;

DataBase rez2;

DataBase empty = new DataBase(0,0,0);

while

(generalTime > 0)

{

if

(d.array[j].time > d.quant)

{

generalTime -= d.quant;

pr_str(d.array[j].processNum, d.array[j].size, d.quant);

d.array[j].time -= d.quant;

rez2 = d.array[j];

d.array[j] = d.rez1;

d.rez1 = rez2;

rez2 = empty;

}

else

if

(d.array[j].time == d.quant)

{

generalTime -= d.quant;

pr_str(d.array[j].processNum, d.array[j].size, d.quant);

d.array[j] = empty;

}

else

if

(d.array[j].time < d.quant && d.array[j].time != 0)

{

generalTime -= d.array[j].time;

pr_str(d.array[j].processNum, d.array[j].size, d.array[j].time);

d.array[j] = empty;

}

else

if

(d.array[j] == empty && d.rez1 != empty)

{

d.array[j] = d.rez1;

d.rez1 = empty;

}

if (j == d.length-1) j = 0;

else j++;

}

}

private void

pr_str(int n, int s, int t)

{

System.out.printf("Процес №%2d | розмір сторінки - %3d Кб | час виконання - %3d\n",n,s,t);

}

}

Результат: