1. Trang chủ
  2. » Giáo án - Bài giảng

UIT CE LAB HDH lab5 hệ điều hành

11 2.3K 4

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH TÀI LIỆU: HƯỚNG DẪN THỰC HÀNH HỆ ĐIỀU HÀNH Nhóm biên soạn: ThS. Phan Đình Duy ThS. Phạm Văn Phước ThS. Nguyễn Việt Quốc KS. Nguyễn Hữu Nhân KS. Lê Văn La KS. Trần Văn Quang Cập nhật tháng 9 năm 2017 NỘI DUNG CÁC BÀI THỰC HÀNH Phần 1: Lập trình trên Linux Bài 1: Hướng dẫn cài đặt Ubuntu và các lệnh cơ bản của shell Bài 2: Lập trình trong môi trường shell Phần 2: Thực hành hệ điều hành Bài 3: Quản lý tiến trình Bài 4: Định thời CPU Bài 5: Đồng bộ hóa tiến trình, tiểu trình Bài 6: Quản lý bộ nhớ CÁC PHẦN MỀM SỬ DỤNG TRONG MÔN THỰC HÀNH Phần mềm VMware Hệ điều hành Ubuntu ĐỒNG BỘ HÓA TIẾN TRÌNH VÀ TIỂU TRÌNH Mục tiêu của của bài thực hành: Giới thiệu thư viện semaphore và mutex một thư viện để đồng bộ hóa các tiến trình và tiểu trình chạy song song với nhau. Lập trình đồng bộ tiến trình và tiểu trình với semaphore và mutex. 1. Semaphore Trong khoa học máy tính, đặc biệt là trong hệ điều hành, semaphore được biết đến như một biến được sử dụng để điều khiển sự truy xuất vào tài nguyên chung của các tiểu trình trong xử lý song song hoặc trong các môi trường đa người dùng. Semaphore được xem như một danh sách các đơn vị còn trống của một tài nguyên cụ thể của máy tinh. Có 2 thao tác cơ bản trên một biến semaphore đó là yêu cầu tài nguyên và giải phóng tài nguyên, nếu cần thiết nó còn có thể làm cờ để đợi cho đến khi tài nguyên được một tiểu trình khác giải phóng.

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH TÀI LIỆU: HƯỚNG DẪN THỰC HÀNH HỆ ĐIỀU HÀNH Nhóm biên soạn: - ThS Phan Đình Duy - ThS Phạm Văn Phước - ThS Nguyễn Việt Quốc - KS Nguyễn Hữu Nhân - KS Lê Văn La - KS Trần Văn Quang Cập nhật tháng năm 2017 NỘI DUNG CÁC BÀI THỰC HÀNH Phần 1: Lập trình Linux Bài 1: Hướng dẫn cài đặt Ubuntu lệnh shell Bài 2: Lập trình môi trường shell Phần 2: Thực hành hệ điều hành Bài 3: Quản lý tiến trình Bài 4: Định thời CPU Bài 5: Đồng hóa tiến trình, tiểu trình Bài 6: Quản lý nhớ CÁC PHẦN MỀM SỬ DỤNG TRONG MÔN THỰC HÀNH - Phần mềm VMware - Hệ điều hành Ubuntu ĐỒNG BỘ HĨA TIẾN TRÌNH VÀ TIỂU TRÌNH Mục tiêu của thực hành: - Giới thiệu thư viện semaphore mutex - thư viện để đồng hóa tiến trình tiểu trình chạy song song với - Lập trình đồng tiến trình tiểu trình với semaphore mutex Semaphore Trong khoa học máy tính, đặc biệt hệ điều hành, semaphore biết đến biến sử dụng để điều khiển truy xuất vào tài nguyên chung tiểu trình xử lý song song môi trường đa người dùng Semaphore xem danh sách đơn vị trống tài nguyên cụ thể máy tinh Có thao tác biến semaphore yêu cầu tài nguyên giải phóng tài ngun, cần thiết làm cờ để đợi tài nguyên tiểu trình khác giải phóng 1.1 Các function cho semaphore C Để include thư viện semaphore vào chương trình C ta sử dụng #include Và khai báo thư viện pthread rt biên dịch Ví dụ gcc -o filename filename.c -lpthread -lrt Để định nghĩa semaphore ta dùng: sem_t sem_name; Để khởi tạo biến semaphore ta sử dụng hàm: ❖ int sem_init(sem_t *sem, int pshared, unsigned int value); ➢ sem : trỏ đến địa biến semaphore ➢ pshared cờ cài đặt cho việc chia sẻ biến semaphore tiểu trình tiến trình tiến trình với ➢ value giá trị khởi tạo để gán cho semaphore ❖ Ví dụ: sem_t sam; sem_init(&sam,0,10); Đợi semaphore: sem_wait(&sem_name); ❖ Nếu giá tri semaphore không dương, tiến trình bị block, tiến trình bị block mở có process gọi sem_post ❖ Nếu giá trị semaphore dương, giá trị semaphore giảm Tiến trình tiếp tục chạy Tìm giá trị semaphore: int sem_getvalue(sem_t *sem, int *valp); ❖ Lấy giá trị semaphore vào biến int có địa valp ❖ Ví dụ: int value; sem_getvalue(&sem_name, &value); printf("The value of the semaphors is %d\n", value); Hủy biến semaphore: sem_destroy(sem_t *sem); ❖ Hủy semaphore, không nên có tiểu trình sem_wait 1.2 Ví dụ sử dụng semaphore: Giả sử có process thực thi song song đoạn code sau: processA{ while (true) na++; } processB{ while (true) nb++; } Giá trị ban đầu na nb Sử dụng semaphore để đảm bảo na = nb na phải chờ nb tăng lên trước sem_t sam; sem_init(&sam,0,0); processA{ while (true) { sem_wait(&name); na++; } } process{ while (true) { nb++; sem_post(&sam); } } Theo solution trên, lần nb tăng them đơn vị sam tăng lên đơn vị, điều kéo theo na quyền tăng theo đơn vị Trước lẫn na tăng thêm đơn vị lệnh sem_wait(&sam); thực Lệnh trừ biến sam đơn vị Cho đến sam=0 na phải đợi nb tăng thêm đơn vị tăng tiếp 1.3 Bài tập 1.3.1 Lập trình thực hóa ví dụ 1.2 C 1.3.2 Giả sử có process thực thi song song đoạn code sau: processA{ while (true) na++; } processB{ while (true) nb++; } Giá trị ban đầu na nb Sử dụng semaphore để đảm bảo nb < na

Ngày đăng: 16/05/2018, 23:38

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    1.1 Các function cơ bản cho semaphore trên C

    1.2 Ví dụ về sử dụng semaphore:

    2.1 Các function cơ bản cho mutex trên C

    3. Tài liệu tham khảo

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w