Thực hành Hệ điều hành LAB 3 Họ tên Nguyễn Thanh Hiếu MSSV 20521328 1 Mối quan hệ cha con giữa các tiến trình a Vẽ cây quan hệ parent child của các tiến trình bên dưới b Trình bày cách sử dụng lệnh ps để tìm tiến trình cha của một một tiến trình dựa vào PID của nó Ta sẽ sử dụng lệnh ps f pid của tiến trình con để hiển thị pid của tiến trình cha (chính là PPID) Ta sử dụng lệnh ps f pid lần nữa với pid là pid của tiến trình cha vừa tìm thấy để xem thông tin tiến trình cha c Tìm hiểu và cài đặt l.
Trang 1Thực hành Hệ điều hành LAB 3
Họ tên: Nguyễn Thanh Hiếu
MSSV: 20521328
1 Mối quan hệ cha-con giữa các tiến trình
a Vẽ cây quan hệ parent-child của các tiến trình bên dưới:
b Trình bày cách sử dụng lệnh ps để tìm tiến trình cha của một một tiến trình dựa vào PID của nó
- Ta sẽ sử dụng lệnh ps -f [pid của tiến trình con] để hiển thị pid của tiến trình cha (chính
là PPID)
Trang 2- Ta sử dụng lệnh ps -f pid lần nữa với pid là pid của tiến trình cha vừa tìm thấy để xem thông tin tiến trình cha
c Tìm hiểu và cài đặt lệnh pstree (nếu chưa được cài đặt), sau đó trình bày cách sử dụng lệnh này để tìm tiến trình cha của một tiến trình dựa vào PID của nó
- Sử dụng lệnh pstree -p -s [pid của tiến trình con cần tìm đến tiến trình cha] để hiển thị
cả cây tiến trình tương ứng với tiến trình con được nhập vào
Trang 3Hiển thị cây tiến trình ứng với tiến trình con là 925
2 Chương trình bên dưới in ra kết quả gì? Giải thích tại sao?
Trang 4- chương trình chạy bị lỗi như bên dưới bởi vì còn thiếu thư viện để thực hiện
- Sau khi thêm 3 thư viện stdlib.h, unistd.h, sys/wait.h thì chương trình in ra là “I see 17 coconuts!”
Trang 5- Kết quả chương trình in ra là “I see 17 coconuts!” Bởi vì khi vào lệnh fork() thì tiến trình con và cha sẽ chạy Với pid = 0 thì tiến trình con thực hiện chương trình, còn tiến trình cha (pid>0) sẽ vào lệnh wait(NULL) vậy nên tiến trình cha sẽ đợi đến khi tiến trình con chạy xong
- Tiến trình con thực hiện lệnh exit(0) (lệnh kết thúc) trước khi thực hiện vậy nên lệnh printf của tiến trình cha sẽ được thực thi, 2 tiến trình cha và con có bộ nhớ riêng vậy nên biến num_coconuts = 17 Thực hiện in ra “I see 17 coconuts!”
3 Trong phần thực hành, các ví dụ chỉ sử dụng thuộc tính mặc định của pthread, hãy tìm hiểu POSIX thread và trình bày tất cả các hàm được sử dụng để làm thay đổi thuộc tính của pthread, sau đó viết các chương trình minh họa tác động của các thuộc tính này và chú thích đầy đủ cách sử dụng hàm này trong chương trình (Gợi ý các hàm liên quan đến thuộc tính của pthread đều bắt đầu bởi: pthread_attr_*)
- POSIX thread (pthread) sẽ được sử dụng để lập tiểu trình Nó cho phép chúng ta tạo ra các ứng dụng chạy song song theo luồng, phù hợp với các hệ thống đa bộ xử lý POSIX (Portabel Operating Systems Interface) là mô tả các API (Application Programming Interface) bao gồm hàm và chức năng của chúng
- Các hàm được sử dụng để làm thay đổi thuộc tính của pthread là:
Trang 6Thuộc tính Giá trị Kết quả
tranh với các thread khác trong process này
và thread ID được giữ nguyên sau khi thread thoát
ngăn xếp do hệ thống cấp phát
thước ngăn xếp do hệ thống xác định
tiên bằng 0
thừa quyền ưu tiên từ thread cha
chia sẻ theo thời gian (Solaris time-sharing)
+ Minh họa scope
int pthread_attr_setscope(pthread_attr_t*attr, int scope);
// đặt thuộc tính phạm vi tranh chấp của đối tượng thuộc tính luồng được tham chiếu bởi //attr đến giá trị được chỉ định trong phạm vi
int pthread_attr_getscope(const pthread_attr_t*attr, int *scope);
// Thành công thì return về 0 còn lại trả về lỗi
+ Minh họa priority
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
// thuộc tính luồng được tham chiếu bởi attr đến giá trị policy
int pthread_attr_getschedpolicy(const pthread_attr_t *restrict attr, int *restrict policy);
// Thành công thì return về 0 còn lại trả về lỗi
Trang 7+ Minh họa setguardsize
S=pthread_attr_getguardsize(pthread_attr_t *attr, &sp);
// đặt kích thước bảo vệ của đối tượng attr (Bảo vệ tràn ngăn xếp)
+ Minh họa destroy
int pthread_attr_destroy (pthread_attr_t * tattr );
//không hợp lệ
4 Viết chương trình làm các công việc sau theo thứ tự:
- Chương trình code
Trang 8a.In ra dòng chữ: “Welcome to IT007, I am <your_Student_ID>!”
b.Mở tệp abcd.txt bằng vim editor
Trang 9c.Tắt vim editor khi người dùng nhấn CRTL+C
Trang 10- Phần soạn thảo editor đã được tắt
d.Khi người dùng nhấn CTRL+C thì in ra dòng chữ: “You are pressed CTRL+C!
Goodbye!”