lOMoARcPSD| 61552860
Khái niệm về tiến trình:
Tiến trình (process) là một chương trình đang thực thi trên hệ thống máy tính, bao gồm các
dữ liệu, biến và các chỉ thị thực hiện công việc. Một tiến trình có thể chạy độc lập hoặc có
thể tương tác với các tiến trình khác để thực hiện một tác vụ cụ thể.
Các trạng thái cơ bản của tiến trình:
1. New (Mới): Tiến trình được tạo ra và chưa được thực thi.
2. Ready (Sẵn sàng): Tiến trình đã được tạo ra và sẵn sàng thực thi, nhưng vẫn chưa được
lên lịch thực hiện bởi CPU.
3. Running (Đang thực thi): Tiến trình đang được CPU thực thi.
4. Waiting (Đang chờ): Tiến trình đã yêu cầu một tài nguyên hoặc đang đợi một sự kiện
xảy ra trước khi có thể tiếp tục thực thi.
5. Terminated (Đã kết thúc): Tiến trình đã hoàn thành công việc và được chấm dứt.
Biến đổi trạng thái của tiến trình:
Sự biến đổi trạng thái của tiến trình xảy ra khi tiến trình thực hiện các hoạt động khác nhau
và thay đổi trạng thái của mình. Các sự kiện khác nhau có thể gây ra sự thay đổi trạng thái
của tiến trình, bao gồm:
1. Tạo mới tiến trình: Khi một tiến trình được tạo mới, nó bắt đầu ở trạng thái mới.
2. Chuyển đổi từ trạng thái mới sang trạng thái sẵn sàng: Sau khi tiến trình được tạo mới,
nó chuyển sang trạng thái sẵn sàng để thực thi.3. Chuyển đổi từ trạng thái sẵn sàng sang
trạng thái đang thực thi: Khi tiến trình được n lịch thực thi bởi CPU, chuyển sang
trạng thái đang thực thi.
4. Chuyển đổi từ trạng thái đang thực thi sang trạng thái đang chờ: Khi tiến trình u
cầu một tài nguyên hoặc đợi một sự kiện xảy ra, nó chuyển sang trạng thái đang chờ.
5. Chuyển đổi từ trạng thái đang chờ sang trạng thái sẵn sàng: Khi tài nguyên hoặc sự
kiện mà tiến trình đang chờ đã sẵn sàng, tiến trình chuyển sang trạng thái sẵn sàng.
6. Chuyển đổi từ trạng thái đang thực thi sang trạng thái đã kết thúc: Khi tiến trình
hoàn thành công việc, nó chuyển sang trạng thái đã kết thúc.
7. Chuyển đổi từ trạng thái đang chờ sang trạng thái đã kết thúc: Nếu tiến trình không
thể tiếp tục thực thi do lỗi hoặc ngừng hoạt động, nó chuyển sang trạng thái đã kết thúc.
Tạm dừng và kích hoạt:
lOMoARcPSD| 61552860
Tạm dừng là một thao tác quan trọng được sử dụng trong nhiều hệ thống với các cách cài
đặt, thực hiện khác nhau. Tạm dừng thường chỉ diễn ra trong khoảng thời gian ngắn.
Kích hoạt thao tác chuẩn bị để tiến trình thể tiếp tục thực hiện từ đúng trạng thái
nó bị dừng trước đó.
Khi một tiến trình đang thực thi và phải tạm dừng để chờ một sự kiện xảy ra, nó chuyển từ
trạng thái đang thực thi sang trạng thái đang chờ. Sau khi sự kiện xảy ra và tài nguyên mà
tiến trình đang chờ được cấp phép, tiến trình sẽ được kích hoạt chuyển sang trạng thái
sẵn sàng để thực thi.
Trong quá trình tạm dừng, tiến trình không thực hiện bất kỳ hoạt động nào hệ thống sẽ
dành CPU và tài nguyên khác cho các tiến trình khác. Khi tiến trình được kích hoạt
chuyển sang trạng thái sẵn sàng, được thêm vào ng đợi của CPU được lên lịch thực
thi bởi hệ thống.
Ngoài ra, tiến trình cũng có thể bị tạm dừng hoặc kích hoạt bởi một chương trình khác. Khi
một tiến trình được tạm dừng bởi một chương trình khác, chuyển sang trạng thái tạm
dừng. Khi tiến trình được kích hoạt bởi chương trình khác, chuyển sang trạng thái sẵn
sàng để thực thi.
Việc tạm dừng và kích hoạt tiến trình một phương thức quản lý tài nguyên hiệu quả, giúp
hệ thống quản lý tài nguyên và CPU một cách hiệu quả hơn.
Xử lý ngắt, cơ chế chuyển đổi ngữ cảnh:
Xử lý ngắt (interrupt handling) là quá trình xử lý các sự kiện bất ngờ (interrupts) được gửi
đến bởi các thiết bị ngoại vi hoặc các tiến trình khác. Khi một sự kiện bất ngờ xảy ra, hệ
điều hành sẽ tạm dừng tiến trình đang thực thi hiện tại thực hiện một qtrình xử
ngắt.
chế chuyển đổi ngữ cảnh (context switching) được sử dụng để lưu trạng thái của tiến
trình hiện tại chuyển sang tiến trình khác. Khi xử ngắt xảy ra, hệ thống sẽ tạm dừng
tiến trình đang thực thi hiện tại, lưu trạng thái của nó (ví dụ như thanh ghi và các biến trạng
thái khác) vào bộ nhớ và sau đó chuyển sang xử lý ngắt. Sau khi xử lý ngắt hoàn thành, hệ
thống sẽ phục hồi trạng thái của tiến trình được tạm dừng trước đó chuyển lại quyền
điều khiển cho tiến trình đó để tiếp tục thực thi.
Cơ chế chuyển đổi ngữ cảnh rất quan trọng đối với hệ điều hành đquản tài nguyên
CPU một cách hiệu quả. Việc chuyển đổi ngữ cảnh thể gây ra một khoảng thời gian đáng
kể trong việc thực thi tiến trình, vì vậy các hệ điều hành hiện đại đã tối ưu quá trình này để
giảm thiểu thời gian chuyển đổi ngữ cảnh.
Hạt nhân HĐH:
lOMoARcPSD| 61552860
Hạt nhân của một hệ điều hành phần trung tâm của nó, nơi tất cả các hoạt động của hệ
thống được thực hiện. Hạt nhân cung cấp các dịch vụ bản như quản bộ nhớ, xử
luồng dữ liệu và quản lý thiết bị phần cứng.
Hai mô hình kiến trúc HĐH:
Hai mô hình kiến trúc hệ điều hành phổ biến là monolithic và micro kernel.
Mô hình kiến trúc hệ điều hành monolithic được thiết kế dựa trên một hạt nhân lớn, trong
đó tất cả các dịch vụ hệ thống được triển khai trong cùng một không gian bộ nhớ. Hạt nhân
này cung cấp tất cả các chức năng hệ thống, từ quản lý bộ nhớ đến giao tiếp mạng và xử lý
tệp. hình monolithic thường đơn giản n hiệu quả hơn khi xử các tác vụ đơn
giản và ít yêu cầu phức tạp.
hình kiến trúc hđiều hành micro kernel được thiết kế để chia nhỏ hạt nhân ra thành
các module nhỏ, trong đó mỗi module chỉ cung cấp một dịch vụ nhất định. Các module này
thể được kết hợp với nhau để cung cấp tất cả các chức ng hệ thống. hình micro
kernel tập trung vào tính linh hoạt dễ mở rộng hơn khi xử các tác vụ phức tạp và đa
dạng hơn. Sự khác biệt giữa hai hình này phụ thuộc vào cách hệ thống được tổ chức
quản lý. hình kiến trúc monolithic thường đơn giản hiệu quả hơn trong khi
hình kiến trúc micro kernel tập trung vào tính linh hoạt và dễ mở rộng hơn.
Khái niệm loại trừ, ví dụ:
Loại trừ (mutual exclusion) một khái niệm trong khoa học máy tính, được sử dụng để
tả việc đảm bảo rằng chỉ một tiến trình (hoặc một tài nguyên) được truy cập vào
cùng một thời điểm. một khái niệm quan trọng trong việc xử đồng thời
(concurrency) trong các hệ thống máy tính.
Một ví dụ về loại trừ khi hai tiến trình cần truy cập vào cùng một tài nguyên, dụ như
một file hoặc một thiết bị phần cứng, chỉ thể thực hiện một tiến trình tại một thời
điểm. Trong trường hợp này, hệ thống phải đảm bảo rằng khi một tiến trình đang truy cập
vào tài nguyên y, thì tiến trình khác phải chđợi cho đến khi tài nguyên trở thành khả
dụng. Điều này đảm bảo rằng không xung đột xảy ra giúp đảm bảo tính nhất quán
của dữ liệu.
Các phương pháp để đạt được loại trừ có thể bao gồm sử dụng các biến đồng bộ hoặc khóa
để đồng bộ hóa truy cập vào tài nguyên chia sẻ, hoặc sử dụng các chế khác như
semaphore hoặc monitor để đảm bảo rằng chỉ một tiến trình được truy cập vào tài ngun
tại một thời điểm.
Thuật toán Dekker:
lOMoARcPSD| 61552860
Thuật toán Dekker một giải pháp để đạt được đồng bộ hoá giữa hai tiến trình trong môi
trường đa luồng. Thuật toán này được sử dụng để cài đặt phương pháp loại trừ giành cho
hai tiến trình.
Để sử dụng thuật toán Dekker, chúng ta cần sdụng hai biến boolena flag1 flag2, đại
diện cho việc tiến trình thứ nhất và thứ hai muốn truy cập vào khu vực tài nguyên được bảo
vệ. Ngoài ra, chúng ta cũng cần sử dụng biến turn để xác định tiến trình nào được ưu tiên
truy cập vào khu vực tài nguyên được bảo vệ.
Thuật toán Dekker sẽ được cài đặt như sau:
// Khai báo các biến cần sử dụng bool flag1
= false, flag2 = false; int turn = 1; // Tiến
trình thứ nhất do { flag1 = true; while
(flag2 == true) { if (turn == 2) { flag1 =
false; while (turn == 2) {
// Không làm gì cả
} flag1 =
true;
}
}
// Khu vực tài nguyên được bảo vệ
// ...
turn = 2;
flag1 = false;
// Tiếp tục thực hiện các công việc khác
} while (true); // Tiến
trình thứ hai do { flag2
= true; while (flag1 ==
true) { if (turn == 1) {
flag2 = false; while
(turn == 1) {
// Không làm gì cả
} flag2 =
true;
}
}
// Khu vực tài nguyên được bảo vệ
// ...
turn = 1; flag2
= false;
// Tiếp tục thực hiện các công việc khác
} while (true);
Trong thuật toán trên, khi tiến trình thứ nhất muốn truy cập o khu vực tài nguyên được
bảo vệ, nó sẽ đặt flag1 = true và kiểm tra nếu flag2 = true turn = 2 thì nó sẽ chờ đợi. Nếu
không, tiến trình sẽ truy cập vào khu vực tài nguyên được bảo vệ, sau đó đặt turn = 2 để
cho phép tiến trình thứ hai truy cập vào khu vực tài nguyên được bảo vệ. Khi tiến trình thứ
nhất đã hoàn thành công việc của mình, nó đặt flag1 = false và tiếp tục thực hiện các công
việc khác.
lOMoARcPSD| 61552860
Tương tự, khi tiến trình thứ hai muốn p cận vào khu vực tài nguyên được bảo vệ, nó sẽ đặt
flag2 = true và kiểm tra nếu flag1 = true turn = 1 thì nó sẽ chờ đợi. Nếu không, tiến trình
sẽ truy cập vào khu vực tài nguyên được bảo vệ, sau đó đặt turn = 1 để cho phép tiến trình
thứ nhất truy cập vào khu vực tài nguyên được bảo vệ. Khi tiến trình thứ hai đã hoàn thành
công việc của mình, nó đặt flag2 = false và tiếp tục thực hiện các công việc khác.
Điểm yếu của thuật toán Dekker là nó có thể dẫn đến tình trạng đói tài nguyên (starvation),
khi một tiến trình không được phép truy cập vào khu vực tài nguyên được bảo vệ trong thời
gian dài do tiến trình khác luôn ưu tiên được truy cập vào khu vực này. Để khắc phục điều
này, chúng ta thể sử dụng các giải pháp khác như phương pháp thăng bậc (priority
ceiling) hoặc phương pháp độ ưu tiên (priority inheritance) để đảm bảo công bằng cho các
tiến trình trong việc truy cập vào khu vực tài nguyên được bảo vệ.
Loại trừ bằng lệnh Testandset:
Để cài đặt loại trừ bằng lệnh TestAndSet, chúng ta có thể sử dụng một biến shared flag để
đánh dấu trạng thái của khu vực tài nguyên được bảo vệ. Các tiến trình sẽ lần lượt thực
hiện thao tác đặt flag thành true bằng lệnh TestAndSet kiểm tra giá trị của flag để xác
định liệu khu vực tài nguyên được bảo vệ đang được sử dụng bởi tiến trình khác hay
không.
Dưới đây là một ví dụ về cài đặt loại trừ bằng lệnh TestAndSet cho 2 tiến trình:
// Khai báo biến shared flag và khởi tạo giá trị là false shared
bool flag = false;
// Tiến trình 1 while
(TestAndSet(&flag) == true) {
// Nếu flag đang bằng true thì chờ đợi
}
// Thực hiện truy cập vào khu vực tài nguyên được bảo vệ
// Sau khi hoàn thành, đặt lại giá trị của flag là false
// Tiến trình 2 while
(TestAndSet(&flag) == true) {
// Nếu flag đang bằng true thì chờ đợi
}
// Thực hiện truy cập vào khu vực tài nguyên được bảo vệ
// Sau khi hoàn thành, đặt lại giá trị của flag là false
lOMoARcPSD| 61552860
Trong ví dụ trên, hàm TestAndSet được sử dụng để kiểm tra giá trị của biến shared flag và
đặt giá trị của nó thành true nếu flag đang bằng false. Hàm này sẽ trả về true nếu giá trị của
flag ban đầu true, tức khu vực tài nguyên được bảo vệ đang được sdụng bởi tiến
trình khác tiến trình hiện tại phải chờ đợi. Nếu giá trị ban đầu của flag false, hàm
TestAndSet sẽ đặt giá trị của flag thành true và trả về false, cho phép tiến trình hiện tại truy
cập vào khu vực tài nguyên được bảo vệ.
Khái niệm Semaphore, ứng dụng:
Semaphore là một chế đồng bộ hóa trong hthống máy tính, được sử dụng để giải quyết
vấn đề tài nguyên chia sẻ giữa các tiến trình hoặc luồng trong một hệ thống đa nhiệm.
Semaphore có thể được hiểu là một biến đếm được sử dụng để kiểm soát việc truy cập vào
tài nguyên chia sẻ. lưu giữ số lượng tài nguyên sẵn đảm bảo rằng các tiến trình
hoặc luồng không thể truy cập tài nguyên đó nếu số ợng tài nguyên hiện tại đã đạt đến
giới hạn.
Có hai loại Semaphore:
+Semaphore nhị phân (Binary Semaphore): chỉ hai giá trị 0 1. Semaphore nhị phân
được sử dụng để đồng bộ hóa quy trình đảm bảo rằng chỉ một tiến trình hoặc luồng
được phép truy cập tài nguyên chia sẻ vào một thời điểm nhất định.
+Semaphore đếm (Counting Semaphore): một biến đếm thể giá trlớn hơn hai.
Semaphore đếm được sử dụng để quản lý tài nguyên chia sẻ mà có sẵn nhiều hơn một.
Ứng dụng của Semaphore:
+Semaphore được sử dụng để đồng bộ hóa truy cập vào các tài nguyên chia sẻ trong các hệ
thống đa tiến trình.
+Semaphore được sử dụng để quản lý bộ nhớ chia sẻ giữa các tiến trình.
+Semaphore được sử dụng để giải quyết vấn đề deadlock (tình trạng một số tiến trình bị
khóa vì chúng đang chờ đợi tài nguyên được giải phóng bởi các tiến trình khác không
thể tiếp tục thực hiện).
+Semaphore được sử dụng để quản lý các tác vụ đồng bộ và đảm bảo tính toàn vẹn dữ liệu
trong các ứng dụng song song.
Khái niệm deadlock, ví dụ tình trạng deadlock:
Deadlock là một trạng thái trong hệ thống máy tính, khi một nhóm các tiến trình đang chờ
đợi tài nguyên được giải phóng bởi các tiến trình khác trong nhóm đó. Tuy nhiên, các tiến
trình trong nhóm đều không thể thực hiện tiếp mà đang chờ đợi nhau, dẫn đến hệ thống bị
treo và không thể tiếp tục hoạt động.
lOMoARcPSD| 61552860
Ví dụ, giả sử có hai tiến trình A và B, và hai tài nguyên là R1 và R2. Tiến trình A đang giữ
tài nguyên R1 yêu cầu tài nguyên R2, trong khi tiến trình B đang giữ tài nguyên R2
yêu cầu tài nguyên R1 để hoàn thành tác vụ. Trong trường hợp này, tiến trình AB sẽ bị
treo đợi vô hạn cho đến khi tài nguyên được giải phóng.
Các trường hợp deadlock thường xảy ra trong các hệ thống đa nhiệm, khi nhiều tiến trình
cùng chia sẻ các tài nguyên hệ thống và đang cùng đợi nhau để sử dụng các tài nguyên còn
lại. Để giải quyết vấn đề này, hệ điều hành thể sử dụng các giải pháp như phát hiện
deadlock, tránh deadlock hoặc khắc phục deadlock.
Các điều kiện xuất hiện dealock:
Để xảy ra deadlock trong hệ thống máy tính, cần phải đáp ứng các điều kiện sau đây:
1. Sự cạnh tranh về tài nguyên: Hai hoặc nhiều tiến trình cần phải sử dụng một tài
nguyên độc quyền, mà không thể chia sẻ được giữa các tiến trình.
2. Không thể giải phóng tài nguyên: Tiến trình đã giữ một tài nguyên yêu cầu tài
nguyên khác mà không thể giải phóng tài nguyên hiện có.
3. Không có giải pháp thay thế: Tiến trình không thể sử dụng tài nguyên khác thay thế
cho tài nguyên mà nó đang yêu cầu.
4. Chờ đợi lẫn nhau: Hai tiến trình cùng chờ đợi tài nguyên được giải phóng bởi tiến
trình kia mà không thực hiện được bất kỳ thao tác nào khác.
Khi tất cả các điều kiện trên được đáp ứng, tdeadlock sẽ xảy ra. Để tránh deadlock, các
giải pháp như phát hiện deadlock, tránh deadlock hoặc khắc phục deadlock có thể được sử
dụng.
Thuật toán Banker, trạng thái của hệ thống:
Thuật toán Banker một thuật toán phát hiện deadlock trong hệ thống máy tính. Thuật
toán này được sử dụng để xác định xem thể thực hiện yêu cầu tài nguyên của một tiến
trình không gây ra deadlock hay không. Thuật toán Banker sử dụng một bảng đlưu
trữ thông tin về tài nguyên của hệ thống và các yêu cầu tài nguyên của các tiến trình.
Trạng thái của hệ thống có thể được xác định bằng cách sử dụng các thông số sau đây:
1. Available: Số lượng tài nguyên có sẵn trong hệ thống.
2. Allocation: Mảng 2 chiều ghi lại số lượng tài nguyên đã được cấp phát cho từng tiến
trình.
3. Need: Mảng 2 chiều ghi lại số lượng i nguyên cần phải cấp phát cho từng tiến trình để
hoàn thành tác vụ.
lOMoARcPSD| 61552860
+Trạng thái ổn định: là trạng thái mà HĐH đảm bảo tất cả tiến trình kết thúc sau 1 khoảng
thời gian hữu hạn nào đó.
+Trạng thái không ổn định: là trạng thái có thể dẫn tới deadlock.
Nguyên tắc hoạt động của thuật toán banker:
Khi một tiến trình vào hệ thống, tiến trình đó cần phải đưa ra số lượng thực thể tối đa mà
cần (để từ đó hệ thống thể xác định trạng thái an toàn, dựa o việc thoả mãn u
cầu của tất cả process). Con số này không được vượt quá số lượng tài nguyên hiện đang
trong hệ thống.
Khi một process yêu cầu tài nguyên, hệ thống sẽ xem xét : Liệu sau khi cấp tài nguyên thì
hệ thống còn đang trạng thái an toàn hay không ? Nếu thì hthống sẽ cấp, ngược
lại hệ thống sẽ không cấp tài nguyên cho process. Lúc đó process phải chờ đến khi các
process khác giải phóng đủ số lượng tài nguyên cần thiết.
- Cấu trúc dữ liệu cho giải thuật Banker :
Gọi m là số loại tài nguyên đang xét trong giải thuật Banker.
Gọi n là số lượng tiến trình đang xét trong giải thuật Banker.
+ Available: vector độ dài m. Nếu Available[j] = k, có k đơn vị tài nguyên Rj sẵn sàng
+ Max: ma trận n m. Nếu Max[i,j] = k, tiến trình Pi có thể yêu cầu tối đa k đơn vị tài
nguyên Rj
+ Allocation: ma trận n m. Nếu Allocation[i,j] = k thì Pi đang được cấp phát k đơn vị Rj
+ Need: Ma trận n m. Nếu Need[i,j] = k thì Pi có thể yêu cầu thêm k đơn vị Rj để thể
kết thúc
Need[i,j] = Max[i,j] Allocation[i,j]
Phát hiện deadlock qua đồ thị phân bố tài nguyên:
Phát hiện deadlock qua đồ thị phân bố tài nguyên một phương pháp phổ biến để phát
hiện deadlock trong hệ thống máy tính. Phương pháp này sử dụng đồ thị để biểu diễn mối
quan hệ giữa các tiến trình và tài nguyên trong hệ thống.
Để sử dụng phương pháp này, ta sẽ vẽ một đồ thị phân bố tài nguyên, trong đó các đỉnh đại
diện cho các tiến trình và các tài nguyên. Các cạnh trên đồ thị biểu diễn mối quan hệ giữa
tiến trình tài nguyên, chẳng hạn như tiến trình yêu cầu một tài nguyên hoặc đang giữ
một tài nguyên.
lOMoARcPSD| 61552860
Để phát hiện deadlock trong đồ thị phân bố tài nguyên, ta sử dụng thuật toán tìm chu trình
trong đồ thị. Thuật toán này tìm kiếm các chu trình trong đồ thị, tức là các vòng lặp mà một
tiến trình yêu cầu một tài nguyên mà đang bị giữ bởi một tiến trình khác, sẽ thông báo
nếu tìm thấy chu trình.
Nếu tìm thấy chu trình, nó cho thấy rằng hệ thống đang bị deadlock. Tuy nhiên, nếu không
tìm thấy chu trình, điều đó không đảm bảo rằng hệ thống không bị deadlock, thể
đang ở trong trạng thái deadlock nhưng không có chu trình trong đồ thị.
Khái niệm bộ nhớ ảo, ưu nhược điểm:
Bộ nhớ ảo (virtual memory) là một kỹ thuật được sử dụng trong hệ thống máy tính để cho
phép các tiến trình hoạt động với lượng dữ liệu lớn hơn so với bộ nhớ RAM có sẵn trên hệ
thống. Kỹ thuật này cho phép các chương trình truy cập o bộ nhớ vật lớn hơn bằng
cách sử dụng bộ nhớ đệm để tự động di chuyển các phần của chương trình giữa bộ nhớ
RAM đĩa cứng. Các ứng dụng hoạt động như thể tất cả các bộ nhớ đều nằm trong bộ
nhớ RAM, trong khi thực tế chỉ một phần nhỏ các dữ liệu thực sự được lưu trữ trong
RAM và phần còn lại được lưu trữ trên đĩa cứng.
Ưu điểm của bộ nhớ ảo:
1. Tăng dung lượng bnhớ truy cập được: Bộ nhớ ảo cho phép các chương trình sử
dụng bộ nhớ vật lớn hơn bộ nhớ RAM sẵn trên hệ thống, giúp tăng dung lượng bộ
nhớ truy cập được.
2. Cho phép chạy nhiều tiến trình cùng lúc: Bộ nhớ ảo cho phép nhiều tiến trình hoạt
động cùng lúc trên hệ thống, mỗi tiến trình có thể sử dụng một phần của bộ nhớ vật lý mà
không ảnh hưởng đến các tiến trình khác.
3. Giảm thời gian phản hồi của hệ thống: Khi sử dụng bộ nhớ ảo, các phần của chương
trình được di chuyển giữa bộ nhớ RAM và đĩa cứng tự động, giúp giảm thời gian phản hồi
của hệ thống.
4. Tiết kiệm bộ nhớ RAM: Kỹ thuật bộ nhảo cho phép sử dụng bộ nhớ RAM hiệu
quả hơn, vì chỉ những phần cần thiết của chương trình được tải lên bộ nhớ RAM.
Nhược điểm của bộ nhớ ảo:
1. Hiệu suất chậm hơn: Sử dụng bộ nhớ ảo sẽ làm giảm hiệu suất của hệ thống, vì khi
các phần của chương trình được di chuyển giữa bộ nhớ RAM và đĩa cứng, nó sẽ tốn thêm
thời gian cho việc truy cập dữ liệu.
2. Phát sinh các lỗi khi sử dụng: Khi sử dụng bộ nhớ ảo, có thể xảy ra các lỗi như tràn
bộ đệm hoặc lỗi khi đọc ghi dữ liệu vào đĩa cứng. Điều này có thể dẫn đến các lỗi hệ thống
nghiêm trọng hoặc mất dữ liệu.
lOMoARcPSD| 61552860
3. Tốn nhiều tài nguyên: Sử dụng bộ nhớ ảo đòi hỏi tài nguyên đĩa cứng và CPU để di
chuyển các phần của chương trình giữa bộ nhớ RAM đĩa cứng. Việc này thể m
giảm hiệu suất của hệ thống và tốn nhiều tài nguyên.
4. Không thể sử dụng với các ứng dụng yêu cầu bộ nhớ lớn: Mặc bộ nhớ ảo giúp
tăng dung lượng bộ nhớ truy cập được, tuy nhiên, các ứng dụng yêu cầu bộ nhớ lớn, chẳng
hạn như các ứng dụng đồ họa hoặc các ứng dụng xử lý video, thì bộ nhớ ảo không thể đáp
ứng đủ nhu cầu bộ nhớ của chúng.
Ánh xạ địa chỉ theo khối:
Ánh xạ địa chỉ theo khối (block addressing) là một phương pháp đquản bộ nhớ trong
đó bộ nhớ được chia thành các khối kích thước nhất định. Mỗi khối được đánh địa chỉ
chứa một số lượng dữ liệu nhất định. Khi một truy cập đến bộ nhớ được yêu cầu, hệ
thống sẽ tìm kiếm khối chứa địa chỉ này và trả về dữ liệu được yêu cầu từ khối này.
Việc sử dụng ánh xạ địa chỉ theo khối có nhiều lợi ích, bao gồm:
1. Cải thiện hiệu suất: Ánh xạ địa chỉ theo khối giúp cải thiện hiệu suất bằng cách giảm
bớt số lần truy cập bộ nhớ vật lý. Khi một khối được truy cập, các địa chỉ khác trong khối
đó cũng được tải lên bộ nhớ đệm cùng với dữ liệu được yêu cầu, giúp giảm độ trễ trong
quá trình truy cập bộ nhớ.
2. Quản bộ nhớ hiệu quả hơn: Chia bộ nhớ thành các khối cố định kích thước
nhất định giúp cho việc quản lý bộ nhớ trở nên dễ dàng hơn. Hệ thống có thể dễ dàng kiểm
soát lượng dữ liệu được tải lên và xuống, giúp giảm thiểu rủi ro về lỗi quản lý bộ nhớ.
Tuy nhiên, cũng có một số hạn chế của ánh xạ địa chỉ theo khối, bao gồm:
1. Lãng phí không gian bộ nhớ: Vì mỗi khối được định kích thước cố định, nếu dữ liệu
không đủ lớn để điền vào khối thì sẽ có phần không sử dụng, dẫn đến lãng phí không gian
bộ nhớ.
2. Làm giảm hiệu quả khi kích thước khối không phù hợp: Nếu kích thước của khối
không được định kích thước hợp lý, ánh xạ địa chỉ theo khối thể làm giảm hiệu quả
trong việc truy cập bộ nhớ.
Tóm lại, ánh xạ địa chỉ theo khối một phương pháp quản bộ nhớ được sử dụng trong
các hệ thống máy tính. Việc sử dụng ánh xạ địa chỉ theo khối giúp cải thiện hiệu suất
quản lý bộ nhớ hiệu quả hơn, tuy nhiên cũng có những hạn chế nhất định. Kích thước của
khối được chia ra phải được cân nhắc kỹ lưỡng để tránh lãng phí không gian bộ nhớ
giảm hiệu suất truy cập. Ngoài ra, ánh xạ địa chỉ theo khối không giải quyết được vấn đề
về sự khác nhau giữa bộ nhớ vật bộ nhớ ảo, vậy cần phải sử dụng thêm các kỹ thuật
khác như phân trang để quản lý bộ nhớ một cách hiệu quả hơn.
lOMoARcPSD| 61552860
Trong các hệ thống máy tính hiện đại, ánh xạ địa chỉ theo khối thường được sử dụng để
quản lý bộ nhớ trong các trường hợp cần đọc và ghi dữ liệu lớn. Ví dụ, trong các ứng dụng
đồ họa hoặc xử lý video, dữ liệu được xử lý thường có kích thước lớn và cần phải được lưu
trữ truy cập một cách hiệu quả. Sử dụng ánh xạ địa chỉ theo khối thể giúp cải thiện
hiệu suất và tối ưu hóa việc quản lý bộ nhớ trong các trường hợp này.
Tổ chức bộ nhớ theo trang :
Trong hệ thống máy tính, tổ chức bộ nhớ theo trang một phương pháp quản bộ nhớ
ảo, trong đó bộ nhảo được chia thành các trang kích thước nhỏ hơn, thường 4KB
hoặc 8KB. Mỗi trang được gán một địa chỉ ảo, khi một chương trình yêu cầu truy cập
đến một trang nào đó, hệ điều hành sẽ tìm kiếm chuyển đổi địa chảo này sang địa ch
vật lý tương ứng trên bộ nhớ chính.
Việc sử dụng tổ chức bộ nhớ theo trang cho phép hệ thống máy tính cung cấp bộ nhớ o có
kích thước lớn hơn so với kích thước bộ nhớ vật lý hiện có trên hệ thống, do đó cho phép
chạy nhiều chương trình đồng thời. Ngoài ra, phương pháp này cũng giúp giảm tải cho bộ
nhớ chính bằng cách chỉ tải một phần của bộ nhớ ảo vào bộ nhớ chính khi cần thiết, và giải
phóng lại phần bộ nhớ này khi không còn sử dụng nữa.
Tuy nhiên, tổ chức bộ nhớ theo trang cũng có một số hạn chế. Việc chuyển đổi giữa địa chỉ
ảo và địa chỉ vật lý tốn kém thời gian, do đó có thể làm giảm hiệu suất hệ thống. Ngoài ra,
việc tách bộ nhớ thành các trang cũng tạo ra sphân tán dữ liệu, khiến cho việc truy cập
bộ nhớ trở nên khó khăn hơn so với việc truy cập vào một vùng liên tục của bộ nhớ. Tổ
chức bộ nhớ theo đoạn:
Trong hệ thống máy tính, tổ chức bộ nhớ theo đoạn một phương pháp quản lý bộ nhớ ảo,
trong đó bộ nhớ ảo được chia thành các đoạn có kích thước lớn hơn so với tổ chức bộ nhớ
theo trang, thường là một số nguyên lớn hơn 64KB. Mỗi đoạn được gán một địa chỉ ảo, và
khi một chương trình yêu cầu truy cập đến một đoạn nào đó, hệ điều hành sẽ tìm kiếm và
chuyển đổi địa chỉ ảo này sang địa chỉ vật lý tương ứng trên bộ nhớ chính. So với tổ chức
bộ nhớ theo trang, tổ chức bộ nhớ theo đoạn cho phép chương trình truy cập vào các vùng
bộ nhớ lớn hơn, do đó thể giảm số lần chuyển đổi giữa địa chỉ ảo địa chỉ vật lý,
tăng hiệu suất hệ thống. Ngoài ra, việc tách bộ nhớ thành các đoạn kích thước lớn hơn
cũng giúp giảm tải cho bộ điều khiển bộ nhớ, giảm số lần phải truy cập vào bộ điều
khiển này.
Tuy nhiên, tổ chức bộ nhớ theo đoạn cũng một số hạn chế. Do các đoạn kích thước
lớn hơn, nên số lượng các đoạn cần phải được quản trên hệ thống sẽ ít hơn so với số
lượng các trang trong tchức bộ nhớ theo trang. Tuy nhiên, các đoạn cũng phải được tải
vào bộ nhớ chính khi cần thiết, do đó việc quản lý bộ nhớ vẫn cần phải được thực hiện một
cách hiệu quả để tránh lãng phí không gian bộ nhớ và giảm hiệu suất truy cập.
Tổ chức bộ nhớ kết hợp trang, đoạn:
lOMoARcPSD| 61552860
Trong hệ thống y tính, tổ chức bộ nhớ kết hợp trang đoạn là một phương pháp quản
lý bộ nhớ ảo, kết hợp cả hai phương pháp tổ chức bộ nhớ theo trang và đoạn. Phương pháp
này được sử dụng để tối ưu hóa hiệu suất truy cập bộ nhớ của hệ thống.
Cụ thể, trong tổ chức bộ nhớ kết hợp trang đoạn, bộ nhớ ảo được chia thành các đoạn,
và mỗi đoạn được chia thành các trang có kích thước nhỏ hơn so với kích thước của đoạn.
Khi một chương trình yêu cầu truy cập đến một địa chỉ ảo, hệ điều hành sẽ sử dụng phương
pháp ánh xạ địa chỉ để chuyển đổi địa chỉ ảo thành địa chỉ vật tương ứng trên bộ nhớ
chính. Đồng thời, hệ điều hành cũng sẽ sử dụng phương pháp quản lý bộ nhớ theo trang để
tải và giải phóng các trang cần thiết vào và ra khỏi bộ nhớ chính.
Phương pháp tổ chức bộ nhớ kết hợp trang và đoạn có thể tối ưu hóa hiệu suất truy cập bộ
nhớ của hệ thống bằng cách giảm số lần phải chuyển đổi giữa địa chỉ ảo địa chỉ vật lý.
Đồng thời, phương pháp này cũng cho phép truy cập các ng bnhớ lớn hơn so với tổ
chức bộ nhớ theo trang, do đó tăng hiệu suất hệ thống. Tuy nhiên, việc quản lý bộ nhớ kết
hợp trang và đoạn cũng phức tạp hơn so với các phương pháp tổ chức bộ nhớ khác, và đòi
hỏi sự tối ưu hóa cao hơn trong việc quản bộ nhớ để tránh lãng phí không gian bộ nhớ
và giảm hiệu suất truy cập.
Các chiến lược loại bỏ trang bộ nhớ:
Trong hệ thống máy tính, quản lý bộ nhớ ảo một hoạt động rất quan trọng để tối ưu hóa
hiệu suất hệ thống. Khi bộ nhớ vật của hệ thống bị hạn chế, các trang bộ nhớ cần phải
được loại bỏ để giải phóng bộ nhớ. Dưới đây là các chiến lược loại bỏ trang bộ nhớ thường
được sử dụng trong hệ thống máy tính:
1. FIFO (First-In, First-Out): Đây chiến ợc đơn giản nhất, trong đó các trang bộ
nhớ được loại bỏ theo thứ tự đến trước đến đi sau. Khi bộ nhđầy, trang đầu tiên được nạp
vào bộ nhớ sẽ được loại bỏ.
2. LRU (Least Recently Used): Đây chiến lược phổ biến nhất trong các hệ thống
quản bộ nhớ ảo, trong đó các trang bộ nhớ được loại bỏ dựa trên thời gian không sử dụng
gần nhất. Trang không được sử dụng trong một khoảng thời gian dài nhất sẽ được loại bỏ
trước.
3. MFU (Most Frequently Used): Đây là chiến lược ngược lại của LRU, trong đó các
trang bộ nhớ được loại bỏ dựa trên số lần được sử dụng nhiều nhất. Các trang bộ nhớ được
sử dụng nhiều nhất sẽ được giữ lại trong bộ nhớ và các trang ít được sử dụng sẽ được loại
bỏ.
4. LRU-K: Đây là một biến thể của LRU, trong đó thay vì chỉ xem xét thời gian không
sử dụng gần nhất của một trang, nó xem xét thời gian không sử dụng của k trang liên tiếp.
lOMoARcPSD| 61552860
5. Random: Trong chiến lược này, các trang bộ nhớ được loại bỏ ngẫu nhiên, không
xem xét thời gian không sử dụng hoặc số lần sử dụng.
Tùy thuộc vào tính chất của ứng dụng cấu hình hệ thống, các chiến lược loại bỏ trang
bộ nhớ sẽ có hiệu quả khác nhau.
Các chiến lược nạp trang:
Trong hệ thống quản bộ nhớ ảo, khi một trang yêu cầu được truy cập nhưng không
sẵn trong bộ nhớ, trang đó phải được nạp o bộ nhớ để truy cập. Dưới đây các chiến
lược nạp trang bộ nhớ thường được sử dụng trong hệ thống máy tính:
1. Demand Paging: Đây là chiến lược phổ biến nhất trong hệ thống quản lý bộ nhớ ảo.
Trang chỉ được nạp vào bộ nhớ khi yêu cầu truy cập đến trang đó. Điều này giúp tiết kiệm
bộ nhớ giảm thời gian nạp trang. Tuy nhiên, nếu quá nhiều yêu cầu truy cập cùng
một lúc, hiệu suất của hệ thống có thể bị ảnh hưởng.
2. Prepaging: Trong chiến lược này, các trang được nạp vào bộ nhớ trước khi yêu cầu
truy cập đến chúng. Các trang khác thể được nạp sau đó theo yêu cầu truy cập. Chiến
lược này giúp giảm thời gian truy cập trang đầu tiên nhưng cũng dẫn đến việc sử dụng
nhiều bộ nhớ hơn.
3. Demand Prepaging: Đây sự kết hợp giữa demand paging prepaging. Trong
chiến ợc này, các trang đầu tiên được nạp vào bộ nhớ trước khi yêu cầu truy cập đến
chúng. Các trang khác được nạp theo yêu cầu truy cập. Chiến lược này giúp giảm thời gian
truy cập trang đầu tiên và tiết kiệm bộ nhớ.
4. Cluster Paging: Trong chiến lược này, các trang được nạp theo cụm thay từng
trang. Khi yêu cầu truy cập đến một trang trong cụm, toàn bộ cụm sẽ được nạp vào bộ nhớ.
Chiến lược này giúp tăng hiệu suất hệ thống bằng cách giảm số lần truy cập đĩa tiết kiệm
thời gian nạp trang. Tuy nhiên, nó cũng dẫn đến việc sử dụng nhiều bộ nhớ hơn.
Tùy thuộc vào nh chất của ứng dụng cấu hình hệ thống, các chiến lược nạp trang bộ
nhớ sẽ có hiệu quả khác nhau.
Khái niệm lập lịch cho BXL, lượng tử thời gian, mức ưu tiên, có trưng
dụng/hoán đổi/preemtive:
Trình lập lịch cho bộ x(BXL) một phần mềm quản các tiến trình tài nguyên
trên hệ thống máy tính. Nhiệm vụ chính của trình lập lịch là quyết định tiến trình nào được
thực thi trên CPU, theo một số tiêu chí như độ ưu tiên, lượng tử thời gian, hoặc trạng thái
của tiến trình.
Lượng tử thời gian khoảng thời gian tối đa một tiến trình thể thực thi trên CPU
trước khi bị chuyển sang tiến trình khác. giúp đảm bảo rằng mỗi tiến trình được thực
thi một lượng tài nguyên tối thiểu và hạn chế sự chiếm giữ CPU quá lâu của một tiến trình.
lOMoARcPSD| 61552860
Mức ưu tiên được sử dụng để xác định thứ tự thực thi các tiến trình. Các tiến trình có mức
ưu tiên cao hơn sẽ được thực thi trước các tiến trình mức ưu tiên thấp hơn. Điều này
giúp đảm bảo rằng các tiến trình quan trọng hơn được thực thi trước, nhưng có thể dẫn đến
đói tài nguyên cho các tiến trình có mức ưu tiên thấp.
Trình lập lịch thể được thực hiện với hoán đổi (preemptive) hoặc không
(nonpreemptive). Trong trường hợp lập lịch hoán đổi, một tiến trình có thể bị gián đoạn và
chuyển sang tiến trình khác nếutiến trình có độ ưu tiên cao hơn hoặc nếu đã hoàn thành
lượng tử thời gian được gán cho nó. Trong khi đó, trong trường hợp lập lịch không hoán
đổi, một tiến trình sẽ được thực thi trên CPU cho đến khi nó hoàn thành hoặc bị gián đoạn
do phát sinh sự kiện như chờ đợi I/O.
Trình lập lịch có rất nhiều ứng dụng trong quản lý tài nguyên và thực thi các tiến trình trên
hệ thống máy tính. Các thuật toán lập lịch khác nhau được sử dụng để đáp ứng các yêu cầu
khác nhau của hệ thống, từ đơn giản như First-Come-First-Serve (FCFS) cho đến phức tạp
hơn như Multilevel Feedback Queue hoặc đa xử lý (multiprocessing).
Các cơ chế lập lịch cho BXL:
Theo cơ chế round robin:
- Mỗi tiến trình đc cấp khoảng tời gian lượng tử CPU time (time quantum q), thường 10-
100 ms
- Hết thời gian lượng tử:
+ Timer interrup => HDH can thiệp, đưa tiến trình vào cuối danh sách, chuyển thực thi cho
tiến trình tiếp theo
- Đánh giá
+ Nếu n process, quantum = q (ms) => mỗi process chiếm 1/n CPU time (theo mỗi lần
không quá q ms). Thời gian chờ <= (n-1)q ms
- Chú ý về thời gian lượng tử q
+ nếu q lớn => trở thành FIFO
+ nếu q nhỏ => chi phí context switch sẽ cao Giải
thích về các cơ chế lập lịch cho BXL:
1. FCFS (First-Come, First-Served): Là phương pháp đơn giản nhất, thực hiện lập lịch
theo thứ tự đơn giản của các tiến trình, nghĩa tiến trình nào đến trước sẽ được thực thi
trước. chế lập lịch này thường được sử dụng cho hệ thống ít bận rộn, không nhiều
yêu cầu về thời gian hoàn thành.
lOMoARcPSD| 61552860
2. SSTF (Shortest Seek Time First): Là phương pháp ưu tiên cho các tiến trình có thời
gian đọc/ghi dữ liệu trên đĩa thấp nhất. SSTF thường được sử dụng trong hệ thống
đĩa cứng, nơi việc đọc/ghi dữ liệu thao tác chậm nhất chiếm phần lớn thời gian
chạy của hệ thống.
3. SJF (Shortest Job First): Là phương pháp ưu tiên cho các tiến trình có thời gian thực
hiện ngắn nhất. SJF sẽ ưu tiên lập lịch cho các tiến trình thời gian thực hiện ngắn nhất
trước, giúp giảm thời gian chờ đợi và tăng hiệu suất hệ thống. Tuy nhiên, nó có thể gây ra
hiện tượng starvation (các tiến trình dài hơn không được lập lịch) nếu các tiến trình có thời
gian thực hiện ngắn không ngừng xuất hiện.
4. Hàng đợi nhiều mức (Multilevel Queue): phương pháp lập lịch phân cấp, trong
đó các tiến trình được chia thành các mức ưu tiên khác nhau và được đưa vào các hàng đợi
khác nhau dựa trên loại hoạt động hoặc ưu tiên. Cơ chế lập lịch này thường được sử dụng
trong các hệ thống đa nhiệm hoặc có nhiều loại tiến trình khác nhau như tiến trình I/O, tiến
trình nền, tiến trình ưu tiên cao, v.v.
Yếu tố thời gian lượng tử và mức ưu tiên của tiến trình trong lập lịch:
- Thời gian lượng tử: thời gian lớn nhất tiến trình chiếm BXL, HĐH sẽ thiết
lập 1 đồng hồ để đo quantum và sinh ra các tín hiệu ngắt thời gian. Gía trị của quantum
phụ thuộc vào tần suất hoạt động số ợng của process, thường ko đổi tuy nhiên trong
1 số trường hợp thay đổi tạm thời để phục vụ cho mục đích ngắn hạn
- Mức ưu tiên: + Mức độ quan trọng của process được thể hiện qua mức ưu tiên,
process có mức ưu tiên cao sẽ được sử dụng nhiều tài nguyên
+ HĐH gán cho process 1 mức ưu tiên theo những tiêu chuẩn xác định
Cấu trúc và hoạt động của đĩa từ:
Đĩa từ là một thiết bị lưu trữ dữ liệu cơ học. gồm một đĩa xoay nhanh được phủ một lớp
từ hoặc chất liệu khác, được sử dụng để lưu trdữ liệu. Các dữ liệu được lưu trữ trên đĩa
từ bằng cách sắp xếp thành các vùng trên bề mặt của đĩa từ được gọi là "track". Mỗi track
được chia thành các phần gọi "sector" mỗi sector thể lưu trữ một lượng dữ liệu
nhất định.
Hoạt động của đĩa từ bao gồm quá trình đọc và ghi dữ liệu từ hoặc lên đĩa từ. Khi cần đọc
hoặc ghi dữ liệu, đầu đọc/ghi được đặt vị trí trên bề mặt của đĩa từ, theo track sector
tương ứng. Sau đó, đầu đọc/ghi sẽ di chuyển theo chiều ray từ bên này sang bên kia để đọc
hoặc ghi dữ liệu trên các sector khác nhau trên track đó.
Các đĩa từ thường được sử dụng trong các hệ thống lưu trữ lớn, như các máy chủ, hệ thống
lưu trữ RAID hoặc hệ thống lưu trữ dự phòng. Tuy nhiên, do tốc độ truy cập trễ hơn so với
lOMoARcPSD| 61552860
các thiết bị lưu trữ mới hơn như ổ đĩa cứng SSD hoặc bộ nhớ flash, nên đĩa từ ngày càng ít
được sử dụng trong các ứng dụng yêu cầu tốc độ cao.
Các cơ chế tối ưu thời gian định vị (seek time):
Có một số cơ chế tối ưu thời gian định vị (seek time) trên đĩa cứng:
1. Shortest Seek Time First (SSTF): Lựa chọn tiếp theo trường hợp thời gian di
chuyển đĩa ngắn nhất. Giải thuật SSTF sắp xếp các yêu cầu của người dùng theo thứ tự
tăng dần về khoảng cách vị trí hiện tại của đầu đọc đến yêu cầu đó. Nhược điểm của giải
thuật SSTF là thể xảy ra hiện tượng đói tuyến tính (starvation) đối với các yêu cầu ở các
vùng xa nhau.
2. SCAN: Giải thuật SCAN tương tự như giải thuật Elevator, đầu đọc di chuyển từ đầu
đến cuối đĩa, sau đó quay lại đầu đĩa di chuyển tiếp theo. Giải thuật SCAN giải quyết
được vấn đề đói tuyến tính nhưng lại dễ dẫn đến việc các yêu cầu đợi lâu khi chúng ở đầu
hoặc cuối đĩa.
3. C-SCAN: C-SCAN tương tự giải thuật SCAN, nhưng khi đầu đọc đến cuối đĩa,
sẽ quay lại về đầu đĩa và di chuyển tiếp theo. C-SCAN tránh được hiện tượng các yêu cầu
đợi lâu khi chúng ở cuối đĩa, nhưng lại dẫn đến đói tuyến tính đối với các yêu cầu ở giữa.
4. LOOK: Giải thuật LOOK cũng giống như giải thuật SCAN, tuy nhiên chỉ di
chuyển đến phần tử cuối cùng yêu cầu xếp hàng, sau đó quay trở lại di chuyển
đến phần tử đầu tiên có yêu cầu xếp hàng. Giải thuật LOOK giúp tránh được đói tuyến tính
và đợi lâu cho các yêu cầu ở đầu hoặc cuối đĩa.
5. C-LOOK: Giải thuật C-LOOK tương tự như giải thuật LOOK, tuy nhiên chỉ quay
lại khi đến phần tử cuối cùng yêu cầu xếp hàng, sau đó di chuyển đến phần tử
đầu tiên yêu cầu xếp hàng. Giải thuật C-LOOK giúp tránh được đói tuyến tính đợi
lâu cho các yêu cầu ở giữa.
Khái niệm hệ thống file, Chức năng của hệ thống file:
Hệ thống file một phần quan trọng của hệ thống máy tính, giúp quản tổ chức các
tập tin trên đĩa cứng hoặc bất kỳ thiết bị lưu trữ khác. Hệ thống file cho phép người dùng
tạo, xóa, sao chép, di chuyển đổi tên các tập tin. cũng quản lý quyền truy cập của
người dùng đến các tập tin và thư mục. Chức năng chính của hệ thống file bao gồm:
1. Quản không gian đĩa: Hệ thống file quản việc sử dụng không gian trên đĩa
cứng, phân vùng đĩa và phân chia không gian đĩa cho các tập tin và thư mục.
2. Quản lý tập tin: Hệ thống file giúp người dùng tạo mới, xóa, sao chép, di chuyển và
đổi tên các tập tin. Nó cũng quản lý quyền truy cập của người dùng đến các tập tin.
lOMoARcPSD| 61552860
3. Quản lý thư mục: Hệ thống file cho phép người dùng tạo mới, xóa, di chuyển và đổi
tên các thư mục. Nó cũng quản lý quyền truy cập của người dùng đến các thư mục.
4. Bảo mật: Hệ thống file cung cấp bảo mật cho các tập tin thư mục bằng cách kiểm
soát quyền truy cập của người dùng.
5. Sao lưu và khôi phục: Hệ thống file cung cấp các tính năng sao lưu và khôi phục để
bảo vệ dữ liệu của người dùng khỏi mất mát do các sự cố như hỏng đĩa cứng hay bị tấn
công virus.
6. Quản lý các thông tin của tập tin: Hệ thống file lưu trữ các thông tin về tập tin như
tên, kích thước, định dạng, ngày tạo và ngày sửa đổi cuối cùng.
7. Quản lý phân quyền: Hệ thống file quảnquyền truy cập của người dùng đến các
tập tin thư mục bằng cách sử dụng các chế phân quyền như chủ sở hữu, nhóm và
quyền truy cập.
Hệ thống file dùng danh sách khối dữ liệu (block data)
Hệ thống file dùng danh sách khối dữ liệu (block data) là một cách tổ chức dữ liệu trên đĩa,
trong đó dữ liệu được chia thành các khối kích thước nhất định, mỗi khối được lưu trữ
trong một vị trí cụ thể trên đĩa và có một địa chỉ duy nhất để truy cập.
Trong hệ thống file dùng danh sách khối dữ liệu, các khối dữ liệu được sắp xếp theo thứ tự
tuần tự và mỗi khối chứa một phần của tập tin. Các khối này được liên kết với nhau thông
qua danh sách liên kết, trong đó mỗi khối chứa địa chỉ của khối tiếp theo. Khi đọc tập tin,
hệ thống file sẽ bắt đầu từ khối đầu tiên và theo dõi danh sách liên kết để đọc tiếp các khối
kế tiếp cho đến khi đọc hết tập tin.
Chức năng của hệ thống file dùng danh sách khối dữ liệu là cung cấp cách tổ chức dữ liệu
hiệu quả trên đĩa, giúp tối ưu hóa quá trình truy cập xử dữ liệu. Hệ thống này cho
phép các tập tin được phân chia thành các khối nhỏ hơn để dễ dàng quản truy cập.
Ngoài ra, hệ thống file dùng danh sách khối dữ liệu cũng cung cấp khả năng mở rộng dữ
liệu, khi một tập tin cần nhiều hơn một khối dữ liệu, hệ thống sẽ tự động thêm các khối
mới vào danh sách liên kết của tập tin đó.
Hệ thống file dùng danh sách khối chỉ số (block index):
Trong hệ thống file dùng danh sách khối chỉ số (block index), mỗi file được phân chia thành
các khối dữ liệu có kích thước cố định và được đánh số thứ tự. Tuy nhiên, thay vì lưu danh
sách các khối dữ liệu trực tiếp vào mỗi bản ghi của file như trong hệ thống file dùng danh
sách khối dữ liệu, hệ thống file dùng danh sách khối chỉ số sẽ lưu một danh sách các khối
chỉ số cho mỗi file.
lOMoARcPSD| 61552860
Cụ thể, mỗi khối chỉ số chứa các địa chỉ của các khối dữ liệu liên tiếp, nằm trong phạm vi
từ địa chỉ khối bắt đầu đến địa chỉ khối kết thúc của file. Khi cần truy cập đến một khối dữ
liệu nào đó trong file, hệ thống sẽ truy cập vào khối chỉ số tương ng của file đó, sau đó
dùng thông tin trong khối chỉ số để xác định địa chỉ của khối dữ liệu cần truy cập. So với
hệ thống file dùng danh sách khối dữ liệu, hệ thống file dùng danh sách khối chỉ số cho
phép xử các file kích thước lớn hơn cho phép truy cập tới các khối dữ liệu ngẫu
nhiên một cách hiệu quả hơn, nhưng đòi hỏi tốn nhiều bộ nhớ để u trữ danh sách khối
chỉ số cho mỗi file.
Hệ thống file dùng bảng ánh xạ các block:
Trong hệ thống file dùng bảng ánh xạ các block (hay còn gọi là hệ thống file dùng inode),
mỗi file được lưu trữ trên đĩa dưới dạng một số block liên tiếp nhau. Mỗi block có kích
thước cố định và được đánh số theo thứ tự từ đầu đến cuối file.
Mỗi file được gán một inode (Index Node) duy nhất, chứa thông tin về file như tên file,
quyền truy cập, kích thước file, địa chỉ lưu trữ các block dữ liệu trên đĩa các block chỉ
số để đánh dấu các block dữ liệu. Tất cả các inode của hệ thống file sẽ được lưu trữ trong
một khu vực trên đĩa được gọi là bảng inode.
Khi một file cần được đọc hoặc ghi, hệ thống sẽ truy cập vào inode của file đó để tìm các
thông tin cần thiết, như số lượng block dữ liệu, vị trí các block trên đĩa, v.v. Sau đó, các
block dữ liệu sẽ được đọc hoặc ghi trực tiếp trên đĩa theo vị trí được u trong inode.
Hệ thống file dùng bảng ánh xạ các block ưu điểm cho phép m kiếm nhanh chóng
các thông tin về file cho phép mở rộng kích thước file một cách linh hoạt. Tuy nhiên,
việc tạo ra và quản lý inode và bảng inode cũng tốn nhiều tài nguyên hơn so với các cơ chế
lưu trữ khác.
Kiểm soát truy cập: ma trận kiểm soát truy cập, danh sách kiểm soát truy
cập:
Kiểm soát truy cập (Access Control) quá trình quản giám sát quyền truy cập vào
các tài nguyên trong hệ thống máy tính, nhằm đảm bảo rằng chỉ các người dùng được phép
truy cập vào tài nguyên đó mới có thể sử dụng và thực hiện các hoạt động trên tài nguyên
đó. Một số phương pháp kiểm soát truy cập phổ biến bao gồm ma trận kiểm soát truy cập
và danh sách kiểm soát truy cập.
Ma trận kiểm soát truy cập là một bảng hai chiều gồm các dòng và cột, trong đó mỗi dòng
đại diện cho một người dùng hoặc một nhóm người dùng, mỗi cột đại diện cho một tài
nguyên. Mỗi phần tử trong ma trận thể hiện quyền truy cập của người dùng đó vào tài
nguyên đó.
lOMoARcPSD| 61552860
Danh sách kiểm soát truy cập là một danh sách các quyền truy cập cho mỗi tài nguyên. Mỗi
tài nguyên một danh sách riêng biệt, chứa thông tin về những người dùng hoặc nhóm
người dùng được phép truy cập vào tài nguyên đó và quyền truy cập của họ.
Cả hai phương pháp kiểm soát truy cập này đều giúp quản giám sát quyền truy cập
vào tài nguyên trong hệ thống máy tính, tuy nhiên, mỗi phương pháp có những ưu điểm và
hạn chế riêng chế kiểm soát truy cập còn bao gồm các phương pháp như Access Control
Lists (ACL) và Capability-Based Access Control.
+Access Control Lists (ACL): Mỗi tài nguyên sẽ một danh sách các quyền truy cập,
được cấu hình bởi người quản trị hệ thống. Mỗi quyền truy cập sẽ được phân quyền cho
một hoặc nhiều người dùng hoặc nhóm người dùng. Khi người dùng cố gắng truy cập tài
nguyên, hệ thống sẽ kiểm tra danh sách quyền truy cập để xác định người dùng đủ quyền
truy cập hay không.
+Capability-Based Access Control: Khác với ACL, Capability-Based Access Control
phương pháp xác định quyền truy cập theo người dùng hoặc quá trình sở hữu capability
(chứng chỉ) được phân phối trước đó. Capability một đối tượng dữ liệu giá trị như
một chứng chỉ cho phép quyền truy cập vào tài nguyên. dụ, khi một quá trình yêu cầu
truy cập tới một tập tin, nó sẽ cung cấp capability của mình cho hệ thống nếu hệ thống
xác nhận quá trình capability đđể truy cập tài nguyên, quá trình sẽ được cấp quyền
truy cập.
Khái niệm bản quyền, phần mềm mã mở, bản quyền của phần mềm mã
mở, mô hình kinh doanh với phần mềm mã mở
Bản quyền là quyền pháp lý được cấp cho tác giả, chủ sở hữu hoặc người đại diện có quyền
sử dụng, sao chép, phân phối và phát triển các tác phẩm sáng tạo, bao gồm cả phần mềm.
Phần mềm m(open source software) phần mềm được phát nh với các giấy phép
cho phép người dùng sử dụng, sao chép, phân phối phát triển miễn phí hoặc với giá cả
thấp hơn so với phần mềm thương mại.
Bản quyền của phần mềm mở thể được bảo vbằng các giấy phép GPL, BSD,
Apache, MIT và nhiều giấy phép khác. Những giấy phép này đều cho phép người dùng sử
dụng, sao chép, phân phối và phát triển phần mềm mã mở.
hình kinh doanh với phần mềm mở bao gồm nhiều hình thức khác nhau như dịch
vụ hỗ trợ, bán quyền sử dụng, quảng cáo, tài trợ, v.v. Một số công ty nổi tiếng như Red Hat,
Canonical MongoDB đã thành công trong việc kinh doanh với phần mềm mở. Tuy
nhiên, hình này ng đối mặt với nhiều thách thức, bao gồm cạnh tranh với các sản
phẩm miễn phí và việc tìm kiếm nguồn tài trợ để phát triển phần mềm.
Ưu điểm của phần mềm nguồn mở (open source software) so với phần mềm thương
mại (proprietary software) bao gồm:
lOMoARcPSD| 61552860
1. Tính linh hoạt: Phần mềm nguồn mở thể được sửa đổi tùy chỉnh để phù
hợp với nhu cầu của người dùng. Bất kỳ ai cũng có thể tạo ra một phiên bản mới của phần
mềm mã nguồn mở và đóng góp vào cộng đồng phát triển.
2. Tiết kiệm chi phí: Do không cần trả phí bản quyền, nên việc sử dụng phần mềm mã
nguồn mở giúp tiết kiệm chi phí cho người dùng.
3. Sự độc lập: Người dùng có quyền kiểm tra nguồn của phần mềm, đảm bảo tính
an toàn và tin cậy cho hệ thống.
4. Tính tương thích: Phần mềm nguồn mở được thiết kế để tương thích với nhiều
hệ thống khác nhau, giúp tăng tính tương thích và linh hoạt.
5. Cộng đồng lớn: Cộng đồng phát triển phần mềm nguồn mở rộng lớn, giúp cải
thiện và phát triển liên tục phần mềm theo nhu cầu của người dùng.
Tuy nhiên, phần mềm mã nguồn mở cũng có nhược điểm:
1. Thiếu sự hỗ trợ chuyên nghiệp: Không có đội ngũ hỗ trợ chuyên nghiệp đứng sau, vậy
người dùng có thể gặp khó khăn trong việc tìm hiểu và sử dụng phần mềm. 2. Không đảm
bảo tính bảo mật: Không đội ngũ chuyên gia bảo mật chuyên nghiệp, do đó phần mềm
mã nguồn mở có thể có lỗ hổng bảo mật và dễ bị tấn công.
3. Không có cam kết bảo trì: Không có cam kết bảo trì, nên nếu có lỗi hoặc vấn đề xảy ra,
người dùng phải tìm cách giải quyết một mình hoặc tìm kiếm giúp đỡ từ cộng đồng. 4. Độ
phức tạp của phần mềm: Phần mềm mã nguồn mở có thể phức tạp và khó sử dụng, đặc biệt
là với những người dùng không có.
Khái niệm phần mềm tự do. Ưu điểm của phần mềm tự do
Phần mềm tự do (free software hay software libre) phần mềm thể được sử dụng, sao
chép, nghiên cứu, thay đổi tái phân phối không hạn chế, hơn nữa còn thể được sao
chép, phân phối lại cả dạng đã được thay đổi hoặc giữ nguyên mà không có hạn chế, hoặc
chỉ bị hạn chế một cách tối thiểu nhằm đảm bảo những người tiếp nhận sau đó cũng có thể
làm những việc tương tự, đồng thời cũng nhằm tránh việc các nhà sản xuất phần cứng ngăn
chặn các sửa đổi của người dùng đối với phần cứng của họ. Ưu điểm: + tự do dùng chương
trình cho bất cứ mục đích nào
+ tự do sửa đổi chương trình thích hợp với nhu cầu của mình
+ tự do phân bố các bản sao miễn phí hoặc với lệ phí
+ tự do phân bố các phiên bản đã được sửa đổi của chương trình với mục đích
cộng đồng người dùng được phúc lợi của sự nâng cao chương trình từ đóng góp của bạn.
Lịch sử HDH Linux

Preview text:

lOMoAR cPSD| 61552860
Khái niệm về tiến trình:
Tiến trình (process) là một chương trình đang thực thi trên hệ thống máy tính, bao gồm các
dữ liệu, biến và các chỉ thị thực hiện công việc. Một tiến trình có thể chạy độc lập hoặc có
thể tương tác với các tiến trình khác để thực hiện một tác vụ cụ thể.
Các trạng thái cơ bản của tiến trình:
1. New (Mới): Tiến trình được tạo ra và chưa được thực thi.
2. Ready (Sẵn sàng): Tiến trình đã được tạo ra và sẵn sàng thực thi, nhưng vẫn chưa được
lên lịch thực hiện bởi CPU.
3. Running (Đang thực thi): Tiến trình đang được CPU thực thi.
4. Waiting (Đang chờ): Tiến trình đã yêu cầu một tài nguyên hoặc đang đợi một sự kiện
xảy ra trước khi có thể tiếp tục thực thi.
5. Terminated (Đã kết thúc): Tiến trình đã hoàn thành công việc và được chấm dứt.
Biến đổi trạng thái của tiến trình:
Sự biến đổi trạng thái của tiến trình xảy ra khi tiến trình thực hiện các hoạt động khác nhau
và thay đổi trạng thái của mình. Các sự kiện khác nhau có thể gây ra sự thay đổi trạng thái
của tiến trình, bao gồm:
1. Tạo mới tiến trình: Khi một tiến trình được tạo mới, nó bắt đầu ở trạng thái mới.
2. Chuyển đổi từ trạng thái mới sang trạng thái sẵn sàng: Sau khi tiến trình được tạo mới,
nó chuyển sang trạng thái sẵn sàng để thực thi.3. Chuyển đổi từ trạng thái sẵn sàng sang
trạng thái đang thực thi: Khi tiến trình được lên lịch thực thi bởi CPU, nó chuyển sang
trạng thái đang thực thi. 4.
Chuyển đổi từ trạng thái đang thực thi sang trạng thái đang chờ: Khi tiến trình yêu
cầu một tài nguyên hoặc đợi một sự kiện xảy ra, nó chuyển sang trạng thái đang chờ. 5.
Chuyển đổi từ trạng thái đang chờ sang trạng thái sẵn sàng: Khi tài nguyên hoặc sự
kiện mà tiến trình đang chờ đã sẵn sàng, tiến trình chuyển sang trạng thái sẵn sàng. 6.
Chuyển đổi từ trạng thái đang thực thi sang trạng thái đã kết thúc: Khi tiến trình
hoàn thành công việc, nó chuyển sang trạng thái đã kết thúc. 7.
Chuyển đổi từ trạng thái đang chờ sang trạng thái đã kết thúc: Nếu tiến trình không
thể tiếp tục thực thi do lỗi hoặc ngừng hoạt động, nó chuyển sang trạng thái đã kết thúc.
Tạm dừng và kích hoạt: lOMoAR cPSD| 61552860
Tạm dừng là một thao tác quan trọng được sử dụng trong nhiều hệ thống với các cách cài
đặt, thực hiện khác nhau. Tạm dừng thường chỉ diễn ra trong khoảng thời gian ngắn.
Kích hoạt là thao tác chuẩn bị để tiến trình có thể tiếp tục thực hiện từ đúng trạng thái mà
nó bị dừng trước đó.
Khi một tiến trình đang thực thi và phải tạm dừng để chờ một sự kiện xảy ra, nó chuyển từ
trạng thái đang thực thi sang trạng thái đang chờ. Sau khi sự kiện xảy ra và tài nguyên mà
tiến trình đang chờ được cấp phép, tiến trình sẽ được kích hoạt và chuyển sang trạng thái sẵn sàng để thực thi.
Trong quá trình tạm dừng, tiến trình không thực hiện bất kỳ hoạt động nào và hệ thống sẽ
dành CPU và tài nguyên khác cho các tiến trình khác. Khi tiến trình được kích hoạt và
chuyển sang trạng thái sẵn sàng, nó được thêm vào hàng đợi của CPU và được lên lịch thực thi bởi hệ thống.
Ngoài ra, tiến trình cũng có thể bị tạm dừng hoặc kích hoạt bởi một chương trình khác. Khi
một tiến trình được tạm dừng bởi một chương trình khác, nó chuyển sang trạng thái tạm
dừng. Khi tiến trình được kích hoạt bởi chương trình khác, nó chuyển sang trạng thái sẵn sàng để thực thi.
Việc tạm dừng và kích hoạt tiến trình là một phương thức quản lý tài nguyên hiệu quả, giúp
hệ thống quản lý tài nguyên và CPU một cách hiệu quả hơn.
Xử lý ngắt, cơ chế chuyển đổi ngữ cảnh:
Xử lý ngắt (interrupt handling) là quá trình xử lý các sự kiện bất ngờ (interrupts) được gửi
đến bởi các thiết bị ngoại vi hoặc các tiến trình khác. Khi một sự kiện bất ngờ xảy ra, hệ
điều hành sẽ tạm dừng tiến trình đang thực thi hiện tại và thực hiện một quá trình xử lý ngắt.
Cơ chế chuyển đổi ngữ cảnh (context switching) được sử dụng để lưu trạng thái của tiến
trình hiện tại và chuyển sang tiến trình khác. Khi xử lý ngắt xảy ra, hệ thống sẽ tạm dừng
tiến trình đang thực thi hiện tại, lưu trạng thái của nó (ví dụ như thanh ghi và các biến trạng
thái khác) vào bộ nhớ và sau đó chuyển sang xử lý ngắt. Sau khi xử lý ngắt hoàn thành, hệ
thống sẽ phục hồi trạng thái của tiến trình được tạm dừng trước đó và chuyển lại quyền
điều khiển cho tiến trình đó để tiếp tục thực thi.
Cơ chế chuyển đổi ngữ cảnh rất quan trọng đối với hệ điều hành để quản lý tài nguyên và
CPU một cách hiệu quả. Việc chuyển đổi ngữ cảnh có thể gây ra một khoảng thời gian đáng
kể trong việc thực thi tiến trình, vì vậy các hệ điều hành hiện đại đã tối ưu quá trình này để
giảm thiểu thời gian chuyển đổi ngữ cảnh. Hạt nhân HĐH: lOMoAR cPSD| 61552860
Hạt nhân của một hệ điều hành là phần trung tâm của nó, nơi tất cả các hoạt động của hệ
thống được thực hiện. Hạt nhân cung cấp các dịch vụ cơ bản như quản lý bộ nhớ, xử lý
luồng dữ liệu và quản lý thiết bị phần cứng.
Hai mô hình kiến trúc HĐH:
Hai mô hình kiến trúc hệ điều hành phổ biến là monolithic và micro kernel.
Mô hình kiến trúc hệ điều hành monolithic được thiết kế dựa trên một hạt nhân lớn, trong
đó tất cả các dịch vụ hệ thống được triển khai trong cùng một không gian bộ nhớ. Hạt nhân
này cung cấp tất cả các chức năng hệ thống, từ quản lý bộ nhớ đến giao tiếp mạng và xử lý
tệp. Mô hình monolithic thường đơn giản hơn và hiệu quả hơn khi xử lý các tác vụ đơn
giản và ít yêu cầu phức tạp.
Mô hình kiến trúc hệ điều hành micro kernel được thiết kế để chia nhỏ hạt nhân ra thành
các module nhỏ, trong đó mỗi module chỉ cung cấp một dịch vụ nhất định. Các module này
có thể được kết hợp với nhau để cung cấp tất cả các chức năng hệ thống. Mô hình micro
kernel tập trung vào tính linh hoạt và dễ mở rộng hơn khi xử lý các tác vụ phức tạp và đa
dạng hơn. Sự khác biệt giữa hai mô hình này phụ thuộc vào cách hệ thống được tổ chức
và quản lý. Mô hình kiến trúc monolithic thường đơn giản và hiệu quả hơn trong khi mô
hình kiến trúc micro kernel tập trung vào tính linh hoạt và dễ mở rộng hơn.
Khái niệm loại trừ, ví dụ:
Loại trừ (mutual exclusion) là một khái niệm trong khoa học máy tính, được sử dụng để
mô tả việc đảm bảo rằng chỉ có một tiến trình (hoặc một tài nguyên) được truy cập vào
cùng một thời điểm. Nó là một khái niệm quan trọng trong việc xử lý đồng thời
(concurrency) trong các hệ thống máy tính.
Một ví dụ về loại trừ là khi hai tiến trình cần truy cập vào cùng một tài nguyên, ví dụ như
một file hoặc một thiết bị phần cứng, và chỉ có thể thực hiện một tiến trình tại một thời
điểm. Trong trường hợp này, hệ thống phải đảm bảo rằng khi một tiến trình đang truy cập
vào tài nguyên này, thì tiến trình khác phải chờ đợi cho đến khi tài nguyên trở thành khả
dụng. Điều này đảm bảo rằng không có xung đột xảy ra và giúp đảm bảo tính nhất quán của dữ liệu.
Các phương pháp để đạt được loại trừ có thể bao gồm sử dụng các biến đồng bộ hoặc khóa
để đồng bộ hóa truy cập vào tài nguyên chia sẻ, hoặc sử dụng các cơ chế khác như
semaphore hoặc monitor để đảm bảo rằng chỉ có một tiến trình được truy cập vào tài nguyên tại một thời điểm. Thuật toán Dekker: lOMoAR cPSD| 61552860
Thuật toán Dekker là một giải pháp để đạt được đồng bộ hoá giữa hai tiến trình trong môi
trường đa luồng. Thuật toán này được sử dụng để cài đặt phương pháp loại trừ giành cho hai tiến trình.
Để sử dụng thuật toán Dekker, chúng ta cần sử dụng hai biến boolena flag1 và flag2, đại
diện cho việc tiến trình thứ nhất và thứ hai muốn truy cập vào khu vực tài nguyên được bảo
vệ. Ngoài ra, chúng ta cũng cần sử dụng biến turn để xác định tiến trình nào được ưu tiên
truy cập vào khu vực tài nguyên được bảo vệ.
Thuật toán Dekker sẽ được cài đặt như sau: } while (true); // Tiến
// Khai báo các biến cần sử dụng bool flag1 trình thứ hai do { flag2
= false, flag2 = false; int turn = 1; // Tiến = true; while (flag1 ==
trình thứ nhất do { flag1 = true; while true) { if (turn == 1) {
(flag2 == true) { if (turn == 2) { flag1 = flag2 = false; while false; while (turn == 2) { (turn == 1) { // Không làm gì cả // Không làm gì cả } flag1 = } flag2 = true; true; } } } }
// Khu vực tài nguyên được bảo vệ
// Khu vực tài nguyên được bảo vệ // ... // ... turn = 2; turn = 1; flag2 flag1 = false; = false;
// Tiếp tục thực hiện các công việc khác
// Tiếp tục thực hiện các công việc khác } while (true);
Trong thuật toán trên, khi tiến trình thứ nhất muốn truy cập vào khu vực tài nguyên được
bảo vệ, nó sẽ đặt flag1 = true và kiểm tra nếu flag2 = true và turn = 2 thì nó sẽ chờ đợi. Nếu
không, tiến trình sẽ truy cập vào khu vực tài nguyên được bảo vệ, sau đó đặt turn = 2 để
cho phép tiến trình thứ hai truy cập vào khu vực tài nguyên được bảo vệ. Khi tiến trình thứ
nhất đã hoàn thành công việc của mình, nó đặt flag1 = false và tiếp tục thực hiện các công việc khác. lOMoAR cPSD| 61552860
Tương tự, khi tiến trình thứ hai muốn p cận vào khu vực tài nguyên được bảo vệ, nó sẽ đặt
flag2 = true và kiểm tra nếu flag1 = true và turn = 1 thì nó sẽ chờ đợi. Nếu không, tiến trình
sẽ truy cập vào khu vực tài nguyên được bảo vệ, sau đó đặt turn = 1 để cho phép tiến trình
thứ nhất truy cập vào khu vực tài nguyên được bảo vệ. Khi tiến trình thứ hai đã hoàn thành
công việc của mình, nó đặt flag2 = false và tiếp tục thực hiện các công việc khác.
Điểm yếu của thuật toán Dekker là nó có thể dẫn đến tình trạng đói tài nguyên (starvation),
khi một tiến trình không được phép truy cập vào khu vực tài nguyên được bảo vệ trong thời
gian dài do tiến trình khác luôn ưu tiên được truy cập vào khu vực này. Để khắc phục điều
này, chúng ta có thể sử dụng các giải pháp khác như phương pháp thăng bậc (priority
ceiling) hoặc phương pháp độ ưu tiên (priority inheritance) để đảm bảo công bằng cho các
tiến trình trong việc truy cập vào khu vực tài nguyên được bảo vệ.
Loại trừ bằng lệnh Testandset:
Để cài đặt loại trừ bằng lệnh TestAndSet, chúng ta có thể sử dụng một biến shared flag để
đánh dấu trạng thái của khu vực tài nguyên được bảo vệ. Các tiến trình sẽ lần lượt thực
hiện thao tác đặt flag thành true bằng lệnh TestAndSet và kiểm tra giá trị của flag để xác
định liệu khu vực tài nguyên được bảo vệ có đang được sử dụng bởi tiến trình khác hay không.
Dưới đây là một ví dụ về cài đặt loại trừ bằng lệnh TestAndSet cho 2 tiến trình:
// Khai báo biến shared flag và khởi tạo giá trị là false shared bool flag = false; // Tiến trình 1 while
(TestAndSet(&flag) == true) {
// Nếu flag đang bằng true thì chờ đợi }
// Thực hiện truy cập vào khu vực tài nguyên được bảo vệ
// Sau khi hoàn thành, đặt lại giá trị của flag là false // Tiến trình 2 while
(TestAndSet(&flag) == true) {
// Nếu flag đang bằng true thì chờ đợi }
// Thực hiện truy cập vào khu vực tài nguyên được bảo vệ
// Sau khi hoàn thành, đặt lại giá trị của flag là false lOMoAR cPSD| 61552860
Trong ví dụ trên, hàm TestAndSet được sử dụng để kiểm tra giá trị của biến shared flag và
đặt giá trị của nó thành true nếu flag đang bằng false. Hàm này sẽ trả về true nếu giá trị của
flag ban đầu là true, tức là khu vực tài nguyên được bảo vệ đang được sử dụng bởi tiến
trình khác và tiến trình hiện tại phải chờ đợi. Nếu giá trị ban đầu của flag là false, hàm
TestAndSet sẽ đặt giá trị của flag thành true và trả về false, cho phép tiến trình hiện tại truy
cập vào khu vực tài nguyên được bảo vệ.
Khái niệm Semaphore, ứng dụng:
Semaphore là một cơ chế đồng bộ hóa trong hệ thống máy tính, được sử dụng để giải quyết
vấn đề tài nguyên chia sẻ giữa các tiến trình hoặc luồng trong một hệ thống đa nhiệm.
Semaphore có thể được hiểu là một biến đếm được sử dụng để kiểm soát việc truy cập vào
tài nguyên chia sẻ. Nó lưu giữ số lượng tài nguyên có sẵn và đảm bảo rằng các tiến trình
hoặc luồng không thể truy cập tài nguyên đó nếu số lượng tài nguyên hiện tại đã đạt đến giới hạn. Có hai loại Semaphore:
+Semaphore nhị phân (Binary Semaphore): chỉ có hai giá trị 0 và 1. Semaphore nhị phân
được sử dụng để đồng bộ hóa quy trình và đảm bảo rằng chỉ có một tiến trình hoặc luồng
được phép truy cập tài nguyên chia sẻ vào một thời điểm nhất định.
+Semaphore đếm (Counting Semaphore): là một biến đếm có thể có giá trị lớn hơn hai.
Semaphore đếm được sử dụng để quản lý tài nguyên chia sẻ mà có sẵn nhiều hơn một. Ứng dụng của Semaphore:
+Semaphore được sử dụng để đồng bộ hóa truy cập vào các tài nguyên chia sẻ trong các hệ thống đa tiến trình.
+Semaphore được sử dụng để quản lý bộ nhớ chia sẻ giữa các tiến trình.
+Semaphore được sử dụng để giải quyết vấn đề deadlock (tình trạng một số tiến trình bị
khóa vì chúng đang chờ đợi tài nguyên được giải phóng bởi các tiến trình khác mà không
thể tiếp tục thực hiện).
+Semaphore được sử dụng để quản lý các tác vụ đồng bộ và đảm bảo tính toàn vẹn dữ liệu
trong các ứng dụng song song.
Khái niệm deadlock, ví dụ tình trạng deadlock:
Deadlock là một trạng thái trong hệ thống máy tính, khi một nhóm các tiến trình đang chờ
đợi tài nguyên được giải phóng bởi các tiến trình khác trong nhóm đó. Tuy nhiên, các tiến
trình trong nhóm đều không thể thực hiện tiếp mà đang chờ đợi nhau, dẫn đến hệ thống bị
treo và không thể tiếp tục hoạt động. lOMoAR cPSD| 61552860
Ví dụ, giả sử có hai tiến trình A và B, và hai tài nguyên là R1 và R2. Tiến trình A đang giữ
tài nguyên R1 và yêu cầu tài nguyên R2, trong khi tiến trình B đang giữ tài nguyên R2 và
yêu cầu tài nguyên R1 để hoàn thành tác vụ. Trong trường hợp này, tiến trình A và B sẽ bị
treo đợi vô hạn cho đến khi tài nguyên được giải phóng.
Các trường hợp deadlock thường xảy ra trong các hệ thống đa nhiệm, khi nhiều tiến trình
cùng chia sẻ các tài nguyên hệ thống và đang cùng đợi nhau để sử dụng các tài nguyên còn
lại. Để giải quyết vấn đề này, hệ điều hành có thể sử dụng các giải pháp như phát hiện
deadlock, tránh deadlock hoặc khắc phục deadlock.
Các điều kiện xuất hiện dealock:
Để xảy ra deadlock trong hệ thống máy tính, cần phải đáp ứng các điều kiện sau đây: 1.
Sự cạnh tranh về tài nguyên: Hai hoặc nhiều tiến trình cần phải sử dụng một tài
nguyên độc quyền, mà không thể chia sẻ được giữa các tiến trình. 2.
Không thể giải phóng tài nguyên: Tiến trình đã giữ một tài nguyên và yêu cầu tài
nguyên khác mà không thể giải phóng tài nguyên hiện có. 3.
Không có giải pháp thay thế: Tiến trình không thể sử dụng tài nguyên khác thay thế
cho tài nguyên mà nó đang yêu cầu. 4.
Chờ đợi lẫn nhau: Hai tiến trình cùng chờ đợi tài nguyên được giải phóng bởi tiến
trình kia mà không thực hiện được bất kỳ thao tác nào khác.
Khi tất cả các điều kiện trên được đáp ứng, thì deadlock sẽ xảy ra. Để tránh deadlock, các
giải pháp như phát hiện deadlock, tránh deadlock hoặc khắc phục deadlock có thể được sử dụng.
Thuật toán Banker, trạng thái của hệ thống:
Thuật toán Banker là một thuật toán phát hiện deadlock trong hệ thống máy tính. Thuật
toán này được sử dụng để xác định xem có thể thực hiện yêu cầu tài nguyên của một tiến
trình mà không gây ra deadlock hay không. Thuật toán Banker sử dụng một bảng để lưu
trữ thông tin về tài nguyên của hệ thống và các yêu cầu tài nguyên của các tiến trình.
Trạng thái của hệ thống có thể được xác định bằng cách sử dụng các thông số sau đây:
1. Available: Số lượng tài nguyên có sẵn trong hệ thống.
2. Allocation: Mảng 2 chiều ghi lại số lượng tài nguyên đã được cấp phát cho từng tiến trình.
3. Need: Mảng 2 chiều ghi lại số lượng tài nguyên cần phải cấp phát cho từng tiến trình để hoàn thành tác vụ. lOMoAR cPSD| 61552860
+Trạng thái ổn định: là trạng thái mà HĐH đảm bảo tất cả tiến trình kết thúc sau 1 khoảng
thời gian hữu hạn nào đó.
+Trạng thái không ổn định: là trạng thái có thể dẫn tới deadlock.
Nguyên tắc hoạt động của thuật toán banker:
Khi một tiến trình vào hệ thống, tiến trình đó cần phải đưa ra số lượng thực thể tối đa mà
nó cần (để từ đó hệ thống có thể xác định trạng thái an toàn, dựa vào việc thoả mãn yêu
cầu của tất cả process). Con số này không được vượt quá số lượng tài nguyên hiện đang có trong hệ thống.
Khi một process yêu cầu tài nguyên, hệ thống sẽ xem xét : Liệu sau khi cấp tài nguyên thì
hệ thống có còn đang ở trạng thái an toàn hay không ? Nếu có thì hệ thống sẽ cấp, ngược
lại hệ thống sẽ không cấp tài nguyên cho process. Lúc đó process phải chờ đến khi các
process khác giải phóng đủ số lượng tài nguyên cần thiết.
- Cấu trúc dữ liệu cho giải thuật Banker :
Gọi m là số loại tài nguyên đang xét trong giải thuật Banker.
Gọi n là số lượng tiến trình đang xét trong giải thuật Banker.
+ Available: vector độ dài m. Nếu Available[j] = k, có k đơn vị tài nguyên Rj sẵn sàng
+ Max: ma trận n m. Nếu Max[i,j] = k, tiến trình Pi có thể yêu cầu tối đa k đơn vị tài nguyên Rj
+ Allocation: ma trận n m. Nếu Allocation[i,j] = k thì Pi đang được cấp phát k đơn vị Rj
+ Need: Ma trận n m. Nếu Need[i,j] = k thì Pi có thể yêu cầu thêm k đơn vị Rj để có thể kết thúc
Need[i,j] = Max[i,j] – Allocation[i,j]
Phát hiện deadlock qua đồ thị phân bố tài nguyên:
Phát hiện deadlock qua đồ thị phân bố tài nguyên là một phương pháp phổ biến để phát
hiện deadlock trong hệ thống máy tính. Phương pháp này sử dụng đồ thị để biểu diễn mối
quan hệ giữa các tiến trình và tài nguyên trong hệ thống.
Để sử dụng phương pháp này, ta sẽ vẽ một đồ thị phân bố tài nguyên, trong đó các đỉnh đại
diện cho các tiến trình và các tài nguyên. Các cạnh trên đồ thị biểu diễn mối quan hệ giữa
tiến trình và tài nguyên, chẳng hạn như tiến trình yêu cầu một tài nguyên hoặc đang giữ một tài nguyên. lOMoAR cPSD| 61552860
Để phát hiện deadlock trong đồ thị phân bố tài nguyên, ta sử dụng thuật toán tìm chu trình
trong đồ thị. Thuật toán này tìm kiếm các chu trình trong đồ thị, tức là các vòng lặp mà một
tiến trình yêu cầu một tài nguyên mà đang bị giữ bởi một tiến trình khác, và sẽ thông báo nếu tìm thấy chu trình.
Nếu tìm thấy chu trình, nó cho thấy rằng hệ thống đang bị deadlock. Tuy nhiên, nếu không
tìm thấy chu trình, điều đó không đảm bảo rằng hệ thống không bị deadlock, vì nó có thể
đang ở trong trạng thái deadlock nhưng không có chu trình trong đồ thị.
Khái niệm bộ nhớ ảo, ưu nhược điểm:
Bộ nhớ ảo (virtual memory) là một kỹ thuật được sử dụng trong hệ thống máy tính để cho
phép các tiến trình hoạt động với lượng dữ liệu lớn hơn so với bộ nhớ RAM có sẵn trên hệ
thống. Kỹ thuật này cho phép các chương trình truy cập vào bộ nhớ vật lý lớn hơn bằng
cách sử dụng bộ nhớ đệm để tự động di chuyển các phần của chương trình giữa bộ nhớ
RAM và đĩa cứng. Các ứng dụng hoạt động như thể tất cả các bộ nhớ đều nằm trong bộ
nhớ RAM, trong khi thực tế chỉ có một phần nhỏ các dữ liệu thực sự được lưu trữ trong
RAM và phần còn lại được lưu trữ trên đĩa cứng.
Ưu điểm của bộ nhớ ảo: 1.
Tăng dung lượng bộ nhớ truy cập được: Bộ nhớ ảo cho phép các chương trình sử
dụng bộ nhớ vật lý lớn hơn bộ nhớ RAM có sẵn trên hệ thống, giúp tăng dung lượng bộ nhớ truy cập được. 2.
Cho phép chạy nhiều tiến trình cùng lúc: Bộ nhớ ảo cho phép nhiều tiến trình hoạt
động cùng lúc trên hệ thống, mỗi tiến trình có thể sử dụng một phần của bộ nhớ vật lý mà
không ảnh hưởng đến các tiến trình khác. 3.
Giảm thời gian phản hồi của hệ thống: Khi sử dụng bộ nhớ ảo, các phần của chương
trình được di chuyển giữa bộ nhớ RAM và đĩa cứng tự động, giúp giảm thời gian phản hồi của hệ thống. 4.
Tiết kiệm bộ nhớ RAM: Kỹ thuật bộ nhớ ảo cho phép sử dụng bộ nhớ RAM hiệu
quả hơn, vì chỉ những phần cần thiết của chương trình được tải lên bộ nhớ RAM.
Nhược điểm của bộ nhớ ảo: 1.
Hiệu suất chậm hơn: Sử dụng bộ nhớ ảo sẽ làm giảm hiệu suất của hệ thống, vì khi
các phần của chương trình được di chuyển giữa bộ nhớ RAM và đĩa cứng, nó sẽ tốn thêm
thời gian cho việc truy cập dữ liệu. 2.
Phát sinh các lỗi khi sử dụng: Khi sử dụng bộ nhớ ảo, có thể xảy ra các lỗi như tràn
bộ đệm hoặc lỗi khi đọc ghi dữ liệu vào đĩa cứng. Điều này có thể dẫn đến các lỗi hệ thống
nghiêm trọng hoặc mất dữ liệu. lOMoAR cPSD| 61552860 3.
Tốn nhiều tài nguyên: Sử dụng bộ nhớ ảo đòi hỏi tài nguyên đĩa cứng và CPU để di
chuyển các phần của chương trình giữa bộ nhớ RAM và đĩa cứng. Việc này có thể làm
giảm hiệu suất của hệ thống và tốn nhiều tài nguyên. 4.
Không thể sử dụng với các ứng dụng yêu cầu bộ nhớ lớn: Mặc dù bộ nhớ ảo giúp
tăng dung lượng bộ nhớ truy cập được, tuy nhiên, các ứng dụng yêu cầu bộ nhớ lớn, chẳng
hạn như các ứng dụng đồ họa hoặc các ứng dụng xử lý video, thì bộ nhớ ảo không thể đáp
ứng đủ nhu cầu bộ nhớ của chúng.
Ánh xạ địa chỉ theo khối:
Ánh xạ địa chỉ theo khối (block addressing) là một phương pháp để quản lý bộ nhớ trong
đó bộ nhớ được chia thành các khối có kích thước nhất định. Mỗi khối được đánh địa chỉ
và chứa một số lượng dữ liệu nhất định. Khi một truy cập đến bộ nhớ được yêu cầu, hệ
thống sẽ tìm kiếm khối chứa địa chỉ này và trả về dữ liệu được yêu cầu từ khối này.
Việc sử dụng ánh xạ địa chỉ theo khối có nhiều lợi ích, bao gồm: 1.
Cải thiện hiệu suất: Ánh xạ địa chỉ theo khối giúp cải thiện hiệu suất bằng cách giảm
bớt số lần truy cập bộ nhớ vật lý. Khi một khối được truy cập, các địa chỉ khác trong khối
đó cũng được tải lên bộ nhớ đệm cùng với dữ liệu được yêu cầu, giúp giảm độ trễ trong
quá trình truy cập bộ nhớ. 2.
Quản lý bộ nhớ hiệu quả hơn: Chia bộ nhớ thành các khối cố định có kích thước
nhất định giúp cho việc quản lý bộ nhớ trở nên dễ dàng hơn. Hệ thống có thể dễ dàng kiểm
soát lượng dữ liệu được tải lên và xuống, giúp giảm thiểu rủi ro về lỗi quản lý bộ nhớ.
Tuy nhiên, cũng có một số hạn chế của ánh xạ địa chỉ theo khối, bao gồm: 1.
Lãng phí không gian bộ nhớ: Vì mỗi khối được định kích thước cố định, nếu dữ liệu
không đủ lớn để điền vào khối thì sẽ có phần không sử dụng, dẫn đến lãng phí không gian bộ nhớ. 2.
Làm giảm hiệu quả khi kích thước khối không phù hợp: Nếu kích thước của khối
không được định kích thước hợp lý, ánh xạ địa chỉ theo khối có thể làm giảm hiệu quả
trong việc truy cập bộ nhớ.
Tóm lại, ánh xạ địa chỉ theo khối là một phương pháp quản lý bộ nhớ được sử dụng trong
các hệ thống máy tính. Việc sử dụng ánh xạ địa chỉ theo khối giúp cải thiện hiệu suất và
quản lý bộ nhớ hiệu quả hơn, tuy nhiên cũng có những hạn chế nhất định. Kích thước của
khối được chia ra phải được cân nhắc kỹ lưỡng để tránh lãng phí không gian bộ nhớ và
giảm hiệu suất truy cập. Ngoài ra, ánh xạ địa chỉ theo khối không giải quyết được vấn đề
về sự khác nhau giữa bộ nhớ vật lý và bộ nhớ ảo, vì vậy cần phải sử dụng thêm các kỹ thuật
khác như phân trang để quản lý bộ nhớ một cách hiệu quả hơn. lOMoAR cPSD| 61552860
Trong các hệ thống máy tính hiện đại, ánh xạ địa chỉ theo khối thường được sử dụng để
quản lý bộ nhớ trong các trường hợp cần đọc và ghi dữ liệu lớn. Ví dụ, trong các ứng dụng
đồ họa hoặc xử lý video, dữ liệu được xử lý thường có kích thước lớn và cần phải được lưu
trữ và truy cập một cách hiệu quả. Sử dụng ánh xạ địa chỉ theo khối có thể giúp cải thiện
hiệu suất và tối ưu hóa việc quản lý bộ nhớ trong các trường hợp này.
Tổ chức bộ nhớ theo trang :
Trong hệ thống máy tính, tổ chức bộ nhớ theo trang là một phương pháp quản lý bộ nhớ
ảo, trong đó bộ nhớ ảo được chia thành các trang có kích thước nhỏ hơn, thường là 4KB
hoặc 8KB. Mỗi trang được gán một địa chỉ ảo, và khi một chương trình yêu cầu truy cập
đến một trang nào đó, hệ điều hành sẽ tìm kiếm và chuyển đổi địa chỉ ảo này sang địa chỉ
vật lý tương ứng trên bộ nhớ chính.
Việc sử dụng tổ chức bộ nhớ theo trang cho phép hệ thống máy tính cung cấp bộ nhớ ảo có
kích thước lớn hơn so với kích thước bộ nhớ vật lý hiện có trên hệ thống, do đó cho phép
chạy nhiều chương trình đồng thời. Ngoài ra, phương pháp này cũng giúp giảm tải cho bộ
nhớ chính bằng cách chỉ tải một phần của bộ nhớ ảo vào bộ nhớ chính khi cần thiết, và giải
phóng lại phần bộ nhớ này khi không còn sử dụng nữa.
Tuy nhiên, tổ chức bộ nhớ theo trang cũng có một số hạn chế. Việc chuyển đổi giữa địa chỉ
ảo và địa chỉ vật lý tốn kém thời gian, do đó có thể làm giảm hiệu suất hệ thống. Ngoài ra,
việc tách bộ nhớ thành các trang cũng tạo ra sự phân tán dữ liệu, khiến cho việc truy cập
bộ nhớ trở nên khó khăn hơn so với việc truy cập vào một vùng liên tục của bộ nhớ. Tổ
chức bộ nhớ theo đoạn:
Trong hệ thống máy tính, tổ chức bộ nhớ theo đoạn là một phương pháp quản lý bộ nhớ ảo,
trong đó bộ nhớ ảo được chia thành các đoạn có kích thước lớn hơn so với tổ chức bộ nhớ
theo trang, thường là một số nguyên lớn hơn 64KB. Mỗi đoạn được gán một địa chỉ ảo, và
khi một chương trình yêu cầu truy cập đến một đoạn nào đó, hệ điều hành sẽ tìm kiếm và
chuyển đổi địa chỉ ảo này sang địa chỉ vật lý tương ứng trên bộ nhớ chính. So với tổ chức
bộ nhớ theo trang, tổ chức bộ nhớ theo đoạn cho phép chương trình truy cập vào các vùng
bộ nhớ lớn hơn, do đó có thể giảm số lần chuyển đổi giữa địa chỉ ảo và địa chỉ vật lý, và
tăng hiệu suất hệ thống. Ngoài ra, việc tách bộ nhớ thành các đoạn có kích thước lớn hơn
cũng giúp giảm tải cho bộ điều khiển bộ nhớ, và giảm số lần phải truy cập vào bộ điều khiển này.
Tuy nhiên, tổ chức bộ nhớ theo đoạn cũng có một số hạn chế. Do các đoạn có kích thước
lớn hơn, nên số lượng các đoạn cần phải được quản lý trên hệ thống sẽ ít hơn so với số
lượng các trang trong tổ chức bộ nhớ theo trang. Tuy nhiên, các đoạn cũng phải được tải
vào bộ nhớ chính khi cần thiết, do đó việc quản lý bộ nhớ vẫn cần phải được thực hiện một
cách hiệu quả để tránh lãng phí không gian bộ nhớ và giảm hiệu suất truy cập.
Tổ chức bộ nhớ kết hợp trang, đoạn: lOMoAR cPSD| 61552860
Trong hệ thống máy tính, tổ chức bộ nhớ kết hợp trang và đoạn là một phương pháp quản
lý bộ nhớ ảo, kết hợp cả hai phương pháp tổ chức bộ nhớ theo trang và đoạn. Phương pháp
này được sử dụng để tối ưu hóa hiệu suất truy cập bộ nhớ của hệ thống.
Cụ thể, trong tổ chức bộ nhớ kết hợp trang và đoạn, bộ nhớ ảo được chia thành các đoạn,
và mỗi đoạn được chia thành các trang có kích thước nhỏ hơn so với kích thước của đoạn.
Khi một chương trình yêu cầu truy cập đến một địa chỉ ảo, hệ điều hành sẽ sử dụng phương
pháp ánh xạ địa chỉ để chuyển đổi địa chỉ ảo thành địa chỉ vật lý tương ứng trên bộ nhớ
chính. Đồng thời, hệ điều hành cũng sẽ sử dụng phương pháp quản lý bộ nhớ theo trang để
tải và giải phóng các trang cần thiết vào và ra khỏi bộ nhớ chính.
Phương pháp tổ chức bộ nhớ kết hợp trang và đoạn có thể tối ưu hóa hiệu suất truy cập bộ
nhớ của hệ thống bằng cách giảm số lần phải chuyển đổi giữa địa chỉ ảo và địa chỉ vật lý.
Đồng thời, phương pháp này cũng cho phép truy cập các vùng bộ nhớ lớn hơn so với tổ
chức bộ nhớ theo trang, do đó tăng hiệu suất hệ thống. Tuy nhiên, việc quản lý bộ nhớ kết
hợp trang và đoạn cũng phức tạp hơn so với các phương pháp tổ chức bộ nhớ khác, và đòi
hỏi sự tối ưu hóa cao hơn trong việc quản lý bộ nhớ để tránh lãng phí không gian bộ nhớ
và giảm hiệu suất truy cập.
Các chiến lược loại bỏ trang bộ nhớ:
Trong hệ thống máy tính, quản lý bộ nhớ ảo là một hoạt động rất quan trọng để tối ưu hóa
hiệu suất hệ thống. Khi bộ nhớ vật lý của hệ thống bị hạn chế, các trang bộ nhớ cần phải
được loại bỏ để giải phóng bộ nhớ. Dưới đây là các chiến lược loại bỏ trang bộ nhớ thường
được sử dụng trong hệ thống máy tính: 1.
FIFO (First-In, First-Out): Đây là chiến lược đơn giản nhất, trong đó các trang bộ
nhớ được loại bỏ theo thứ tự đến trước đến đi sau. Khi bộ nhớ đầy, trang đầu tiên được nạp
vào bộ nhớ sẽ được loại bỏ. 2.
LRU (Least Recently Used): Đây là chiến lược phổ biến nhất trong các hệ thống
quản lý bộ nhớ ảo, trong đó các trang bộ nhớ được loại bỏ dựa trên thời gian không sử dụng
gần nhất. Trang không được sử dụng trong một khoảng thời gian dài nhất sẽ được loại bỏ trước. 3.
MFU (Most Frequently Used): Đây là chiến lược ngược lại của LRU, trong đó các
trang bộ nhớ được loại bỏ dựa trên số lần được sử dụng nhiều nhất. Các trang bộ nhớ được
sử dụng nhiều nhất sẽ được giữ lại trong bộ nhớ và các trang ít được sử dụng sẽ được loại bỏ. 4.
LRU-K: Đây là một biến thể của LRU, trong đó thay vì chỉ xem xét thời gian không
sử dụng gần nhất của một trang, nó xem xét thời gian không sử dụng của k trang liên tiếp. lOMoAR cPSD| 61552860 5.
Random: Trong chiến lược này, các trang bộ nhớ được loại bỏ ngẫu nhiên, không
xem xét thời gian không sử dụng hoặc số lần sử dụng.
Tùy thuộc vào tính chất của ứng dụng và cấu hình hệ thống, các chiến lược loại bỏ trang
bộ nhớ sẽ có hiệu quả khác nhau.
Các chiến lược nạp trang:
Trong hệ thống quản lý bộ nhớ ảo, khi một trang yêu cầu được truy cập nhưng không có
sẵn trong bộ nhớ, trang đó phải được nạp vào bộ nhớ để truy cập. Dưới đây là các chiến
lược nạp trang bộ nhớ thường được sử dụng trong hệ thống máy tính: 1.
Demand Paging: Đây là chiến lược phổ biến nhất trong hệ thống quản lý bộ nhớ ảo.
Trang chỉ được nạp vào bộ nhớ khi yêu cầu truy cập đến trang đó. Điều này giúp tiết kiệm
bộ nhớ và giảm thời gian nạp trang. Tuy nhiên, nếu có quá nhiều yêu cầu truy cập cùng
một lúc, hiệu suất của hệ thống có thể bị ảnh hưởng. 2.
Prepaging: Trong chiến lược này, các trang được nạp vào bộ nhớ trước khi yêu cầu
truy cập đến chúng. Các trang khác có thể được nạp sau đó theo yêu cầu truy cập. Chiến
lược này giúp giảm thời gian truy cập trang đầu tiên nhưng cũng dẫn đến việc sử dụng nhiều bộ nhớ hơn. 3.
Demand Prepaging: Đây là sự kết hợp giữa demand paging và prepaging. Trong
chiến lược này, các trang đầu tiên được nạp vào bộ nhớ trước khi yêu cầu truy cập đến
chúng. Các trang khác được nạp theo yêu cầu truy cập. Chiến lược này giúp giảm thời gian
truy cập trang đầu tiên và tiết kiệm bộ nhớ. 4.
Cluster Paging: Trong chiến lược này, các trang được nạp theo cụm thay vì từng
trang. Khi yêu cầu truy cập đến một trang trong cụm, toàn bộ cụm sẽ được nạp vào bộ nhớ.
Chiến lược này giúp tăng hiệu suất hệ thống bằng cách giảm số lần truy cập đĩa và tiết kiệm
thời gian nạp trang. Tuy nhiên, nó cũng dẫn đến việc sử dụng nhiều bộ nhớ hơn.
Tùy thuộc vào tính chất của ứng dụng và cấu hình hệ thống, các chiến lược nạp trang bộ
nhớ sẽ có hiệu quả khác nhau.
Khái niệm lập lịch cho BXL, lượng tử thời gian, mức ưu tiên, có trưng
dụng/hoán đổi/preemtive:
Trình lập lịch cho bộ xử lý (BXL) là một phần mềm quản lý các tiến trình và tài nguyên
trên hệ thống máy tính. Nhiệm vụ chính của trình lập lịch là quyết định tiến trình nào được
thực thi trên CPU, theo một số tiêu chí như độ ưu tiên, lượng tử thời gian, hoặc trạng thái của tiến trình.
Lượng tử thời gian là khoảng thời gian tối đa mà một tiến trình có thể thực thi trên CPU
trước khi bị chuyển sang tiến trình khác. Nó giúp đảm bảo rằng mỗi tiến trình được thực
thi một lượng tài nguyên tối thiểu và hạn chế sự chiếm giữ CPU quá lâu của một tiến trình. lOMoAR cPSD| 61552860
Mức ưu tiên được sử dụng để xác định thứ tự thực thi các tiến trình. Các tiến trình có mức
ưu tiên cao hơn sẽ được thực thi trước các tiến trình có mức ưu tiên thấp hơn. Điều này
giúp đảm bảo rằng các tiến trình quan trọng hơn được thực thi trước, nhưng có thể dẫn đến
đói tài nguyên cho các tiến trình có mức ưu tiên thấp.
Trình lập lịch có thể được thực hiện với hoán đổi (preemptive) hoặc không
(nonpreemptive). Trong trường hợp lập lịch hoán đổi, một tiến trình có thể bị gián đoạn và
chuyển sang tiến trình khác nếu có tiến trình có độ ưu tiên cao hơn hoặc nếu đã hoàn thành
lượng tử thời gian được gán cho nó. Trong khi đó, trong trường hợp lập lịch không hoán
đổi, một tiến trình sẽ được thực thi trên CPU cho đến khi nó hoàn thành hoặc bị gián đoạn
do phát sinh sự kiện như chờ đợi I/O.
Trình lập lịch có rất nhiều ứng dụng trong quản lý tài nguyên và thực thi các tiến trình trên
hệ thống máy tính. Các thuật toán lập lịch khác nhau được sử dụng để đáp ứng các yêu cầu
khác nhau của hệ thống, từ đơn giản như First-Come-First-Serve (FCFS) cho đến phức tạp
hơn như Multilevel Feedback Queue hoặc đa xử lý (multiprocessing).
Các cơ chế lập lịch cho BXL: Theo cơ chế round robin:
- Mỗi tiến trình đc cấp khoảng tời gian lượng tử CPU time (time quantum q), thường 10- 100 ms
- Hết thời gian lượng tử:
+ Timer interrup => HDH can thiệp, đưa tiến trình vào cuối danh sách, chuyển thực thi cho tiến trình tiếp theo - Đánh giá
+ Nếu có n process, quantum = q (ms) => mỗi process chiếm 1/n CPU time (theo mỗi lần
không quá q ms). Thời gian chờ <= (n-1)q ms
- Chú ý về thời gian lượng tử q
+ nếu q lớn => trở thành FIFO
+ nếu q nhỏ => chi phí context switch sẽ cao Giải
thích về các cơ chế lập lịch cho BXL: 1.
FCFS (First-Come, First-Served): Là phương pháp đơn giản nhất, thực hiện lập lịch
theo thứ tự đơn giản của các tiến trình, nghĩa là tiến trình nào đến trước sẽ được thực thi
trước. Cơ chế lập lịch này thường được sử dụng cho hệ thống ít bận rộn, không có nhiều
yêu cầu về thời gian hoàn thành. lOMoAR cPSD| 61552860 2.
SSTF (Shortest Seek Time First): Là phương pháp ưu tiên cho các tiến trình có thời
gian đọc/ghi dữ liệu trên ổ đĩa thấp nhất. SSTF thường được sử dụng trong hệ thống có ổ
đĩa cứng, nơi mà việc đọc/ghi dữ liệu là thao tác chậm nhất và chiếm phần lớn thời gian chạy của hệ thống. 3.
SJF (Shortest Job First): Là phương pháp ưu tiên cho các tiến trình có thời gian thực
hiện ngắn nhất. SJF sẽ ưu tiên lập lịch cho các tiến trình có thời gian thực hiện ngắn nhất
trước, giúp giảm thời gian chờ đợi và tăng hiệu suất hệ thống. Tuy nhiên, nó có thể gây ra
hiện tượng starvation (các tiến trình dài hơn không được lập lịch) nếu các tiến trình có thời
gian thực hiện ngắn không ngừng xuất hiện. 4.
Hàng đợi nhiều mức (Multilevel Queue): Là phương pháp lập lịch phân cấp, trong
đó các tiến trình được chia thành các mức ưu tiên khác nhau và được đưa vào các hàng đợi
khác nhau dựa trên loại hoạt động hoặc ưu tiên. Cơ chế lập lịch này thường được sử dụng
trong các hệ thống đa nhiệm hoặc có nhiều loại tiến trình khác nhau như tiến trình I/O, tiến
trình nền, tiến trình ưu tiên cao, v.v.
Yếu tố thời gian lượng tử và mức ưu tiên của tiến trình trong lập lịch: -
Thời gian lượng tử: Là thời gian lớn nhất mà tiến trình chiếm BXL, HĐH sẽ thiết
lập 1 đồng hồ để đo quantum và sinh ra các tín hiệu ngắt thời gian. Gía trị của quantum
phụ thuộc vào tần suất hoạt động và số lượng của process, nó thường ko đổi tuy nhiên trong
1 số trường hợp thay đổi tạm thời để phục vụ cho mục đích ngắn hạn -
Mức ưu tiên: + Mức độ quan trọng của process được thể hiện qua mức ưu tiên,
process có mức ưu tiên cao sẽ được sử dụng nhiều tài nguyên
+ HĐH gán cho process 1 mức ưu tiên theo những tiêu chuẩn xác định
Cấu trúc và hoạt động của đĩa từ:
Đĩa từ là một thiết bị lưu trữ dữ liệu cơ học. Nó gồm một đĩa xoay nhanh được phủ một lớp
từ hoặc chất liệu khác, được sử dụng để lưu trữ dữ liệu. Các dữ liệu được lưu trữ trên đĩa
từ bằng cách sắp xếp thành các vùng trên bề mặt của đĩa từ được gọi là "track". Mỗi track
được chia thành các phần gọi là "sector" và mỗi sector có thể lưu trữ một lượng dữ liệu nhất định.
Hoạt động của đĩa từ bao gồm quá trình đọc và ghi dữ liệu từ hoặc lên đĩa từ. Khi cần đọc
hoặc ghi dữ liệu, đầu đọc/ghi được đặt ở vị trí trên bề mặt của đĩa từ, theo track và sector
tương ứng. Sau đó, đầu đọc/ghi sẽ di chuyển theo chiều ray từ bên này sang bên kia để đọc
hoặc ghi dữ liệu trên các sector khác nhau trên track đó.
Các đĩa từ thường được sử dụng trong các hệ thống lưu trữ lớn, như các máy chủ, hệ thống
lưu trữ RAID hoặc hệ thống lưu trữ dự phòng. Tuy nhiên, do tốc độ truy cập trễ hơn so với lOMoAR cPSD| 61552860
các thiết bị lưu trữ mới hơn như ổ đĩa cứng SSD hoặc bộ nhớ flash, nên đĩa từ ngày càng ít
được sử dụng trong các ứng dụng yêu cầu tốc độ cao.
Các cơ chế tối ưu thời gian định vị (seek time):
Có một số cơ chế tối ưu thời gian định vị (seek time) trên đĩa cứng: 1.
Shortest Seek Time First (SSTF): Lựa chọn tiếp theo là trường hợp có thời gian di
chuyển đĩa ngắn nhất. Giải thuật SSTF sắp xếp các yêu cầu của người dùng theo thứ tự
tăng dần về khoảng cách vị trí hiện tại của đầu đọc đến yêu cầu đó. Nhược điểm của giải
thuật SSTF là có thể xảy ra hiện tượng đói tuyến tính (starvation) đối với các yêu cầu ở các vùng xa nhau. 2.
SCAN: Giải thuật SCAN tương tự như giải thuật Elevator, đầu đọc di chuyển từ đầu
đến cuối đĩa, sau đó quay lại đầu đĩa và di chuyển tiếp theo. Giải thuật SCAN giải quyết
được vấn đề đói tuyến tính nhưng lại dễ dẫn đến việc các yêu cầu đợi lâu khi chúng ở đầu hoặc cuối đĩa. 3.
C-SCAN: C-SCAN tương tự giải thuật SCAN, nhưng khi đầu đọc đến cuối đĩa, nó
sẽ quay lại về đầu đĩa và di chuyển tiếp theo. C-SCAN tránh được hiện tượng các yêu cầu
đợi lâu khi chúng ở cuối đĩa, nhưng lại dẫn đến đói tuyến tính đối với các yêu cầu ở giữa. 4.
LOOK: Giải thuật LOOK cũng giống như giải thuật SCAN, tuy nhiên nó chỉ di
chuyển đến phần tử cuối cùng mà có yêu cầu xếp hàng, sau đó quay trở lại và di chuyển
đến phần tử đầu tiên có yêu cầu xếp hàng. Giải thuật LOOK giúp tránh được đói tuyến tính
và đợi lâu cho các yêu cầu ở đầu hoặc cuối đĩa. 5.
C-LOOK: Giải thuật C-LOOK tương tự như giải thuật LOOK, tuy nhiên nó chỉ quay
lại khi đến phần tử cuối cùng mà có yêu cầu xếp hàng, và sau đó di chuyển đến phần tử
đầu tiên có yêu cầu xếp hàng. Giải thuật C-LOOK giúp tránh được đói tuyến tính và đợi
lâu cho các yêu cầu ở giữa.
Khái niệm hệ thống file, Chức năng của hệ thống file:
Hệ thống file là một phần quan trọng của hệ thống máy tính, giúp quản lý và tổ chức các
tập tin trên đĩa cứng hoặc bất kỳ thiết bị lưu trữ khác. Hệ thống file cho phép người dùng
tạo, xóa, sao chép, di chuyển và đổi tên các tập tin. Nó cũng quản lý quyền truy cập của
người dùng đến các tập tin và thư mục. Chức năng chính của hệ thống file bao gồm: 1.
Quản lý không gian đĩa: Hệ thống file quản lý việc sử dụng không gian trên đĩa
cứng, phân vùng đĩa và phân chia không gian đĩa cho các tập tin và thư mục. 2.
Quản lý tập tin: Hệ thống file giúp người dùng tạo mới, xóa, sao chép, di chuyển và
đổi tên các tập tin. Nó cũng quản lý quyền truy cập của người dùng đến các tập tin. lOMoAR cPSD| 61552860 3.
Quản lý thư mục: Hệ thống file cho phép người dùng tạo mới, xóa, di chuyển và đổi
tên các thư mục. Nó cũng quản lý quyền truy cập của người dùng đến các thư mục. 4.
Bảo mật: Hệ thống file cung cấp bảo mật cho các tập tin và thư mục bằng cách kiểm
soát quyền truy cập của người dùng. 5.
Sao lưu và khôi phục: Hệ thống file cung cấp các tính năng sao lưu và khôi phục để
bảo vệ dữ liệu của người dùng khỏi mất mát do các sự cố như hỏng đĩa cứng hay bị tấn công virus. 6.
Quản lý các thông tin của tập tin: Hệ thống file lưu trữ các thông tin về tập tin như
tên, kích thước, định dạng, ngày tạo và ngày sửa đổi cuối cùng. 7.
Quản lý phân quyền: Hệ thống file quản lý quyền truy cập của người dùng đến các
tập tin và thư mục bằng cách sử dụng các cơ chế phân quyền như chủ sở hữu, nhóm và quyền truy cập.
Hệ thống file dùng danh sách khối dữ liệu (block data)
Hệ thống file dùng danh sách khối dữ liệu (block data) là một cách tổ chức dữ liệu trên đĩa,
trong đó dữ liệu được chia thành các khối có kích thước nhất định, mỗi khối được lưu trữ
trong một vị trí cụ thể trên đĩa và có một địa chỉ duy nhất để truy cập.
Trong hệ thống file dùng danh sách khối dữ liệu, các khối dữ liệu được sắp xếp theo thứ tự
tuần tự và mỗi khối chứa một phần của tập tin. Các khối này được liên kết với nhau thông
qua danh sách liên kết, trong đó mỗi khối chứa địa chỉ của khối tiếp theo. Khi đọc tập tin,
hệ thống file sẽ bắt đầu từ khối đầu tiên và theo dõi danh sách liên kết để đọc tiếp các khối
kế tiếp cho đến khi đọc hết tập tin.
Chức năng của hệ thống file dùng danh sách khối dữ liệu là cung cấp cách tổ chức dữ liệu
hiệu quả trên đĩa, giúp tối ưu hóa quá trình truy cập và xử lý dữ liệu. Hệ thống này cho
phép các tập tin được phân chia thành các khối nhỏ hơn để dễ dàng quản lý và truy cập.
Ngoài ra, hệ thống file dùng danh sách khối dữ liệu cũng cung cấp khả năng mở rộng dữ
liệu, khi một tập tin cần nhiều hơn một khối dữ liệu, hệ thống sẽ tự động thêm các khối
mới vào danh sách liên kết của tập tin đó.
Hệ thống file dùng danh sách khối chỉ số (block index):
Trong hệ thống file dùng danh sách khối chỉ số (block index), mỗi file được phân chia thành
các khối dữ liệu có kích thước cố định và được đánh số thứ tự. Tuy nhiên, thay vì lưu danh
sách các khối dữ liệu trực tiếp vào mỗi bản ghi của file như trong hệ thống file dùng danh
sách khối dữ liệu, hệ thống file dùng danh sách khối chỉ số sẽ lưu một danh sách các khối chỉ số cho mỗi file. lOMoAR cPSD| 61552860
Cụ thể, mỗi khối chỉ số chứa các địa chỉ của các khối dữ liệu liên tiếp, nằm trong phạm vi
từ địa chỉ khối bắt đầu đến địa chỉ khối kết thúc của file. Khi cần truy cập đến một khối dữ
liệu nào đó trong file, hệ thống sẽ truy cập vào khối chỉ số tương ứng của file đó, sau đó
dùng thông tin trong khối chỉ số để xác định địa chỉ của khối dữ liệu cần truy cập. So với
hệ thống file dùng danh sách khối dữ liệu, hệ thống file dùng danh sách khối chỉ số cho
phép xử lý các file có kích thước lớn hơn và cho phép truy cập tới các khối dữ liệu ngẫu
nhiên một cách hiệu quả hơn, nhưng đòi hỏi tốn nhiều bộ nhớ để lưu trữ danh sách khối chỉ số cho mỗi file.
Hệ thống file dùng bảng ánh xạ các block:
Trong hệ thống file dùng bảng ánh xạ các block (hay còn gọi là hệ thống file dùng inode),
mỗi file được lưu trữ trên đĩa dưới dạng một số block liên tiếp nhau. Mỗi block có kích
thước cố định và được đánh số theo thứ tự từ đầu đến cuối file.
Mỗi file được gán một inode (Index Node) duy nhất, chứa thông tin về file như tên file,
quyền truy cập, kích thước file, địa chỉ lưu trữ các block dữ liệu trên đĩa và các block chỉ
số để đánh dấu các block dữ liệu. Tất cả các inode của hệ thống file sẽ được lưu trữ trong
một khu vực trên đĩa được gọi là bảng inode.
Khi một file cần được đọc hoặc ghi, hệ thống sẽ truy cập vào inode của file đó để tìm các
thông tin cần thiết, như số lượng block dữ liệu, vị trí các block trên đĩa, v.v. Sau đó, các
block dữ liệu sẽ được đọc hoặc ghi trực tiếp trên đĩa theo vị trí được lưu trong inode.
Hệ thống file dùng bảng ánh xạ các block có ưu điểm là cho phép tìm kiếm nhanh chóng
các thông tin về file và cho phép mở rộng kích thước file một cách linh hoạt. Tuy nhiên,
việc tạo ra và quản lý inode và bảng inode cũng tốn nhiều tài nguyên hơn so với các cơ chế lưu trữ khác.
Kiểm soát truy cập: ma trận kiểm soát truy cập, danh sách kiểm soát truy cập:
Kiểm soát truy cập (Access Control) là quá trình quản lý và giám sát quyền truy cập vào
các tài nguyên trong hệ thống máy tính, nhằm đảm bảo rằng chỉ các người dùng được phép
truy cập vào tài nguyên đó mới có thể sử dụng và thực hiện các hoạt động trên tài nguyên
đó. Một số phương pháp kiểm soát truy cập phổ biến bao gồm ma trận kiểm soát truy cập
và danh sách kiểm soát truy cập.
Ma trận kiểm soát truy cập là một bảng hai chiều gồm các dòng và cột, trong đó mỗi dòng
đại diện cho một người dùng hoặc một nhóm người dùng, mỗi cột đại diện cho một tài
nguyên. Mỗi phần tử trong ma trận thể hiện quyền truy cập của người dùng đó vào tài nguyên đó. lOMoAR cPSD| 61552860
Danh sách kiểm soát truy cập là một danh sách các quyền truy cập cho mỗi tài nguyên. Mỗi
tài nguyên có một danh sách riêng biệt, chứa thông tin về những người dùng hoặc nhóm
người dùng được phép truy cập vào tài nguyên đó và quyền truy cập của họ.
Cả hai phương pháp kiểm soát truy cập này đều giúp quản lý và giám sát quyền truy cập
vào tài nguyên trong hệ thống máy tính, tuy nhiên, mỗi phương pháp có những ưu điểm và
hạn chế riêng Cơ chế kiểm soát truy cập còn bao gồm các phương pháp như Access Control
Lists (ACL) và Capability-Based Access Control.
+Access Control Lists (ACL): Mỗi tài nguyên sẽ có một danh sách các quyền truy cập,
được cấu hình bởi người quản trị hệ thống. Mỗi quyền truy cập sẽ được phân quyền cho
một hoặc nhiều người dùng hoặc nhóm người dùng. Khi người dùng cố gắng truy cập tài
nguyên, hệ thống sẽ kiểm tra danh sách quyền truy cập để xác định người dùng có đủ quyền truy cập hay không.
+Capability-Based Access Control: Khác với ACL, Capability-Based Access Control là
phương pháp xác định quyền truy cập theo người dùng hoặc quá trình sở hữu capability
(chứng chỉ) được phân phối trước đó. Capability là một đối tượng dữ liệu có giá trị như
một chứng chỉ cho phép quyền truy cập vào tài nguyên. Ví dụ, khi một quá trình yêu cầu
truy cập tới một tập tin, nó sẽ cung cấp capability của mình cho hệ thống và nếu hệ thống
xác nhận quá trình có capability đủ để truy cập tài nguyên, quá trình sẽ được cấp quyền truy cập.
Khái niệm bản quyền, phần mềm mã mở, bản quyền của phần mềm mã
mở, mô hình kinh doanh với phần mềm mã mở
Bản quyền là quyền pháp lý được cấp cho tác giả, chủ sở hữu hoặc người đại diện có quyền
sử dụng, sao chép, phân phối và phát triển các tác phẩm sáng tạo, bao gồm cả phần mềm.
Phần mềm mã mở (open source software) là phần mềm được phát hành với các giấy phép
cho phép người dùng sử dụng, sao chép, phân phối và phát triển miễn phí hoặc với giá cả
thấp hơn so với phần mềm thương mại.
Bản quyền của phần mềm mã mở có thể được bảo vệ bằng các giấy phép GPL, BSD,
Apache, MIT và nhiều giấy phép khác. Những giấy phép này đều cho phép người dùng sử
dụng, sao chép, phân phối và phát triển phần mềm mã mở.
Mô hình kinh doanh với phần mềm mã mở bao gồm nhiều hình thức khác nhau như dịch
vụ hỗ trợ, bán quyền sử dụng, quảng cáo, tài trợ, v.v. Một số công ty nổi tiếng như Red Hat,
Canonical và MongoDB đã thành công trong việc kinh doanh với phần mềm mã mở. Tuy
nhiên, mô hình này cũng đối mặt với nhiều thách thức, bao gồm cạnh tranh với các sản
phẩm miễn phí và việc tìm kiếm nguồn tài trợ để phát triển phần mềm.
Ưu điểm của phần mềm mã nguồn mở (open source software) so với phần mềm thương
mại (proprietary software) bao gồm: lOMoAR cPSD| 61552860 1.
Tính linh hoạt: Phần mềm mã nguồn mở có thể được sửa đổi và tùy chỉnh để phù
hợp với nhu cầu của người dùng. Bất kỳ ai cũng có thể tạo ra một phiên bản mới của phần
mềm mã nguồn mở và đóng góp vào cộng đồng phát triển. 2.
Tiết kiệm chi phí: Do không cần trả phí bản quyền, nên việc sử dụng phần mềm mã
nguồn mở giúp tiết kiệm chi phí cho người dùng. 3.
Sự độc lập: Người dùng có quyền kiểm tra mã nguồn của phần mềm, đảm bảo tính
an toàn và tin cậy cho hệ thống. 4.
Tính tương thích: Phần mềm mã nguồn mở được thiết kế để tương thích với nhiều
hệ thống khác nhau, giúp tăng tính tương thích và linh hoạt. 5.
Cộng đồng lớn: Cộng đồng phát triển phần mềm mã nguồn mở rộng lớn, giúp cải
thiện và phát triển liên tục phần mềm theo nhu cầu của người dùng.
Tuy nhiên, phần mềm mã nguồn mở cũng có nhược điểm:
1. Thiếu sự hỗ trợ chuyên nghiệp: Không có đội ngũ hỗ trợ chuyên nghiệp đứng sau, vì vậy
người dùng có thể gặp khó khăn trong việc tìm hiểu và sử dụng phần mềm. 2. Không đảm
bảo tính bảo mật: Không có đội ngũ chuyên gia bảo mật chuyên nghiệp, do đó phần mềm
mã nguồn mở có thể có lỗ hổng bảo mật và dễ bị tấn công.
3. Không có cam kết bảo trì: Không có cam kết bảo trì, nên nếu có lỗi hoặc vấn đề xảy ra,
người dùng phải tìm cách giải quyết một mình hoặc tìm kiếm giúp đỡ từ cộng đồng. 4. Độ
phức tạp của phần mềm: Phần mềm mã nguồn mở có thể phức tạp và khó sử dụng, đặc biệt
là với những người dùng không có.
Khái niệm phần mềm tự do. Ưu điểm của phần mềm tự do
Phần mềm tự do (free software hay software libre) là phần mềm có thể được sử dụng, sao
chép, nghiên cứu, thay đổi và tái phân phối không hạn chế, hơn nữa còn có thể được sao
chép, phân phối lại cả dạng đã được thay đổi hoặc giữ nguyên mà không có hạn chế, hoặc
chỉ bị hạn chế một cách tối thiểu nhằm đảm bảo những người tiếp nhận sau đó cũng có thể
làm những việc tương tự, đồng thời cũng nhằm tránh việc các nhà sản xuất phần cứng ngăn
chặn các sửa đổi của người dùng đối với phần cứng của họ. Ưu điểm: + tự do dùng chương
trình cho bất cứ mục đích nào
+ tự do sửa đổi chương trình thích hợp với nhu cầu của mình
+ tự do phân bố các bản sao miễn phí hoặc với lệ phí
+ tự do phân bố các phiên bản đã được sửa đổi của chương trình với mục đích
cộng đồng người dùng được phúc lợi của sự nâng cao chương trình từ đóng góp của bạn. Lịch sử HDH Linux