You are on page 1of 2

BÀI TẬP TRÊN LỚP

MÔN HỌC: HỆ PHÂN TÁN


CHƯƠNG 2: TIẾN TRÌNH VÀ LUỒNG
HỌ TÊN SV: Lê Anh Hào MSSV: 20184092
MÃ LỚP: 130902 MÃ HỌC PHẦN:IT4612
Câu hỏi 1: Có cần thiết phải giới hạn số lượng các luồng trong một tiến trình server?
Về lí thuyết, càng nhiều luồng thì khả năng xử lí đồng thời càng tốt
Tuy nhiên, vẫn nên có giới hạn số lượng các luồng trong một tiến trình server để
đảm bảo khả năng đồng bộ hóa. Tức là với một tiến trình đọc và ghi dùng chung biến, hay
tài nguyên file chẳng hạn, rất dễ xảy ra lỗi, để đồng bộ hóa dữ liệu dùng chung này là một
vấn đề phức tạp, càng nhiều luồng thì càng khó để đồng bộ.

Câu hỏi 2: Có nên chỉ gắn một luồng đơn duy nhất với một tiến trình nhẹ?
Để đảm bảo khả năng xử lí đồng thời nhiều tác vụ nhanh chóng thì dù là tiến trình nhẹ vẫn
nên dùng đa luồng.
Câu hỏi 3: Có nên chỉ có một tiến trình nhẹ đơn gắn với 1 tiến trình?
Không nên.
Câu hỏi 4: Bài toán này yêu cầu bạn so sánh thời gian đọc một tệp (file) của một máy chủ
tập tin (file server) đơn luồng và một máy chủ đa luồng. Phải mất tổng cộng 15 ms để nhận
1 yêu cầu (request) và thực hiện quá trình xử lý, giả định rằng các dữ liệu cần thiết nằm ở
bộ nhớ đệm trong bộ nhớ chính. Nếu cần thiết phải thực hiện một thao tác truy cập ổ đĩa thì
cần thêm 75 ms,biết rằng việc phải thực hiện thao tác này có xắc suất là 1/3. Hỏi máy chủ
có thể nhận bao nhiêu yêu cầu/giây trong 2 trường hợp: máy chủ là đơn luồng và máy chủ
là đa luồng (ngoài luồng nhận và xử lý request, sẽ có thêm 1 luồng để truy cập ổ đĩa nếu
cần thiết)? Giải thích.

Đơn luồng : Thời gian nhận yêu cầu 15ms + thời gian đọc ổ đĩa 75 x ⅓ = 40ms
(đơn luồng nên phải thực hiện liên tiếp, sau khi nhận và xử lí 1 yêu cầu lại có khả
năng mất 1 khoảng thời gian chờ cho việc đọc ghi ổ đĩa)
→ Số yêu cầu nhận trong 1000ms là 1000/40 = 25 yêu cầu

Đa luồng: Luồng nhận request không quan tâm luồng truy cập ổ đĩa, nên mỗi request sau
chỉ phải chờ hết request trước mà thôi.
-->Số yêu cầu trong 1000ms là 1000/15 = 67 yêu cầu
Câu hỏi 5: Hệ thống X chỉ định máy của user chứa server, trong khi các ứng dụng lại được
coi như client. Điều đó có vô lý không? Giải thích.

Thật ra server hay client cũng chỉ là hai tiến trình, nên một máy user có thể vừa là server
vừa là client được. Điều này giống như việc chạy hai chương trình client và server trên cùng
một máy vậy

Câu hỏi 6: Giao thức thiết kế cho hệ thống X gặp phải vấn đề về tính mở rộng. Chỉ ra các
giải pháp để giải quyết vấn đề đó?
Có thể sử dụng công nghệ ảo hóa chẳng hạn, công nghệ ảo hóa cho phép tạo nhiều máy
ảo trên một máy vật lí, từ đó tùy biến mở rộng dễ hơn ( tất nhiên trên một mức độ nào đó)
Câu hỏi 7: Với việc xây dựng một server đồng thời, hãy so sánh việc server này tạo một
luồng
Việc tạo luồng mới tất nhiên sẽ tối ưu được tài nguyên hệ thống hơn là tạo tiến trình mới.
Tiến trình mới đòi hỏi vùng tài nguyên riêng nên nếu cần thiết mới khởi tạo mới.
mới và tạo một tiến trình mới khi nhận được yêu cầu từ phía client.
Câu hỏi 8: Nếu bây giờ một webserver tổ chức lưu lại thông tin về địa chỉ IP của client và
trang web client đó vừa truy cập. Khi có 1 client kết nối với server đó, server sẽ tra xem
trong bảng thông tin, nếu tìm thấy thì sẽ gửi nội dung trang web đó cho client. Server này là
có trạng thái (stateful) hay không trạng thái (stateless)?
Server này là có trạng thái stateful vì đã lưu trữ dữ liệu của client mỗi khi client thực hiện
request.
Có thể nói thêm trạng thái stateless là không lưu trữ gì của client sau mỗi lần thực hiện
request lên server.
Câu hỏi 9: So sánh Docker và Virtual Machine.
-Vitural Machines (VMs) về bản chất là một giả lập của một máy tính để thực thi các ứng
dụng giống như một máy tính thật. VMs chạy trên một máy vật lý sử dụng một thứ gọi là
“hypervisor”. Hypervisor có thể là phần cứng, phần mềm hoặc là một bản firmware nào đó
có thể chạy trực tiếp trên máy thật (host machine) có chức năng cho nhiều máy ảo chạy trên
nó. Host machine sẽ cung cấp cho VMs những tài nguyên như là RAM, CPU. Những VMs
chạy trên host machine thường được gọi là guest machine. Guest machine này sẽ chứa tất
cả những thứ mà hệ thống cần để chạy ứng dụng như hệ điều hành (OS), system binaries
và libraries.

-Container không giống như VMs, Container không cung cấp sự ảo hóa về phần cứng. Một
Container cung cấp ảo hóa ở cấp hệ điều hành bằng một khái niệm trừu tượng là “user
space”. Sự khác nhau lớn nhất của Container và VMs là Container có thể chia sẻ host
system’s kernel với các container khác.

You might also like