WorksheetsHỆ ĐIỀU HÀNH - BÀI 9
Total questions: 30
Worksheet time: 22mins
Cho đoạn code sau:
Hãy cho biết đoạn code dùng để làm gì?
Thay đổi độ ưu tiên của tiến trình đang chạy (notepad.exe) trong Windows
Tạo một tiến trình notepad.exe trong Windows
Đồng bộ giữa hai tiến trình notepad.exe trong Windows
Hủy một tiến trình đang chạy (notepad.exe) trong Windows
Chương trình sau có gây rò rỉ bộ nhớ không?
Có, vì con trỏ chưa được giải phóng khi kết thúc chương trình
Có, nhưng chỉ khi chương trình chạy lâu dài
Không, vì không có sự cấp phát bộ nhớ nào
Không vì con trỏ đã được giải phóng khi kết thúc chương trình
Kéo các API khi làm việc với tiến trình trong Windows dưới đây vào ô tương ứng với mô tả của chúng:
Trả về mã lỗi nếu một thao tác thực hiện không thành công
GetLastError()
Tiến trình giải phóng tài nguyên được bảo vệ bởi Mutex
ReleaseMutex()
Tạo một Mutex để đồng bộ tiến trình
CreateMutex()
Tiến trình đợi trên Mutex để truy cập vào vùng tài nguyên được chia sẻ
WaitForSingleObject()
Hằng số nào thể hiện mức độ ưu tiên cao nhất của một tiến trình?
HIGH_PRIORITY_CLASS
ABOVE_NORMAL_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
Đâu là các vấn đề về bộ nhớ mà người lập trình cần chú ý viết một chương trình (chọn 2)?
Vấn đề tràn bộ nhớ
Vấn đề về khởi tạo giá trị cho các biến toàn cục
Vấn đề về khởi tạo giá trị cho các biến cục bộ
Vấn đề rò rỉ bộ nhớ
API nào được sử dụng để tạo tiến trình trong Windows?
CreateProcess()
CreateThread()
StartProcess()
InitProcess()
API nào sau đây được sử dụng để đợi trên Mutex khi tiến trình muốn truy cập vào vùng tài nguyên dùng chung?
WaitForSingleObject()
CloseHandle()
CreateMutex()
ReleaseMutex()
Cho đoạn chương trình làm việc với tiến trình trên Windows như sau:
Hãy cho biết đoạn chương trình trên thực hiện thao tác gì?
Đồng bộ giữa hai tiến trình chạy trong Windows
Tạo một tiến trình cho một ứng dụng bất kỳ trong Windows
Thay đổi độ ưu tiên của tiến trình đang chạy trong Windows
Hủy một tiến trình đang chạy trong Windows
Tại sao việc thay đổi độ ưu tiên của tiến trình là quan trọng?
Giúp CPU hiệu quả hơn, tăng hiệu suất xử lý các chương trình quan trọng
Giảm xung đột giữa tiến trình và hệ điều hành
Giúp tiến trình chạy nhanh hơn mọi lúc
Giúp tiến trình sử dụng ít RAM hơn
Việc rò rỉ bộ nhớ thường xảy ra ở vùng nhớ nào nhất khi cấp cho tiến trình?
Data
Code
Heap
Stack
Điều gì xảy ra khi một chương trình ghi vào vùng nhớ chưa được cấp phát?
Không có vấn đề gì xảy ra
Hệ điều hành tự động cấp phát vùng nhớ
Lỗi lỗi truy cập bộ nhớ không hợp lệ
Chương trình chạy nhanh hơn
Chương trình sau gặp lỗi gì?
Tràn bộ nhớ (Buffer Overflow)
Không có lỗi
Rò rỉ bộ nhớ
Truy cập bộ nhớ không hợp lệ (Segmentation fault)
Kéo các API làm việc với tiến trình trong Windows dưới đây vào ô tương ứng với mô tả của chúng:
Thay đổi độ ưu tiên của tiến trình
SetPriorityClass()
Tạo một tiến trình
CreateProcess()
Đóng Handle của tiến trình đã tạo và giải phóng tài nguyên bị chiếm bởi tiến trình
CloseHandle()
Kết thúc một tiến trình
TerminateProcess()
Kéo các API hoặc toán tử khi làm việc với tiến trình trong Windows dưới đây vào ô tương ứng với mô tả của chúng:
Đóng và giải phóng tài nguyên được sở hữu bởi một tiến trình
CloseHandle()
Cấp phát vùng nhớ cho biến hoặc cấu trúc dữ liệu
sizeof()
Lấy về Handle của tiến trình hiện hành
GetCurrentProcess()
Xóa sạch vùng nhớ của một cấu trúc dữ liệu
ZeroMemory()
API nào sau đây được sử dụng để tiến trình giải phóng các tài nguyên được bảo vệ Mutex?
SetPriorityClass()
ReleaseMutex()
WaitForSingleObject()
CloseHandle()
Hiện tượng tràn bộ nhớ xảy ra trong trường hợp nào sau đây:
Tiến trình ghi dữ liệu vào vùng nhớ có kích thước nhỏ hơn số byte cần ghi
Tiến trình truy cập ra ngoài phạm vi của mảng
Một vòng lặp chạy vô hạn không giải phóng bộ nhớ
Tiến trình truy xuất đến địa chỉ bộ nhớ chưa được cấp phát
Công cụ nào sau đây có thể sử dụng để quan sát các vùng nhớ cho từng tiến trình?
Resource Monitor
VMMap
Task Manager
Windows Memory Diagnostic
Chương trình sau có thể gây ra lỗi gì?
Không có lỗi gì
Truy cập bộ nhớ không hợp lệ (Segmentation fault)
Rò rỉ bộ nhớ (Memory Leak)
Tràn bộ nhớ (Buffer Overflow)
Cho khai báo sau đây trong C:
char buffer[10];
Lệnh nào sau đây gây ra hoặc không gây ra lỗi tràn bộ nhớ? Kéo các đáp án vào ô tương ứng:
strcpy(buffer, "Nguyen ly he dieu hanh - cong nghe thong tin!")
strcpy(buffer, "Cong nghe thong tin - ictu - thai nguyen")
strcpy(buffer, "Chao ban!")
strcpy(buffer, "Lap Trinh!")
Hãy kéo các câu lệnh gây ra các vấn đề về bộ nhớ tương ứng với các mô tả dưới đây:
char buffer[3]; strcpy(buffer, "Cong nghe thong tin");
Tràn bộ nhớ
int a[4]; a[5] = 100;
Truy cập bộ nhớ không hợp lệ
int* heap = (int*)malloc(10 * sizeof(int)); heap = NULL;
Rò rỉ bộ nhớ
Chương trình sau có thể dẫn đến lỗi gì?
Lỗi tràn bộ nhớ (Stack Overflow)
Không có lỗi gì
Lỗi rò rỉ bộ nhớ
Không có vấn đề về bộ nhớ nhưng chạy vô hạn
Hàm nào được sử dụng để hủy tiến trình trong Windows?
ExitProcess()
KillProcess()
TerminateProcess()
CloseProcess()
Hậu quả của việc hủy tiến trình bất ngờ là gì?
Tiến trình được lưu lại để chạy lần sau
Hệ điều hành tự động phục hồi tiến trình
Mất dữ liệu, rò rỉ bộ nhớ
CPU bị giảm hiệu suất ngay lập tức
Khi sử dụng API SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS) cho một tiến trình, điều gì xảy ra?
Tiến trình được ưu tiên sử dụng CPU nhiều hơn
Tiến trình bị giảm quyền truy cập CPU
Tiến trình chuyển sang trạng thái dừng
Tiến trình bị hủy ngay lập tức
Cho đoạn chương trình làm việc với tiến trình trong Windows:
Hãy cho biết chương trình trên thực hiện khi nào?
Đồng bộ giữa các tiến trình chạy trong Windows
Hủy một tiến trình đang chạy trong Windows
Tạo một tiến trình cho một ứng dụng bất kỳ trong Windows
Thay đổi độ ưu tiên của tiến trình đang chạy trong Windows
Chương trình sau có lỗi gì?
Truy cập bộ nhớ không hợp lệ (Segmentation fault)
Tràn bộ nhớ (Stack Overflow)
Không có lỗi gì
Rò rỉ bộ nhớ (Memory leak)
Cho đoạn chương trình C như dưới đây. Hãy viết lệnh sử dụng hàm free vào vị trí ----------- để giải phóng bộ nhớ được cấp phát cho biến arr để tránh vấn đề rò rỉ bộ nhớ:
Lệnh cần viết:
(a)
Lệnh nào sau đây có thể gây dò rỉ bộ nhớ?
float y=2.5;
char ch='A'
int* heap = (int*)malloc(10 * sizeof(int));
int x =10;
Cho đoạn chương trình làm việc với tiến trình trong Windows:
Hãy cho biết đoạn chương trình trên dùng để làm gì?
Thay đổi độ ưu tiên của tiến trình đang chạy dựa vào Handle
Tạo một tiến trình cho một ứng dụng bất kỳ trong Windows
Hủy một tiến trình đang chạy trong Windows dựa vào Handle
Đồng bộ giữa hai tiến trình chạy trong Windows dựa vào Handle
Chương trình sau có xảy ra vấn đề về bộ nhớ không?
Có, xảy ra vấn đề tranh chấp tài nguyên
Không, chương trình chạy bình thường
Có, xảy ra lỗi tràn bộ nhớ
Có, xảy ra rò rỉ bộ nhớ
