You are on page 1of 14

THỰC HÀNH MÔN HỆ ĐIỀU HÀNH

LAB03
3.1 Mục tiêu
3.2 Nội dung thực hành
3.3 Sinh viên chuẩn bị
3.3.1 Trình soạn thảo vản bản
3.3.2 Trình biên dịch gcc
-Sử dụng vim để soạn chương trình hello.c như sau:

-Biên dịch và chạy chương trình:

-Thêm hàm main.c và chuyển chương trình hello.c ở trên thành một thư
viện như sau:
-Biên dịch và chạy chương trình:

3.3.3 Makefile
-Soạn thảo tệp Makefile:

-Biên dịch và chạy chương trình:


-Thêm .PHONY: <files> vào cuối Makefile để ép buộc make luôn thực thi <files>

-Biên dịch và chạy chương trình:

3.3.4 Trình gỡ lỗi


-Viết chương trình tính giai thừa factorial.c:

-Biên dịch và chạy chương trình:


-Sửa lỗi chương trình:
-Biên dịch và chạy chương trình:

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.2.2 Tiến trình chờ trong môi trường Linux
Kết quả sau khi sử dụng lệnh top:

3.4.1.3 Tạo tiến trình


-Viết chương trình example_fork.c
-Biên dịch và chạy chương trình:

-Viết chương trình example_execl.c:

-Biên dịch và chạy chương trình:

-Viết chương trình example_system.c :

-Biên dịch và chạy chương trình:


3.4.1.4 Kết thúc tiến trình
-Viết chương trình example_fork_wait.c :

-Biên dịch và chạy chương trình:

3.4.2 Tiểu trình


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
-Viết chương trình example_thread_creation.c :
-Biên dịch và chạy chương trình:

3.4.2.4 Dừng tiểu trình


-Viết chương trình example_thread_selfexit.c:
-Biên dịch và chạy chương trình:

-Viết chương trình example_thread_mainexit.c:

-Biên dịch và chạy chương trình:


3.4.2.5 Hợp và gỡ tiểu trình
-Viết chương trình example_thread_join.c:

-Biên dịch và chạy chương trình:


-Viết chương trình example_thread_structure.c :

-Biên dịch và chạy chương trình:

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


-Viết chương trình example_signal.c:
-Biên dịch và chạy chương trình:

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

2. Chương trình bên dưới in ra kết quả gì? Giải thích tại sao?
/*######################################
# University of Information Technology #
# IT007 Operating System #
# <Your name>, <your Student ID> #
# File: exercise_2.c #
######################################*/
#include<stdio.h>
int main(){
pid_t pid;
int num_coconuts = 17;
pid = fork();
if(pid == 0) {
num_coconuts = 42;
exit(0);
} else {53
wait(NULL); /*wait until the child terminates */
}
printf("I see %d coconuts!\n", num_coconuts);
exit(0);
}
Chương trình sẽ in ra : I see 17 coconuts!

Vì biến num_coconuts trong hàm con không làm thay đổi biến num_coconuts của hàm cha.Hàm con
kết thúc mà không in ra màn hình.Hàm cha đợi hàm con kết thúc rồi in ra kết quả ra màn hình.

4. Viết chương trình làm các công việc sau theo thứ tự:
a.In ra dòng chữ: “Welcome to IT007, I am
<your_Student_ID>!”
b.Mở tệp abcd.txt bằng vim editor
c.Tắt vim editor khi người dùng nhấn CRTL+C
d.Khi người dùng nhấn CTRL+C thì in ra dòng chữ: “You
are pressed CTRL+C! Goodbye!”
Viết chương trình:
Kết quả:

You might also like