Nguyên lý hệ điều hành - 1


MỤC LỤC

Chương 1: TỔNG QUAN 4

1.1 Giới thiệu 4

1.1.1 Hệ điều hành là gì? 4

1.1.2 Các hệ xử lý theo lô đơn giản 7

1.1.3 Các hệ xử lý theo lô, đa chương 8

1.1.4 Các hệ phân chia thời gian 9

1.1.5 Các hệ máy tính cá nhân 11

1.1.6 Các hệ song song, các hệ phân tán, các hệ thời gian thực 11

1.2 Cấu trúc hệ điều hành 15

1.2.1 Các thành phần hệ thống 16

1.2.2 Các dịch vụ của hệ điều hành 22

1.2.3 Lời gọi hệ thống 24

1.2.4 Các chương trình hệ thống 25

1.2.5 Cấu trúc hệ thống 26

1.2.6 Cài đặt và thiết kế hệ thống 33

Câu hỏi và bài tập chương 1 35

Chương 2: QUẢN LÝ TIẾN TRÌNH 36

2.1 Tiến tình 36

2.1.1 Khái niệm tiến trình 36

2.1.2 Lập lịch tiến trình 39

2.1.3 Các thao tác trên tiến trình 45

2.1.4 Hợp tác giữa các tiến trình 49

2.1.5 Luồng 52

2.1.6 Truyền thông giữa các tiến trình 70

2.2 Lập lịch CPU 74

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

2.2.2 Các tiêu chí lập lịch 78

2.2.3 Các thuật toán lập lịch 79

2.2.4 Đánh giá thuật toán 95

2.3 Đồng bộ hóa tiến trình 96

2.3.1 Cơ sở 96

2.3.2 Bài toán Critical - Sestion 99

2.3.4 Các bài toán cổ điển trong việc đồng bộ hoá 114

2.4 Bế tắc 126

2.4.1 Mô hình 126

2.4.2 Đặc trưng hóa bế tắc 128

2.4.3 Các phương pháp thao tác với bế tắc 132

2.4.4 Phòng tránh bế tắc 136

2.4.5 Phát hiện bế tắc 144

2.4.6 Khôi phục từ bế tắc 148

Câu hỏi và bài tập chương 2 150

Chương 3: QUẢN LÝ LƯU TRỮ 155

3.1 Quản lý bộ nhớ 155

3.1.1 Cơ sở 155

3.1.2 Bộ nhớ vật lý và bộ nhớ logic 160

3.1.3 Hoán vị (Swap) 161

3.1.4 Cấp phát liên tục 163

3.1.5 Phân trang 172

3.1.6 Phân đoạn 188

3.2 Bộ nhớ ảo 198

3.2.1 Cơ sở 198

3.2.2 Phân trang theo yêu cầu 201

3.2.3 Hiệu năng của phân trang theo yêu cầu 205

3.2.4 Thay thế trang 205

3.2.5 Các thuật toán thay thế trang 207

3.2.6 Cấp phát frame 215

3.2.7 Thrashing 218

3.2.8 Các vấn đề khác 220

3.2.9 Phân đoạn theo yêu cầu 221

3.3 Giao diện hệ thống tệp 225

3.3.1 Khái niệm tệp 225

3.3.2 Các phương pháp truy cập 229

3.3.3 Cấu trúc thư mục 231

3.3.4 Bảo vệ 243

3.3.5 Tính nhất quán về ngữ nghĩa 246

3.4 Cài đặt hệ thống tệp 246

3.4.1 Cấu trúc hệ thống tệp 247

3.4.2 Các phương pháp cấp phát 249

3.4.3 Quản lý không gian rỗi 260

3.4.4 Cài đặt thư mục 262

3.4.5 Hiệu quả và hiệu năng 264

3.4.6 Khôi phục 265

Câu hỏi và bài tập chương 3 265

Chương 4: HỆ VÀO RA 271

4.1 Hệ vào ra 271

4.1.1 Tổng quan 271

4.1.2 Vào ra phần cứng 272

4.1.3 Giao diện lập trình vào ra 275

4.1.4 Hệ vào ra của nhân 277

4.1.5 Chuyển đổi yêu cầu vào ra thành các thao tác phần cứng 281

4.1.6 Hiệu năng 283

4.2 Cấu trúc lưu trữ phụ 285

4.2.1 Cấu trúc đĩa 285

4.2.2 Lập lịch đĩa 286

4.2.3 Quản lý đĩa 290

4.2.4 Quản lý không gian swap 292

4.2.5 Độ tin cậy của đĩa 292

4.2.6 Cài đặt hệ lưu trữ ổn định 294

4.2.7 Các thiết bị lưu trữ thứ ba: Các công việc của hệ điều hành và vấn đề về hiệu năng 294

Câu hỏi và bài tập chương 4 297

TÀI LIỆU THAM KHẢO 300

Chương 1: TỔNG QUAN

1.1 Giới thiệu

Hệ điều hành là một chương trình phần mềm quản lý phần cứng máy tính. Nó cung cấp nền tảng cho các chương trình ứng dụng và đóng vai trò trung gian giao tiếp giữa người dùng máy tính và phần cứng của máy tính đó. Hệ điều hành thực hiện các nhiệm vụ rất đa dạng, một vài hệ điều hành được thiết kế để thực hiện một nhiệm vụ chuyên biệt nào đó trong khi một số hệ điều hành khác được thiết kế đa năng.

1.1.1 Hệ điều hành là gì?

Một hệ điều hành là một thành phần quan trọng của mọi hệ thống máy tính. Một hệ thống máy tính có thể được chia thành bốn thành phần: phần cứng, hệ điều hành, các chương trình ứng dụng và người sử dụng.

- Phần cứng (hardware): bao gồm bộ xử lý trung tâm (CPU), bộ nhớ (memory), thiết bị xuất/nhập (I/O),… cung cấp tài nguyên cơ bản cho hệ thống.

- Các chương trình ứng dụng (application programs): trình biên dịch (compiler), trình soạn thảo văn bản (text editor), hệ cơ sở dữ liệu (database system), trình duyệt Web,... hỗ trợ người dùng sử dụng tài nguyên, giải quyết yêu cầu của người dùng.

- Người dùng (user): là người sử dụng hệ thống, những người dùng khác nhau thực hiện những yêu cầu khác nhau bằng các ứng dụng khác nhau.

- Hệ điều hành (operating system): hay còn gọi là chương trình hệ thống, điều khiển và phối hợp việc sử dụng phần cứng giữa những chương trình ứng dụng khác nhau cho những người dùng khác nhau. Hệ điều hành có thể được khai thác từ hai phía: người dùng và hệ thống.

User 1

User 2

User N



Compliler Text editor Database System and application programs


Operating




Hardwave






Có thể bạn quan tâm!

Xem toàn bộ 306 trang tài liệu này.

Nguyên lý hệ điều hành - 1

System

Hình 1.1 Các thành phần của một hệ thống máy tính

+ Tầm nhìn người sử dụng

Tầm nhìn người sử dụng máy tính rất đa dạng bởi giao diện được dùng. Hầu hết những người dùng máy tính ngồi trước máy tính cá nhân gồm có màn hình, bàn phím, chuột và bộ xử lý hệ thống (system unit). Một hệ thống như thế được thiết kế cho một người dùng độc quyền sử dụng tài nguyên của nó để tối ưu hoá công việc mà người dùng đang thực hiện. Trong trường hợp này, hệ điều hành được thiết kế dễ dàng cho việc sử dụng với sự quan tâm về năng lực thực hiện ít quan tới việc sử dụng tài nguyên.

Có người sử dụng ngồi tại thiết bị đầu cuối (terminal) được nối kết tới máy tính lớn (mainframe) hay máy tính tầm trung (minicomputer). Những người khác đang truy xuất cùng máy tính thông qua các thiết bị đầu cuối khác. Những người dùng này chia sẻ các tài nguyên và có thể trao đổi thông tin. Hệ điều hành được thiết kế để tối ưu hoá việc sử dụng tài nguyên để đảm bảo rằng tất cả thời gian phục vụ của CPU, bộ nhớ và thiết bị xuất nhập được sử dụng hữu hiệu, công bằng.

Gần đây, các máy tính xách tay được sử dụng rộng rãi. Các thiết bị này được sử dụng chỉ bởi cá nhân người dùng. Một vài máy tính này được nối mạng hoặc nối trực tiếp bằng cáp mạng hay thông qua các modem không dây. Do sự giới hạn về năng lượng, hệ điều hành được thiết kế để tiết kiệm tối đa năng lượng của máy tính.

Một số máy tính có rất ít hay không có giao diện với người dùng. Thí dụ, các máy tính được nhúng vào các thiết bị gia đình và xe ôtô có thể có một bảng số và các đèn hiển thị trạng thái mở, tắt nhưng hầu hết chúng và các hệ điều hành được thiết kế để điều khiển thiết bị không cần giao tiếp với ngưới sử dụng.

+ Tầm nhìn hệ thống

Chúng ta có thể thấy một hệ điều hành như bộ cấp phát tài nguyên. Hệ thống máy tính có nhiều tài nguyên - phần cứng và phần mềm - có thể được yêu cầu để cấp phát các tài nguyên: thời gian CPU, không gian bộ nhớ, không gian lưu trữ tập tin, các thiết bị xuất/nhập,... Hệ điều hành hoạt động như bộ quản lý tài nguyên, thực hiện một lượng lớn các yêu cầu cấp phát có thể xung đột về tài nguyên, hệ điều hành phải quyết định cách cấp phát tài nguyên tới những chương trình cụ thể và người dùng để có thể điều hành hệ thống máy tính hữu hiệu và công bằng.

Một tầm nhìn khác của hệ điều hành nhấn mạnh sự cần thiết để điều khiển các thiết bị xuất/nhập khác nhau và chương trình người dùng. Một hệ điều hành là một chương trình điều khiển. Chương trình điều khiển quản lý sự thực hiện của các chương trình người dùng để ngăn chặn lỗi và việc sử dụng không hợp lý máy tính. Nó đặc biệt quan tâm với những thao tác và điều khiển các thiết bị nhập/xuất.

Nhìn chung, không có định nghĩa hoàn toàn đầy đủ về hệ điều hành. Các hệ điều hành tồn tại vì chúng là cách hợp lý để giải quyết vấn đề tạo ra một hệ thống máy tính có thể sử dụng. Mục tiêu cơ bản của hệ thống máy tính là thực hiện chương trình người dùng và giải quyết các vấn đề để người dùng dễ dàng sử dụng hệ thống máy tính hơn. Hướng đến mục tiêu này, phần cứng máy tính được xây dựng. Tuy nhiên, chỉ đơn thuần là phần cứng thì không dễ sử dụng và phát triển các chương trình ứng dụng. Các chương trình ứng dụng khác nhau này đòi hỏi những thao tác chung nào đó, chẳng hạn như điều khiển thiết bị xuất/nhập. Sau đó, những chức năng chung về điều khiển và cấp phát tài nguyên được đặt lại với nhau vào một bộ phận phần mềm gọi là hệ điều hành.

Mục đích chính của hệ điều hành là giúp người sử dụng dễ dàng hơn trong việc sử dụng hệ thống máy tính. Vì sự tồn tại của hệ điều hành hỗ trợ rất nhiều cho máy tính trong việc đáp ứng các ứng dụng của người dùng. Điều này đặc biệt rò ràng hơn khi xem xét hệ điều hành trên các máy tính cá nhân.

Mục tiêu thứ hai của hệ điều hành là điều hành hiệu quả hệ thống máy tính. Mục tiêu này đặc biệt quan trọng cho các hệ thống lớn, được chia sẻ, nhiều người dùng. Những hệ thống tiêu biểu này khá đắt, khai thác hiệu quả nhất các hệ thống này luôn là điều mong muốn. Tuy nhiên, hai mục tiêu tiện dụng và hữu hiệu đôi khi mâu thuẫn nhau. Trong quá khứ, xem xét tính hữu hiệu thường quan trọng hơn tính tiện dụng. Do đó, lý thuyết hệ điều hành tập trung nhiều vào việc tối ưu hoá sử dụng tài nguyên tính toán. Hệ điều hành cũng phát triển dần theo thời gian. Thí dụ, UNIX bắt đầu với bàn phím và máy in như giao diện của nó giới hạn tính tiện dụng đối với người dùng. Qua thời gian, phần cứng thay đổi và UNIX được gắn vào phần cứng mới với giao diện thân thiện với người dùng hơn. Nhiều giao diện người dùng đồ hoạ GUIs (graphical user interfaces) được bổ sung cho phép tiện dụng hơn với người dùng trong khi vẫn quan tâm tính hiệu quả.

1.1.2 Các hệ xử lý theo lô đơn giản

Những hệ thống máy tính mainframe là những máy tính đầu tiên được dùng để xử lý ứng dụng thương mại và khoa học. Trong phần này, chúng ta lần theo sự phát triển của hệ thống mainframe từ các hệ thống bó (batch systems), ở đó máy tính chỉ chạy một-và chỉ một -ứng dụng, tới các hệ thống chia sẻ thời gian (time-shared systems), ở đó cho phép người dùng giao tiếp với hệ thống máy tính.

Những máy tính thời kỳ đầu là những máy có kích thước rất lớn và được chạy từ một thiết bị cuối (console). Những thiết bị nhập thường sử dụng là những bộ đọc thẻ, các ổ đĩa và băng từ. Các thiết bị xuất thông thường thường là những máy in dòng (line printers), các ổ đĩa từ và các phiếu đục lỗ. Người dùng không giao tiếp trực tiếp với các hệ thống máy tính. Thay vào đó, người dùng chuẩn bị một công việc - chứa chương trình, dữ liệu và các thông tin điều khiển về tính tự nhiên của công việc

– sau đó gửi nó đến người điều hành máy tính. Công việc này thường được thực hiện trong các phiếu đục lỗ. Sau một thời gian (vài phút, giờ hay ngày), dữ liệu kết quả sẽ xuất hiện.


Hệ điều hành

Hệ điều hành trong các máy tính thời kỳ đầu này tương đối đơn giản. Nhiệm vụ chính là chuyển điều khiển tự động từ thực hiện công việc này sang công việc khác. Hệ điều hành luôn được thường trú trong bộ nhớ.


Vùng chương trình người dùng

Hình 1.2 Sắp xếp bộ nhớ cho một hệ thống bó đơn giản

Để tăng tốc việc xử lý, người điều hành “bó” các công việc có cùng yêu cầu và chạy chúng thông qua máy tính như một nhóm. Do đó, các lập trình viên sẽ đưa chương trình của họ cho người điều hành. Người điều hành sẽ sắp xếp chương trình thành những “bó” với cùng yêu cầu và khi máy tính sẵn dùng sẽ chạy mỗi bó này. Dữ liệu xuất từ mỗi công việc sẽ gửi lại cho lập trình viên tương ứng.

Trong môi trường thực hiện này, CPU luôn rỗi vì tốc độ của các thiết bị xuất/nhập dạng cơ thường chậm hơn tốc độ của các thiết bị điện. Một CPU chậm cũng có thể thực hiện hàng ngàn chỉ thị lệnh được thực hiện trên giây, trong khi đó một bộ đọc thẻ nhanh chỉ có thể đọc 1200 thẻ trong thời gian 1 phút (hay 20 thẻ trên giây). Do đó, sự khác biệt giữa tốc độ CPU và thiết bị xuất/nhập của nó có thể là 3 lần hay nhiều hơn. Theo thời gian, sự tiến bộ trong công nghệ dẫn đến sự ra đời những thiết bị nhập/xuất nhanh hơn. Tuy nhiên, tốc độ CPU tăng tới một tỷ lệ lớn hơn vì thế vấn đề không những không được giải quyết mà còn làm gia tăng cách biệt.

Công nghệ đĩa từ cho phép hệ điều hành lưu giữ tất cả công việc trên một đĩa thay cho lưu giữ trong một bộ đọc thẻ tuần tự. Với việc truy xuất trực tiếp tới nhiều công việc trên đĩa từ, hệ điều hành có thể thực hiện lập lịch công việc, để sử dụng tài nguyên và thực hiện các công việc hiệu quả hơn.

1.1.3 Các hệ xử lý theo lô, đa chương

Một vấn đề rất quan trọng trong lập lịch công việc là khả năng đa chương. Thông thường, một người sử dụng luôn muốn CPU và các thiết bị xuất/nhập luôn bận, tận dụng tối đa hiệu suất của các thiết bị phần cứng. Đa chương sẽ làm gia tăng khả năng sử dụng CPU bằng cách tổ chức các công việc để CPU luôn có một công việc cần thực hiện.

Ý tưởng của kỹ thuật đa chương có thể minh hoạ như sau: tại một thời điểm, hệ điều hành giữ nhiều công việc trong bộ nhớ trong. Tập hợp các công việc này là tập con của các công việc được giữ trong vùng công việc - bởi vì số lượng các công việc có thể được giữ cùng lúc trong bộ nhớ thường nhỏ hơn số công việc có thể có trong vùng đệm. Hệ điều hành sẽ lấy và bắt đầu thực hiện một trong các công việc có trong bộ nhớ. Khi công việc phải chờ một vài tác vụ như một thao tác xuất/nhập để hoàn thành, trong hệ thống đơn chương, CPU sẽ chờ ở trạng thái rỗi, còn trong hệ thống đa chương, hệ điều hành sẽ chuyển sang thực hiện công việc khác. Cuối cùng, công việc đầu tiên kết thúc việc chờ và nhận CPU để thực hiện tiếp. Chỉ cần có ít nhất một công việc đang đợi để thực hiện, CPU sẽ không bao giờ ở trạng thái rỗi.

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022