#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#include "proc.h"
#include "rq.h" using namespace std; // tạo ra một vector của Queues trống load_queue (vector
xếp hàng, num_of_queues int unsigned)
{for (int pos = 0; pos
{Queue.push_back (RQ ());}} // trả về vị trí hàng đợi lớn nhất trong vector unsigned int get_biggest_queue_pos (vector
hàng đợi)
{unsigned int queue_pos = 0;
// Pos của hàng đợi nhỏ hơn. Mặc định 0.
unsigned int queue_size = queues.at (queue_pos) .size (); // Kích thước của nó
cho (unsigned int pos = 0; pos <queues.size (); pos ++)
{if (queues.at (pos) .size ()> queue_size) {queue_pos = pos; queue_size = queues.at (pos ) .size ();}} queue_pos trở lại; // Return vị trí hàng đợi nhỏ trong vector.} // Trả về vị trí hàng đợi nhỏ hơn trong các vector. Get_smaller_queue_pos int unsigned (vector
hàng đợi)
{unsigned int queue_pos = 0;
// Pos của hàng đợi nhỏ hơn. Mặc định 0.
unsigned int queue_size = queues.at (queue_pos) .size (); // Kích thước của nó
cho (unsigned int pos = 0; pos <queues.size (); pos ++)
{if (queues.at (pos) .size () <queue_size) {queue_pos = pos; queue_size = queues.at (pos ) .size ();}} queue_pos trở lại; // Return vị trí hàng đợi nhỏ trong vector.} // Tìm kiếm cho một PID trong toàn bộ hệ thống và xóa nó. Bool get_pid_process (vector
xếp hàng, int id) {vector
; tạm
quá trình proc (0,0,0);
int séc;
int number = id;
int size = queue.size (); / * kiểm tra phần còn lại của hàng đợi, bao gồm hàng đợi sẵn sàng và hàng đợi thiết bị * / for (int i = 0 ; tôi
{Temp = queue [i] .get_queue (); int size1 = temp.size (); for (int j = 0; j
{Quá trình = temp.at (j); kiểm tra = process.get_pid (); if (check == số) {cout << "Process tìm thấy trong hàng đợi và bị xoá hoàn toàn ..." <
xếp hàng [i] .remove_process (j);
nổi cputime = process.get_burst ();
float burstime = process.get_average ();
cout << "Xử lý thông tin:" < cout << "PID:" < cout << "Quy trình giết" <return true;}}} / * Kiểm tra tất cả các CPU trong hàng đợi sẵn sàng * / for (int k = 0; k
{
temp=queue[k].get_cpu();
process=temp.front();
check=process.get_pid();
if(check==number)
{
cout<<"Process được tìm thấy trong một CPU và bị xoá hoàn toàn ... "<nổi cputime = process.get_burst ();
float burstime = process.get_average ();
queue [k] .clear_cpu ();
cout << "Xử lý thông tin:" < cout << "PID:" < cout << "Quy trình giết" <return true; // kết thúc nếu PID được tìm thấy trong CPU và trả về true}} return false;} int main () {cout << "Sys gen bắt đầu ..." <
cout << "Hãy nhập số lượng CPU (từ 1 đến 9)" <int cpu;
cin >> cpu;
while (cpu <1 || cpu> 9)
{cout << "giá trị không hợp lệ, vui lòng nhập lại số tiền:" <
cin >>
cpu;} cout << "Nhập số tiền của máy in:" <
int pr;
cin >> pr;
cout << "Nhập số lượng đĩa:" <int di;
cin >> di;
cout << "Nhập số tiền của CD / RW:" <int cd;
cin >> cd;
int thiết bị = (cpu * 2) + pr + di + cd; // số lượng thiết bị (hàng đợi và CPU)
int PID = 0;
int PCB = 0;
vectorRQ; // vector của hàng đợi sẵn sàng
vectorPQ; // vector của hàng đợi máy in
vectorDQ; // vector của hàng đợi đĩa
vectorCQ; // vector của CD / RW hàng đợi load_queue (RQ, cpu); load_queue (PQ, pr); // hàng đợi máy in tải đến PQ vector load_queue (DQ, di); // ... Load_queue (CQ, cd); // ... Cout << "Chạy phần ..." <
cout << "Bắt đầu nhập vào các lệnh; Để chấm dứt chương trình báo chí E hoặc e bất cứ lúc nào:" <while (true)
{thiết bị string; // cho tên của thiết bị chuỗi nhập; // cho đầu vào cin >> nhập; int tương ứng = 0; int nhỏ; char num11 = nhập [0]; // 1 nhân vật vị trí char đầu vào = nhập [1]; // 2 vị trí char char num = nhập [2]; // 3 vị trí char int num1 = num11 -'0 '; // 1 vị trí số nguyên int n = num -'0'; // vị trí thứ 3 int int inp = input - '0'; // vị trí thứ 2 int int trống; / * tạo ra một quy trình mới và đặt nó vào Ready Queue vắng * / if (num11 == 'A') {nhỏ = get_smaller_queue_pos (RQ); // xác định hàng đợi sẵn sàng có các quy trình ít RQ [nhỏ] .create_process (nhỏ hơn, PID, PCB); PID ++; PCB ++; if (. RQ [nhỏ] .get_cpu () size () == 0) {RQ [nhỏ] .cpu ();}} / * kết thúc một quá trình từ một CPU cụ thể * / else if (input == 't') {if (num1> 0 && num1 <= cpu) {RQ [num1-1] .terminate ( ); PCB--; RQ [num1-1] .cpu ();} khác {cout << "entry không hợp lệ" <
}} / * In ra một bản chụp của một thiết bị Q cụ thể hoặc các hàng đợi sẵn sàng * / else if (num11 == 'S') {cout << "Chọn một hàng đợi:" <
char SELE;
cin >> SELE;
switch (SELE)
{case 'p': if (pr == 0) {cout << "Không có hàng đợi máy in tạo ra." <
}
Khác
{device = "Máy in"; cout << "Một ảnh chụp của bạn" <
for (int i = 0; i <PQ.size (); i ++)
{cout <
PQ.at (i) .snapshot (thiết bị);}} break; case 'r': cout <
for (int i = 0; i <RQ.size (); i ++)
{cout << "hàng đợi Ready" <
RQ [i] .snapshot
();}
break;
case 'd':
if (di == 0)
{cout << ". Không có hàng đợi đĩa tạo" <
}
Khác
{device = "Disk"; cout << "Một ảnh chụp của bạn" <
for (int i = 0; i <PQ.size (); i ++)
{cout <
DQ.at (i) .snapshot (thiết bị);}} break; case 'c': if (cd == 0) {cout << ". Không có cd / hàng đợi rw tạo" <
}
Khác
{device = "Cd / rw"; cout << "Một ảnh chụp của bạn" <
for (int i = 0; i <PQ.size (); i ++)
{cout <
CQ.at (i) .snapshot (thiết bị);
đang được dịch, vui lòng đợi..
