
os_1
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
Уфимский государственный авиационный технический университет
Факультет информатики и робототехники
Кафедра вычислительной математики и кибернетики
Отчет к лабораторной работе №1
По дисциплине «Операционные системы»
По теме «Процессы»
Выполнил: студент группы ПРО-232Б
Ихсанова Э. А.
Проверил: доцент каф. ВМиК
Веденяпин И. Э.
Уфа 2022
Задание
Вариант 6. Разработать две программы. Первая принимает от пользователя две прямоугольных матрицы, а затем выводит на экран их сумму и произведение. Вторая программа запускает первую в качестве вновь созданного процесса.
Код
MainProc:
#include<iostream> #include<Windows.h> #include <ctype.h> using namespace std; const int N=3; void MatrixMul(double A[N][N], double B[N][N], double C[N][N]) { for(int i=0; i < N; i++) for(int j=0; j < N; j++) { C[i][j]=0; for(int k=0; k < N; k++) C[i][j]+=A[i][k]*B[k][j]; } } void MatrixSum(double A[N][N], double B[N][N], double C[N][N]) { for(int j=0; j < N; j++) { for(int k=0; k < N; k++) C[j][k] =A [j][k] + B[j][k]; } } int main() { system("chcp 65001"); cout << "Запуск дочернего процесса" << endl; double a[N][N]; double b[N][N]; double mulres[N][N]; double sumres[N][N]; cout << "Введите элементы первой матрицы(9 чисел): "; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { cin >> a[i][j]; } } cout << "Введите элементы второй матрицы(9 чисел): "; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { cin >> b[i][j]; } } MatrixMul(a, b, mulres); MatrixSum(a, b, sumres); cout << "Результат умножения:" << endl; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { cout<< mulres[i][j] << " "; } cout << endl; } cout << "Результат сложения:" << endl; for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { cout<< sumres[i][j] << " "; } cout << endl; } cout << "Завершение дочернего процесса" << endl; }
Daughter:
#include<iostream> #include<Windows.h> using namespace std; int main() { setlocale(LC_ALL, "rus"); STARTUPINFO StartupInfo; ZeroMemory(&StartupInfo, sizeof(StartupInfo)); StartupInfo.cb = sizeof(StartupInfo); PROCESS_INFORMATION ProcInfo; ZeroMemory(&ProcInfo, sizeof(ProcInfo)); cout << "Запуск родительского процесса" << endl; if (!CreateProcess(NULL, AppName, NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcInfo)) return 0; WaitForSingleObject(ProcInfo.hProcess, INFINITE); cout << "Завершение родительского процесса" << endl; CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); Sleep(3000); }
Р
езультат
работы