báo cáo bài tập nhập môn hệ điều hành lab 8

11 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo bài tập nhập môn hệ điều hành lab 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

PH N BÀI T PẦẬBài t p 1:ậTiến trình con ghi một mảng vào SM_0, với SM [0] chứa số phần tử của mảng.Tiến trình cha lấy tổng các phần tử của mảng và ghi vào cuối SM_1... B: K t Qu Demo:ế ả

Trang 1

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP NMHĐHHK2, 2022-2023

Lab 8

Trang 3

int main(int agrc, char* argv[]){

int *shm, shmid, k; key_t key;

if ((key = ftok(".", 'a')) == -1) {

perror("key created\n"); return 1;

}

if ((shmid = shmget(key, SIZE, IPC_CREAT | 0666)) == -1) {

perror("SM created\n"); return 2;

}

shm = (int*) shmat(shmid, 0, 0);

Trang 4

switch (fork()) {

case -1:

perror("fork error\n"); return 4;

case 0:

shm[0] = atoi(argv[1]); shm[1] = atoi(argv[2]); sleep(3);

printf("%d + %d = %d\n", shm[0], shm[1], shm[2]); shmdt((void*) shm);

shmctl(shmid, IPC_RMID, (struct shmid_ds*) 0); return 0;

default: sleep(1);

shm[2] = shm[1] + shm[0]; shmdt((void*) shm); sleep(5);

return 0; }

return 0;}

B: K t Qu Demoế ả

Trang 5

B PH N BÀI T PẦẬ

Bài t p 1:ậ

Tiến trình con ghi một mảng vào SM_0, với SM [0] chứa số phần tử của mảng.Tiến trình cha lấy tổng các phần tử của mảng và ghi vào cuối SM_1 Quá trìnhnhận và xuất dữ liệu ra màn hình (lưu ý sử dụng 2 SM).

A: Code Chươ ng Trình:

// bai1.c

#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#define SIZE 256int main() {

key_t key = ftok(".", 'a');

int shmid = shmget(key, SIZE, IPC_CREAT | 0666); int *shm = (int*) shmat(shmid, 0, 0);

switch (fork()) { case -1:

perror("Lỗi fork\n"); return 1;

Trang 6

scanf("%d", &shm[i]); }

shmdt((void*) shm); return 0;

printf("Tổng các phần tử trong mảng: %d\n", sum); shmdt((void*) shm);

shmctl(shmid, IPC_RMID, NULL); return 0;

}}

Trang 7

B: K t Qu Demo:ế ả

Bài t p 2:ậ

Tiến trình con đọc dữ liệu từ một tệp gồm hai số nguyên và một phép toán +, -,*, / và chuyển tất cả cho tiến trình cha (bằng Hàng đợi Thông báo) Tiến trìnhcha tính toán kết quả và trả về cho tiến trình con Tiến trình con ghi kết quả vàotập tin.

A: Code Chươ ng Trình:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <sys/wait.h>#define SIZE 256int main() {

Trang 8

int *shm, shmid;

// Tạo đoạn shared memory

if ((shmid = shmget(IPC_PRIVATE, SIZE * sizeof(int), IPC_CREAT | 0666))== -1) {

perror("shmget"); exit(1);

}

// Gắn kết với đoạn shared memory

if ((shm = shmat(shmid, NULL, 0)) == (int *) -1) { perror("shmat");

exit(1); }

switch (fork()) { case -1:

perror("fork error"); exit(1);

case 0: // Tiến trình con

printf("Tiến trình con: Nhập hai số nguyên và một phép toán (+, -, *, /): ");

scanf("%d %d %c", &shm[0], &shm[1], (char*)&shm[2]); // Tách khỏi shared memory

shmdt(shm); break;

default: // Tiến trình cha

wait(NULL); // Đợi tiến trình con kết thúc // Gắn kết với đoạn shared memory lại

if ((shm = shmat(shmid, NULL, 0)) == (int *) -1) { perror("shmat");

exit(1);

Trang 9

} int result; switch (shm[2]) { case '+':

result = shm[0] + shm[1]; break;

case '-':

result = shm[0] - shm[1]; break;

case '*':

result = shm[0] * shm[1]; break;

case '/':

result = shm[0] / shm[1]; break;

} return 0;}

Trang 10

B: K t Qu Demo:ế ả

C K T LU NẾẬ

Sau khi học và hoàn thành phần lab 8 nhóm thu được kết sau:1 Shared Memory:

vùng nhớ chia sẻ giữa các tiến trình.

shmget tạo một đoạn shared memory hoặc kết nối đến một đoạn đã

fork được sử dụng để tạo một bản sao của tiến trình hiện tại.

Trong trường hợp cha và con, mỗi tiến trình có thể thực hiện công việc riêng biệt.

Tiến trình con có thể gửi dữ liệu cho tiến trình cha và ngược lại thông qua shared memory.

3 Xử lý Lỗi:

vấn đề xảy ra.

Trang 11

Hàm exit được sử dụng để kết thúc tiến trình nếu có lỗi.

4 Đồng Bộ Hóa:

wait được sử dụng để đảm bảo rằng cha đợi cho đến khi tiến trình

con hoàn thành công việc của mình trước khi tiếp tục thực hiện công việc của mình.

Ngày đăng: 08/05/2024, 16:24

Tài liệu cùng người dùng

Tài liệu liên quan