MAI VĂN TÁM – PHAN TRUNG KIÊN
GIÁO TRÌNH
NGUYÊN LÝ HỆ ĐIỀU HÀNH
Sơn La, 2012
2
MỤC LỤC
Trang
CHƯƠNG 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH 4
1.1. Hệ điều hành là gì? 4
1.2. Cấu trúc hệ thống máy tính 6
1.3. Cấu trúc hệ điều hành 11
CHƯƠNG 2. QUẢN LÝ TIẾN TRÌNH 21
2.1. Khái niệm tiến trình 21
2.3. Các thao tác điều khiển tiến trình 28
2.4. Giao tiếp giữa các tiến trình 30
2.5. Luồng (Thread) 34
CHƯƠNG 3. LẬP LỊCH CPU 39
3.1. Các khái niệm cơ bản 39
3.2. Tiêu chí lập lịch 41
3.3. Các thuật toán lập lịch 42
3.4. Lập lịch trên hệ thống nhiều CPU 47
CHƯƠNG 4. ĐỒNG BỘ HOÁ TIẾN TRÌNH 49
4.1. Các khái niệm cơ bản 49
4.2. Các giải pháp phần mềm 51
4.3. Các giải pháp phần cứng 54
4.4. Semaphores 55
4.5. Các bài toán đồng bộ kinh điển 58
4.6. Monitors 61
CHƯƠNG 5. BẾ TẮC 64
5.1. Mô hình hệ thống 64
5.2. Các phương pháp giải quyết bế tắc 67
5.3. Ngăn bế tắc 67
5.4. Tránh bế tắc 68
5.5. Phát hiện bế tắc 72
5.6. Phục hồi khỏi bế tắc 74
CHƯƠNG 6. QUẢN LÝ BỘ NHỚ 76
6.1. Bộ nhớ chính 76
6.2. Hoán đổi 80
6.3. Cấp phát bộ nhớ liền kề 82
6.4. Phân trang 85
6.5. Cấu trúc của bảng phân trang 94
6.6. Phân đoạn 97
CHƯƠNG 7. BỘ NHỚ ẢO 102
3
7.1. Khái quát 102
7.2. Phân trang theo yêu cầu 104
7.3. Copy - on - Write 110
7.4. Thay thế trang 111
7.5. Cấp phát các frame 122
7.6. Thrashing 125
CHƯƠNG 8. HỆ THỐNG TẬP TIN (FILE) 129
8.1. Khái niệm file 129
8.2. Các phương pháp truy nhập 134
8.3. Cấu trúc thư mục 136
8.4. Gắn kết hệ thống file - File-System Mounting 143
8.5. Chia sẻ file 144
8.6. Bảo vệ 146
CHƯƠNG 9. CÀI ĐẶT HỆ THỐNG FILE 149
9.1. Cấu trúc hệ thống file 149
9.2. Cài đặt hệ thống file 150
9.3. Cài đặt thư mục 155
9.4. Các phương pháp cấp phát 156
9.5. Quản lý không gian trống 160
9.6. Phục hồi - Recovery 161
9.7. Các hệ thống file trên mạng NFS 162
CHƯƠNG 10. QUẢN LÝ HỆ THỐNG VÀO RA 165
10.1. Tổng quan 165
10.2. Phần cứng vào ra - I/O Hardware 165
10.3 Ứng dụng giao diện vào ra 171
10.4. Nhân của hệ thống con vào ra 173
10.5 Biến đổi các yêu cầu vào/ra thành các hoạt động của phần cứng 177
10.6. Các dòng - Streams 180
10.7. Hiệu suất 181
10.8. Cấu trúc lưu trữ thứ cấp 183
CHƯƠNG 11. GIỚI THIỆU MỘT SỐ HỆ ĐIỀU HÀNH CỤ THỂ 189
11.1.1. Lịch sử hệ điều hành Linux 189
11.2. Hệ điều hành Windows 2000 193
11.3. Hệ điều hành Windows XP 201
4
CHƯƠNG 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH
1.1. Hệ điều hành là gì?
1.1.1. Giới thiệu
Hệ điều hành là một phần quan trọng của mọi hệ thống thông tin. Một hệ thống thông
tin gồm 4 thành phần: phần cứng, hệ điều hành, chương trình ứng dụng, người sử dụng.
Phần cứng: CPU, bộ nhớ, thiết bị vào ra cung cấp các tài nguyên thông tin cơ sở.
Các chương trình ứng dụng: chương trình dịch, hệ thống cơ sở dữ liệu, trình soạn thảo
văn bản. qui định cách sử dụng các tài nguyên đó để giải quyết những vấn đề của người sử
dụng.
Hệ điều hành điều khiển và đồng bộ việc sử dụng phần cứng của các chương trình ứng
dụng phục vụ các người sử dụng khác nhau với các mục đích sử dụng phong phú đa dạng.
Bốn lớp này có mối quan hệ mật thiết với nhau và được thể hiện qua hình 1.1.
Hình 1.2. Các thành phần của hệ thống thông tin.
- Xét về phía người sử dụng thì hệ điêu hành cần phải tạo được môi trường giao diện
giữa người sử dụng và máy tính Thông qua môi trường này, cho phép người sử dụng đưa ra
các lệnh, chỉ thị điều khiển hoạt động của hệ thống.
- Xét về phía các chương trình ứng dụng thì hệ điều hành phải tạo môi trường để các
chương trình ứng dụng hoạt động; cung cấp các cơ chế cho phép kích hoạt và loại bỏ các
chương trình ứng dụng.
- Xét về phía phần cứng thì hệ điều hành phải quản lý các thiết bị một cách có hiện quả,
khai thác được hết khả năng của các 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, thu hồi khi cần thiết.
Như vậy, có thể coi hệ điều hành là một tập hợp các chương trình hệ thống có chức
5
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 chường
trình ứng dụng; quản lý và khai thác hiện quả các thiết bị phần cứng. Ta có thể hiểu hệ điều
hành là hệ thống các chương trình đảm bảo các chức năng giao tiếp người máy và quản lý tài
nguyên hệ thống tính toán.
Tuy nhiên có nhiều người quan sát hệ điều hành dưới các góc độ khác nhau vì thế tồn
tại nhiều định nghĩa về hệ điều hành.
- Đối với người sử dụng: hệ điều hành là tập hợp các chương trình, phục vụ khai thác hệ
thống tính toán một cách dễ dàng, thuận tiện.
Người sử dụng khi thực hiện một chương trình nào đó trên máy tính điện tử thì chỉ quan
tâm đến việc hệ thống có đáp ứng được nhu cầu của họ hay không? Có chương trình cần
thực hiện, có đủ bộ nhớ để chạy họ không quan tâm đến việc hệ điều hành làm gì nhằm mục
đích gì, có cấu trúc như thế nào?
- Đối với người làm công tác quản lý: hệ điều hành là một tập các chương trình phục vụ
quản lý chặt trẽ và sử dụng tối ưu các tài nguyên của hệ thống tính toán.
- Đối với cán bộ kỹ thuật: hệ điều hành là hệ thống chương trình bao trùm lên một máy
tính vật lý cụ thể để tạo ra một máy logic với những tài nguyên mới và khả năng mới.
Các định nghĩa trên phản ánh vị trí quan sát của người nêu. Họ đứng ở ngoài hệ thống
và thể hiện điều họ mong đợi và cũng là điều họ nhìn thấy.
- Đối với cán bộ lập trình hệ thống: hệ điều hành là hệ thống mô hình hoá, mô phỏng
các hoạt động của máy, của người sử dụng và của thao tác viên hoạt động trong các hệ thống
đối thoại nhằm tạo môi trường để quản lý chặt trẽ các tài nguyên và tổ chức khai thác chúng
một cách thuận tiện và tối ưu.
1.1.2. Lịch sử hệ điều hành
Sự phát triển của hệ điều hành gắn liền với sự tiến hóa của phần cứng máy tính và phụ
thuộc nhiều vào kiến trúc máy tính.
a. Thế hệ thứ 1 (1945-1955):
Những máy tính sử dụng các rơ le cơ khí, bóng chân không. Việc thiết kế, lập trình,
hoạt động, bảo trì do một nhóm người thực hiện. Lập trình sử dụng ngôn ngữ máy. Có thể coi
giai đoạn này chưa có hệ điều hành.
b. Thế hệ thứ 2 (1955-1965):
Là giai đoạn của transitor và hệ thống xử lý lô (batch system) với các máy lớn
(mainframe). Có thể lập trình trên giấy rồi đục lỗ trên thẻ. Thường lập trình bằng ngôn ngữ
Fortran và Assembly.
Hệ thống xử lý xử lý lô đơn giản, gom lô các công việc. Quá trình đưa dữ liệu từ thẻ vào
băng từ do một máy đảm nhận (1401), băng từ được đưa cho máy chính xử lý (7094). Băng từ
chứa kết quả được đưa cho máy để in (1401).
Hệ điều hành là một chương trình đặc biệt đọc công việc đầu tiên từ băng từ và thi hành,
rồi sau đó chuyển sang công việc mới.
FMS, IBSYS là các hệ điều hành trong giai đoạn này.
6
Hình 1.2. Hệ thống xử lý theo lô
c. Thế hệ thứ 3 (1965-1980):
Khởi đầu thế hệ của các IC và hệ thống đa chương (multiprogramming system).
Hệ thống 360 dùng IC và tích hợp 2 máy tính chính và phụ trong giai đoạn trước làm
một.
Tính tương thích với các hệ thống cũ được duy trì.
Multiprogramming là giải pháp để tăng hiệu suất.
Ý tưởng của multiprogramming là cho phép chạy nhiều chương trình cùng một lúc.
Trong multiprogramming system, hệ điều hành sẽ nạp nhiều công việc vào trong bộ
nhớ.
Spooling cũng là một giải pháp để tăng hiệu suất.
Hình 1.3. Ba công việc cùng trong bộ nhớ của hệ thống đa chương
Spooling là Hệ điều hành sẽ nạp công việc mới từ hệ thống vào/ra trong khi xử lý tính
toán cho công việc khác. Trong khi thực một công việc, Hệ điều hành đọc công việc mới từ
thẻ và in công việc trước đó ra máy in.
Kỹ thuật chia xẻ thời gian (timesharing) trong hệ thống đa chương cho phép CPU luân
phiên phục vụ các công việc để tăng đáp ứng của hệ thống.
UNIX là một hệ điều hành được phát triển trong thời gian này và đến nay vẫn còn được
sử dụng.
d. Thế hệ thứ 4 (1980-hiện nay):
Mạch tích hợp với mật độ cao, mỗi vi mạch chứa hàng ngàn transitor.
Máy tính cá nhân ra đời. Hệ điều hành MS DOS ra đời gắn liền với máy tính IBM PC.
Hệ điều hành mạng và hệ điều hành phân tán ra đời trong thời kỳ này. Các hệ điều hành có
giao diện đồ họa (GUI - Graphical User Interface) như Windows, Linux, … ra đời.
1.2. Cấu trúc hệ thống máy tính
7
1.2.1. Bộ xử lý trung tâm: (CPU)
Là bộ não của máy tính. CPU đọc lệnh từ bộ nhớ và thực thi lệnh. Quá trình CPU đọc
một lệnh và thực thi lệnh đó được gọi là một chu kỳ. Một chu kỳ bao gồm:
Đọc lệnh từ bộ nhớ
Giải mã lệnh để xác định lệnh và các toán hạng của lệnh
Thi hành lệnh
Mỗi CPU có một tập lệnh riêng, CPU chỉ có thể thực thi các lệnh trong tập lệnh của nó.
Thời gian truy xuất bộ nhớ để lấy lệnh lâu hơn thời gian thi hành lệnh nên trong CPU có
những thanh ghi để lưu trữ các giá trị quan trọng và kết quả tạm thời. Trong tập lệnh có các
lệnh để đọc các từ (word) từ bộ nhớ vào thanh ghi, và ghi các từ trong thanh ghi ra bộ nhớ.
Hình 1.4. Cấu trúc hệ thống máy tính
Trong CPU còn có một số thanh ghi đặc biệt như :
Thanh ghi bộ đếm chương trình (program counter): để chứa địa chỉ của lệnh kế tiếp
trong bộ nhớ. CPU tự động cập nhật giá trị trong thanh ghi này mỗi khi lấy xong một lệnh.
Con trỏ ngăn xếp (stack pointer): Chỉ vào đỉnh của ngăn xếp trong bộ nhớ.
Thanh ghi từ trạng thái PSW (program status word): Chứa các bit điều khiển như kết
quả so sánh, độ ưu tiên CPU, chế độ hoạt động (user hoặc kernel), …
Hệ điều hành phải kiểm soát tất cả các thanh ghi đó, trong hệ điều hành đa chương, Hệ
điều hành thường phải tạm ngưng một chương trình và cho phép một chương trình khác chạy,
khi đó Hệ điều hành phải lưu tất cả nội dung các thanh ghi lại, và khôi phục lại cho các thanh
ghi này khi chương trình đó được chạy tiếp.
Để tăng tốc độ xử lý của CPU, người ta thiết kế CPU với cấu trúc superscalar (thay cho
cấu trúc ống dẫn ba tầng-three-stage pipeline).
Monitor
Bus
8
Hình 1.5. a. Cấu trúc ống dẫn ba tầng b. Cấu trúc superscalar
Cấu trúc ống dẫn ba tầng:
Trong ống dẫn CPU có ba đơn vị là đơn vị lấy lệnh, đơn vị giải mã lệnh và đơn vị thực
thi lệnh.
Trong khi CPU thực thi lệnh n, nó có thể giải mã cho lệnh n+1, và lấy lệnh cho lệnh
n+2.
Cấu trúc superscalar: Cũng có cấu trúc ống dẫn nhưng có nhiều đơn vị thực thi lệnh
(một cho xử lý số nguyên, một cho xử lý số chấm động, một cho xử lý Boolean). Có một hay
nhiều đơn vị lấy lệnh, giải mã lệnh và các đơn vị giải mã lệnh này được nối với một bộ đệm
trước khi đưa vào các đơn vị thực thi lệnh.Khi đơn vị thực thi lệnh nào rảnh thì lệnh ở bộ đệm
được lấy ra và đưa cho đơn vị thực thi lệnh này xử lý.
Hầu hết các CPU (ngoại trừ các CPU đơn giản sử dụng trong các hệ thống nhúng) có
hai chế độ hoạt động là chế độ nhân (kernel) và chế độ người dùng (user). Chế độ hoạt động
được điều khiển bởi một bit trong thanh ghi PSW.
Ở chế độ kernel CPU có thể thi hành mọi lệnh trong tập lệnh và có thể sử dụng mọi tính
năng của phần cứng. Hệ điều hành chạy ở chế độ kernel và có thể truy xuất toàn bộ phần
cứng.
Ngược lại, các chương trình của người sử dụng chạy ở chế độ user, chỉ sử dụng một
phần của tập lệnh CPU và một số tính năng của phần cứng. Thông thường, các lệnh liên quan
đến bảo vệ bộ nhớ và vào/ra không được thực hiện ở chế độ user.
Hình 1.6. Chuyển đổi từ chế độ người dùng sang chế độ nhân.
Để sử dụng các dịch vụ của hệ điều hành, chương trình của người sử dụng sẽ gọi các
hàm của hệ điều hành. Thao tác này được gọi là gọi hàm hệ thống (system call).
Khi chương trình người sử dụng gọi hàm hệ thống, chế độ hoạt động sẽ được chuyển từ
9
chế độ user sang chế độ kernel, và hệ điều hành sẽ được chạy. Khi công việc hoàn tất, điều
khiển sẽ được trả về cho chương trình của người sử dụng ngay sau lời gọi hàm hệ thống và
chế độ chuyển về chế độ user.
1.2.2. Bộ nhớ
Bộ nhớ là thành phần quan trọng thứ hai sau CPU trong hệ thống máy tính.
Bộ nhớ được xây dựng theo cấu trúc phân cấp.
Thanh ghi: Nằm bên trong CPU, tốc độ truy xuất rất nhanh. Khả năng lưu trữ thông
thường là 32x32 bits trong CPU 32 bits, 64x64 bits trong thanh ghi 64 bits.
Hình 1.7. Cấu trúc phân cấp của bộ nhớ.
Cache: Thường được điều khiển bởi phần cứng, được chia thành những đường cache
(cache line), mỗi đường 64 bytes. Nhưng đường cache thường dùng nhất sẽ ở gần CPU, khi
chương trình cần đọc dữ liệu từ bộ nhớ, phần cứng cache sẽ kiểm tra xem dữ liệu có trên
cache chưa, nếu có thì sẽ được đọc, nếu không thì mới đọc từ bộ nhớ chính.
Bộ nhớ chính: Thường là RAM (Random Access Memory). Đây là chỗ chứa chương
trình, dữ liệu chính để đưa vào CPU xử lý, dữ liệu sẽ mất đi nếu tắt máy tính.
Đĩa từ (đĩa cứng): Dung lượng lớn hơn bộ nhớ chính, rẻ hơn so với bộ nhớ chính. Tốc
độ truy xuất chậm hơn nhiều so với bộ nhớ chính. Dùng để lưu chương trình và dữ liệu. Khi
tắt máy tính, dữ liệu trong đĩa cứng không bị mất.
Đĩa cứng gồm nhiều lớp đĩa xếp chồng nhau, tốc độ quay 5400, 7200, 10800 vòng/phút.
Cánh tay mang nhiều đầu đọc di chuyển vào/ra để đọc và ghi dữ liệu.
Thông tin được ghi trên đĩa theo những vòng tròn đồng tâm được gọi là track. Các track
ở cùng một vị trí của cánh tay trên các đĩa gọi là cylinder. Đầu đọc di chuyển từ cylinder này
sang cylinder kế tiếp mất khoảng 1ms, và di chuyển đến cylinder bất kỳ mất khoảng từ 5-
10ms.
10
Hình 1.8. Cấu trúc của đĩa cứng.
Mỗi track được chia nhỏ thành những sector, thông thường có 512bytes/sector. Khi đầu
đọc đã di chuyển đến đúng bị trí track phải đọc, đĩa phải quay để đầu đọc ở đúng vị trí của
sector phải đọc, thời gian này khoảng 5-10ms, và đầu đọc bắt đầu đọc hay ghi dữ liệu. Tốc độ
đọc hay ghi khoảng 5MB/sec-150MB/sec.
Trong máy tính còn có một bộ nhớ nhỏ gọi là ROM (Read Only Memory), dữ liệu trong
ROM không mất đi khi ngưng cung cấp điện cho máy tính. ROM được lập trình bởi nhà sản
xuất và không thể thay đổi dữ liệu trong ROM. Trong một số máy tính, chương trình khởi
động máy tính được ghi ở trong ROM, một số card IO cũng có ROM để điều khiển thiết bị ở
mức độ thấp. EEPROM (Electrical Erasable ROM) và flash ROM là ROM mà có thể xoá và
ghi lại được.
Bộ nhớ chính cho phép chứa nhiều chương trình cùng một lúc. Nếu một chương trình
phải block (ngừng thi hành) để chờ đọc đĩa thì chương trình khác có thể sử dụng CPU (có thể
chạy), điều này tăng hiệu suất CPU. 7
Việc kiểm tra và biến đổi địa chỉ từ địa chỉ của chương trình (được gọi là địa chỉ ảo)
sang địa chỉ thật trong bộ nhớ (địa chỉ vật lý) được thực hiện bởi đơn vị quản lý bộ nhớ
(Memory Management Unit – MMU). Đơn vị này được thiết kế trong CPU hoặc ở gần CPU,
tuy nhiên về mặt chức năng logic thì nằm giữa CPU và bộ nhớ. Ví dụ một MMU có hai cặp
thanh ghi base và limit, cặp thanh ghi base và limit thứ nhất dùng cho chương trình và cặp
thanh ghi base và limit thứ hai dành cho dữ liệu của chương trình. Như vậy hệ thống cho phép
nhiều chương trình có thể sử dụng chung mã nguồn, và chỉ có một bản mã nguồn trong bộ
nhớ.
Khi chương trình thứ nhất chạy, hai cặp thanh ghi base và limit như ở hình 1.9 a, khi
chương trình thứ hai chạy (chương trình này dùng chung mã nguồn với chương trình thứ nhất)
như ở hình 1.9 b. Việc chuyển từ chương trình này sang chương trình khác được gọi là
chuyển ngữ cảnh (context switch).
11
Hình 1.9.Ứng dụng trong bộ nhớ.
1.2.3. Thiết bị vào/ra
Thiết bị vào/ra thường gồm có hai thành phần: bộ điều khiển và thiết bị. Bộ điều khiển
gồm nhiều con chip gắn trên một mạch in và điều khiển thiết bị. Bộ nhận các lệnh của hệ điều
hành và điều khiển thiết bị thi hành. Trong nhiều trường hợp việc điều khiển thiết bị phức tạp
và đòi hỏi nhiều chi tiết nên bộ điều khiển che giấu sự phức tạp đó và đưa ra một giao tiếp
đơn giản hơn, hệ điều hành nhìn thiết bị qua giao tiếp của bộ điều khiển.
1.2.4. Bus
Các thiết bị trong hệ thống máy tính có tốc độ làm việc khác nhau, do vậy trong máy
tính có nhiều bus truyền dữ liệu có tốc độ và chức năng khác nhau.
1.3. Cấu trúc hệ điều hành
Hệ điều hành là một hệ thống chương trình lớn, thực hiện nhiều nhiệm vụ khác nhau, do
đó các nhà thiết kế thường chia hệ điều hành thành nhiều thành phần, mỗi thành phần đảm
nhận một nhóm các nhiệm vụ nào đó, các nhiệm vụ này có liên quan với nhau. Cách phân
chia nhiệm vụ cho mỗi thành phần, cách kết nối các thành phần lại với nhau để nó thực hiện
được một nhiệm vụ lớn hơn khi cần và cách gọi các thành phần này khi cần nó thực hiện một
nhiệm vụ nào đó, , tất cả các phương thức trên tạo nên cấu trúc của hệ điều hành.
1.3.1. Các thành phần của hệ điều hành
a. Thành phần quản lý tiến trình
Hệ điều hành phải có nhiệm vụ tạo lập tiến trình và đưa nó vào danh sách quản lý tiến
trình của hệ thống. Khi tiến trình kết thúc hệ điều hành phải loại bỏ tiến trình ra khỏi danh
sách quản lý tiến trình của hệ thống.
Hệ điều hành phải cung cấp đầy đủ tài nguyên để tiến trình đi vào hoạt động và phải
đảm bảo đủ tài nguyên để duy trì sự hoạt động của tiến trình cho đến khi tiến trình kết thúc.
Khi tiến trình kết thúc hệ điều hành phải thu hồi những tài nguyên mà hệ điều hành đã cấp
12
cho tiến trình.
Trong quá trình hoạt động nếu vì một lý do nào đó tiến trình không thể tiếp tục hoạt
động được thì hệ điều hành phải tạm dừng tiến trình, thu hồi tài nguyên mà tiến trình đang
chiếm giữ, sau đó nếu điều kiện thuận lợi thì hệ điều hành phải tái kích hoạt tiến trình để tiến
trình tiếp tục hoạt động cho đến khi kết thúc.
Trong các hệ thống có nhiều tiến trình hoạt động song song hệ điều hành phải giải quyết
vấn đề tranh chấp tài nguyên giữa các tiến trình, điều phối CPU cho các tiến trình, giúp các
tiến trình trao đổi thông tin và hoạt động đồng bộ với nhau, đảm bảo nguyên tắc tất cả các tiến
trình đã được khởi tạo phải được thực hiện và kết thúc được.
Tóm lại, bộ phận quản lý tiến trình của hệ điều hành phải thực hiện những nhiệm vụ sau
đây:
- Tạo lập, hủy bỏ tiến trình.
- Tạm dừng, tái kích hoạt tiến trình.
- Tạo cơ chế thông tin liên lạc giữa các tiến trình.
- Tạo cơ chế đồng bộ hóa giữa các tiến trình.
b. Thành phần quản lý bộ nhớ chính
Bộ nhớ chính là một trong những tài nguyên quan trọng của hệ thống, đây là thiết bị lưu
trữ duy nhất mà CPU có thể truy xuất trực tiếp được.
Các chương trình của người sử dụng muốn thực hiện được bởi CPU thì trước hết nó
phải được hệ điều hành nạp vào bộ nhớ chính, chuyển đổi các địa chỉ sử dụng trong chương
trình thành những địa chỉ mà CPU có thể truy xuất được.
Khi chương trình, tiến trình có yêu cầu được nạp vào bộ nhớ thì hệ điều hành phải cấp
phát không gian nhớ cho nó. Khi chương trình, tiến trình kết thúc thì hệ điều hành phải thu
hồi lại không gian nhớ đã cấp phát cho chương trình, tiến trình trước đó.
Trong các hệ thống đa chương hay đa tiến trình, trong bộ nhớ tồn tại nhiều chương
trình/ nhiều tiến trình, hệ điều hành phải thực hiện nhiệm vụ bảo vệ các vùng nhớ đã cấp
phát cho các chương trình/ tiến trình, tránh sự vi phạm trên các vùng nhớ của nhau.
Tóm lại, bộ phận quản lý bộ nhớ chính của hệ điều hành thực hiện những nhiệm vụ sau:
- Cấp phát, thu hồi vùng nhớ.
- Ghi nhận trạng thái bộ nhớ chính.
- Bảo vệ bộ nhớ.
- Quyết định tiến trình nào được nạp vào bộ nhớ.
c. Thành phần quản lý vào/ra
Một trong những mục tiêu của hệ điều hành là giúp người sử dụng khai thác hệ thống
máy tính dễ dàng và hiệu quả, do đó các thao tác trao đổi thông tin trên thiết bị vào/ra phải
trong suốt đối với người sử dụng.
Để thực hiện được điều này hệ điều hành phải tồn tại một bộ phận điều khiển thiết bị,
bộ phận này phối hợp cùng CPU để quản lý sự hoạt động và trao đổi thông tin giữa hệ thống,
13
chương trình người sử dụng và người sử dụng với các thiết bị vào/ra.
Bộ phận điều khiển thiết bị thực hiện những nhiệm vụ sau:
Gửi mã lệnh điều khiển đến thiết bị: Hệ điều hành điều khiển các thiết bị bằng các mã
điều khiển, do đó trước khi bắt đầu một quá trình trao đổi dữ liệu với thiết bị thì hệ điều hành
phải gửi mã điều khiển đến thiết bị.
Tiếp nhận yêu cầu ngắt (Interrupt) từ các thiết bị: Các thiết bị khi cần trao đổi với hệ
thống thì nó phát ra một tín hiệu yêu cầu ngắt, hệ điều hành tiếp nhận yêu cầu ngắt từ các thiết
bị, xem xét và thực hiện một thủ tục để đáp ứng yêu cầu tù các thiết bị.
Phát hiện và xử lý lỗi: quá trình trao đổi dữ liệu thường xảy ra các lỗi như: thiết bị vào
ra chưa sẵn sàng, đường truyền hỏng, do đó hệ điều hành phải tạo ra các cơ chế thích hợp
để phát hiện lỗi sớm nhất và khắc phục các lỗi vừa xảy ra nếu có thể.
d. Thành phần quản lý bộ nhớ phụ (đĩa)
Không gian lưu trữ của đĩa được chia thành các phần có kích thước bằng nhau được gọi
là các block, khi cần lưu trữ một tập tin trên đĩa hệ điều hành sẽ cấp cho tập tin một lượng vừa
đủ các block để chứa hết nội dung của tập tin. Block cấp cho tập tin phải là các block còn tự
do, chưa cấp cho các tập tin trước đó, do đó sau khi thực hiện một thao tác cấp phát block hệ
điều hành phải ghi nhận trạng thái của các block trên đĩa, đặc biệt là các block còn tự do để
chuẩn bị cho các quá trình cấp block sau này.
Trong quá trình sử dụng tập tin nội dung của tập tin có thể thay đổi (tăng, giảm), do đó
hệ điều hành phải tổ chức cấp phát động các block cho tập tin.
Để ghi/đọc nội dung của một block thì trước hết phải định vị đầu đọc/ ghi đến block đó.
Khi chương trình của người sử dụng cần đọc nội dung của một đãy các block không liên tiếp
nhau, thì hệ điều hành phải chọn lựa nên đọc block nào trước, nên đọc theo thứ tự nào, , dựa
vào đó mà hệ điều hành di chuyển đầu đọc đến các block thích hợp, nhằm nâng cao tốc độ
đọc dữ liệu trên đĩa. Thao tác trên được gọi là lập lịch cho đĩa.
Tóm lại, bộ phận quản lý bộ nhớ phụ thực hiện những nhiệm vụ sau:
- Quản lý không gian trống trên đĩa.
- Định vị lưu trữ thông tin trên đĩa.
- Lập lịch cho vấn đề ghi/ đọc thông tin trên đĩa của đầu từ.
e. Thành phần quản lý tập tin
Máy tính có thể lưu trữ thông tin trên nhiều loại thiết bị lưu trữ khác nhau, mỗi thiết bị
lại có tính chất và cơ chế tổ chức lưu trữ thông tin khác nhau, điều này gây khó khăn cho
người sử dụng. Để khắc phục điều này hệ điều hành đưa ra khái niệm đồng nhất cho tất cả các
thiết bị lưu trữ vật lý, đó là tập tin (file).
Tập tin là đơn vị lưu trữ cơ bản nhất, mỗi tập tin có một tên riêng. Hệ điều hành phải
thiết lập mối quan hệ tương ứng giữa tên tập tin và thiết bị lưu trữ chứa tập tin. Theo đó khi
cần truy xuất đến thông tin đang lưu trữ trên bất kỳ thiết bị lưu trữ nào người sử dụng chỉ cần
truy xuất đến tập tin tương ứng thông qua tên của nó, tất cả mọi việc còn lại đều do hệ điều
hành thực hiện.
14
Trong hệ thống có nhiều tiến trình đồng thời truy xuất tập tin hệ điều hành phải tạo ra
những cơ chế thích hợp để bảo vệ tập tin trách việc ghi/ đọc bất hợp lệ trên tập tin.
Tóm lại: Như vậy bộ phận quản lý tập tin của hệ điều hành thực hiện những nhiệm vụ
sau:
- Tạo/ xoá một tập tin/ thư mục.
- Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời.
- Cung cấp các thao tác xử lý và bảo vệ tập tin/ thư mục.
- Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin.
- Tạo cơ chế truy xuất tập tin thông qua tên tập tin.
f. Thành phần thông dịch lệnh
Đây là bộ phận quan trọng của hệ điều hành, nó đóng vai trò giao tiếp giữa hệ điều hành
và người sử dụng. Thành phần này chính là shell mà chúng ta đã biết ở trên. Một số hệ điều
hành chứa shell trong nhân (kernel) của nó, một số hệ điều hành khác thì shell được thiết kế
dưới dạng một chương trình đặc biệt.
g. Thành phần bảo vệ hệ thống
Trong môi trường hệ điều hành đa nhiệm có thể có nhiều tiến trình hoạt động đồng thời,
thì mỗi tiến trình phải được bảo vệ để không bị tác động, có chủ ý hay không chủ ý, của các
tiến trình khác. Trong trường hợp này hệ điều hành cần phải có các cơ chế để luôn đảm bảo
rằng các File, Memory, CPU và các tài nguyên khác mà hệ điều hành đã cấp cho một chương
trình, tiến trình thì chỉ có chương trình tiến trình đó được quyền tác động đến các thành phần
này.
Nhiệm vụ trên thuộc thành phần bảo vệ hệ thống của hệ điều hành. Thành phần này điều
khiển việc sử dụng tài nguyên, đặc biệt là các tài nguyên dùng chung, của các tiến trình, đặc
biệt là các tiến trình hoạt động đồng thời với nhau, sao cho không xảy ra sự tranh chấp tài
nguyên giữa các tiến trình hoạt đồng đồng thời và không cho phép các tiến trình truy xuất bất
hợp lệ lên các vùng nhớ của nhau.
Ngoài ra các hệ điều hành mạng, các hệ điều hành phân tán hiện nay còn có thêm thành
phần kết nối mạng và truyền thông
Để đáp ứng yêu cầu của người sử dụng và chương trình người sử dụng các nhiệm vụ
của hệ điều hành được thiết kế dưới dạng các dịch vụ:
Thi hành chương trình: hệ điều hành phải có nhiệm vụ nạp chương trình của người sử
dụng vào bộ nhớ, chuẩn bị đầy đủ các điều kiện về tài nguyên để chương trình có thể chạy
được và kết thúc được, có thể kết thúc bình thường hoặc kết thúc do bị lỗi. Khi chương trình
kết thúc hệ điều hành phải thu hồi tài nguyên đã cấp cho chương trình và ghi lại các thông tin
mà chương trình đã thay đổi trong quá trình chạy (nếu có).
Thực hiện các thao tác xuất nhập dữ liệu: Khi chương trình chạy nó có thể yêu cầu xuất
nhập dữ liệu từ một tập tin hoặc từ một thiết bị xuất nhập nào đó, trong trường hợp này hệ
điều hành phải hỗ trợ việc xuất nhập dữ liệu cho chương trình, phải nạp được dữ liệu mà
chương trình cần vào bộ nhớ.
15
Thực hiện các thao tác trên hệ thống tập tin: Hệ điều hành cần cung cấp các công cụ để
chương trình dễ dàng thực hiện các thao tác đọc ghi trên các tập tin, các thao tác này phải thực
sự an toàn, đặc biệt là trong môi trường đa nhiệm.
Trao đổi thông tin giữa các tiến trình: Trong môi trường hệ điều hành đa nhiệm, với
nhiều tiến trình hoạt động đồng thời với nhau, một tiến trình có thể trao đổi thông tin với
nhiều tiến trình khác, hệ điều hành phải cung cấp các dịch vụ cần thiết để các tiến trình có thể
trao đổi thông tin với nhau và phối hợp cùng nhau để hoàn thành một tác vụ nào đó.
Phát hiện và xử lý lỗi: Hệ điều hành phải có các công cụ để chính hệ điều hành và để hệ
điều hành giúp chương trình của người sử dụng phát hiện các lỗi do hệ thống (CPU, Memory,
I/O device, Program) phát sinh. Hệ điều hành cũng phải đưa ra các dịch vụ để xử lý các lỗi
sao cho hiệu quả nhất.
1.3.2. Giao tiếp giữa tiến trình và hệ điều hành
Giao diện giữa hệ điều hành và chương trình người sử dụng được định nghĩa bằng một
tập các lời gọi hệ thống (system calls). Để thật sự hiểu hệ điều hành làm gì ta phải khảo sát
giao diện này.
Giả sử ta muốn hệ thống đọc đĩa ta cần gọi read. Trong C ta gọi hàm thư viện read cùng
tên với hàm gọi hệ thống. Hàm này có ba thông số: fd để xác định tập tin cần đọc, buffer xác
định địa chỉ nơi chứa dữ liệu đọc được, nbytes xác định số byte cần đọc. Hàm hệ thống (và
hàm thư viện) sẽ trả về số byte đọc được.
count = read(fd, buffer, nbytes);
Quá trình gọi hệ thống thực hiện theo một số bước sau (hình 1.9):
16
Hình 1.10. Quá trình thực hiện lời gọi hệ thống.
Trước khi gọi hàm thư viện read (mà hàm này sẽ thật sự gọi hàm hệ thống đọc đĩa),
chương trình sẽ đẩy ba thông số fd, buffer, nbytes vào statck (bước 1,2,3). Trong C, C++
chương trình dịch sẽ đẩy các thông số vào stack theo thứ tự ngược với thứ tự trong ghi trong
dòng lệnh.
Gọi hàm thư viện read (bước 4).
Hàm thư viện read sẽ đặt số hiệu gọi hệ thống đọc đĩa vào nơi hệ điều hành qui định,
như thanh ghi (bước 5). Sau đó thực hiện lệnh TRAP để chuyển chế độ hoạt động từ user sang
kernel để chuẩn bị chạy lệnh tại địa chỉ xác định trong kernel (bước 6).
Các mã lệnh ở kernel xem xét số hiệu gọi hệ thống và chuyển điều khiển cho đoạn
chương trình xử lý gọi hệ thống, địa chỉ đoạn chương trình này được giữ trong bảng địa chỉ
các chương trình xử lý gọi hệ thống và xác định bởi chỉ số là số hiệu gọi hệ thống (bước 7).
Chương trình xử lý gọi hệ thống được gọi và thực thi (bước 8).
Sau khi chương trình xử lý gọi hệ thống hoàn thành xong công việc, điều khiển được trả
về cho hàm thư viện, sau lệnh TRAP (bước 9). Và quyền điểu khiển sẽ được trả về cho
chương trình người sử dụng (bước 10).
Trước khi kết thúc, chương trình người sử dụng sẽ lấy ra khỏi stack những gì đã đẩy vào
cho lần gọi hàm này.
Có ba phương pháp thông dụng để truyền tham số tới hệ điều hành. Phương pháp đơn
giản nhất là truyền tham số trong các thanh ghi. Trong một vài trường hợp, các tham số
thường lưu trữ trong một khối hay bảng trong bộ nhớ và địa chỉ của khối được truyền như một
tham số trong thanh ghi (Hình II.1). Các tham số cũng có thể được thay thế, hay được đẩy vào
trong ngăn xếp bởi chương trình, và được lấy ra khỏi ngăn xếp bởi hệ điều hành. Một vài hệ
điều hành dùng phương pháp khối hay ngăn xếp vì các phương pháp này không giới hạn số
lượng hay chiều dài của tham số đang được truyền.
1.3.3. Cấu trúc logic của hệ thống
a. Hệ thống monilithic
Cấu trúc của hệ thống loại này được xem là “không có cấu trúc”.
Hệ điều hành là một tập các hàm (thủ tục), mỗi hàm có thể gọi bất kỳ hàm khác khi cần
thiết. Mỗi hàm được thiết kế hoàn chỉnh theo nghĩa có đầy đủ thông số và kết quả trả về, và
có thể gọi bất kỳ hàm khác.
Để tạo một chương trình khác của hệ điều hành, các hàm phải được dịch và liên kết lại
với nhau.
Che giấu thông tin hầu như không có vì mỗi hàm đều có thể được gọi bởi bất kỳ hàm
nào.
Thật ra trong thiết kế monolothic cũng có “một ít” tính cấu trúc. Các dịch vụ (system
calls) được xây dựng dựa trên những hàm tiện ích (các hàm tiện ích tạo nên lớp hàm tiện ích).
17
Hình 1.11. Hệ thống monilithic.
Trong cấu trúc này mỗi lời gọi hệ thống được thực hiện bởi một hàm dịch vụ.
b. Hệ thống được thiết kế theo lớp (Layered System)
Hệ thống là một cấu trúc phân cấp theo lớp, lớp ở trên được xây dựng dựa vào lớp bên
dưới.
Hệ thống đầu tiên xây dựng theo cách này là hệ thống THE (1968), gồm có sáu lớp:
Lớp 0: Điều phối hoạt động CPU, chuyển điều khiển giữa các tiến trình khi có ngắt
hoặc theo thời gian. Lớp 0 thực hiện vấn đề đa chương cơ bản cho CPU.
Lớp 1: Quản lý bộ nhớ, cấp phát bộ nhớ cho các tiến trình (phần bộ nhớ chính), và
phần không gian bộ nhớ của tiến trình ở drum (là các trang) khi không đủ bộ nhớ chính. Từ
lớp 1 trở lên, các tiến trình không cần quan tâm đến bản thân tiến trình đang nằm trong bộ nhớ
chính hay trên drum, lớp 1 đảm bảo các trang sẽ được đưa vào bộ nhớ chính khi cần thiết.
Lớp 2: Quản lý việc truyền thông tin giữa các tiến trình.
Hình 1.12. Các lớp của hệ thống THE (1968).
Lớp 3: Quản lý các thiết bị vào/ra, tạo các bộ đệm cho luồng dữ liệu vào/ra thiết bị
vào/ra. Các tiến trình ở các lớp ở trên lớp 3 sẽ làm việc với các thiết bị vào/ra như là những
thiết bị vào/ra đơn giản hơn, trừu tượng hơn.
Lớp 4,5: Chương trình của người sử dụng và chường trình điều hành.
Cấu trúc tổng quát hơn cấu trúc lớp là cấu trúc những những vòng tròn đồng tâm (cấu
trúc của hệ thống MULTICS). Vòng tròn bên trong có quyền hạn cao hơn vòng tròn bên
ngoài. Khi một hàm ở vòng tròn bên ngoài muốn gọi một hàm ở vòng tròn bên trong, nó phải
thực hiện giống như gọi một lời gọi hàm hệ thống, đó là lệnh TRAP với các thông số được
kiểm tra trước khi gọi hàm.
c. Máy ảo (virtual machine)
Hệ thống đầu tiên xây dựng theo cấu trúc này là VM/370. Trong một hệ thống cho phép
chia xẻ thời gian, có hai vấn đề quan trọng là : cho phép nhiều chương trình cùng chạy một
lúc (multiprogramming) và máy tính (với hệ điều hành) là một máy tính mở rộng. Điểm chính
18
yếu của cấu trúc máy ảo là giải quyết hai vấn đề trên một cách độc lập nhau.
Thành phần trung tâm của hệ thống là bộ quản lý máy ảo (virtual machine monitor) giao
tiếp trực tiếp với hệ thống phần cứng và cho phép nhiều chương trình cùng chạy một lúc, hỗ
trợ nhiều máy ảo ở lớp cao hơn.
Hình 1.13. Máy ảo.
Máy ảo không phải là máy tính mở rộng, nó là một bản sao của hệ thống phần cứng, bao
gồm các chế độ user/ kernel, vào/ra, hệ thống ngắt, … Ý tưởng của máy ảo là cho phép chạy
hệ điều hành hoặc hệ tương tác như CMS (Conversational Monitor System) cho một người sử
dụng.
Khi một chương trình gọi hệ thống, gọi hệ thống này được TRAP vào hệ điều hành của
máy ảo (chứ không phải vào VM/370, VM/370 chạy trực tiếp trên máy thực) để truy xuất
thiết bị ảo. CMS tạo ra các lệnh truy xuất phần cứng và các lệnh này được TRAP vào
VM/370.
Ý tưởng cấu trúc máy ảo được sử dụng để chạy các chương trình của hệ điều hành MS-
DOS cũ trong các máy Pentium (hay các CPU Intel 32 bits khác). Pentium có thể hoạt động ở
chế độ 8086 ảo (16 bits địa chỉ và bộ nhớ giới hạn 1MB) để chạy các chương trình này.
Khi chạy các lệnh thông thường thì các lệnh này được thực hiện trên phần cứng nhưng
khi cần thực hiện gọi hệ thống hay truy xuất trực tiếp vào các thiết bị vào/ra được bảo vệ thì
lệnh này sẽ TRAP vào bộ quản lý máy ảo.
Có hai cách thực hiện. Cách thứ nhất là MS-DOS được nạp vào vùng địa chỉ của chế độ
8086 ảo, vì thế bộ quản lý máy ảo chỉ cần TRAP ngược lại vào MS-DOS và lệnh được thực
hiện như trên một máy 8086 thực. Cách thứ hai là bộ quản lý máy ảo sẽ thực hiện lệnh được
TRAP, vì nó biết tất cả các lời gọi hệ thống của MS-DOS, và giả lập MS-DOS.
Ý tưởng máy ảo còn được sử dụng để chạy các chương trình Java. Để chạy một chương
trình Java (đã được biên dịch ra bytecode) trong hệ thống phải có một máy ảo Java (JVM-
Java Virtual Machine). JVM sẽ chạy (dạng thông dich) các lệnh của chương trình Java.
d. Mô hình Client-Server
Khuynh hướng trong xây dựng hệ điều hành là đưa những mã chương trình hệ điều
hành ra những lớp cao hơn, những chương trình chạy ở chế độ kernel càng ít càng tốt.
Chương trình ở kernel được thu hẹp ở mức tối đa và gọi là microkernel. Các công việc điều
hành hầu hếr được thực hiện ở chế độ user.
Khi yêu cầu một dịch vụ (như đọc tập tin,…) tiến trình người sử dụng (được gọi là tiến
trình khách (client process)) sẽ gửi yêu cầu (là một message) đến tiến trình phục vụ (server
process), và tiến trình phục vụ sẽ xử lý và gửi kết quả trả về.
Kernel sẽ quản lý việc trao đổi thông tin giữa client và server. Hệ điều hành được chia
thành những phần, mỗi phần quản lý một dịch vụ như: dịch vụ về tập tin, tiến trình, bộ nhớ,
…
Vì các server chạy ở chế độ user nên không truy xuất trực tiếp vào hệ thống phần cứng,
nên một server bị lỗi thì toàn hệ thống cũng không bị treo.
19
Một ưu điểm của mô hình client-server là client và server có thể nằm trên những máy
khác nhau.
Hình 1.14. Các mô hình client-server.
1.4. Các dịch vụ của hệ điều hành
Hệ điều hành cung cấp một môi trường cho việc thực thi các chương trình. Nó cung cấp
các dịch vụ xác định tới chương trình và tới người dùng của các chương trình đó. Dĩ nhiên,
các dịch vụ được cung cấp khác nhau từ hệ điều hành này với hệ điều hành kia nhưng chúng
có thể xác định các lớp chung. Các dịch vụ hệ điều hành được cung cấp sự tiện dụng cho
người lập trình để thực hiện tác vụ lập trình dễ dàng.
Thực thi chương trình: hệ thống phải có thể nạp chương trình vào bộ nhớ và chạy
chương trình đó. Chương trình phải có thể kết thúc việc thực thi của nó bình thường hay
không bình thường (hiển thị lỗi).
Thao tác vào/ra: một chương trình đang chạy có thể yêu cầu vào/ra. Vào/ra này có thể
liên quan tới tập tin hay thiết bị vào/ra. Đối với các thiết bị cụ thể, các chức năng đặc biệt có
thể được mong muốn (như quay lại từ đầu một ổ băng từ, hay xoá màn hình). Đối với tính
hiệu quả và tính bảo vệ, người dùng thường không thể điều khiển các thiết bị vào/ra trực tiếp.
Do đó, hệ điều hành phải cung cấp một phương tiện để thực hiện vào/ra
Thao tác hệ thống tập tin: hệ thống tập tin có sự quan tâm đặc biệt. Các chương trình
cần đọc từ và viết tới các tập tin. Chương trình cũng cần tạo và xoá tập tin bằng tên.
Giao tiếp: trong nhiều trường hợp, một quá trình cần trao đổi thông tin với các quá trình
khác. Giao tiếp như thế có thể xảy ra trong hai cách chính. Cách đầu tiên xảy ra giữa các quá
trình được thực thi trên cùng máy tính; cách thứ hai xảy ra giữa hai quá trình đang được thực
thi trên các máy tính khác nhau được kết nối với nhau bởi một mạng máy tính. Các giao tiếp
có thể được thực hiện bằng bộ nhớ được chia sẻ, hay bằng kỹ thuật truyền thông điệp, trong
đó các gói tin được di chuyển giữa các quá trình bởi hệ điều hành.
Phát hiện lỗi: hệ điều hành liên tục yêu cầu nhận biết các lỗi có thể phát sinh. Các lỗi có
thể xảy ra trong CPU và phần cứng bộ nhớ (như lỗi bộ nhớ hay lỗi về điện), trong các thiết bị
vào/ra (như lỗi chẳn lẻ trên băng từ, lỗi nối kết mạng, hết giấy in) và trong chương trình người
dùng (như tràn số học, cố gắng truy xuất một vị trí bộ nhớ không hợp lệ, dùng quá nhiều thời
20
gian CPU). Đối với mỗi loại lỗi, hệ điều hành nên thực hiện một hoạt động hợp lý để đảm bảo
tính toán đúng và không đổi.
Ngoài ra, một tập chức năng khác của hệ điều hành nhằm đảm bảo các hoạt động hữu
hiệu của chính hệ thống. Các hệ thống với nhiều người dùng có thể đạt tính hữu hiệu bằng
cách chia sẻ tài nguyên máy tính giữa các người dùng.
Cấp phát tài nguyên: khi nhiều người dùng đăng nhập vào hệ thống hay nhiều công việc
đang chạy cùng lúc, tài nguyên phải được cấp tới mỗi người dùng. Nhiều loại tài nguyên khác
nhau được quản lý bởi hệ điều hành. Một số tài nguyên (như chu kỳ CPU, bộ nhớ chính,
không gian lưu trữ tập tin) có mã cấp phát đặt biệt, trái lại các tài nguyên khác (như thiết bị
vào/ra) có mã yêu cầu và giải phóng thường hơn. Thí dụ, xác định cách tốt nhất để dùng CPU,
hệ điều hành có các thủ tục định thời biểu CPU. Các thủ tục này xem xét tốc độ CPU, các
công việc phải được thực thi, số thanh ghi sẳn dùng và các yếu tố khác. Cũng có các thủ tục
cấp phát ổ băng từ để dùng cho một công việc. Một thủ tục như thế định vị ổ băng từ chưa
được dùng và đánh dấu một bảng bên trong để ghi người dùng mới của ổ băng từ. Một thủ tục
khác được dùng để xoá bảng đó. Các thủ tục này cũng có thể cấp phát các máy vẽ, modem,
các thiết bị ngoại vi khác.
Tính toán: chúng ta muốn giữ vết người dùng nào sử dụng bao nhiêu và loại tài nguyên
máy tính nào. Giữ vết này có thể được dùng để tính toán (tính tiền người dùng) hay đơn giản
thống kê sử dụng. Thống kê sử dụng có thể là công cụ có giá trị cho người nghiên cứu muốn
cấu hình lại hệ thống để cải tiến các dịch vụ tính toán.
Bảo vệ: người sở hữu thông tin được lưu trong hệ thống máy tính đa người dùng muốn
điều khiển thông tin này. Khi nhiều quá trình riêng rẽ thực thi đồng hành, không thể cho một
quá trình can thiệp tới các quá trình khác hay tới chính hệ điều hành. Bảo vệ đảm bảo rằng tất
cả truy xuất tài nguyên của hệ thống được kiểm soát. An toàn hệ thống từ người dùng bên
ngoài cũng là vấn đề quan trọng. An toàn bắt đầu với mỗi người dùng có quyền đối với hệ
thống, thường bằng mật khẩu để được phép truy xuất tài nguyên. Mở rộng việc bảo vệ đối với
các thiết bị vào/ra bên ngoài, bao gồm modem, card mạng từ những truy xuất không hợp lệ,
và ghi lại các kết nối để phát hiện đột nhập vào hệ thống.
CÂU HỎI ÔN TẬP
1. Trình bày định nghĩa về hệ điều hành.
2. Trình bày các thành phần và chức năng của hệ điều hành.
3. Trình bày các cấu trúc của hệ điều hành.
TÀI LIỆU THAM KHẢO
1. Hồ Đắc Phương. Giáo trình nguyên lý hệ điều hành. Nhà xuất bản Giáo dục, 2009.
Chương 1, 2, 3.
2. A.Silberschatz, P. B. Galvin, G. Gagne. Operating System Concepts, 8th Edition.
John Wiley & Sons, 2009. Chương 1, 2.
3. R. Elmasri, A. G. Carrick, D Levine. Operating Systems: A Spiral Approach.
McGraw-Hill, 2010. Chương 1, 2.
4. William Stallings. Operating Systems: Internals and Design Principles (6th
Edition). Pearson Prentice Hall, 2009. Chương 1, 2.