You are on page 1of 30

HỆ ĐIỀU HÀNH

Các vấn đề trình bày


1. Các khái niệm và phân loại Hệ điều hành
2. Các tính chất của hệ điều hành
3. Nguyên tắc xây dựng một hệ điều hành
4. Cấu trúc hệ điều hành
5. Lịch sử phát triển của hệ điều hành

1. Các khái niệm và phân loại Hệ điều hành


1.1. Khái niệm hệ điều hành
1.2. Định nghĩa hệ điều hành
1.3. Phân loại hệ điều hành theo chức năng
1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng

1.1. Khái niệm hệ điều hành


 Môt/ nhiều CPUs, các thiết bị điều khiển được liên kết bằng một hệ thống bus chung để truy nhập tới bộ nhớ phần chia
 Các thiết bị điều khiển và CPU thực hiện đồng thời, cạnh tranh với nhau

1.2. Định nghĩa hệ điều hành


 Một hệ thống máy tính chia làm 4 lớp
 Phần cứng
 Hệ điều hành
 Các chương trình ứng dụng
 Người sử dụng

1.1. Khái niệm hệ điều hành


 Phân lớn công việc của hệ điều hành là che dấu những chi tiết đáng chán và phức tạp của máy tính trước mắt người sử dụng, nói cách khác là làm sao cho
người sử dụng dễ dàng điều khiển máy tính.
 Ví dụ: Copy trong Dos
 Hệ điều hành thiết kế ra đời nhằm 2 mục đích:
 Biến một phần cứng thuần túy thành một máy ảo có những đặc trưng dễ sử dụng hơn so với phần cứng mà nó che dấu bên trong
 Hệ điều hành giúp người sử dụng được tối đa phần cứng
 Hệ điều hành và kiến trúc máy tính có mối quan hệ khăng khít nhau

1.2. Định nghĩa hệ điều hành


 Xét về phía người sử dụng: HĐH tạo môi trường giao diện giữa người dùng và máy tính, cho phép người dùng đưa ra chỉ thị hoạt động điều khiển hệ thống.
 Xét về phía trình ứng dụng: HĐH tạo môi trường cho các chương trình hoạt động. Cung cấp cơ chế kích hoạt và loại bỏ các trình ứng dụng
 Xét về phía phần cứng: HĐH quản lý các thiết bị 1 cách có hiệu quả, khai thác hết các khả năng của thiết bị, cung cấp cho các chương trình và người sử dụng
tài nguyên phần cứng khi có yêu cầu.
 HĐH là một tập hợp các chương trình hệ thống có chức năng tạo môi trường giao diện cho người sử dụng, tạo môi trường hoạt động cho các trình ứng dụng,
quản lý và khai thác hiệu quả các thiết bị phần cứng.

Phân loại
 HĐH đơn nhiệm: Mỗi thời điểm chỉ điều hành 1 hoạt động của chương trình. (Ví dụ: DOS, xử lý các công việc tuần tự theo lô)
 HĐH đa nhiệm: Cho phép thực hiện nhiều hoạt động của các chương trình tại một thời điểm.(ví dụ window 3.1, win 9x,...)
 HĐH đơn chương: Tại mỗi thời điểm chỉ cho phép 1 chương trình được tồn tại trong bộ nhớ
 HĐH đa chương: Cho phép nhiều chương trình cùng tồn tại trong bố nhớ
 HĐH chia sẻ thời gian: Đây là HĐH đa nhiệm đồng thời phân chia về mặt thời gian, cho phép nhiều người truy nhập vào nó dù ở các vị trí địa lý khác nhau
(Ví dụ:window NT, 2000,...).
 HĐH thời gian thực: Tiến trình nạp vào hệ thống tại bất kỳ 1 thời điểm nào cũng được phân bổ giờ CPU.
...

1.3. Phân loại hệ điều hành theo chức năng


 Để phân loại một hệ điều hành thuộc loại gì, phải dựa vào các tiêu chuẩn để phân loại nó. Cũng có nhiều tiêu chuẩn để phân loaị các hệ điều hành. Ở đây hãy
xem xét một số tiêu chuẩn cơ bản để đánh giá một hệ điều hành
Off – Line hay On – Line
 User – Program hay Non – Program
 Singer – User hay Multi – user
 Dựa vào tiêu chuẩn ứng dụng có thể phân thành 5 loại

 Dựa vào tiêu chuẩn ứng dụng có thể phân thành các loại:
 Hệ điều hành theo lô (Batch)
 Hệ điều hành thời gian thực (Real – time)
 Hệ điều hành cơ sở dữ liệu (Data – base)
 Hệ điều hành phân chia thời gian (Time – sharing)
 Hệ điều hành tính toán cá nhân (personal – computing) hay hệ điều hành đơn nhiệm

Lô (Batch)
Phân chia thời gian (Time sharing)
Tính toán cá nhân (Personal computing)
Cớ sở dữ liệu (Data base)
Thời gian thực (Real time)
Không thể Can thiệp
Có thể can thiệp
Có thể Lập trình được
Không thể Lập trình được
Nhiều người dùng
Một người dùng

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Dựa vào tiêu chuẩn ứng dụng có thể phân thành các loại:
 Hệ điều hành theo lô (Batch)
 Hệ điều hành thời gian thực (Real – time)
 Hệ điều hành cơ sở dữ liệu (Data – base)
 Hệ điều hành phân chia thời gian (Time – sharing)
 Hệ điều hành tính toán cá nhân (personal – computing) hay
hệ điều hành đơn nhiệm
 Hệ điều hành mạng

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành theo lô (Batch)  Máy tính đời đầu
 Năm 1950 – 1960
 Dùng cho các trường đại học Các xí nghiệp sản xuất
Vùng chương trình của người dùng
12n1gxvP4doKc4QrNVR NnmmBLWfk8SgfQF
Hệ điều hành

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành theo lô (Batch)
 Có một người điều hành máy tính
 Tại một thời điểm hệ điêu hành chỉ thực hiện một chương trình không thụ thuộc vào kích thước của chương trình đó cũng như thời gian cần thiết để chạy
 Không thể can thiệp khi chạy, có thể lập trình được, có thể dung cho loại máy tính một người dung hay nhiều người dung một lúc
 Dễ cài đặt nhưng không có tính ưu tiên cho các loại công việc

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành thời gian thực (Real –time)  Hệ điều hành có mục đích đặc biệt
 Hệ thống phun dầu ô tô, hệ thống ảnh hóa y tế.  Có sự ràng buộc rõ ràng về mặt thời gian
 Thời gian thực cứng và thời gian thực mềm
 Là hệ điều hành một người dung, không thể lập trình nhưng có thể can thiệp vào nó trong quá trình thực hiện

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành cơ sở dữ liệu (Data base)
 Được đặc trưng bởi cơ sở dữ liệu được cập nhật thường xuyên
 Nó chỉ chuyên dùng để quản lý dữ liệu mà không làm việc gì khác
 Dùng trong ngân hàng, thư viện, đăng kí đường bay ...  Duy trì tính thời sự của hệ điều hành
 Giải quyết nhiều giao dịch trên cùng một dữ liệu

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành phân chia thời gian
 Thiết bị xử lý trung tâm CPU (Center Processing Unit) phân chia
đều thời gian sử dụng choc ác tiến trình như có tính ưu tiên
 Còn được gọi là hệ đa chương
 Một chương trình có thể được thực hiện cho đến khi phải dừng lại để đợi các thiết bị vào ra hoặc đợi câu trả lời của người dung
 Khắc phục được tình trạng rỗi của các thiết bị và tăng hiệu quả làm việc cho máy tính.
 Một hệ dạng đăng biệt của hệ điều hành đa chương là hệ điều hành nhiều người sử dụng (Thực chất đây là khả năng đa chương trình có kèm theo cơ chế an
toàn thỏa đáng để bảo vệ từng người dùng đối với lỗi của người dùng khác)
 Hệ điều hành đa xử lý: Hầu hết các hệ thống ngày nay là các hệ thống đơn xử lý ; nghĩa là chỉ có 1 CPU chính.

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành phân chia thời gian  Hệ điều hành đa xử lý:
 Tuy nhiên các hệ thống đa xử lý (hệ song song hay hệ kết nối chặt) được phát triển rất quan trọng
 Có một ba ưu điểm chính:
 Thông lượng được gia tăng
 Tính kinh tế được mở rộng
 Khả năng tin cậy được gia tăng
 Có 2 dạng: Đa xử lý đối xứng SMP (symmetric multiprocessing) và đa xử lý bất đối xứng (asymmetric multiprocessing)

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành tính toán cá nhân (Hệ điều hành đơn tác vụ - Personal computing)
 Hệ điều hành này chỉ cho phép một người sử dụng tại một thời điểm người đó cũng chỉ thực hiện được một công việc mà thôi.
 Hệ điều hành này dễ sử dụng, dễ cài đặt, có thể lập trình được Có 2 loại chính: Hệ để bàn và hệ xách tay

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
Hệ điều hành tính toán cá nhân (Hệ điều hành đơn tác vụ - Personal computing)
 Hệ để bản: PC xuất hiện vào những năm 1970, sự phát triển của hệ điều hành này thay vì ưu tiên tối ưu hóa việc sử dụng CPU và các thiết bị ngoại vi thì chọn
tối ưu hóa sự tiện dụng và đáp ứng người dùng.
 Hệ xách tay

1.4. Phân loại hệ điều hành theo tiêu chuẩn ứng dụng
 Hệ điều hành mạng:
 Là các hệ điều hành dung để điều khiển sự hoạt động của mạng
máy tính (TCP/IP là giao thức mạng phổ biến nhất)
 Có các dạng:
 Hệ khách – chủ (Client – Server)
 Hệ máy chủ tính toán (Compute – Server systems)  Hệ máy chủ tập tin (File – Server system)
 Hệ ngang hàng

2. Các tính chất của hệ điều hành


 Một hệ điều hành hoàn thiện phải đảm nhiệm các chức năng cơ bản:  Thực hiện các thao tác
 Thông dịch ngôn ngữ điều tác
 Xử lý các lỗi
 Quản lý vào ra
 Quản lý ngắt
 Lập lịch
 Điều khiển và phân chia tài nguyên  Bảo vệ bộ nhớ
 Truy nhập nhiều mối
Ngoài ra, để thuật tiện cho khai thác và sử dụng còn có thể bổ sung:

Giao diện tốt
Kế toán việc sử dụng tài nguyên
Từ các yêu cầu để đánh giá hệ điều hành, dựa trên các tính
chất sau

2. Các tính chất của hệ điều hành


1. Độ tin cậy
2. Tính đồng thời
3. Tính phân chia
4. Các bộ nhớ
5. Tính vạn năng
6. Tính hiệu quả
7. Tính bảo vệ
8. Tính thuận tiện
9. Tính kế thừa, thích nghi và kích thước nhỏ

2. Các tính chất của hệ điều hành


1. Độ tin cậy
Một hệ điều hành phải thực hiện mọi hoạt động, mọi thông báo đều phải chuẩn xác tuyệt đối. Chỉ khi nào chắc chắn là đúng mới cung cấp thông tin cho người
sử dụng

2. Các tính chất của hệ điều hành


2. Tính đồng thời
Một hệ điều hành phải cho phép đồng thời có sự tồn tại của nhiều hoạt động cùng nhau hoặc song song

2. Các tính chất của hệ điều hành


3. Tính phân chia
Một hệ điều hành phải cho phép sự phân chia dung chung các tài nguyên hoặc các thông tin cho các yêu cầu khác nhau

2. Các tính chất của hệ điều hành


4. Các bộ nhớ
Một hệ điều hành phải cần thiết phải có bộ nhớ để lưu trữ các thông tin trong máy tính thay việc lưu trữ bên ngoài

2. Các tính chất của hệ điều hành


5. Tính vạn năng
Một hệ điều hành phải xác định, cùng một chương trình được khai thác hôm nay hoặc ngày mai phải luôn luôn cho cùng một kết quả nếu các dữ liệu là giống
nhau. Mặt khác, hệ điều hành phải là vô định theo nghĩa có thể phản ứng lại các sự kiện.

2. Các tính chất của hệ điều hành


6. Tính hiệu quả
Phải có tính hiệu quả và thường được xét trên các tiêu chí:
Khoảng thời gian tối thiểu để chuyển giữa các thao tác  Thời gian đơn vị xử lý trung tâm không được sử dụng  Thời gian xử lý các thao tác theo lô
Thời gian trả lời một yêu cầu (Trong hệ đa truy cập) Mức độ sử dụng tài nguyên
Tốc độ xử lý.

2. Các tính chất của hệ điều hành


7. Tính bảo vệ
Hệ điều hành phải được thao tác chuẩn xác và tin cậy, không có lỗi và phải có khả năng giả quyết được tất cả các yêu cầu bất thường có thể xảy ra. Hạn chế
được tối đa các sai sót ngẫu nhiên hay cố ý.

2. Các tính chất của hệ điều hành


8. Tính thuận tiện
Hệ điều hành phải có khả năng cải tiến hoặc sửa các lỗi mà không cần phải dung một số lượng lớn những người lập trình

2. Các tính chất của hệ điều hành


9. Tính kế thừa, thích nghi và kích thước nhỏ
Hệ điều hành phải có tính thừa kế, thích nghi và kích thước nhỏ.
Trong một chừng mực nào đó, các tính chất là mâu thuẫn với nhau. Một hệ điều hành cần phải giải quyết trung hòa, ưu tiên ở tính này hay tính chất khác để đáp
ứng được yêu cầu tối đa có thể của người sử dụng.

3. Nguyên tắc xây dựng hệ điều hành


1. Nguyên tắc module
2. Nguyên tắc phủ chức năng
3. Nguyên tắc macroprocessor
4. Nguyên tắc bảng tham số điều khiển
5. Nguyên tắc giá trị chuẩn
6. Nguyên tắc chia tham số thành hai loại
7. Nguyên tắc bảo vệ nhiều mức
8. Nguyên tắc tương đối trong định vị
9. Nguyên tắc khởi tạo trong cài đặt

3. Nguyên tắc xây dựng hệ điều hành


1.Nguyên tắc module
Mỗi công việc  mô đun CT độc lập, Các mô đun – liên kết với nhau thông qua
Input/Output:
I0 I1 I2 I3 O0 O1 O2
M0
M1
M2
Các mô đun được nhóm theo chức năng thành phần hệ thống.

3. Nguyên tắc xây dựng hệ điều hành


2. Nguyên tắc phủ chức năng
 Mỗi công việc trong hệ thống thông thường có thể thực hiện bằng nhiều cách với nhiều công cụ khác nhau,
 Lý do:
 Mỗi mô đun có hiệu ứng phụ chức năng,
 Người dùng có quyền khai thác mọi hiệu ứng phụ không phụ thuộc vào việc công bố,
 Lập trình:Phải đảm bảo các tính chất của OS với mọi hiệu ứng phụ,
 Vai trò:
 Đảm bảo thuận tiện cho người dùng,
 Đảm bảo an toàn chức năng của hệ thống,
 Ví dụ: In một file.

3. Nguyên tắc xây dựng hệ điều hành


3. Nguyên tắc macroprocessor
 Trong OS không có sẵn CT giải quyết v/đ,
 Khi cần thiết: Hệ thống tạo ra CT và thực hiện CT tạo ra:
Vấn đề Lập trình Thực hiện
Kết quả
Macroprocessor

3. Nguyên tắc xây dựng hệ điều hành


4. Nguyên tắc bảng tham số điều khiển
 Mỗi đối tượng trong OS  Bảng tham số (Control Table, Control Block),
 Hệ thống không bao giờ tham chiếu tới đối tượng vật lý mà chỉ tham chiếu tới bảng tham số điều khiển tương ứng.
 Với các đĩa từ, CD – bảng tham số ghi ở phần đầu – Vùng hệ thống (System Area),
 Với các files – Header.

3. Nguyên tắc xây dựng hệ điều hành


4. Nguyên tắc bảng tham số điều khiển
 Cho WINDOWS: Win.ini,
 Cho MS DOS: Config.sys,
 Cho WINWORD: Winword.ini,
 Bảng tham số cấu hình hệ thống: phục vụ cho mọi hệ điều hành: lưu trữ trong CMOS,

3. Nguyên tắc xây dựng hệ điều hành


5. Nguyên tắc giá trị chuẩn
 Cách gọi khác: Nguyên tắc ngầm định (Default),
 Hệ thống chuẩn bị bảng giá trị cho các tham số - bảng
giá trị chuẩn,
 Khi hoạt động: nếu tham số thiếu giá trị  OS lấy từ bảng giá trị chuẩn.
 Vai trò của nguyên lý:
 Thuận tiện: không phải nhắc lại những giá trị thường
dùng,
 Người dùng không cần biết đầy dủ hoặc sâu về hệ thống.

3. Nguyên tắc xây dựng hệ điều hành


5. Nguyên tắc giá trị chuẩn
 Ví dụ: c:\csdl>dir
 Tham số thiếu giá trị:  Ổ đĩa?
 Thư mục?
 Xem gì?
 Quy cách đưa ra?  Nơi ra?

3. Nguyên tắc xây dựng hệ điều hành


6. Nguyên tắc chia tham số thành hai loại
2 loại tham số:
Tham số vị trí (Position Parameters), Tham số khoá (Keyword Param.).
C:\CSDL\DIR A:\ /S /P /ON /L /W
Tham số vị trí
Tham số khoá
Tham số khoá – theo trình tự tuỳ ý.

3. Nguyên tắc xây dựng hệ điều hành


7. Nguyên tắc bảo vệ nhiều mức
Để đảm bảo an toàn tuyệt đối và dư liệu thì chương trình cùng với dữ liệu phải được bảo vệ bằng nhiều khóa và nhiều mức.

3. Nguyên tắc xây dựng hệ điều hành


8. Nguyên tắc tương đối trong định vị
Các module chương trình được viết theo địa chỉ tương đối kể từ đầu bộ nhớ. Khi thực hiện chúng mới được định vị tại vùng bộ nhớ cụ thể. Nguyên tắc này cho
phép hệ thống sử dụng bộ nhớ một cách linh hoạt và hệ điều hành không bị phụ thuộc vào cấu hình bộ nhớ.

3. Nguyên tắc xây dựng hệ điều hành


9. Nguyên tắc khởi tạo trong cài đặt
Nguyên lý Macroprocessor có thể áp dụng không những với từng nhiệm vụ mà với toàn bộ hệ điều hành hoặc các thành phần của nó.

4. Cấu trúc của hệ điều hành


1. Các thành phần của hệ điều hành
2. Các dịch vụ của hệ điều hành
3. Lời gọi hệ thống
4. Cấu trúc của hệ điều hành

4. Cấu trúc của hệ điều hành


1. Các thành phần của hệ điều hành

Các thành phần của hệ điều hành


1.1. Quản lý tiến trình
1.2. Quản lý bộ nhớ chính
1.3. Quản lý bộ nhớ phụ
1.4. Quản lý hệ thống vào ra
1.5. Quản lý hệ thống tệp
1.6 Hệ thống bảo vệ (protection) và bảo mật (security) 1.7 Quản lý mạng
4. Cấu trúc của hệ điều hành
1.1. Quản lý tiến trình
- Một tiến trình được coi là một đơn vị làm việc của hệ thống
- Vai trò của hệ điều hành trong việc quản lý tiến trình là:
- Tạo và hủy các tiến trình của người sử dụng và của hệ thống
- Ngừng và thực hiện lại một tiến trình
- Cung cấp cơ chế đồng bộ tiến trình
- Cung cấp cách thông tin giữa các tiến trình
- Cung cấp cơ chế kiểm soát

4. Cấu trúc của hệ điều hành


1.2. Quản lý bộ nhớ chính
- Bộ nhớ chính là trung tâm của các thao tác, xử lý.
- CPU đọc dữ liệu của bộ nhớ chính
- Các thiết bị ngoại vi cài đặt cơ chế DMA cũng đọc và ghi dữ liệu vào bộ nhớ chính
- Một chương trình muốn thực thi thì phải ánh xạ địa chỉ tuyệt đối và nạp vào bộ nhớ chính
- Để tối ưu hóa hoạt động của CPU và tốc độ máy tính, một số tiến trình được lưu trữ trong bộ nhớ.
- Để quản lý bộ nhớ chính hệ điều hành cần có:
- Lưutrữthôngtinvềvịtrítrongbộnhớđãđượcsửdụngvàaisửdụng
- Quyết định tiến trình nào được nạp vào bộ nhớ chính, khi bộ nhớ đã có thể dùng được
- Cấp phát và thu hồi bộ nhớ khi cần thiết

4. Cấu trúc của hệ điều hành


1.3. Quản lý bộ nhớ phụ
- Hầu hết các chương trình: chương trình dịch, hợp ngữ, soạn thảo văn bản ... đều được lưu trữ trên đĩa cứng
- Các nhiệm vụ:
- Quản lý vùng trống trên đĩa
- Định vị lưu trữ
- Lập lịch cho đĩa

4. Cấu trúc của hệ điều hành


1.4. Quản lý hệ thống vào ra
- Hệ thống buffer caching
- Giao tiếp điều khiển thiết bị (device drivers) tổng quát
- Bộ điều khiển cho các thiết bị phần cứng

4. Cấu trúc của hệ điều hành


1.5. Quản lý hệ thống tệp
- Một tệp tin là một tập hợp nhưng thông tin do người tạo ra nó xác định. Thông thường một tệp tin đại diện cho một chương trình và dữ liệu
- Vai trò của hệ điều hành trong việc quản lý tệp tin:
- Tạo và xóa một tệp tin
- Tạo và xóa đi một thư mục
- Hỗ trợ các thao tác trên tệp tin và thư mục
- Ánh xạ tệp tin lên hệ thống lưu trữ phụ
- Backup tên tin trên các thiết bị lưu trữ

4. Cấu trúc của hệ điều hành


1.6. Hệ thống bảo vệ (protection) và bảo mật (security)
- (Protection)Bảovệlàcơchếkiểmsoáttruycậpcủachương trình, tiến trình hoặc người sử dụng với tài nguyên hệ thống. Cơ chế này cũng cung cấp cách thức để mô
tả lại mức độ kiểm soát.
- Hệthốnghướngbảovệlàmộthệthốngcungcấpmộtphương tiện để phân biệt giữa việc dùng có quyền và không có quyền.
- Bảomật(security)làbảovệhệthốngkhỏicáccuộctấncôngtừ bên ngoài và bên trong
(Hãy xem xét một có thông tin xác thực (phương tiện nhận dạng của cô ấy đối với hệ thống) bị cắp. Dữ liệu của cô ấy có thể bị sao chép hoặc xóa, mặc dù tính
năng bảo vệ tệp và bộ nhớ đang hoạt động.)
Cung cấp khả năng bảo vệ và bảo mật
người
dùng
đánh

4. Cấu trúc của hệ điều hành


1.7. Quản lý mạng
- Mạng là tập hợp các bộ xử lý, chúng không chia sẻ bộ nhớ, các thiết bị ngoại vi hay đồng hồ. Thay vào đó mỗi bộ xử lý có bộ nhớ, đồng hồ và các bộ xử lý
giao tiếp với nhau thông qua các đường giao tiếp như bus tốc độ cao hay mạng.
- Hệ thống mạng tập hợp những hệ thống vật lý riêng lẻ, có thể có kiến trúc không đồng nhất thành một hệ thống chặt chẽ, cung cấp cho người dùng khả năng
truy xuất tới các tài nguyên khác nhau mà hệ thống duy trì.
- Hệ điều hành có vai trò:
- Hỗtrợgiaothức,hỗtrợbộxửlý,pháthiệnphầncứngvàhỗtrợđaxửlý
cho các ứng dụng.
- Quản lý người dùng cùng với các quy định cho truy cập từ xa và quản lý hệ thống.
- Quản lý kết nối mạng như định tuyến và cổng WAN.
- Cung cấp khả năng Clustering. -

4. Cấu trúc của hệ điều hành


4.2. Các dịch vụ của hệ điều hành - Thực thi chương trình
- Thao tác vào ra
- Thao tác hệ thống tập tin
- Giao tiếp
- Phát hiện lỗi
- Cấp phát tài nguyên - Kế toán
- Bảo vệ

4. Cấu trúc của hệ điều hành


4.3. Lời gọi hệ thống
Lời gọi hệ thống cung cấp giao tiếp giữa tiến trình và hệ điều hành
4. Cấu trúc của hệ điều hành
Phân loại các lời gọi hệ thống
- Quản lý tiến trình: Khởi tạo tiến trình, hủy tiến trình - Quản lý bộ nhớ: Cấp phát và giải phóng bộ nhớ ...
- Quản lý file: Tạo mới, xóa, đọc và ghi file ..
- Quản lý thiết bị vào ra: Thực hiện trao đổi vào/ra
- Trao đổi thông tin với hệ thống: lấy/đặt ngày giờ ... - Truyền thông liên tiến trình

4. Cấu trúc của hệ điều hành


4.4. Cấu trúc hệ điều hành
4.4.1 Cấu trúc đơn giản (MSDOS; phiên bản UNIX đầu tiên)
4.4.2 Cấu trúc theo lớp (UNIX, OS2)
4.4.3 Cấu trúc theo máy ảo (MS-DOS chạy trên nền window, máy ảo java)
4.4.4 Cấu trúc theo mô hình client server (WINNT)

4. Cấu trúc của hệ điều hành


4. Cấu trúc hệ điều hành
4.1 Cấu trúc đơn giản

4.4.1 Cấu trúc đơn giản


- Cấu trúc này là tập hợp các thủ tục có thể gọi lẫn nhau.
- Phân chia thủ tục thành 3 cấp độ
- Chương trình chính (Chương trình của người sử dụng)
- Thủ tục dịch xử lý lời gọi hệ thống
- Tập hợp các thủ tục tiện ích hỗ trợ các thủ tục dịch vụ xử lý những lời gọi hệ thống
- MS_DOS là một hệ điều hành có cấu trúc đơn giản. - UNIX có cấu trúc đơn giản

4. Cấu trúc của hệ điều hành Nhược điểm:


• Không có sự che dấu dữ liệu, mỗi thủ tục có thể gọi đến tất cả các thủ tục khác, mức độ phân chia thủ tục nếu có cũng không rõ rêt, chương trình ứng dụng có
thể truy cập đến các thủ tục cấp thấp, tác động đến cả phần cứng
• Hệ thống thủ tục mang tính chất tĩnh, chỉ được kích hoạt khi cần thiết do vậy hệ điều hành thiếu chủ động trong việc quản lý môi trường.

4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp

4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
layer 5:
layer 4:
layer 3:
layer 2:
layer 1:
layer 0:
user programs
buffering for input and output
operator-console device driver
memory management
CPU scheduling
hardware

4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
Ưu điểm:
 Tính module.
 Mỗi lớp được cài đặt chỉ với các thao tác được cũng cấp bởi các lớp bên dưới. Một lớp không cần biết các thao tác được cài đặt như thế nào; nó chỉ cần biết
các thao tác đó làm gì. Do đó, mỗi lớp che dấu sự tồn tại của cấu trúc dữ liệu, thao tác phần cứng từ các lớp cấp cao hơn.

4. Cấu trúc của hệ điều hành 4.2. Cấu trúc theo lớp
Khó khăn:
 Cách tiếp cận phân lớp liên quan tới việc định nghĩa cẩn thận các lớp vì một lớp chỉ có thể sử dụng các lớp bên dưới nó.

4. Cấu trúc của hệ điều hành 4.3. Cấu trúc máy ảo

4. Cấu trúc của hệ điều hành 4.4. Cấu trúc client – server

Lịch sử phát triển


 Lịch sử phát triển HĐH gắn liền với lịch sử phát triển của máy tính số.
 4 thế hệ máy tính số: Thế hệ thứ 1
Thế hệ thứ 2
Thế hệ thứ 3
Thế hệ thứ 4

1. Tiến Trình
2. Luồng(thread)
3. Điều phối CPU
4. Tài nguyên găng và đồng bộ tiến trình 5. Bế tắc và xử lý bế tắc
1

1. Tiến trình (process)


1.1. Khái niệm tiến trình
 1.2. Điều phối tiến trình
 1.3. Thao tác trên tiến trình  1.4. Phân loại tiến trình
 1.5. Liên lạc giữa các tiến trình
2

1.1. Khái niệm tiến trình


Chương trình (program) là một thực thể thụ động chứa đựng các chỉ thị điều khiển máy tính (lệnh) thi hành một tác vụ nào đó. Chương trình được cất trên đĩa
dưới dạng file.
Khi chương trình được nạp vào RAM và CPU bắt đầu thi hành chương trình thì lúc này chương trình trở thành tiến trình (process).
3

1.1. Khái niệm tiến trình


 Ví dụ: Task manager
4

1.1. Khái niệm tiến trình


 Là một dãy thay đổi trạng thái của hệ thống
 Chuyển từ trạng thái này sang trạng thái khác được thực hiện theo yêu cầu nằm trong chương trình của người sử dụng
 Xuất phát từ một trạng thái ban đầu
 Trạng thái hệ thống:
 Vi xử lý: Giá trị các thanh ghi
 Bộ nhớ: Nội dung các ô nhớ
 Thiết bị ngoại vi: Trạng thái thiết bị
A
S0 S1 S2 S3 S4 S5 . . . . Sn-1 Sn Sn+1 . . . .
B
5

1.1. Khái niệm tiến trình


Một chương trình có thể:
 Được thực thi bởi các tiến trình khác nhau, với các
bộ dữ liệu khác nhau Gọi tới nhiều tiến trình
Tiến trình là một thực thể chủ động: bộ đếm lệnh, tệp tài nguyên
6

DỊCH VÀ THỰC THI MỘT CHƯƠNG TRÌNH


7

DỊCH VÀ THỰC THI MỘT CHƯƠNG TRÌNH


Hệ điều hành tạo một tiến trình và phân phối vùng nhớ cho nó Bộ thực hiện (loader/exec)
 Đọc và dịch (interprets) file thực thi (header file)
 Thiết lập không gian địa chỉ cho tiến trình để chứa mã lệnh và dữ
liệu từ file thực thi
 Đặt các tham số dòng lệnh, biến môi trường (argc, argv, envp) vào stack
 Thiết lập các thanh ghi của VXL tới các giá trị thích hợp và gọi hàm “_start()” (hàm của hệ điều hành)
Chương trình bắt đầu thực hiện tại “_start()”. Hàm này gọi tới hàm main() (hàm của chương trình)
-> “Tiến trình” đang thực hiện, không còn đề cập đến “ chương trình ” nữa
Khi hàm main() kết thúc, OS gọi tới hàm “_exit()” để hủy bỏ tiến tình và thu hồi tài nguyên
8

1.1. Khái niệm tiến trình


 Các trạng thái của một tiến trình
New Ready Running Waiting Terminated
: Tiến trình được tạo lập
: Tiến trình chờ cấp phát CPU để xử lý
: Tiến trình đang được xử lý
: Tiến trình dừng vì thiếu tài nguyên hay chờ sự kiện nào đó : Tiến trình hoàn thành
 Chú ý: Tại 1 thời điểm chỉ có 1 TT ở trạng thái Running với 1 bộ VXL. Trong khi có thể có nhiều TT ở trạng thái Ready hay Waiting
9

6 10

Các cung chuyển tiếp trong sơ đồ trạng thái biểu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau:
 Được phép: Tiến trình mới tạo, nếu bộ nhớ còn trống, sẽ được đưa vào bộ nhớ và sẵn sàng nhận CPU, khi đó tiến trình từ trạng thái New được chuyển sang
trạng thái Ready
 Được giao: Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU và cho tiến trình thực hiện, khi đó tiến trình từ trạng thái Ready được
chuyển sang trạng thái Running
 Kết thúc: Khi tiến trình kết thúc việc thực hiện, khi đó tiến trình từ trạng thái Running được chuyển sang trạng thái End
 Chờ I/O hoặc sự kiện: Khi tiến trình yêu cầu một tài nguyên những chưa được đáp ứng vì tài nguyên chưa sẵn sàng hoặc tiến trình chờ thao tác nhập/xuất
hoàn thành hoặc tiến trình chờ một sự kiện nào đó, khi đó tiến trình được chuyển từ trạng thái Running sang trạng thái Waiting
 Ngắt: Khi tiến trình tạm dừng vì hết thời gian sử dụng CPU, bộ điều phối sẽ chọn một tiến tình khác để xử lý, khi đó tiến trình được chuyển từ trạng thái
Running sang trạng thái Ready
 I/O hoặc sự kết thúc: Khi tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp
phát, hay sự kiện hoặc thao tác nhập/ xuất mà tiến trình đang đợi hoàn tất, khi đó bộ
tiến trình được chuyển từ trạng thái Waiting sang trạng thái Ready
6 11

Cấu trúc của khối quản lý tiến trình (PCB) Process Control Block
Các con trỏ (địa chỉ liên kết)
Trạng thái tiến trình
Số hiệu tiến trình
Bộ đếm lệnh
Nội dung các thanh ghi của CPU
Thông tin quản lý bộ nhớ
Danh sách các file đang mở
Con trỏ tới PCB khác
Thông tin thống kê
Thông tin tài nguyên có thể sử dụng Thông tin dùng để điều phối tiến trình ...........
6 12

Cấu trúc của khối quản lý tiến trình (PCB) Process Control Block
Mỗi tiến trình được thể hiện trong hệ thống bởi một khối điều khiển tiến trình
PCB chứa các thông tin với mỗi tiến trình gồm có: để xác định duy nhất một TT
 Process ID, Parent process ID
 Trạng thái tiến trình: new, ready, running, waiting,end
 Program counter: Địa chỉ của lệnh kế tiếp sẽ thực thi
 Các thanh ghi CPU
 Thông tin dùng để định thời CPU : priority...
 Thông tin bộ nhớ : base/limit register, page tables
 Thông tin thống kê: CPU time, time limits
 Thông tin trạng thái I/O: danh sách thiết bị I/O được cấp phát, danh sách các file đang mở..
 Con trỏ ( pointer) đến PCBs khác
PCB đơn giản phụ vụ như kho chứa cho bất cứ thông tin khác nhau từ quá
trình này tới quá trình khác
6 13

Mục tiêu của PCB


 Bảo đảm một số lượng hợp lệ các tiến trình truy xuất đồng thời đến các tài nguyên không thể chia sẻ được
 Cấp phát tài nguyên cho tiến trình có yêu cầu trong một khoảng thời gian trì hoãn có thể chấp nhận được
 Tối ưu hóa sự sử dụng tài nguyên
6 14

Danh sách các tiến trình


Tail
Head
Các con trỏ (địa chỉ liên kết)
Trạng thái tiến trình
Số hiệu tiến trình
Bộ đếm lệnh
Nội dung các thanh ghi của CPU
Thông tin quản lý bộ nhớ
Danh sách các file đang mở
Con trỏ tới PCB khác Thông tin thống kê Thông tin tài nguyên có thể sử dụng Thông tin dùng để điều phối tiến trình ...........
Các con trỏ (địa chỉ liên kết)
Trạng thái tiến trình
Số hiệu tiến trình
Bộ đếm lệnh
Nội dung các thanh ghi của CPU
Thông tin quản lý bộ nhớ
Danh sách các file đang mở
Con trỏ tới PCB khác Thông tin thống kê Thông tin tài nguyên có thể sử dụng Thông tin dùng để điều phối tiến trình ...........
Các con trỏ (địa chỉ liên kết)
Trạng thái tiến trình
Số hiệu tiến trình
Bộ đếm lệnh
Nội dung các thanh ghi của CPU
Thông tin quản lý bộ nhớ
Danh sách các file đang mở
Con trỏ tới PCB khác Thông tin thống kê Thông tin tài nguyên có thể sử dụng Thông tin dùng để điều phối tiến trình ...........
6 15

1.1. Khái niệm tiến trình


Tiến trình đơn luồng: Là tiến trình thực hiện chỉ 1 luồng thực thi
Có một luồng câu lệnh thực thi
-> Cho phép thực hiện chỉ một nhiệm vụ tại một thời điểm
Tiến trình đa luồng : Là tiến trình có nhiều luồng thực thi -> cho phép thực hiện nhiều hơn một nhiệm vụ tại một thời điểm
6 16

1.2. Điều phối tiến trình


Mục đích Sử dụng tối đa thời gian của CPU -> Cần có nhiều tiến trình trong hệ thống
Vấn đề Luân chuyển CPU giữa các tiến trình -> Phải có hàng đợi cho các tiến trình
Hệ thống một processor
-> Một tiến trình thực hiện
-> Các tiến trình khác phải đợi tới khi CPU tự do
6 17

Các danh sách điều phối


Hệ thống có nhiều hàng đợi dành cho tiến trình
• Job-queue: Tập các tiến trình trong hệ thống
• Ready – queue: Tập các tiến trình tồn tại trong bộ nhớ, đang sẵn sàng
và chờ đợi để được thực hiện
• Device queues tập các tiến trình đang chờ đợi một thiết bị vào ra. Phân
biệt hàng đợi cho từng thiết bị
6 18

Các danh sách điều phối


 Mỗi tài nguyên có một hàng đợi lưu danh sách các tiến trình đang đợi tài nguyên
 Khi một Tiến trình được tạo, PCB của tiến trình sẽ chèn vào danh sách tác vụ (job list). Khi bộ nhớ đủ chỗ, một tiến tình trong danh sách tác vụ được chọn,
nạp từ đĩa vào bộ nhớ và PCB của tiến trình đó được chuyển sang danh sách sẵn sàng (ready list). Bộ điều phối sẽ chọn một tiến trình trong danh sách sẵn sàng
và cấp CPU cho tiến trình đó. Tiến trình được cấp CPU sẽ thi hành và sẽ chuyển sang danh sách chờ đợi (waiting list) khi xảy ra các sự kiện, I/O
 Tiến trình đang thi hành có thể bị bắt buộc tạm dừng xử lý do một ngắt xảy ra, khi đó tiến trình được đưa trở lại vào danh sách sẵn sàng để chờ được cấp CPU
cho lượt tiếp theo.
 HĐH chỉ sử dụng một danh sách tác vụ, một danh sách sẵn sàng nhưng mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách chờ đợi riêng bao gồm các
tiến trình đang chờ được cấp phát tài nguyên đó
6 19

Khi có yêu cầu tài nguyên mà chưa được đáp ứng, tiến trình được đưa vào hàng đợi tài nguyên
• Cáctiếntrìnhdichuyểngiữahàngđợikhácnhau
• Tiếntrìnhmớitạo,đượcđặttronghàngđợisẵnsàng,vàđợi
cho tới khi được lựa chọn để thực hiện
6 20

Các hàng đợi tiến trình


• Tiến trình đã được chọn và đang thực hiện
1. Đưa ra một yêu cầu vào ra: đợi trong một hàng đợi thiết bị 2. Tạo một tiến trình con và đợi tiến trình con kết thúc
3. Hết thời gian sử dụng CPU, phải quay lại hàng đợi sẵn sàng
• Trường hợp (1+ 2) sau khi sự kiện chờ đợi hoàn thành
• Tiến trình sẽ chuyển từ trạng thái đợi sang trạng thái sẵn sàng
• Tiến trình quay lại hàng đợi sẵn sàng
• Tiến trình tiếp tục chu kỳ ( sẵn sàng, thực hiện, chờ đợi) cho tới khi kết thúc
• Xóa khỏi tất cả các hàng đợi
• PCB và tài nguyên đã cấp được giải phóng
6 21

Bộ điều phối
Lựa chọn tiến trình trong các hàng đợi
• Điều phối công việc (Job scheduler; Long – term
scheduler)
• Điều phối CPU (CPU scheduler; short-term
scheduler)
• Swap tiến trình ( Medium – term scheduler)
6 22

Điều phối công việc


• Chọn các tiến trình từ hàng đợi tiến trình được lưu trong các vùng đệm (đĩa từ) và đưa vào bộ nhớ để thực hiện
• Thực hiện không thường xuyên (đơn vị giây / phút)
• Điều khiển mức độ đa chương trình (sô tiến trình trong bộ nhớ)
• Khi mức độ đa chương trình ổn định, điều phối công việc được gọi chỉ khi có
tiến trình rời khỏi hệ thống
• Vấn đề lựa chọn công việc
✓ Tiến trình thiên về vào/ra: sử dụng ít thời gian CPU
✓ Tiến trình thiên về tính toán: sử dụng nhiều thời gian CPU
✓ Cần lựa chọn lẫn cả 2 loại tiến trình
-> TT vào ra: hàng đợi sẵn sàng rỗng, lãng phí CPU
-> TT tính toán: hàng đợi thiết bị rỗng, lãng phí thiết bị
6 24

Điều phối CPU


• Lựa chọn một tiến trình từ hàng đợi các tiến tình đang sẵn sàng thực hiện và phân phối CPU cho nó
• Được thực hiện thường xuyên (VD: 100ms/lần)
• Tiến trình thực hiện vài ms rồi thực hiện vào ra
• Lựa chọn tiến trình mới, đang sẵn sàng
• Phải thực hiện nhanh
• 10ms để quyết định -> 10/(110)=9% thời gian CPU lãng phí
• Vấn đề luân chuyển CPU từ tiến trình này tới tiến trình khác
• Phải lưu trạng thái của tiến trình cũ (PCB) và khôi phục trạng thái
cho tiến trình mới
• Thời gian luân chuyển là lãng phí
• Có thể được hỗ trợ bởi phần cứng
• Vấn đề lựa chọn tiến trình (điều phối CPU)
6 25

Swapping tiến trình (Medium-term scheduler)


• Nhiệmvụ
• Đưatiếntrìnhrakhỏibộnhớ(làmgiảmmứcđộđachương
trình)
• Sauđóđưatiếntrìnhquaylại(cóthểởvịtríkhác)vàtiếptục
thực hiện
• Mụcđích:Giảiphóngvùngnhớ,tạovùngnhớtựdorộnghơn
6 26

Chuyển ngữ cảnh (context switch)


• Chuyển CPU từ tiến trình này sang tiến trình khác ( hoán đổi tiến trình thực hiện)
• Thực hiện khi xuất hiện tín hiệu ngắt ( ngắt thời gian) hoặc tiến trình đưa ra lời gọi hệ thống ( thực hiện vào ra)
• Lưu đồ của chuyển CPU giữa các tiến trình
6 27

1.3. Thao tác trên tiến trình


 Tạo tiến trình
 Kết thúc tiến trình
6 28

Tạo tiến trình


 Tiến trình có thể tạo nhiều tiến trình mới cùng hoạt động ( CreateProcess(), fork())
 Tiến trình tạo: tiến trình cha
 Tiến trình được tạo: tiến trình con
 Tiến trình con có thể tạo tiến trình con khác -> cây tiến trình  Vấn đề phân phối tài nguyên
 Tiến trình con lấy tài nguyên từ hệ điều hành  Tiến trình con lấy tài nguyên từ tiến trình cha
 Tất cả các tài nguyên
 Một phần tài nguyên của tiến trình cha ( ngăn ngừa việc tạo quá nhiều
tiến trình con)  Vấn đề thực hiện
 Tiến trình cha tiếp tục thực hiện đồng thời với tiến trình con
 Tiến trình cha đợi tiến trình con kết thúc
6 29

Tạo tiến trình


6 30

Kết thúc tiến trình


• Hoàn thành câu lệnh cuối và yêu cầu HĐH xóa nó ( exit)
• Gửi trả dữ liệu tới tiến trình cha
• Cá tài nguyên đã cung cấp được trả lại hệ thống
• Tiến trình cha có thể kết thúc sự thực hiện của tiến trình con
• Tiến trình cha phải biết định danh tiến trình con -> tiến trình con phải gửi định
danh cho tiến trình cha khi được khởi tạo
• Sử dụng lời gọi hệ thống (abort)
• Tiến trình cha kết thúc tiến trình con khi
• Tiến trình con sử dụng vượt quá tài nguyên được cấp
• Nhiệm vụ cung cấp cho tiến trình con không còn cần thiết nữa
• Tiến trình cha kết thúc và hệ điều hành không cho phép tiến trình con tồn tại
khi tiến trình cha kết thúc -> Cascading termination . VD, kết thúc hệ thống
6 31

1. Tiến Trình
2. Luồng(thread)
3. Điều phối CPU
4. Tài nguyên găng và đồng bộ tiến trình 5. Bế tắc và xử lý bế tắc
1

1.3. Thao tác trên tiến trình


 Tạo tiến trình
 Kết thúc tiến trình
62

Tạo tiến trình


 Tiến trình có thể tạo nhiều tiến trình mới cùng hoạt động ( CreateProcess(), fork())
 Tiến trình tạo: tiến trình cha
 Tiến trình được tạo: tiến trình con
 Tiến trình con có thể tạo tiến trình con khác -> cây tiến trình  Vấn đề phân phối tài nguyên
 Tiến trình con lấy tài nguyên từ hệ điều hành  Tiến trình con lấy tài nguyên từ tiến trình cha
 Tất cả các tài nguyên
 Một phần tài nguyên của tiến trình cha ( ngăn ngừa việc tạo quá nhiều
tiến trình con)  Vấn đề thực hiện
 Tiến trình cha tiếp tục thực hiện đồng thời với tiến trình con
 Tiến trình cha đợi tiến trình con kết thúc 63

Kết thúc tiến trình


• Hoàn thành câu lệnh cuối và yêu cầu HĐH xóa nó ( exit)
• Gửi trả dữ liệu tới tiến trình cha
• Cá tài nguyên đã cung cấp được trả lại hệ thống
• Tiến trình cha có thể kết thúc sự thực hiện của tiến trình con
• Tiến trình cha phải biết định danh tiến trình con -> tiến trình con phải gửi định
danh cho tiến trình cha khi dược khởi tạo
• Sử dụng lời gọi hệ thống (abort)
• Tiến trình cha kết thúc tiến trình con khi
• Tiến trình con sử dụng vượt quá tài nguyên được cấp
• Nhiệm vụ cung cấp cho tiến trình con không còn cần thiết nữa
• Tiến trình cha kết thúc và hệ điều hành không cho phép tiến trình con tồn tại
khi tiến trình cha kết thúc -> Cascading termination . VD, kết thúc hệ thống
64

tiến trình tuần tự


1.4. Phân loại tiến trình
• Các
• Điểm bắt đầu của tiến trình này nằm sau điểm kết thúc của tiến trình kia
tiến trình song song
• Các
• Điểm bắt đầu của tiến trình này nằm giữa điểm bắt đầu và kết thúc của
tiến trình kia
• Độc lập: Không ảnh hưởng tới hoặc bị ảnh hưởng bởi tiến trình khác
đang thực hiện trong hệ thống
• Có hợp tác: Ảnh hưởng tới hoặc chịu ảnh hưởng bởi tiến trình khác
đang thực hiện trong hệ thống
• Hợp tác tiến trình nhằm
• Chia sẻ thông tin
• Tăng tốc độ tính toán
• Module hóa
• Tiện dụng
• Hợp tác tiến trình đòi hỏi cơ chế cho phép
• Truyền thông giữa các tiến trình
• Đồng bộ hóa hoạt động của các tiến trình 65

1.5. Liên lạc giữa các tiến trình


 Bài toán người sản xuất (producer) – Người tiêu thụ (consumer)
• Hệ thống gồm 2 tiến trình
• Producer sản xuất ra các sản phẩm
• Consumer tiêu thụ các sản phẩm được sản xuất ra
• Ứng dụng
• Chương trình in (producer) sản xuất ra các ký tự được tiêu thụ bởi bộ
điều khiển máy in (consumer)
• Trình dịch (producer) sản xuất ra mã hợp ngữ, trình hợp ngữ
(consumer/producer) tiêu thụ mã hợp ngữ rồi sản xuất ra module đối tượng được bộ thực hiện (consumer) tiêu thụ
66

1.5. Liên lạc giữa các tiến trình


 Bài toán người sản xuất (producer) – Người tiêu thụ (consumer)
• Producer và Consumer hoạt động đồng thời
• Sử dụng vùng đệm dùng chung (buffer) chứa sản phẩm được điền vào bởi producer
và được lấy ra bởi consumer
IN
OUT Counter
Vị trí trống kế tiếp trong vùng đệm. Vị trí đấy đầu tiên trong vùng đệm
Số sản phẩm trong vùng đệm • Producer và Consumer phải đồng bộ
Consumer không cố gắng tiêu thụ một sản phẩm chưa được sản xuất
• Vùng đệm dung lượng vô hạn
• Khi Buffer rỗng, Consumer phải đợi
• Producer không phải đợi khi đặt sản phẩm vào buffer
• Vùng đệm dung lượng hữu hạn
• Khi Buffer rỗng, Consumer phải đợi
• Producer phải đợi nếu vùng đệm đầy
67

1.5. Liên lạc giữa các tiến trình


 Trao đổi giữa các tiến trình • Dùng mô hình bộ nhớ phân chia
••
Các tiến trình chia sẻ vùng nhớ chính
Mã cài đặt được viết tường minh bởi người lập trình ứng dụng
Ví dụ: Bài toán Producer – Consumer

• Dùng mô hình truyền thông liên tiến trình
(Interprocess communication)
• Là cơ chế cho phép các tiến trình truyền thông
và đồng bộ các hoạt động
• Thường được sử dụng trong các hệ phân tán
khi các tiến tình truyền thông nằm trên các
máy khác nhau (chat)
• Đảm bảo bởi hệ thống truyền thông điệp
68

1.5. Liên lạc giữa các tiến trình


Hệ thống truyền thông điệp
• Cho phép các tiến trình trao đổi với nhau không qua sử dụng các biến phân chia
• Yêu cầu 2 thao tác cơ bản
• Send(msg) Các msg có kích thước cố định hoặc thay đổi
• Cố định: dễ cài đặt mức hệ thống, nhiệm vụ lập trình khó
• Thay đổi: cài đặt mức hệ thống phức tạp, lập trình đơn giản • Receive(msg)
• Nếu 2 tiến trình P và Q muốn trao đỏi, chúng cần
• Thiết lập một liên kết truyền thông (vật lý / logic) giữa chúng
• Trao đỏi các messages nhờ các thao tác send/receive
• Các vấn đề cài đặt
• các liên kết dược thiết lập như thế nào?
• Mộ liên kekets có thể dùng cho nhiều hơn 2 tiến trình?
• Bao nhiêu liên kết có thể tồn tại giữa mọi cặp tiến trình
• Kích thước thông báo mà liên kết chập nhận cố định/thay đổi?
• Liên kết một hay hai chiều? 69

1.5. Liên lạc giữa các tiến trình


Liên lạc trực tiếp
• Các tiến trình phải gọi tên tiến trình nhận/gửi một cách tường minh
• send(P,message)- gửi một thông báo tới tiến trình P
• receive (Q,message)- Nhận một thông báo tiến trình Q • Tính chất của liên kết truyền thông
• Các liên kết được thiết lập tự động
• Mộ liên kết gắn chỉ với cặp tiến trình truyền thông
• Chỉ tồn tại một liên kết giữa cặp tiến trình
• Liên kết có thể là một chiều, nhưng thường hai chiều
6 10

1.5. Liên lạc giữa các tiến trình


Liên lạc gián tiếp
• Các thông điệp được gửi/nhận tới / từ các hòm thư (maiboxes), cổng (ports)
• Mỗi hòm thư có định danh duy nhất
• Các tiến trình có thể trao đổi nếu chúng dùng chung hòm thư
• Tính chất các liên kết

•••
Các liên kết được thiết lập chỉ khi các tiến trình dùng chung hòm thư
Một liên kết có thể được gắn với nhiều tiến trình
Mỗi cặp tiến trình có thể dùng chung nhiều liên kết truyền thông Liên kết có thể một hay hai chiều
• Các thao tác
• Tạo hòm thư
• Gửi/nhận thông báo qua hòm thư
• send(A,msg): gửi một msg tới hòm thư A
• receive(A,msg): Nhận một msg từ hòm thư A
• Hủy bỏ hòm6thư 11

1.5. Liên lạc giữa các tiến trình


Vấn đề đồng bộ hóa
• Truyềnthôngđiệpcóthểphảichờ(blocking),hoặckhôngchờđợi( non blocking)
Blocking Truyền thông đồng bộ
Non-Blocking Truyền thông không đồng bộ
• Cácthủtụcsend()vàreceive()cóthểbịchờđợihoặckhôngchờ
đợi
• BlockingsendTiếntrìnhgửithôngbáovàđợichotớikhimsg
được nhận bởi tiến trình nhận haowcj bởi hòm thư
• NonBlockingsendTieenstrìnhgửithôngbáovàtiếptụclàm
việc
• BlockingreceiveTiếntrìnhnhậnphảiđợichotớikhicóthông
báo
• Non-blockingreceiveTiếntrìnhnhậntrảvềhoặcmộtthôngbáo
có giá trị hoặc một giá trị null
6 12

1.5. Liên lạc giữa các tiến trình


Vùng đệm
• Cácthôngđiệptraođổigiữacáctiếntrìnhđượclưutronghàngđợi tạm thời
• Hàngđợicóthểdượccàitheo
• Khả năng chứa 0 ( Zero capacity): Độ dài hàng đợi là 0
• Khôngtồntạithôngđiệptrongđườngliênkết
-> Sender phải đợi cho tới khi thông điệp được nhận
• Khả năng chứa có giới hạn (Bound capacity)
• Hàngđượicóđộdàin->chứanhiềunhấtnthôngđiệp
• Nếuhàngđượikhôngđầy,thôngđiệpsẽđượclưuvào
trong vùng đệm và Sender tiếp tục bình thường
• Nếuhàngđợiđầy,senderphảiđợichotớikhicóchỗtrống
• Khả năng chứa không giới hạn (Unbound capacity) • Senderkhôngbaogiờphảiđợi
6 13

1.5. Liên lạc giữa các tiến trình


Liên lạc trong client – server
 Socket
 RPC(Remote Procedure Calls)
 RMI( Remote Method Invocation) Cơ chế truyền thông của Java
6 14

1.5. Liên lạc giữa các tiến trình


Socket
• Đượcxemnhưđầumútchotruyềnthông,quađócácứngdụng gửi / nhận dữ liệu qua mạng
• Truyền thông thực hiện giữa các Sockets
• Bao gồm cặp địa chỉ IP và cổng. Ví dụ : 161.25.19.8:1625
• Địa chỉ IP: Địa chỉ của máy trong mạng
• Cổng(port): Định danh tiến trình tham gia trao đổi trên máy • CácloạiSockets
• Stream Socket: Dựa trên giao thức TCP/IP -> Truyền dữ liệu tin cậy
• DatagramSocket:DựatrêngiaothứcUDP/IP->Truyềndữ liệu không tin cậy
• Win32API:Winsock
• Windows Sockets Application Programming Interface
6 15

1.5. Liên lạc giữa các tiến trình


 Thiết lập quá trình trao đổi dữ liệu
6 16

1.5. Liên lạc giữa các tiến trình


socket() bind()
Listen() Accept() Connect() Send() Sendto() Receive() Recvfrom() Slosesocket() ........
Một số hàm trong WINAPI
Tạo socket truyền dữ liệu
Định danh cho socket vừa tạo( gán cho
một cổng)
Lắng nghe một kết nối
Chấp nhận một kết nối
kết nối với server
Gửi dữ liệu với stream socket Gửi dữ liệu với datagram socket Nhận dữ liệu với stream socket Nhận dữ liệu với datagram socket Kết thúc một socket đã tồn tại
6 17

Process Q
While(1){ Receive(P,Msg); PrintLine(Msg); ReadLine(Msg); Send(P,Msg);
}
Vấn đề nhận Msg
• Blocking Receive • Non-blocking
Receive
Giải quyết
Thực hiện song song Receive & Send
Process P
While(1){ ReadLine(Msg); Send(P,Msg); Receive(P,Msg); PrintLine(Msg); }
2. Luồng (Thread)
6 18

2. Luồng (Thread)
Là đơn vị sử dụng CPU cơ bản gồm
 Định danh luồng (ID Thread)
 Bộ đếm chương trình (Program Computer)  Tập các thanh ghi (Registers)
 Không gian stack
 Chia sẻ cùng các luồng khác trong cùng một tiến trình  Đoạn mã lệnh
 Đoạn dữ liệu ( đối tượng toàn cục)
 Các tài nguyên hệ điều hành khác ( file đang mở)
 Các luồng có thể thực hiện cùng đoạn mã với ngữ cảnh ( Tập thanh ghi, Bộ đếm chương trình , stack) khác nhau
 Còn được gọi là tiến trình nhẹ (LWP: Lightweight Process)  Một tiến trình có ít nhất là một luồng
6 19

Định nghĩa
Thời gian chuyển đổi ngữ cảnh
Chia sẻ bộ nhớ
Giao tiếp
Khi bị chặn
Tiêu thụ tài nguyên
Sự phụ thuộc
Chia sẻ dữ liệu và code
Cách hệ điều hành nhìn nhận
Thời gian tạo
Thời gian chấm dứt
6
So sánh luồng với tiến trình
Tiêu chí
Tiến trình
Tiến trình là một chương trình đang được thực thi, tức là một chương trình đang hoạt động.
Các tiến trình đòi hỏi nhiều thời gian hơn để chuyển đổi ngữ cảnh vì chúng nặng hơn.
Các tiến trình hoàn toàn độc lập và không chia sẻ bộ nhớ.
Giao tiếp giữa các tiến trình đòi hỏi nhiều thời gian hơn giữa các luồng.
Nếu một tiến trình bị chặn, các tiến trình còn lại có thể tiếp tục thực thi.
Tiến trình yêu cầu nhiều tài nguyên hơn luồng.
Các tiến trình riêng lẻ độc lập với nhau.
Các tiến trình có dữ liệu và code segment độc lập.
Tất cả các tiến trình khác nhau được hệ điều hành xử lý riêng biệt.
Các tiến trình đòi hỏi nhiều thời gian hơn để tạo.
Các tiến trình yêu cầu nhiều thời gian hơn để chấm dứt.
Luồng
Luồng là một tiến trình gọn nhẹ có thể được quản lý độc lập bởi một bộ lập lịch.
Các luồng yêu cầu ít thời gian hơn để chuyển đổi ngữ cảnh vì chúng nhẹ hơn tiến trình.
Một luồng có thể chia sẻ một số bộ nhớ với các luồng ngang hàng của nó.
Giao tiếp giữa các luồng yêu cầu ít thời gian hơn giữa các quá trình.
Nếu một luồng cấp người dùng bị chặn, tất cả các luồng ngang hàng của nó cũng bị chặn.
Luồng thường cần ít tài nguyên hơn các tiến trình.
Luồng là các phần của một tiến trình và do đó chúng mang tính phụ thuộc.
Một luồng chia sẻ data segment, code segment, file, v.v... với các luồng ngang hàng
Tất cả các luồng ngang hàng cấp người dùng được hệ điều hành coi như một tác vụ duy nhất.
Các luồng yêu cầu ít thời gian hơn để tạo.
Luồng yêu cầu ít thời gian hơn để kết thúc.
20

Lợi ích của lập trình đa luồng


 Tăng tính đáp ứng với người dùng
 Cho phép chương trình vẫn thực hiện ngay khi một phần đang chờ đợi (block)
hoặc đang thực hiện tính toán tăng cường
 Ví dụ trình duyệt Web (Web brower) đa luồng
 Một luồng tương tác với người dùng
 Một luồng thực hiện nhiệm vụ tải dữ liệu  Chia sẻ tài nguyên
 Các luồng chia sẻ bộ nhớ và tài nguyên của tiến trình chứa nó
 Tốt cho các thuật toán song song (Sử dụng chung các CTDL)  Trao đổi giữa các luồng thông qua bộ nhớ phân chia
 Cho phép một ứng dụng chứa nhiều luồng hoạt động trong cùng không gian địa chỉ
 Tính kinh tế
 Các thao tác khởi tạo, hủy bỏ và luân chuyển luồng ít tốn kém
 Minh họa được tính song song trên bộ đơn VXL do thời gian luân chuyển CPU nhanh ( Thực tế chỉ một luồng thực hiện)
 Sử dụng kiến trúc nhiều vi xử lý
 Các luồng chạy song song thực sự trên các bộ VXL khác nhau
6 21

2. Luồng (Thread)
 Có 2 loại luồng cơ bản:
 Luồng mức người dùng (User – Level Threads)  Luồng mức hệ thống (Kernel - Level Threads)
6 22



Luồng mức người dùng (User – Level Threads)
Quản lý các luồng được thực hiện bởi chương trình ứng dụng Nhân hệ thống không biết gì về sự tồn tại luồng
• Điều phối tiến trình như một đơn vị duy nhất
• Gán cho mỗi tiến trình một trạng thái duy nhất
• Sẵn sàng, chờ đợi, thực hiện,..
Chương trình ứng dụng được lập trình theo mô hình đa luồng bởi sử dụng thư viện luồng
• Thư viện hỗ trợ tạo, hủy bỏ, truyền thông điệp giữa các luồng điều phối, lưu trữ, khôi phục trạng thái (context) luồng ,..
Ưu điểm
• Nhanh chóng trong tạo và quản lý luồng
Nhược điểm
• Khi một luồng rơi vào trạng thái chờ đợi, tất cả các luồng trong cùng tiến trình
bị chờ đợi theo =>Không tận dụng được ưu điếm của mô hình lập trình đa luồng



6 23

Luồng mức hệ thống (Kernel - Level Threads)


• Nhân duy trì thông tin vê tiên trình và các luông
• Quản lý luồng được thực hiện bởi nhân
• Không tồn tại các mã quản lý luồng trong ứng dụng
• Điều phối luồng được thực hiện bởi nhân, dựa trên các luồng • Nhược điểm:
• Chậm trong tạo và quản lý luồng • Ưuđiểm:
• Một luồng chờ đợi vào ra, không ảnh hưởng tói luồng khác
• Trong môi trường đa VXL, nhân có thế điều phối các luồng cho các VXL khác nhau
• Hệđiềuhành:WindowsNT/2000/XP,Linux,OS/2,..
6 24

2.2 Mô hình đa luồng


Nhiều hệ thống hỗ trợ cả luồng mức người dùng và luồng mức hệ thống -> Nhiều mô hình đa luồng khác nhau
6 25

Mô hình nhiều – một


• Ánh xạ nhiều luồng mức người dùng tới một luồng mức hệ thống
• Quản lý luồng được thực hiện trong không gian người dùng
•••
Hiệu quả
Cho phép tạo nhiều luồng tùy ý Toàn bộ tiến trình sẽ bị khóa nếu
một luồng bị khóa
• Không thể chạy song song trên các máy
nhiều vi xử lý ( chỉ một luồng có thể
truy nhập nhân tại một thời điểm)
• Dùng trong hệ điều hành không hỗ trợ
hệ thống
6 26

Mô hình một – một


• Ánh xạ mỗi luồng mức người dùng tới một luồng hệ thống
• Cho phép thực hiện luồng khác khi một luồng bị chờ đợi
• Cho phép chạy song song đa luồng trên máy nhiều vi xử lý
• Tạo luồng mức người dùng đòi hỏi tạo một luồng mức hệ thống tương ứng
• Ảnh hưởng tới hiệu năng của ứng dụng
• Chi phí cao -> Giới hạn số luồng được hệ thống hỗ trợ
• Được sử dụng trong Window NT/2000/XP
6 27

Mô hình nhiều – nhiều


• Nhiều luồng mức người dùng ánh xạ tới một số nhỏ luồng mức hệ thống
• Số lượng luồng nhân có thể được xác định tho máy hoặc theo ứng dụng
• VD: Được cấp nhiều luồng nhân hơn trên hệ thống nhiều VXL
• Có được ưu điểm của 2 mô hình trên
• Cho phép tạo nhiều luồng mức ứng
dụng theo yêu cầu
• Các luồng nhân tương ứng có thể
chạy song song trên hệ nhiều VXL
• Một luồng bị khóa, nhân có thể cho
phép luồng khác thực hiện
• Ví dụ: UNIX
6 28

2.3. Cài đặt luồng


 Cài đặt trong hệ điều hành windows
6 29

Một số hàm với luồng trong WIN32 API


 HANDLECreateThread(...);

Kết quả trả về: Thẻ của luồng mói hoặc giá trị NULL nếu không tạo được luồng mới



LPSECURITY ATTRIBUTESIpThreadAttributes, =>Trỏ tói cấu trúc an ninh: thẻ trả về có thể được kế thừa?
DWORD dwStackSize,
=>Kích thưóc ban đầu của stack cho luồng mới
LPTHREAD START ROUTINE IpStartAddress, =>Trỏ tới hàm được thực hiện bởi luồng mới
LPVOID IpParameter,
=>Trỏ tới các biến được gửi tới luồng mới (tham số của hàm)
DWORD dwCreationFlags, =>Phương pháp tạo luồng
 CREATE_SUSPENDED : Luồng ở trạng thái tạm ngừng  0: Luồng được thực hiện ngay lập tức
LPDVVORD IpThreadld
=>Biến ghi nhận định danh luồng mới
6 30

#include <windows.h> #include <stdio.h> void Routine(int *n) {


printf("My argument is %d\n", &n); }
int main() {
int i, P[5]; DWORD Id;
HANDLE hHandles[5];
for (i = 0; i < 5; i++) {
P[i] = i;
hHandles[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Routine, &P[i], 0, &Id); printf("Thread %d was created\n", Id);
}
for (i = 0; i < 5; i++)
WaitForSingleObject(hHandles[i], INFINITE); getchar();
return 0; }
6 31

6 32

2.3. Cài đặt luồng


 Cài đặt với Java Threads
6 33



Tồn tại một phương thức run(), sẽ được thực hiện trên JVM Luồng được thực hiện bởi gọi phương thức start()
• Cung cấp vùng nhó và khởi tạo luồng mói trong máy ảo Java
• Gọi tói phương thức run()

••
Được cài đặt bởi
• Mở rộng lóp Thread (Thread class)
• Cài đặt giao diện có thê thực thi được (Runnable interíace)
Được quản lý bởi máy ảo Java Ụava Virtual Machine) Các trạng thái có thể
6 34

6 35

2.4. Vấn đề đa luồng


#include <windows.h> #include <stdio.h> int x = 0, y = 1; void T1() {
while (1) { x = y + 1; printf("%4d", x); } }
void T2() {
while (1) { y = 2; y = y * 2; }
}
int main() {
HANDLE h1, h2; DWORD Id;
h1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T1, NULL, 0, &Id); h2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T2,
NULL, 0, &Id); WaitForSingleObject(h1, INFINITE);
WaitForSingleObject(h2, INFINITE);
getchar();
return 0;
}
6 36

Trường hợp 1
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
6 37

Trường hợp 2
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
6 38

Trường hợp 3
Shared int y=1
Thread T1 Thread T2 x y+1 y2
yy*2
x=?
Kết quả thực hiện các luồng song song phụ thuộc trật tự truy nhập biến dùng chung giữa chúng
6 39

1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình 5. Bế tắc và xử lý bế tắc
1

1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình 5. Bế tắc và xử lý bế tắc
2

3.1. Các khái niệm


3.2. Tiêu chuẩn điều phối 3.3. Các thuật toán điều phối 3.4. Điều phối đa xử lý
3

3.1. Các khái niệm


3.2. Tiêu chuẩn điều phối 3.3. Các thuật toán điều phối 3.4. Điều phối đa xử lý
4




3.1. Các khái niệm
Hệ thống có một processor  Chỉ có một tiến trình được thực hiện tại một thời điểm
Tiến trình được thực hiện (chiếm dụng VXL) có thể bị đẩy ra trong một số tình huống.
Hệ đơn chương trình: CPU không được sử dụng =>Lãng phí
Hệ đa chương trình: cố gắng sử dụng CPU (đang rảnh rỗi) cho các tiến trình khác (đang chờ đợi)
 Cần nhiều tiến trình sẵn sàng trong bộ nhớ tại một thời điểm
 Khi một tiến trình chạy xong đoạn mã của mình, hệ điều hành lấy lại processor
để phân cho tiến trình khác
Điều phối processor quan trọng với hệ điều hành đa nhiệm
 Luân chuyển CPU giữa các tiến trình —> khai thác hệ thống hiệu quả hơn Điều phối processor là nền tảng trong thiết kế hệ điều hành


5

Chu kỳ thực hiện CPU – I/O


 Tiến trình là chuỗi luân phiên giữa chu kỳ tính toán và chờ đợi vào/ra và sự kiện
 Bắt đầu bởi chu kỳ tính toán
 Tiếp theo chu kỳ đợi vào/ra
 Tínhtoán—>đợivào/ra—>tínhtoán—>đợivào/ra—>...  Kếtthúc:Tínhtoán(yêucầuhệthốngkếtthúcthựchiện)
 Phân biệt các kiểu tiến trình
 Dựa trên sự phân bổ thời gian cho các chu kỳ CPU & vào/ra
• Tiến trình tính toán (CPU-bound process) có vài chu kỳ CPU dài
• Tiến trình vào ra (l/O-bound process) có nhiều chu kỳ CPU ngắn
 Đểchọngiảithuậtđiềuphốithíchhợp
6

Bộ điều phối CPU


 Lựa chọn một trong số các tiến trình đang sẵn sàng trong bộ nhớ và cung cấp CPU cho nó
 Các tiến trình phải sắp hàng trong hàng đợi
 Quyết định điều phối CPU xảy ra khi tiến trình
(1) Chuyển từ trạng thái thực hiện sang trạng thái chờ đợi (y/c vào/ra)
(2) Chuyển từ trạng thái thực hiện sang trạng thái sẵn sàng (hết thời gian sử dụng CPU  ngắt
thời gian)
(3) Chuyển từ trạng thái chờ đợi sang trạng thái sẵn sàng (hoàn thành vào/ra) (4) Tiến trình kết thúc
 Ghi chú
 Trường hợp 1&4
• => Điều phối không trưng dụng (non-preemptive)
 Trường hợp khác
• =>Điều phối trưng dụng (preemptive)
7

Điều phối trưng dụng và không trưng dụng


 Điều phối không trưng dụng
 Tiến trình chiếm CPU cho tới khi giải phóng bởi
• Kết thúc nhiệm vụ
• Chuyển sang trạng thái chờ đợi
 Không đòi hỏi phần cứng đặc biệt (đồng hồ)  Ví dụ: DOS, Win 3.1, Macintosh
 Điều phối trưng dụng
 Tiến trình chỉ được phép thực hiện trong khoảng thời gian
 Kết thúc khoảng thời gian được định nghĩa trước, ngắt thời gian xuất hiện, bộ điều vận (dispatcher) được kích hoạt để quyết định hồi phục lại tiến trình hay
lựa chọn tiến trình khác
 Bảo vệ CPU khỏi các tiến trình “đói - CPU”
 Vấn đề dữ liệu dùng chung
• Tiến trình 1 đang cập nhật DL thì bị mất CPU
• Tiến trình 2 được giao CPU và đọc DL đang cập nhật
 Ví dụ: Hệ điều hành đa nhiệm WinNT, UNIX
8

3.1. Các khái niệm


3.2. Tiêu chuẩn điều phối
3.3. Các thuật toán điều phối 3.4. Điều phối đa xử lý
9

Tiêu chuẩn điều phối I


 Sử dụng CPU (Lớn nhất)
 Mục đích của điều độ là làm CPU hoạt động nhiều nhất có thể
 Độ sử dụng CPU thay đổi từ 40% (hệ thống tải nhẹ) đến 90% (hệ thống tải nặng).
 Thông lượng (throughput) (Lớn nhất)
 Số lượng tiến trình hoàn thành trong một đơn vị thời gian
 Các tiến trình dài: 1 tiến trình/giờ
 Các tiến trình ngắn: 10 tiến trình/giâỵ
 Thời gian hoàn thành (Nhỏ nhất)
 Khoảng thời gian từ thời điểm gửi đến hệ thống tới khi quá trình hoàn thành Thời gian chờ đợi để đưa tiến trình vào bộ nhớ
 Thời gian chờ đợi trong hàng đợi sẵn sàng  Thời gian chờ đợi trong hàng đợi thiết bị Thời gian thực hiện thực tế
10

Tiêu chuẩn điều phối II


Thời gian chờ đợi (Nhỏ nhất)
 Tổng thời gian chờ trong hàng đợi sẵn sàng (Giải thuật điều độ CPU không ảnh hưởng tới các tiến trình đang thực hiện hay đang đợi thiết bị vào ra)
Thời gian đáp ứng (Nhỏ nhất)
 Từ lúc gửi câu hỏi cho tới khi câu trả lời đầu tiên được tạo ra
 Tiến trình có thể tạo kết quả ra từng phần
 Tiến trình vẫn tiếp tục tính toán kết quả mới trong khi kết quả cũ được gửi tới người dùng
11

3.1. Các khái niệm


3.2. Tiêu chuẩn điều phối 3.3. Các thuật toán điều phối 3.4. Điều phối đa xử lý
12

Xem xét vấn đề


 Tại 1 thời điểm CPU chỉ phục vụ duy nhất 1 tiến trình. Do đó để các tiến trình cùng hoạt động phải có cơ chế phân chia thời gian cho các tiến trình.
 Time slot
 Dùng timer để tính khe thời gian. Mỗi lần chạy hết khe hay process hiện hành trình lập lịch sẽ thực hiện chuyển ngữ cảnh process để dừng process hiện hành
và cho phép process khác chạy.
13

Xem xét vấn đề


 Độ lớn của “time slot” được dung hòa bởi 2 yếu tố:  Các ứng dụng hoạt động hiệu quả nhất. (Như vậy khe
thời gian càng lớn càng tốt)
 Các ứng dụng tương tác nhanh với người dùng để họ có cảm giác các ứng dụng đang chạy liên tục và độc lập với nhau (Như vậy phải chọn khe thời gian nhỏ
để người dùng không thể cảm nhận được việc ngắt quãng khi chuyển tiến trình)
 Hiện nay các khe thời gian thường ở mức vài ms để 1 process có thể chạy nhiều lần (>20) trong 1s.
Giả thiết: Các tiến trình chỉ có một chu kỳ tính toán (ms) Đo đạc: Thời gian chờ đợi trung bình
14

Xét ví dụ
 Bài toán: Có 3 process P1, P2, P3 với thời gian CPU cần thực hiện tương ứng là 24, 3, 5. Thời gian yêu cầu CPU thực hiện (thời gian nhập) lần lượt là 0,5,7.
Process
T thực hiện
T nhập
P1
24
0
P2
3
5
P3
5
7
 Ta sẽ xem xét bài toán trên với các phương pháp lựa chọn tiến trình cụ thể.
15

Các phương pháp giải thuật lập lịch


 Phương pháp FIFO
 Phương pháp SJF (Shortest Job First)
 Phương pháp RR (Round Robin)
 Phương pháp dựa vào quyền ưu tiên
 Phương pháp SRT (Shortest Remain Time)
 Phương pháp dùng nhiều hàng chờ quyền ưu tiên
16

Phương pháp FIFO


 FIFO: Tiến trình nào đến trước sẽ được phục vụ trước Biểu đồ GANTT
0 P1 24 P227 P3 32
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
24
0
P2
3
5
27
19
P3
5
7
32
20
17

Phương pháp FIFO


 Ưu điểm của thuật toán này là giờ CPU không bị phân phối lại (không bị ngắt) và chi phí thực hiện thấp nhất (vì không phải thay đổi thứ tự ưu tiên phục vụ,
thứ tự ưu tiên là thứ tự của tiến trình trong hàng đợi).
 Nhược điểm của thuật toán là thời gian trung bình chờ phục vụ của các tiến trình là như nhau (không kể tiến trình ngắn hay dài), do đó dẫn tới hai điểm sau:
 Nếu độ phát tán thời gian thực hiện tiến trình tăng thì thời gian chờ đợi trung bình cũng tăng theo
 Khi có tiến trình dài, ít bị ngắt thì các tiến trình khác phải chờ đợi lâu hơn.
18

Phương pháp SJF


 SJF: Tiến trình nào có thời gian ngắn nhất thì thực hiện trước
 SJF độc quyền: Khi một tiến trình đang thực thi nó không bị dừng bởi các tiến trình khác dù tiến trình khác có thời gian thực thi ngắn hơn.
 SJF không độc quyền: Một tiến trình đang thực thi vẫn bị dừng bởi các tiến trình có thời gian thực thi ngắn hơn
19

SJF độc quyền


 Khi một tiến trình đang thực thi nó không bị dừng bởi các tiến trình khác dù tiến trình khác có thời gian thực thi ngắn hơn.
Biểu đồ GANTT
0P1 24P227P332 P1 end P2 end P3 end
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
24
0
P2
3
5
27
19
P3
5
7
32
20
20

SJF không độc quyền


 Một tiến trình đang thực thi vẫn bị dừng bởi các tiến trình có thời gian thực thi ngắn hơn
Biểu đồ GANTT
0P15P28P313P1 32
P2 end P3 end P1 end
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
32
8
P2
3
5
8
0
P3
5
7
13
1
21

SJF
 Ưu điểm:
 Giải thuật được xem là tối ưu, thời gian chờ đợi trung
bình giảm
 Tận dụng hết năng lực của CPU
 Nhược điểm:
 Cài đặt thuật toán phức tạp, tốn nhiều xử lý cho quá trình
quản lý.
 Giải thuật SJF có thể trưng dụng hoặc không trưng dụng CPU, dẫn tới giải thuật này có nhiều dị bản khác nhau và sẽ tối ưu hay không tối ưu phụ thuộc vào
trưng dụng CPU.
22

Phương pháp Round Robin


 Sử dụng 1 hàng chờ trật tự, process nào đến trước sẽ được phục vụ trước trong 1 khe thời gian nhất định.
 Khi hết khe thời gian mà process vẫn cần chạy tiếp nó sẽ tự động trở về cuối hàng đợi để chờ lượt phục vụ kế tiếp.
23

Phương pháp Round Robin


 Xét phương pháp RR với q=4 Biểu đồ GANTT
0P14P18P211P3 15P119P320 P1 32 P2 end P3 end P1 end
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
32
8
P2
3
5
11
3
P3
5
7
20
8
24

Phương pháp Round Robin


 Ưu điểm:
 Các quá trình sẽ được luân phiên cho CPU xử lý nên thời gian
chờ đợi sẽ ít.
 Đối với các quá trình liên quan đến nhập xuất I/O người dùng thì rất hiệu quả.
 Việc cài đặt không quá phức tạp  Nhược điểm:
 Thời gian chờ đợi trung bình dưới chính sách RR thường là quá dài.
 Nếu thời gian định mức cho việc xử lý quá lớn thì RR thành FIFO
 Nếu thời gian quá ngắn so với thời gian xử lý của một tiến trình trong danh sách hàng đợi thì việc chờ đợi và xử lý luân phiên sẽ nhiều.
Qui tắc là định mức thời gian nên dài hơn 80% chu kỳ CPU.
25

Phương pháp theo quyền ưu tiên


Ý tưởng của phương pháp này là mỗi tiến trình sẽ được gán 1 mức độ ưu tiên nhất định và đưa vào hàng chờ. Khi cần chọn tiến trình tiếp theo, hệ thống sẽ
chọn tiến trình có mức ưu tiên cao nhất bất chấp nó đến trước hay đến sau.
Giải thuật điều phối theo quyền ưu tiên có thể được xây dựng theo nguyên tắc độc quyền hay không độc quyền.
 Với nguyên tắc độc quyền tiến trình khi đã thực thi sẽ được quyền giữ CPU cho đến khi hoàn thành.
 Ngược lại với nguyên tắc không độc quyền tiến trình đang thực thi vẫn có thể bị giải phóng bởi tiến trình có độ ưu tiên cao hơn.
26

Ví dụ
 Cho 3 tiến trình với các dữ liệu như sau:
Process
T thực hiện
T nhập
Quyền ưu tiên
P1
24
0
1
P2
3
5
2
P3
5
7
3
 Quyền ưu tiên 3>2>1
27

Quyền ưu tiên độc quyền


 Khi một tiến trình đang thực thi nó không bị dừng bởi các tiến trình khác dù tiến trình khác có mức ưu tiên cao hơn.
Biểu đồ GANTT
0 P1 24P329P232 P1 end P3 end P2 end
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
24
0
P2
3
5
32
24
P3
5
7
29
17
28

Quyền ưu tiên không độc quyền


 Khi một tiến trình đang thực thi nó vẫn bị dừng bởi các tiến trình khác có mức ưu tiên cao hơn.
Biểu đồ GANTT
0 P1 5 P2 7 P3 12 P2 13 32
P3 end P2 end P1 end
Process
T thực hiện
T nhập
T kết thúc
T chờ
P1
24
0
32
8
P2
3
5
13
5
P3
5
7
12
0
29

Phương pháp quyền ưu tiên


 Ưu điểm của phương pháp này là giảm chi phí điều phối, đơn giản.
 Nhược điểm : Dẫn tới tính trạng đói CPU cho các tiến trình có mức ưu tiên thấp.
Do đó ta xây dựng phương pháp quyền ưu tiên xoay vòng với ý tưởng: Sau mỗi lần sử dụng CPU độ ưu tiên của tiến trình giảm xuống 1.
30

Phương pháp SRT (Shortest Remain Time)


 Tương tự như SJF nhưng trong thuật toán này, độ ưu tiên thực hiện các tiến trình dựa vào thời gian cần thiết để thực hiện nốt tiến trình (bằng tổng thời gian
trừ đi thời gian đã thực hiện). Như vậy, trong thuật toán này cần phải thường xuyên cập nhật thông tin về giời gian đã thực hiện của tiến trình. Đồng thời, chế độ
phân bổ lại giờ CPU cũng phải được áp dụng nếu không sẽ làm mất tính ưu việt của thuật toán.
31

Phương pháp SRT (Shortest Remain Time)


 Ưu điểm:
 Thời gian chờ đợi, tồn tại trong hệ thống của mỗi tiến
trình đều ngắn
 Thuật toán tối ưu nhất
 Nhược điểm:
 Việc cài đặt thuật toán khá phức tạp
 Cần quản lý chặt chẽ việc điều phối các tiến trình  Quản lý thời gian đến của mỗi tiến trình
32

Multilevel feedback
 Trong phương pháp sử dụng quyền ưu tiên các tiến trình có mức ưu tiên thấp rất dễ rơi vào tình trạng “đói” CPU. Để khắc phục tình trạng này người ta xây
dựng phương pháp sử dụng nhiều mức ưu tiên với ý tưởng sau mỗi lần sử dụng CPU mức ưu tiên của tiến trình sẽ giảm đi.
33

Bài tập
 Bài 1: Xét tập các tiến trình sau (với thời gian yêu cầu CPU và độ ưu tiên kèm theo)
Tiến trình
T thực hiện
T nhập
Độ ưu tiên
P1
10
0
3
P2
1
1
1
P3
2
2
3
P4
1
3
4
P5
5
4
2
a)Cho biết kết quả điều phối hoạt động của các tiến trình trên theo thuật toán FIFO, SJF, điều phối theo độ ưu tiên độc quyền (độ ưu tiên 4 > 3 > ...) và
RR (quantum=2).
b)Cho biết thời gian lưu lại trong hệ thống (turnaround time) của từng tiến trình trong từng thuật toán điều phối ở câu a.
c)Cho biết thời gian chờ trong hệ thống (waiting time) của từng tiến trình trong từng thuật toán điều phối.
d)Thuật toán điều phối nào trong các thuật toán ở câu a cho thời gian chờ trung bình là cực tiểu ?
34

3.1. Các khái niệm


3.2. Tiêu chuẩn điều phối 3.3. Các thuật toán điều phối 3.4. Điều phối đa xử lý
35

Vấn đề
 Điều phối phức tạp hơn so với trường hợp có một VXL  Vấn đề chia sẻ tải
 Mỗi VXL có một hàng đợi sẵn sàng riêng
 Tồn tại VXL rảnh rỗi với hàng đợi rỗng trong khi VXL khác
phải tính toán nhiều
 Hàng đợi sẵn sàng dùng chung
 Vấn đề dùng chung cấu trúc dữ liêu (hàng đợi) :
 Một tiến trình được lựa chọn bởi 2 processors hoặc một tiến trình bị thất lạc trên hàng đợi
 Đa xử lý không đối xứng
 Chỉ có một processor truy nhập hàng đợi hủy bỏ vấn đề dùng
chung cơ sở dữ liệu
 Có thể tắc nghẽn tại một processor

1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình
5. Bế tắc và xử lý bế tắc
1

4.1. Khái niệm


4.2. Các phương pháp giải quyết bài toán tới hạn
3

4.1. Khái niệm


4.2. Các phương pháp giải quyết bài toán tới hạn
4

Khái niệm
• Trong hệ đa chương có nhiều process hoạt động song hành, mỗi process có 1 không gian làm việc độc lập, không ai có thể truy xuất trực tiếp không
gian làm việc của mỗi process
• Khi 2 hay nhiều process cần trao đổi dữ liệu ta cần cung cấp cơ chế cho chúng. Có 2 cơ chế giao tiếp chính giữa những process là :Truy xuất bộ nhớ và
gửi/nhận thông điệp.
• Truy xuất bộ nhớ dùng chung là một trong nhiều hoạt động gây ra tương tranh. Như vậy ở đây bộ nhớ chung là một dạng tài nguyên “Găng”
5

Định nghĩa
• Tài nguyên : Tất cả những gì cần thiết cho thực hiện tiến trình
• Tài nguyên găng:
• Tài nguyên hạn chế về khả năng sử dụng chung cần đồng thời cho
nhiều tiến trình
• Tài nguyên găng có thể là thiết bị vật lý hay dữ liệu dùng chung
• Vấnđề
• Dùng chung tài nguyên găng có thể dẫn đến không đảm bảo tính
toàn vẹn dữ liệu
Đòi hỏi cơ chế đồng bộ hóa các tiến trình
6

Đoạn găng(Critical section)


• Đoạn găng (chỗ hẹp) là đoạn chương trình sử dụng tài nguyên găng
• Đoạn chương trình thực hiện truy nhập và thao tác trên dữ liệu dùng chung
• Khi có nhiều tiến trình sử dụng tài nguyên găng thì phải điều độ
• Mục đích: đảm bảo không có quá một tiến trình nằm trong đoạn găng
7


Yêu cầu của chương trình điều độ
Loại trừ lẫn nhau (Mutual Exclusion) : Mỗi thời điểm, tài nguyên găng không phải phục vụ một số lượng tiến trình vượt quá khả năng của nó
• Một tiến trình đang thực hiện trong đoạn găng (sử dụng tài nguyên găng) Không một tiến trình nào khác được quyền vào đoạn găng
Tiến triển (Progress) Tài nguyên găng còn khả năng phục vụ và tồn tại tiến trình muốn vào đoạn găng thì tiến trình đó phải được sử dụng tài nguyên găng
Chờ đợi hữu hạn (Bounded Waiting) Nếu tài nguyên găng hết khả năng phục vụ và vẫn tồn tại tiến trình muốn vào đoạn găng, thì tiến trình đó phải được xếp
hàng chờ đợi và sự chờ đợi là hữu hạn


8
4.1. Khái niệm
4.2. Các phương pháp giải quyết bài toán tới hạn
9

Quy ước
• Có 2 tiến trình P1&P2 thực hiện đồng thời
• Các tiến trình dùng chung một tài nguyên găng
• Mỗi tiến trình đặt đoạn găng ở đầu, tiếp theo là phần còn lại
• Tiến trình phải xin phép trước khi vào đoạn găng {phần vào}
• Tiến trình khi thoát khỏi đoạn găng thực hiện {phần ra}
• Cấu trúc tổng quát của một tiến trình
Repeat
Phần vào
{Đoạn găng của tiến trình}
Phần ra
{Phân còn lại của tiến trình}
Until false
10

Các phương pháp giải quyết bài toán tới hạn


 1. Phương pháp khóa trong
 Chỉ 1 tiến trình được vào đoạn tới hạn còn các tiến trình khác phải
chờ.
 Sử dụng 1 byte khóa K để làm khóa. Khi TT vào đoạn tới hạn K=1, khi ra khỏi đoạn tới hạn K=0.
 Trước khi vào đoạn tới hạn các TT phải kiểm tra byte khóa của TT khác. Nếu tiến trình khác có byte khóa bằng 1 thì TT phải chờ đến khi
nó nhận giá trị 0.
11

Các phương pháp giải quyết bài toán tới hạn


 1. Phương pháp khóa trong
12

Phương pháp khóa trong


Về ý tưởng phương pháp khóa trong rất đơn giản và giải quyết tốt vấn đề tranh chấp. Tuy nhiên trong 1 số tình huống phương pháp này sẽ thất bại.
Ví dụ: 2 Tiến trình P1 có tốc độ lớn hơn P2 rất nhiều cùng muốn vào đoạn găng. P2 kiểm tra byte khóa của TT khác không thấy byte nào có giá trị 1. Nó dừng
quá trình kiểm tra và chuyển sang quá trình thiết lập biến khóa lên 1. Ngay lúc này TT P1 cũng kiểm tra và thấy không có byte khóa nào bằng 1(Do P2 chưa kịp
set K=1), vì vậy P1 cũng set biến trạng thái K1=1 và vào đoạn găngtranh chấp
13

Thuật toán Dekker


 Ý tưởng: Thuật toán Dekker sử dụng thêm 1 biến trạng thái tt để xác định mức độ ưu tiên giữa các tiến trình cùng muốn vào đoạn găng.
Var c1,c2,tt: Integer;
BEGIN c1 := 0; c2 := 0; tt := 1;
PARBEGIN TT1: Repeat c1 := 1;
While c2 = 1 do
TT2: Repeat c2 := 1;
While c1 = 1 do
if tt = 2 then begin c1 := 0;
while tt = 2 do ;
c1 := 1 end;
{ Đoạn găng TT 1} c1 := 0; tt := 2;
{ Phần còn lại của TT 1} Until false;
{ Đoạn găng TT 2} c2 := 0; tt := 1;
{ Phần còn lại của TT 2} Until false
PAREND END.
if tt = 1 then begin c2 := 0;
while tt = 1 do ;
c2 := 1 end;
6 14

Thuật toán Dekker


 Ưu điểm: Thuật toán Dekker giải quyết được trường hợp tốc độ thực hiện của các tiến trình là khác nhau.
 Nhược điểm: Thuật toán sẽ trở nên vô cùng phức tạp khi số lượng tiến trình tăng.
15

Test and Set


Phân tích vấn đề của phương pháp biến khóa ta nhận thấy nếu 2 quá trình kiểm tra và xác lập biến khóa đồng nhất không tách rời thì lỗi của chương trình trước
sẽ không thể xảy ra.
Để thực hiện điều này HĐH cần sự trợ giúp của phần cứng. Hãng chế tạo CPU cung cấp 1 lệnh máy đặc biệt gọi là TSL (test and set), TSL làm việc với 2
biến: Biến chung G và biến riêng L.
 TS(L) -> L:=G; G:=1;
16

 Sơ đồ điều độ
Test and Set
Var l1, l2, g: Integer; BEGIN
g := 0; PARBEGIN
TT1: Repeat l1 := 1;
W hile l1 = 1 do TS(l1); {Đoạn găng TT1}
g := 0;
{Phần còn lại của TT1}
Until false;
TT2: Repeat l2 := 1;
W hile l2 = 1 do TS(l2); {Đoạn găng TT2}
g := 0;
{Phần còn lại của TT2}
Until false
PAREND END.
g
01
1
1
10
111
l1
10
11
1
l2
11
11
10
17

Test and Set


 Ưu điểm: Đơn giản, độ phức tạp không tăng khi số tiến trình tăng.
 Nhược điểm: Trong trường hợp có nhiều tiến trình chờ khó xác định tiến trình nào sẽ vào đoạn găng sớm nhất phụ thuộc vào thời điểm giải phóng tài nguyên
găng của tiến trình đang sử dụng.
18

Semaphore
 Ý tưởng:
 Mỗi tài nguyên Găng được biểu diễn bởi 1 biến nguyên dương s. Đa
số các tài nguyên găng đều có khả năng phục vụ bằng 1 (s=1)
 Tồn tại 2 lệnh máy làm thay đổi giá trị của s.
 P(s) s-1. If s<0 then đưa TT vào hàng đợi
 V(s)s+1. If s=<0 then kích hoạt tiến trình đang xếp hàng.
19

Semaphore
Var s:Integerl BEGIN
s := 1; PARBEGIN
TT1:Repeat P(s);
TT1 vào
0
S=1
-1 TT1 chờ TT2 vào
0
{Đoạn găng TT1} V(s);
{Phần còn lại TT1}
Until false;
TT2:Repeat P(s);
-1
{Đoạn găng TT2} V(s);
{Phần còn lại TT2}
Until false
PAREND END.
TT2 chờ
0
TT1 vào
20

Semaphore
Đặc điểm: Mỗi tiến trình chỉ phải kiểm tra quyền vào đoạn găng 1 lần. Sau đó nó vào đoạn găng hoặc chờ tại hàng đợi. Trường hợp phải chờ ở hàng đợi nó sẽ
không phải làm gì mà sẽ chờ tiến trình trong đoạn găng đánh thức khi nó ra khỏi hàng đợi.
21

1. Tiến Trình
2. Luồng
3. Điều phối CPU
4. Tài nguyên găng và điều độ tiến trình
5. Bế tắc và xử lý bế tắc
22

23

Bế tắc (Deadlock)
 Ví dụ 2 tiến trình P1 và P2 cùng sử dụng các tài nguyên r1 và r2 được điều khiển bởi 2 đèn hiệu S1 và S2. Tại mỗi thời điểm, mỗi tài nguyên chỉ phục vụ hoạt
động của 1 tiến trình.
P1 Thời điểm P2 Wait(S1) T1 Wait(S2) ... T2 ... Wait(S2) T3 ...
T4 Wait(S1)
 T1: P1 yêu cầu được cấp r1, P2 yc cấp r2
 T2: 2 tiến trình được cấp tài nguyên và đi vào hoạt động
 T3: P1 yêu cầu hệ thống cấp tài nguyên r2, tuy nhiên r2 đang được P2
sử dụng nên P1 phải chờ r2
 T4: P2 yêu cầu hệ thống cấp tài nguyên r1, tuy nhiên r1 đang được P1 sử dụng nên P2 phải chờ r1
 Như vậy sau T4 cả 2 tiến trình rơi vào trạng thái chờ vô hạn.

Bế tắc
 Khái niệm: Bế tắc là trạng thái khi hai hay nhiều tiến trình cùng chờ đợi một số sự kiện nào đó và nếu không có tác động từ bên ngoài thì sự chờ đợi đó là vô
hạn.
 Điều kiện xảy ra bế tắc:  Có tài nguyên Găng
 Có hiện tượng giữ và đợi: Có một tiến trình đang giữ một số tài nguyên và đợi tài nguyên bổ sung đang được giữ bởi các tiến trình khác.
 Không có hệ thống phân phối lại tài nguyên: Việc sử dụng tài nguyên Găng không bị ngắt
 Có hiện tượng chờ đợi vòng tròn
25

Bế tắc  Các mức phòng tránh bế tắc


 Ngăn ngừa: Áp dụng các biện pháp để hệ thống không rơi vào trạng thái bế tắc
 Dự báo và tránh bế tắc: Áp dụng các biện pháp để kiểm tra các tiến trình xem có rơi vào trạng thái bế tắc hay không. Nếu có thì thông báo trước khi xảy ra
 Nhận biết và khắc phục: Tìm cách phát hiện và giải quyết
26

Bế tắc
 Các biện pháp phòng chống bế tắc: Để phòng chống bế tắc, cần đảm bảo sao cho 4 điều kiện gây bế tắc không đồng thời xảy ra:
 Loại bỏ tài nguyên Găng: mô phỏng tài nguyên Găng bằng các tài nguyên có thể dùng chung được (áp dụng kỹ thuật SPOOL)
 Loại bỏ yếu tố giữ và đợi:
 Tiến trình yêu cầu tất cả tài nguyên 1 lần  Chỉ xử lý khi đủ tài nguyên cần thiết
 Xây dựng hệ thống ngắt tài nguyên: Nếu tiến trình yêu cầu tài nguyên bổ sung mà hệ thống không đáp ứng được thì mọi tài nguyên của nó sẽ bị giải phóng để
phục vụ tiến trình khác.
 Loại bỏ yếu tố giữ và đợi
27

Bế tắc
 Dãy tiến trình an toàn: Cho dãy tiến trình P1, P2, P3, ... Pn song hành. Dãy tiến trình được gọi là an toàn (Safe Process) nếu với mọi tiến trình Pi, tài nguyên
mà Pi cần có thể được thỏa mãn bởi các tài nguyên khả dụng của hệ thống và tài nguyên do các tiến trình Pj đang giữ với điều kiện j<i
Hệ thống ở trạng thái an toàn tại một thời điểm nếu dãy tiến trình song hành tại thời điểm đó có thể được sắp xếp thành 1 dãy an toàn.
28

Bế tắc
Xét một hệ thống có 12 tài nguyên là 12 băng từ và 3 tiến trình P0, P1, P2 với các yêu cầu cấp phát:
• P0 yêu cầu nhiều nhất 10 băng từ
• P1 yêu cầu nhiều nhát 4 băng từ
• P2 yêu cầu nhiều nhất 9 băng từ
Giả sử tại một thời điểm T0, P0 đang chiếm 5 băng từ, P1 và P2 mỗi tiến trình chiếm 2 băng từ. Như vậy có 3 băng từ rỗi
29

Bế tắc
• Tại thời điêm t0 hệ thống ở trạng thái an toàn
• Thứ tự <P1, P0, P2> thỏa mãn điều kiện an toàn
• Giả sử ở thời điểm t1 P2 có yêu cầu và được cấp phát 1
băng từ: Hệ thống không ở trạng thái an toàn nữa... quyết định cấp tài nguyên cho P2 là sai.
30

Bế tắc
31

Bế tắc
 Ví dụ về dãy tiến trình an toàn: Có 5 tiến trình P0-P4 và 3 kiểu tài nguyên A, B, C ở trạng thái như sau:
P
Đang có
Cần tối đa
Cần thêm
Hệ thống còn
A
B
C
A
B
C
A
B
C
A
B
C
P0
3
0
2
7
0
3
4
0
1
1
2
2
P1
2
1
0
9
2
2
7
1
2
P2
0
1
1
2
5
3
2
4
2
P3
1
2
4
4
3
2
3
1
0
P4
2
0
0
3
2
2
1
2
2
 A. Tìm dãy an toàn của các tiến trình trên
B. Giả sử P4 yêu cầu tài nguyên (1, 2, 2). Hỏi có thể phân
phối cho P4 được không?  C. Tương tự câu B với P3?

Trường Đại học Xây Dựng Khoa Công nghệ Thông tin
1

Các vấn đề trình bày


 3.1 Các khái niệm cơ bản  3.2 Quản lý bộ nhớ thật  3.3 Quản lý bộ nhớ ảo
 3.4 Phân trang
 3.5 Phân đoạn
 3.6 Quản lý bộ nhớ ảo phân trang và phân đoạn
2

3.1 Các khái niệm cơ bản


 Một trong các hoạt động cơ bản của máy tính là lưu trữ dữ liệu dạng nhị phân. Các dữ liệu này là các chương trình hoặc số liệu mà Vi xử lý đưa ra hoặc đọc
vào tuỳ theo yêu cầu. Bộ nhớ là các thiết bị để thực hiện nhiệm vụ lưu trữ dữ liệu của máy vi tính.
 Mỗi ô nhớ được xác định bởi một địa chỉ. Thông thường mỗi ô nhớ có dung lượng là 1 byte. Các byte được ghép thành từ. Những máy 16 bit số liệu thì tổ
chức 2 byte/từ, còn các máy 32 bit số liệu thì độ dài từ gấp đôi (4 byte/từ).
 Bộ nhớ là một dãy các ô nhớ liên tiếp nhau
3

Các khái niệm cơ bản


Bộ nhớ là thiết bị lưu trữ duy nhất mà qua đó CPU có thể thực hiện trao đổi thông tin với môi trường bên ngoài. Do vậy nhu cầu tổ chức quản lý bộ nhớ là một
trong những nhiệm vụ cơ bản của hệ điều hành.
Chương trình = Tập các câu lệnh (chỉ thị máy) + dữ liệu
 Hệ điều hành có trách nhiệm cung cấp không gian nhớ cho các tiến trình khi có yêu cầu.
4

Các khái niệm cơ bản


Địa chỉ vật lý – địa chỉ tuyệt đối: Là địa chỉ thực trong bộ nhớ, được cấp phát cho các biến khi thực hiện chương trình.
 Địa chỉ logic - địa chỉ tương đối:
Là vị trí nhớ độc lập với cấu trúc, tổ chức vật lý của bộ nhớ.
 Là địa chỉ do hệ thống tạo ra và được cấp phát cho các biến khi dịch chương trình.
Bộ nhớ logic: Là tập hợp tất cả địa chỉ logic phát sinh sau khi dịch chương trình.
Bộ nhớ vật lý: Là tập hợp tất cả các địa chỉ vật lý tương ứng với các địa chỉ logic khi thực hiện chương trình.
 Chú ý: Chương trình của người sử dụng chỉ thao tác trên các địa chỉ logic chứ không thao tác trên các địa chỉ vật lý. Địa chỉ vật lý chỉ được xác định khi thực
hiện truy xuất chương trình.
5

Các khái niệm cơ bản


 Máy tính thường sử dụng các loại bộ nhớ chính:
Bộ nhớ máy tính
6
Các khái niệm cơ bản
 Máy tính thường sử dụng các loại bộ nhớ chính:
Bộ nhớ máy tính
7

Các khái niệm cơ bản  Bộ nhớ máy tính:


 Cache: Giá thành cao, dung lượng hạn chế, tốc độ truy cập nhanh. Thường nằm ngay trong bộ vi xử lý lưu trữ bản sao các dữ liệu thường hay sử dụng để truy
nhập nhanh hơn.
 Bộ nhớ chính RAM: Giá thành, dung lượng, tốc độ trung bình. Lưu trữ các dữ liệu và lệnh chương trình đang được sử dụng.
 Đĩa cứng: Dung lượng rất lớn, chậm, giá rẻ.
Việc quản lý bộ nhớ phải tận dụng tối đa các ưu điểm của từng loại bộ nhớ máy tính để đảm bảo cung cấp cho người lập trình một không gian bộ nhớ tốt nhất,
xử lý dữ liệu nhanh và hiệu quả.
8

Các khái niệm cơ bản  Cơ chế overlay


 Tại mỗi thời điểm, chỉ giữ lại trong bộ nhớ những lệnh hoặc dữ liệu cần thiết, giải phóng các lệnh/dữ liệu chưa hoặc không cần dùng đến
 Cơ chế này rất hữu dụng khi kích thước một process lớn hơn không gian bộ nhớ cấp cho process đó.
 Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ trợ của các thư viện lập trình) chứ không cần sự hỗ trợ của hệ điều hành
9

Các khái niệm cơ bản  Cơ chế swapping


Một process có thể tạm thời bị swap ra khỏi bộ nhớ chính và lưu trên một hệ thống lưu trữ phụ. Sau đó, process có thể được nạp lại vào bộ nhớ để tiếp tục quá
trình thực thi.
10

Các khái niệm cơ bản  Phân mảnh ngoại (extennal fragmentation)


 Kích thước không gian bộ nhớ còn trống đủ để thỏa mãn một yêu cầu cấp phát, tuy nhiên không gian nhớ này không liên tục => phải dùng cơ chế kết nối
(compaction)
 Phân mảnh nội (internal fragmentation)
 Kích thước vùng nhớ được cấp phát lớn hơn vùng nhớ yêu cầu. Ví dụ: cấp một khoảng trống 16.464 bytes cho một process yêu cầu 16.460 bytes
 Hiện tượng phân mảnh nội thường xảy ra khi bộ nhớ thực (physical memory) được chia thành các khối có kích thước cố định (fixed – sized block) và các
process được cấp phát theo đơn vị khối
11

Các khái niệm cơ bản  Phân mảnh nội (internal fragmentation)


12

3.2 Quản lý bộ nhớ thật


Một Process phải được nạp hoàn toàn vào bộ nhớ thì mới được thực thi.
 Khi máy tính có dung lượng Ram tương đối lớn (512M~ G), còn các phần mềm có dung lượng nhỏ ta có thể sử dụng 1 trong 3 kỹ thuật quản lý bộ nhớ sau
đây.
 Kỹ thuật phân vùng tĩnh nhiều hàng chờ độc lập (Modeling Multiprograming)
 Kỹ thuật phân vùng tĩnh một hàng chờ  Kỹ thuật phân vùng động
13

3.2.1 Kỹ thuật phân vùng tĩnh nhiều hàng chờ


 HĐH được load vào vùng nhớ thấp của Ram
 Phần trống còn lại của Ram được chia thành nhiều phân vùng kích thước tăng dần (10K-20K-30K...)
 Mỗi phân vùng có 1 hàng chờ tương ứng.
 Khi chạy ứng dụng HĐH sẽ chọn phân vùng có kích thước bé nhất nhưng >= kích thước của ứng dụng để sắp xếp vào hàng chờ tương ứng
 HĐH sẽ phục vụ các tiến trình trong hàng chờ theo thuật toán FIFS
Hàng đợi
Hàng đợi
Hàng đợi
Hàng đợi
14
40K ...
30K
20K
10K Hệ điều hành

Kỹ thuật phân vùng tĩnh nhiều hàng chờ


 Việc sử dụng kỹ thuật phân vùng tĩnh nhiều hàng chờ có 2 khuyết điểm chính:
 Thứ nhất, kích thước các phân vùng tĩnh là cố định và thường không khớp với các kích thước của các ứng dụng. Do đó phần bộ nhớ không sử dụng ở các
phân vùng sẽ bị lãng phíHiện tượng phân mảnh nội vi.
 Thứ hai, Khi máy tính chạy nhiều chương trình nhỏ. Các chương trình sẽ xếp hàng để chờ ở phân vùng có kích thước nhỏ trong khi phân vùng có kích thước
lớn không được sử dụng.
15

3.2.2 Kỹ thuật phân vùng tĩnh một hàng chờ duy nhất
 HĐH được load vào vùng nhớ thấp của Ram
 Phần trống còn lại của Ram được chia thành nhiều phân vùng kích thước tăng dần (10K-20K-30K...)
Chỉ có 1 hàng chờ duy nhất cho các ứng dụng
 Khi 1 phân vùng rỗng, HĐH sẽ chọn 1 tiến trình trong hàng chờ để phục vụ.
16

Các chiến lược cấp phát bộ nhớ  First-Fit: Cấp khối nhớ đầu tiên thỏa mãn
 Best-Fit: Cấp phát khối nhớ bé nhất đủ để đáp ứng cho tiến trình. Phải duyệt toàn bộ danh sách
 Worst-Fit: Cấp phát khối nhớ lớn nhất đáp ứng được tiến trình. Phải duyệt toàn bộ danh sách
 Như vậy: First-Fit và Best-Fit tốt hơn Worst-Fit về vấn đề tốc độ và tận dụng bộ nhớ
17

3.2.3 Kỹ thuật phân vùng động  Kỹ thuật phân vùng động


18
Phân vùng động
 Hình a : HĐH được load vào bộ nhớ thấp của RAM. Khi ứng dụng A cần chạy, HĐH tạo phân vùng động vừa đúng kích thước của phần mềm A và nạp A
vào phân vùng vừa tạo. Phần bộ nhớ trống còn lại sẽ được sử dụng cho các chương trình tiếp theo.
 Hình d: Chương trình A kết thúc và trả lại phân vùng của mình.
 Hình e: Chương trình D có kích thước < kích thước chương trình A cần chạy. HĐH tạo phân vùng ngay trên phân vùng A vừa trả lại để cho D chạy.
 Hình f: Chương trình E có kích thước lớn, HĐH không tìm được phân vùng phù hợp trong khi bộ nhớ trống đủ để đáp ứng tiến trìnhđây gọi là hiện tượng
phân mảnh ngoại vi. Khi đó nó dời các phân vùng đang chạy ứng dụng lại liền nhau để tạo vùng nhớ trống duy nhất và tạo phân vùng cho E chạy.
19

3.3 Quản lý bộ nhớ ảo


Các phương pháp quản lý bộ nhớ đã nghiên cứu đều có chung ý tưởng là nạp toàn bộ file phần mềm vào bộ nhớ trước khi chạy ứng dụng. Do đó, khi các máy
tính phải chạy đồng thời nhiều ứng dụng có kích thước lớn thì hệ điều hành sẽ không thể đáp ứng được.
Để khắc phục tình trạng đó người ta sử dụng phương pháp quản lý bộ nhớ ảo với ý tưởng: không nạp hết toàn bộ file phần mềm vào bộ nhớ trước khi chạy mà
chỉ khi chạy đến lệnh nào và cần truy xuất dữ liệu nào thì hệ điều hành mới nạp phần dữ liệu đó vào bộ nhớ. Sau khi thực hiện xong giải phóng phần dữ liệu đó
để chứa code và dữ liệu khác.
20

Quản lý bộ nhớ ảo
 Việc quản lý bộ nhớ ảo như vậy sẽ gây ra vấn đề về tốc độ thực hiện chương trình do phải chờ việc giải phóng/nhập dữ liệu vào bộ nhớ. Để khắc phục người
ta thực hiện quản lý bộ nhớ ảo bằng phần cứng. Đơn vị quản lý bộ nhớ ảo là MMU (Memory Management Unit).
21

Quản lý bộ nhớ
Trong MMU có thanh ghi Relocation(định vị lại) sử dụng để tính toán địa chỉ vật lý từ địa chỉ ảo của 1 tiến trình của người sử dụng
22

Quản lý bộ nhớ
Có 3 phương pháp quản lý bộ nhớ ảo khác nhau:
 Quản lý bộ nhớ ảo theo phân trang (Paging)
 Quản lý bộ nhớ ảo theo phân đoạn (Segmentation)
 Quản lý bộ nhớ ảo theo phân trang và phân đoạn (Paging and Segmentation)
23

 Nguyên lý:
3.4 Phân trang (Paging)
Hệ điều hành chia bộ nhớ ảo chương trình thành nhiều đơn vị có kích thước bằng nhau, mỗi đơn vị này là 1 trang. Kích thước trang ảo = 2i (256, 512, 1K,
2K,...) (Page)
 Bộ nhớ Ram cũng được chia thành nhiều đơn vị quản lý, mỗi đơn vị được gọi là trang thật (frame) và có kích thước bằng trang ảo.
Trang thật là nơi chứa trang ảo khi cần thiết.Tại 1 thời điểm 1 trang thật chứa duy nhất 1 trang ảo, nhưng theo thời gian nó có thể chứa nhiều trang ảo khác
nhau.
Hệ điều hành quản lý việc ánh xạ trang ảo và trang thật qua bảng trang (PCB – Page Control block)
24

Phân trang
 Ví dụ ánh xạ giữa địa chỉ ảo và địa chỉ thật.
 Máy tính RAM 32KB được chia thành 8 trang thật, mỗi trang kích thước 4KB.
 Chương trình kích thước 64KB được chi thành 16 trang ảo, kích thước 4KB
 Hiện 8 trang ảo đang chiếm hết Ram
25

Phân trang Ta có bảng trang như sau


Logical
Physical
3
0
1
1
0
2
5
3
4
4
9
5
2
6
11
7
26

Phân trang
Để quản lý việc ánh xạ trang ảo sang trang thật hệ điều hành sử dụng một bảng đặc tả trang ảo (bảng trang-page table), bảng trang có số phần tử bằng số trang
ảo của chương trình tương ứng, mỗi phần tử của bảng có cấu trúc như sau:
27

Phân trang
 Chuyển đổi từ địa chỉ ảo sang địa chỉ thật:
Mỗi địa chỉ được sinh ra bởi CPU được chia thành 2 phần: Page number p (số trang) và Page offset d (số thứ tự trong trang).
 Không gian ảo kích thước 2m , kích thước trang ảo 2n Địa chỉ ảo có m bit, sử dụng m-n bit cao làm số hiệu
trang và n bit thấp làm offset
m-n n
Page number (p)
Page offset (d)
28
 Ví dụ:
 Giả sử kích thước luận lý là 32 bytes, kích thước trang thật là 4 bytes => có 8 trang thật đánh số từ 0->7.
 Kích thước page number là 5-2=3 bit, kích thước page offset là 2bit
(m=5, n=2, p=8, d=4)
Phân trang
Page number
Page offset
0
A
B
C
D
.....
.....
7
A
B
C
d
29

Phân trang
Khi chương trình được nạp vào bộ nhớ, hệ thống xây dựng 1 bảng quản lý trang PCB. Địa chỉ của bảng PCB được nạp vào thanh ghi Rp. Mỗi phần tử của
PCB gồm 2 phần:
 D: cho biết trang đã được nạp vào bộ nhớ hay chưa.
 Ap: là địa chỉ trang vật lý chứa trang logic đang xét. Nếu D=0,
Ap có thể chứa thông tin cần thiết để tìm trang ở bộ nhớ ngoài.
PCB = {Phần tử}
DP
AP
Dấu hiệu nạp trang:
0 - Chưa nạp, 1 - đã nạp.
Địa chỉ nạp trang
30

Phân trang
 Để truy nhập dữ liệu hệ thống thực hiện như sau:
 B1: lấy nội dung thanh ghi Rp + p để truy nhập tới phần tử thứ p trong PCB. Nếu D=0 thì hệ thống nạp trang vào bộ nhớ. Khi đó D=1 và Ap sẽ chứa địa chỉ
trang trong bộ nhớ vật lý.
 B2: Hệ thống lấy địa chỉ trang Ap ghép với d tạo ra địa chỉ vật lý của dữ liệu đã đưa vào đó và truy nhập tới địa chỉ vừa tính được để truy xuất dữ liệu.
31

 Ví dụ:
Phân trang
Rp = +
pd
123000
81
532
400
1
123
480 481
RAM
123532
400
Trang 81
RAM
32
... ...

Phân trang
 Xét một không gian địa chỉ có 8 trang, mỗi trang có kích thước 1KB, ánh xạ vào bộ nhớ vật lý có 32 khung trang. Hỏi:
a) Địa chỉ logic và vật lý gồm bao nhiêu bit?
b) Bảng trang có bao nhiêu mục?
33

Các phương pháp giải phóng trang thật


Như đã biết, khi cần nạp trang ảo máy sẽ tìm một trang thật trống. Tuy nhiên ít khi tìm được do số lượng trang thật hạn chế. Vì vậy máy phải tìm một trang
thật nào đó và giải phóng nó để nạp trang ảo mới. Có nhiều phương pháp giải phóng trang thật khác nhau phụ thuộc vào mục tiêu xây dựng hệ điều hành.
Dưới đây chúng ta nghiên cứu các phương pháp giải phóng trang thật cơ bản: FIFO, the second chance page replacement algorithm(cơ hội lần 2), Clock, NRU
(not recently used), LRU(last recently used).
34

FIFO
Dùng 1 danh sách chứa các trang thật đã dùng theo thứ tự trang nào mới nhất sẽ đưa xuống cuối danh sách, các trang dùng cũ nhất sẽ đứng đầu danh sách. Khi
cần trang thật HĐH sẽ giải phóng các trang ở đầu danh sách trước.
35

FIFO
 Như đã biết HĐH thường được nạp vào Ram đầu tiên do đó Phương pháp này rất dễ giải phóng các trang chưa module hệ điều hành.
Để khắc phục nhược điểm này ta sử dụng phương pháp cơ hội lần 2 với bit R (0/1) để xác định các trang dùng cũ nhất và không được truy xuất trong thời gian
gần.
36

Cơ hội lần 2
 Biến R (0/1) được sử dụng như sau:  Định kỳ R được xóa về 0
 Khi được truy xuất R được set lên 1
 Khi cần giải phóng trang, hệ điều hành tìm trang đầu danh sách và kiểm tra biến R của nó.
 Nếu R=1 thì tha nó, set R=0 và tìm đến phần tử tiếp theo.  Nếu R=0 thì giải phóng
 Như vậy trang được giải phóng là trang không được truy xuất gần đây và cũ nhất.
37

LRU (Last Recently Used)


Thay thế trang có lần sử dụng cuối cùng, cách thời điểm đổi trang lâu nhất.
Để thực hiện phương pháp này, hệ điều hành ghi lại mốc thời gian mỗi lần trang được truy xuất. Mỗi khi cần giải phóng trang, ta chọn trang có mốc thời gian
nhỏ nhất (xa thời điểm chọn nhất).
38

NRU (Not Recently Used)


 Sử dụng 2 bit trạng thái R và M như sau
 R (0/1): Định kỳ set về 0, mỗi khi trang bị truy xuất thì set lên 1.
 M (0/1): Mỗi lần nạp trang ảo, M set về 0. Mỗi lần thay đổi nội dung M set về 1.
 Như vậy 1 trang ảo có các sự kiện sau:
 S0: R=0, M=0: Trong thời gian gần, trang chưa bị truy xuất và chưa
thay đổi nội dung
 S1: R=0, M=1: Trong thời gian gần, trang chưa bị truy xuất nhưng đã thay đổi nội dung
 S2: R=1, M=0: Trong thời gian gần, trang bị truy xuất nhưng không thay đổi nội dung
 S3: R=1, M=1: Trong thời gian gần, trang bị truy xuất và thay đổi nội dung
39

NRU (Not Recently Used)


Như vậy thứ tự S0->S3 là thứ tự các trang đã được truy xuất và thay đổi nội dung từ lâu nhất đến mới nhất.
Khi tìm trang để thay thế HĐH chọn theo thứ tự ưu tiên từ S0->S3
40

3.5. Phân đoạn (Segmentation)


 Trong kỹ thuật phân trang, mặc dù không gian ảo mà chương trình có thể truy xuất có kích thức rất lớn (4GB), nhưng nó là không gian phẳng nên 1 số
chương trình lớn vẫn có thể gặp phiền hà sau đây: chương trình tự chia không gian ảo của mình ra thành nhiều partition khác nhau để chứa những thông tin độc
lập cần xử lý, trong quá trình chạy, nếu 1 trong các partition không đủ chỗ chứa thông tin thì chương trình sẽ bị dừng đột ngột.
41

Phân đoạn (Segmentation)


Do đó, thay vì cấp phát cho chương trình 1 không gian phẳng duy nhất, nếu hệ thống cấp phát cho chương trình các không gian bộ nhớ độc lập có kích thước
thay đổi động theo nhu cầu (miễn sao tổng kích thước của chúng bị hạn chế trên nào đó) như hình sau thì chương trình sẽ không gặp vấn đề tràn bộ nhớ:
42

Phân đoạn (Segmentation)  Nguyên lý hoạt động:


 Khi chạy, chương trình được phép truy xuất dữ liệu trong nhiều không gian khác nhau, mỗi không gian được gọi là segment. Mỗi segment có kích thước thay
đổi được theo thời gian, ô nhớ đầu tiên của mỗi segment luôn bắt đầu từ 0.
 Bộ nhớ RAM có kích thước nhỏ nào đó. Các segment của chương trình thường nằm trên đĩa cứng, khi cần thiết segment sẽ được nạp vào 1 vùng thích hợp
trong RAM.
Tại từng thời điểm, 1 vùng nhớ RAM thật chứa tối đa 1 segment ảo, nhưng theo thời gian nó có thể chứa nhiều segment ảo khác nhau
Khi ứng dụng truy xuất 1 ô nhớ, nó xác định địa chỉ ô nhớ dạng phân cấp: segment+offset.
43

Phân đoạn (Segmentation)  Bộ nhớ quản lý các segment này bởi SCB.
 Mỗi phần tử trong SCB đặc trưng bởi 3 trường tin:
 D: cho biết module đã nạp vào bộ nhớ hay chưa( D=0 chưa nạp, D=1
đã nạp)
 A: Địa chỉ của vùng nhớ sẽ định vị module  L: Kích thước của module
Dấu hiệu nạp mô đun:
0 - Chưa nạp, 1-đãnạp.
Địa chỉ nạp mô đun
D
SCB = {Phần tử}
A
l
Độdàimôđun - Cấp phát bộ nhớ,
-Bảovệ,
44

Phân đoạn (Segmentation)


 SCB được xây dựng ngay khi biên dịch chương trình. Ban đầu chỉ có trường D và L có giá trị.
 Khi thực hiện, SCB được nạp vào bộ nhớ, địa chỉ đầu được đưa vào thanh ghi đoạn Rs.
 Địa chỉ truy cập dữ liệu được biểu diễn bởi cặp (s,d). Trong đó s là số hiệu module cần truy cập(ví dụ module thứ 2), d là địa chỉ tương đối tính từ đầu
Segment.
 Để truy cập dữ liệu cần 2 bước:
 B1: Lấy nội dung thanh ghi Rs+s->phần tử thứ s trong SCB
 Nếu D=0->nạp CT vào bộ nhớ, xin cấp phát không gian nhớ theo kích thước L. Trường địa chỉ A được chỉ tới module thứ s.
 Nếu D=1, hệ thống thực hiện bước tiếp theo.
 B2: Truy nhập tới bộ nhớ theo địa chỉ A+d để truy xuất dữ liệu.
45

Phân đoạn (Segmentation)


 Ví dụ: module thứ 15 của chương trình (s=15) có địa chỉ tương đối d=4532, độ dài module L=1000, Địa chỉ nạp module A=12352, module đã được nạp vào
bộ nhớ, nội dung thanh ghi Rs là 300. Để truy nhập tới module hệ thống thực hiện như sau:
 Lấy 300+15->phần tử thứ 315 trong SCB.
 Truy nhập đến địa chỉ 12352+4532=16884 để truy xuất dữ liệu.
46

Phân đoạn (Segmentation)


15
4532
Rs =
+
sd
12352
300
300
1
12352
1000
314 315
+
16884
RAM
Mô đun 15
RAM
47
... ...
1000

Phân đoạn (Segmentation)


 Ưu điểm: Không đòi hỏi công cụ tổ chức đặc biệt, có
thể áp dụng trên mọi hệ thống.
 Nhược điểm: Hiệu quả sử dụng bộ nhớ phụ thuộc cấu trúc chương trình của người sử dụng.
48

3.6. Quản lý bộ nhớ ảo kết hợp phân trang và phân đoạn


Quy trình đổi địa chỉ ảo sang địa chỉ thật có khuyết điểm trong trường hợp quản lý segment có kích thước lớn: ta khó/không tìm được vùng RAM trống chứa
nó. Vì lý do này, trong thực tế, người ta phải kết hợp 2 phương pháp quản lý phân trang và phân đoạn lại, đây là phương pháp mạnh nhất hiện nay. Ý tưởng là hệ
thống quản lý mỗi segment phần mềm như là 1 không gian ảo gồm nhiều trang ảo, mỗi lần chương trình truy xuất ô nhớ nằm trong trang ảo nào của segment
nào, hệ thống sẽ tìm cách nạp nó vào RAM.
49

Quản lý bộ nhớ ảo kết hợp phân trang và phân đoạn


Ý tưởng: Hệ thống quản lý mỗi segment phần mềm như 1 không gian ảo gồm nhiều trang ảo, mỗi lần chương trình truy xuất ô nhớ nằm trong trang ảo nào của
segment nào, hệ thống sẽ tìm cách nạp nó vào Ram.
 Quy đổi địa chỉ ảo sang địa chỉ thật:
 1: Từ địa chỉ mà chương trình truy xuất gồm 2 phần: Segment (s) và
offset. Hệ thống tách offset thành 2 phần page(p) và offset 1.
 2: Truy xuất record quản lý segment trong bảng đặc tả segment. Nếu D=1, thì bản đặc tả cho segment đã có trong Ram. Nếu không thì tìm cách nạp nó vào
Ram.
 3. Truy xuất record quản lý trang ảo P trong bảng đặc tả trang. Nếu D=1 thì địa chỉ thật là
p
d
50

Quản lý bộ nhớ ảo kết hợp phân trang và phân đoạn


 3. Truy xuất record quản lý trang ảo P trong bảng đặc tả trang. Nếu D=1 thì địa chỉ thật là
 4. Nếu D=0, hệ thống sẽ tìm 1 trang rỗng K, nếu không có nó phải tìm cách loại bỏ 1 trang ít gây phiền hà nhất. Sau đó nạp trang ảo vào trang thật K.
 5. Hiệu chỉnh D=1 và page frame =K rồi quay lại bước 3.
Page frame (p)
Offset

You might also like