You are on page 1of 26

Name: Trần Trọng Khiêm

ID: 21522217
Class: IT007.N17

OPERATING SYSTEM
LAB 03’S REPORT
SUMMARY
Task Status Page
Section 3.3 Hoàn thành 2
Task 1 Hoàn thành 7
Section 3.4 Task 2 Hoàn thành 12
Task 3 Hoàn thành 18
Task 1 Hoàn thành 19
Task 2 Hoàn thành 21
Section 3.5
Task 3 Hoàn thành 22
Task 4 Hoàn thành 24

Self-scrores: 9.5

*Note: Export file to PDF and name the file by following format:
LAB X – <Student ID>.pdf

1
3.3. Sinh viên chuẩn bị.
3.3.1. < Đã install các gói cần thiết >.
3.3.2. < Đã install các gói cần thiết >.

1. Sử dụng vim soạn chương trình hello.c.

2
3
3.3.3. Makefile.

4
3.3.4. Trình gỡ lỗi.

5
6
3.4. Hướng dẫn thực hành.
3.4.1. Tiến trình.
3.4.1.1. Khái niệm.
3.4.1.2. Tiến trình trong môi trường Linux.

7
3.4.1.3. Tạo tiến trình.

8
9
10
3.4.1.4. Kết thúc tiến trình.

3.4.2. Tiểu trình.

11
3.4.2.1. Khái niệm.
3.4.2.2. Tiểu trình trong Linux.
3.4.2.3. Tạo tiểu trình.

12
3.4.2.4. Dừng tiểu trình.

13
14
15
3.4.2.5. Hợp và gỡ tiểu trình.

16
3.4.2.6. Truyền dữ liệu cho tiểu trình.

17
3.4.3. Signal ( Truyền thông giữa các tiến trình )

18
3.5. Bài tập ôn tập.

1. Mối quan hệ cha-con giữa các tiến trình.

A.

19
B.
Bước 1: sử dụng lệnh ps -ef để list tất cả các process

Bước 2: sử dụng lệnh ps -o ppid= -p [PID của tiến trình]


- Giả sử ta lấy tiến trình có PID = 7745

- Sau đó ta sử dụng lệnh ps -o ppid= -p 7745


- Và ta sẽ được PID của tiến trình cha của nó là 7442

C.
Bước 1: sử dụng lệnh ps -ef để list tất cả các process (như câu B)
Bước 2: sử dụng lệnh ps -p -s [PID của tiến trình]
- Giả sử lấy tiến trình có PID = 1275

- Sử dụng lệnh pstree -p -s 1275


- Sau đó ta được kết quả sau

20
2. Chạy và Giải thích đoạn chương trình exercise_2.c.

Giải thích:
- Dòng chứa lệnh fork() là sinh ra một tiến trình con.
- Khi xét (pid == 0) có nghĩa là đang xét tiến trình con. Biến num_coconuts của tiến tr
ình con được gán = 42. Tuy nhiên, biến num_coconuts của tiến trình cha vẫn không b
ị thay đổi nên vẫn là 17.

21
- Sau đó tiến trình con exit(), rồi tiến trình cha đợi tiến trình con kết thúc xong rồi mới
in ra dòng chữ. Dó đó, kết quả trả về chứa biến num_coconuts của tiến trình cha (= 1
7).
- Vì vậy, kết quả in ra màn hình: “I see 17 coconuts!”.

3. Tìm hiểu về pthread trong Linux.

Các hàm thay đổi thuộc tính của thread.


̵ pthread_attr_init: hàm khởi tạo thread
̵ pthread_attr_destroy: xóa bộ nhớ được cấp phát trong quá trình khởi tạo
̵ pthread_attr_setstacksize: thiết lập kích thước của thread stack
̵ pthread_attr_getstacksize: trả lại giá trị kích thước của stack
̵ pthread_attr_setdetachstate: khi thread gọi không muốn chờ thread kết thúc
̵ pthread_attr_getdetachstate: truy xuất trạng thái tạo thread, trạng thái này có thể đ
ược tách ra hoặc kết hợp
̵ pthread_attr_setguardsize: đặt kích thước bảo vệ
̵ pthread_attr_getguardsize: lấy kích thước bảo vệ của đối tượng attr
̵ pthread_attr_setscope: tạo một chuỗi liên kết hoặc một chuỗi không liên kết
̵ pthread_attr_getscope: để truy xuất phạm vi của thread, cho biết thread đó được r
àng buộc hay không bị ràng buộc
̵ pthread_attr_setschedpolicy: thiết lập chính sách lập lịch
̵ pthread_attr_getschedpolicy: truy xuất chính sách lập lịch
̵ pthread_attr_setinheritsched: thiết lập chính sách lập lịch kế thừa
̵ pthread_attr_getinheritsched: trả lại chính sách lập lịch kế thừa
̵ pthread_attr_setschedparam: thiết lập các biến lập lịch
̵ pthread_attr_getschedparam: trả lại các biến lập lịch
̵ pthread_attr_setstackaddr: thiết lập địa chỉ của thread stack
̵ pthread_attr_getstackaddr: trả lại địa chỉ của thread stack
̵ pthread_cancel: gửi yêu cầu hủy đến 1 thread.
̵ pthread_cond_wait: khóa mutex và đợi tín hiệu của biến điều kiện.
̵ pthread_cond_signal: khởi động một thread đang đợi bởi biến điều kiện.
̵ pthread_cond_broadcast: đánh thức tất cả các thread được khoá bởi biến điều kiện.
̵ pthread_create: sử dụng để tạo 1 thread mới.
̵ pthread_detach: dùng để tách 1 thread.

22
̵ pthread_equal: so sánh xem 2 thread có giống nhau không, nếu giống thì trả về m
ột số khác 0, ngược lại trả về 0.
̵ pthread_exit: sử dụng để kết thúc 1 thread.
̵ pthread_join: block chương trình và chờ cho thread với ID là “thread” kết thúc, và
giá trị return của thread đó được lưu vào biến con trỏ “retval”. Nếu thread đã kết t
húc trước khi gọi pthread_join(), thì hàm sẽ return ngay lập tức.
̵ pthread_self: trả về id của thread hiện hành.
Chương trình:

23
Kết quả chương trình:

4. Chương trình.

24
Kết quá chương trình:

25
26

You might also like