Bài giảng Hệ điều hành - Nguyễn Thị Thùy Linh

pdf 313 trang Gia Huy 16/05/2022 4470
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Nguyễn Thị Thùy Linh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_dieu_hanh_nguyen_thi_thuy_linh.pdf

Nội dung text: Bài giảng Hệ điều hành - Nguyễn Thị Thùy Linh

  1. TRƯỜNG ĐẠI HỌC ĐỒNG THÁP KHOA SƢ PHẠM TOÁN – TIN BÀI GIẢNG HỆ ĐIỀU HÀNH Biên soạn : Ths. Nguyễn Thị Thùy Linh LƢU HÀNH NỘI BỘ ĐỒNG THÁP 11/2013
  2. LỜI NÓI ĐẦU Tài liệu đƣợc biên soạn chủ yếu dựa trên kiến thức tích lũy trong giảng dạy nhiều năm về môn học của tác giả và cũng đƣợc tham khảo từ các nguồn về lý thuyết hệ điều hành và nguyên lý hệ điều hành của các trƣờng Đại học Huế, Đại học Cần Thơ Tổng quan: Bài giảng giới thiệu về các thế hệ hệ điều hành, các thành phần của hệ điều hành, chức năng của hệ điều hành, các dịch vụ mà hệ điều hành cung cấp. Sau đó nghiên cứu chi tiết chức năng các thành phần bên trong hệ điều hành: Quản lý tiến trình, Quản lý bộ nhớ, Đồng bộ hóa tiến trình, Quản lý Deadlock, Quản lý và cài đặt hệ thống tập tin, Quản lý đĩa. Mục tiêu: Kiến thức: - Hiểu đƣợc vai trò của hệ điều hành và cơ chế hoạt động của hệ điều hành - Hiểu các kiến trúc thiết kế hệ điều hành. - Hiểu các chiến lƣợc trong việc thiết kế các hệ điều hành hiện đại. - Biết những vấn đề phát sinh trong quá trình thiết kế hệ điều hành cũng nhƣ những tiếp cận khác nhau đƣợc dùng để phân tích và giải quyết những vấn đề đó. - Xem xét những chiến lƣợc hệ điều hành phổ biến và cách chúng tác động đến những dịch vụ của các hệ điều hành hiện đại. - Vận dụng các chiến lƣợc trong việc thiết kế hệ điều hành để mô phỏng lại trên máy tính. Kỹ năng: - Rèn luyện kỹ năng phân tích và giải quyết các bài toán về chiến lƣợc trong việc thiết kế các thành phần bên trong hệ điều hành. - Rèn luyện tƣ duy giải thuật, kỹ năng lập trình kỹ thuật mô phỏng. - Kỹ năng làm việc nhóm, tự học, tự nghiên cứu. 1
  3. Thái độ: - Nhận thức đúng đắn về phía ngƣời thiết kế hệ điều hành trong hệ thống máy tính. - Nâng cao ý thức tự học, tự nghiên cứu để mở rộng kiến thức. Đối tượng: Tài liệu dành cho ngƣời học cao đẳng và đại học chuyên ngành công nghệ thông tin. Yêu cầu: Ngƣời học cần phải hiểu cấu trúc dữ liệu và giải thuật kèm theo ngôn ngữ lập trình Pascal hoặc một trong các ngôn ngữ C/C++, Java, C#. Ngƣời học cũng cần biết cấu trúc logic của một máy tính nói riêng cũng nhƣ mạng máy tính nói chung. Nội dung: Tài liệu bao gồm có 5 chƣơng: Chƣơng 1: Tổng quan về hệ điều hanh Chƣơng 2: Quản lý tiến trình Chƣơng 3: Quản lý bộ nhớ Chƣơng 4: Quản lý tập tin và đĩa Chƣơng 5: Quản lý hệ thống nhập/xuất 2
  4. MỤC LỤC LỜI NÓI ĐẦU 1 MỤC LỤC 3 DANH MỤC THUẬT NGỮ VIẾT TẮT 6 CHƯ NG 1: TỔNG QU N VỀ HỆ ĐIỀU HÀNH 8 1.1. MỤC TIÊU 8 1.2. KHÁI NI M VỀ H ĐIỀU HÀNH 8 1.3. CHỨC N NG H ĐIỀU HÀNH 10 1.4. PH N LOẠI H ĐIỀU HÀNH 12 1.4.1. Hệ điều hành xử lý theo lô đơn chƣơng 12 1.4.2. Hệ thống xử lý theo lô đa chƣơng 14 1.4.3. Hệ thống chia s thời gian 15 1.4.4. Hệ thống đa xử lý hệ thống song song 15 1.4.5. Hệ thống phân tán 17 1.4.6. Hệ thống xử lý thời gian thực 18 1.4.7. Hệ xách tay 18 1.5. L CH S PHÁT TRIỂN CỦA H ĐIỀU HÀNH 19 1.5.1. Thế hệ 1 1945 – 1955) 19 1.5.2 Thế hệ 2 1955 – 1965) 20 1.5.3. Thế hệ 3 1965 – 1980) 20 1.5.4. Thế hệ 4 1980-nay ) 21 1.6. CẤU TR C CỦA H ĐIỀU HÀNH 21 1.6.1. Các thành phần bên trong hệ điều hành 21 1.6.2. Các dịch vụ của hệ điều hành 26 1.6.3. Lời gọi hệ thống 27 1.6.4. Cấu trúc hệ điều hành 28 1.7. MỘT S H ĐIỀU HÀNH HI N ĐẠI 38 1.7.1. Hệ điều hành Windows95 38 1.7.2. Hệ điều hành Windows 2000 39 1.7.3. Hệ điều hành Linux 40 1.7.4. Hệ điều hành Windows 7 41 1.7.5. Hệ điều hành Windows 8 42 1.7.6. Hệ điều hành Android 42 1.8. TÓM TẮT 43 Câu hỏi ôn tập 44 TÀI LI U THAM KHẢO 44 CHƯ NG 2: QUẢN L TIẾN TR NH 45 2.1. MỤC TIÊU 45 2.2. TỔNG QUAN VỀ TIẾN TRÌNH 45 2.2.1. Nhu cầu xử lý đồng hành 45 2.2.2. Khái niệm tiến trình 46 2.2.3. Phân loại tiến trình 49 2.2.4. Tiểu trình Thread và mô hình đa tiểu trình Multithread 51 2.3. TỔ CHỨC QUẢN LÝ TIẾN TRÌNH 54 2.3.1. Các trạng thái của tiến trình 54 2.3.2. Chế độ xử lý của tiến trình 60 3
  5. 2.3.3. Cấu trúc dữ liệu khối quản lý tiến trình 61 2.4. THAO TÁC TRÊN TIẾN TRÌNH 62 2.4.1. Tạo lập tiến trình 63 2.4.2. Kết thúc tiến trình 64 2.4.3. Khi tiến trình thay đổi trạng thái 64 2.5. CẤP PHÁT TÀI NGUYÊN CHO TIẾN TRÌNH 65 2.6. Đ NH THỜI BIỂU CPU 66 2.6.1. Giới thiệu 67 2.6.2. Tổ chức định thời biểu 70 2.6.3. Các chiến lƣợc định thời biểu CPU 75 2.7. ĐỒNG BỘ HÓA TIẾN TRÌNH 87 2.7.1. Liên lạc giữa các tiến trình 87 2.7.2. Các cơ chế thông tin liên lạc 88 2.7.3. Nhu cầu đồng bộ hóa synchronisation 95 2.7.4. Tài nguyên găng và đoạn găng 96 2.7.5. Đồng bộ tiến trình qua đoạn găng 102 2.8. TẮC NGHẼN VÀ CH NG TẮC NGHẼN 125 2.8.1. Khái niệm tắc nghẽn 125 2.8.2. Đặc điểm của Deadlock 128 2.8.3. Các phƣơng pháp xử lý deadlock 134 2.9. TÓM TẮT 151 Câu hỏi ôn tập 153 Bài tập 156 TÀI LI U THAM KHẢO 160 CHƯ NG 3: QUẢN L BỘ NHỚ 161 3.1. MỤC TIÊU 161 3.2. NHI M VỤ QUẢN LÝ BỘ NHỚ 161 3.3. KIẾN THỨC NỀN 164 3.3.1. Một chƣơng trình qua nhiều bƣớc xử lý 164 3.3.2. Không gian địa chỉ luận lý và không gian địa chỉ vật lý 166 3.3.3. Bộ quản lý bộ nhớ MMU 167 3.3.4. Phủ lắp Overlay 167 3.3.5. Hoán vị 168 3.4. QUẢN LÝ BỘ NHỚ CHÍNH 170 3.4.1. Bộ nhớ cấp phát liên tục 170 3.4.2. Cấp phát không liên tục 182 3.5. QUẢN LÝ BỘ NHỚ ẢO 202 3.5.1. Khái niệm bộ nhớ ảo 203 3.5.2. Cài đặt bộ nhớ ảo 204 3.5.3. Kỹ thuật bộ nhớ ảo 208 3.6. TÓM TẮT 222 Câu hỏi ôn tập 224 Bài Tập 225 TÀI LI U THAM KHẢO 230 CHƯ NG 4: QUẢN L TẬP TIN VÀ ĐĨ 231 4.1. MỤC TIÊU 231 4.2. TỔNG QUAN VỀ QUẢN LÝ TẬP TIN VÀ ĐĨA 232 4.2.1. Tập tin và hệ thống quản lý tập tin 232 4
  6. 4.2.2. Bảng danh mục và tập tin chia s 235 4.2.3. Quản lý không gian đĩa 238 4.2.4. Quản lý các block chứa tập tin trên đĩa 241 4.2.5. An toàn trong quản lý tập tin 246 4.2.6. Hiệu suất hệ thống tập tin 251 4.3. MỘT S KHÁI NI M DÙNG TRONG QUẢN LÝ ĐĨA 252 4.4. CÁC ĐIỀU KHIỂN H TH NG TẬP TIN 255 4.5. CÁC H TH NG TẬP TIN ĐƢỢC S DỤNG TRÊN CÁC H ĐIỀU HÀNH HI N NAY 257 4.5.1. FAT12, FAT16, FAT32 257 4.5.2. NTFS 258 4.5.3. CDFS 259 4.5.4. UDF 259 4.6. TỔ CHỨC ĐĨA CỦA MS-DOS 259 4.6.1. FDISK 259 4.6.2. Tổ chức logic của đĩa 261 4.7. QUẢN LÝ TẬP TIN TRÊN ĐĨA CỦA MS-DOS 265 4.7.1. Boot sector 266 4.7.2. File Allocation Table (FAT) 268 4.7.3. Root Directory Bảng thƣ mục gốc 274 4.7.4. Thƣ mục con Subdirectory 279 4.8. TỔ CHỨC LƢU TRỮ TẬP TIN TRÊN ĐĨA CD_ROM 281 4.8.1. Hệ thống tập tin ISO 9660 282 4.8.2. Mở rộng Rock Ridge 283 4.8.3. Mở rộng Joliet 283 4.9. TÓM TẮT 284 Câu hỏi ôn tập 286 Bài tập 286 TÀI LI U THAM KHẢO 287 CHƯ NG 5: QUẢN L HỆ THỐNG NHẬP/XUẤT 291 5.1. MỤC TIÊU 291 5.2. CÁC KHÁI NI M CƠ BẢN 291 5.3. PHẦN CỨNG NHẬP/XUẤT 292 5.3.1. Thiết bị I/O 292 5.3.2. Tổ chức của chức năng I/O 293 5.4. GIAO DI N NHẬP/XUẤT ỨNG DỤNG 299 5.5. H TH NG CON NHẬP/XUẤT CỦA NH N KERNEL I/O SUBSYTEM 302 5.5.1. Định thời biểu nhập/xuất 302 5.5.2. Vùng đệm 303 5.5.3. Vùng lƣu trữ 303 5.5.4. Vùng chứa 304 5.5.5. Quản lý lỗi 304 5.5.6. Cấu trúc dữ liệu nhân 305 5.6. CHUYỂN NHẬP/XUẤT TỚI HOẠT ĐỘNG PHẦN CỨNG 305 5.7. N NG LỰC 308 5.8. TÓM TẮT 310 Câu hỏi ôn tập 311 Câu hỏi trắc nghiệm 311 5
  7. TÀI LI U THAM KHẢO 311 D NH MỤC THUẬT NGỮ VIẾT TẮT K HIỆU THUẬT NGỮ NGHĨ API Application Programming Interface CDFS CD-ROM File System Là hệ thống tập tin đƣợc đƣa ra để quản lý các tập tin, thƣ mục trên các đĩa CD_ROM. CLI Clean Interrupt Cấm ngắt CPU Processor Bộ xử lý CRT Cathode-Ray Tube ng phóng điện tử chân không CS Critical Section Miền găng, đoạn găng CSDL Cơ sở dữ liệu DMA Direct Memory Access Truy xuất bộ nhớ trực tiếp FAT File Allocation Table Bảng cấp phát tập tin FCFS First-Come, First-Served Đến trƣớc đƣợc phục vụ trƣớc FDD Floppy Disk Đĩa mềm FIFO First In First Out Vào trƣớc ra trƣớc FSD File System Driver Điều khiển hệ thống tập tin HDD Hard disk Đĩa cứng I/O device Input/Output device Thiết bị nhập/xuất IC Integrated C rcuit Mạch tích hợp ISO International Organization for Tổ chức tiêu chuẩn hoá quốc tế Standardization KTCN Kiểm tra cập nhật LCNs Logical Cluster Numbers Số hiệu Cluster logic LFU The Least Frequently Used Ít đƣợc dùng thƣờng xuyên nhất. LRU Least-Recently-Used Lâu nhất chƣa sử dụng LWP Lightweight Process Liên kết các tiểu trình của cùng một tiến trình MEM Memory Bộ nhớ MFT Master File Table MFU The Most Frequently Used Trang đƣợc sử dụng nhiều nhất MMU Memory Management Unit Đơn vị quản lý bộ nhớ MS-DOS Microsoft Disk Operrating System Hệ điều hành MS-DOS NRU Not Recently Used Không sử dụng gần đây NTFS New Technology File System Hệ thống tập tin NTFS OPT Optimal Tối ƣu hóa OS Operating System Hệ điều hành P Process Tiến trình, quá trình PC Personal Computer Máy tính cá nhân 6
  8. Program Counter Nghĩa khác: Bộ đếm chƣơng trình PCB Process Control Block Khối điều khiển tiến trình PCT Page Control Table Bảng trang PDA Personal Digital Assistant Thiết bị kỹ thuật số hỗ trợ cá nhân PTBR Page Table Base Register Thanh ghi nền bảng trang RID Resource Identification Định danh của khối quản lý tài nguyên ROM Read Only Memory Bộ nhớ chỉ đọc RR Round Robin SCT Segment Control Table Bảng phân đoạn SJF Shortest Job First Công việc ngắn nhất trƣớc STBR Segment Table Base Register Thanh ghi nền của bảng phân đoạn STI Setting Interrupt Mở ngắt STLR Segment Table Length Register Thanh ghi giới hạn của bảng phân đoạn THE Technische Hogeschool Eindhoven Hệ điều hành THE TLBs Translation Look-aside Buffers Bộ nhớ kết hợp TSL Test and Set Kiểm tra khóa UDF Là hệ thống tập tin đƣợc đƣa ra để quản lý các đĩa từ/quang, chủ yếu là các đĩa DVD_ROM UMA Uniform Memory Access Truy xuất bộ nhớ đồng nhất USER USER Ngƣời dùng VCNs Virtual Cluster Numbers Số hiệu Cluster ảo 7
  9. CHƯ NG 1: TỔNG QU N VỀ HỆ ĐIỀU HÀNH 1.1. MỤC TIÊU Sau khi học xong chƣơng này, ngƣời học nắm đƣợc các kiến thức sau: - Hiểu chức năng của hệ điều hành trong hệ thống máy tính - Biết phân loại hệ điều hành - Biết hệ điều hành phát triển qua nhiều giai đoạn - Các thành phần bên trong hệ điều hành - Các dịch vụ mà hệ điều hành cung cấp - Biết đƣợc cấu trúc các hệ điều hành Bài học này cung cấp cho chúng ta một cái nhìn tổng quát về những nguyên lý cơ bản của hệ điều hành. Chúng ta bắt đầu với việc xem x t mục tiêu và các chức năng của hệ điều hành, sau đó phân loại chúng và tìm hiểu quá trình phát triển hệ điều hành qua từng giai đoạn. Phân biệt các thành phần hệ thống và các thành phần bên trong hệ điều hành. Thông qua các giai đoạn khác nhau chúng ta sẽ thấy cách thức mà những thành phần của hệ điều hành đƣợc cải tiến cũng nhƣ các dịch vụ mà hệ điều hành cung cấp, cuối cùng là khảo sát các cấu trúc khác nhau của các hệ điều hành. 1.2. KHÁI NIỆM VỀ HỆ ĐIỀU HÀNH Hệ điều hành là một chƣơng trình hệ thống hay một hệ chƣơng trình đóng vai tr trung gian giữa ngƣời dùng máy tính và phần cứng máy tính. Mục tiêu của hệ điều hành là cung cấp một môi trƣờng thuận lợi để ngƣời dùng d dàng thực hiện các chƣơng trình ứng dụng của họ trên máy tính và khai thác triệt để các chức năng phần cứng máy tính. Hệ điều hành là một phần quan trọng của hầu hết các hệ thống máy tính. Một hệ thống máy tính thƣờng đƣợc chia làm bốn phần chính: phần cứng, hệ điều hành, các chƣơng trình ứng dụng và ngƣời dùng (user). Phần cứng bao gồm bộ xử lý, bộ nhớ, các thiết bị nhập xuất, đây là những tài nguyên cơ bản của máy tính. Chương trình ứng dụng nhƣ các chƣơng trình dịch trong ngôn ngữ lập trình Pascal, C, , hệ thống cơ sở dữ liệu (Access, SQL), các chƣơng 8
  10. trình tr chơi, và các chƣơng trình thƣơng mại. Các chƣơng trình này sử dụng tài nguyên của máy tính để giải quyết các yêu cầu của ngƣời dùng. Hệ điều hành làm nhiệm vụ điều khiển và phối hợp việc sử dụng phần cứng cho những ứng dụng khác nhau của nhiều người dùng khác nhau bao gồm cả thiết bị đầu cuối, hệ thống máy tính khác). Hệ điều hành cung cấp một môi trƣờng mà các chƣơng trình có thể làm việc hữu hiệu trên đó. Ngƣời dùng Ngƣời dùng Ngƣời dùng Ngƣời dùng 1 2 3 4 Chƣơng trình Hợp ngữ Soạn thảo văn CSDL dịch bản Chƣơng trình ứng dụng Hệ điều hành Phần cứng Hình 1.1. Mô hình trừu tượng của hệ thống máy tính Hệ điều hành có thể đƣợc coi nhƣ là bộ phân phối tài nguyên của máy tính. Nhiều tài nguyên của máy tính nhƣ thời gian sử dụng CPU, không gian bộ nhớ, vùng lƣu trữ tập tin, thiết bị nhập xuất v.v đƣợc các chƣơng trình yêu cầu để giải quyết vấn đề. Hệ điều hành hoạt động nhƣ một bộ quản lý các tài nguyên và phân phối chúng cho các chƣơng trình và ngƣời dùng khi cần thiết. Do có rất nhiều yêu cầu, hệ điều hành phải giải quyết vấn đề tranh chấp và phải quyết định cấp phát tài nguyên cho những yêu cầu theo thứ tự nào để hoạt động của máy tính là hiệu quả nhất. Một hệ điều hành cũng có thể đƣợc coi nhƣ là một chƣơng trình kiểm soát việc sử dụng máy tính, đặc biệt khi ngƣời dùng sử dụng các thiết bị nhập xuất. Tuy nhiên, nhìn chung chƣa có định nghĩa nào là hoàn hảo về hệ điều hành. Hệ điều hành tồn tại để giải quyết các vấn đề sử dụng hệ thống máy tính. Mục tiêu cơ bản của nó là giúp cho việc thi hành các chƣơng trình d dàng hơn. Mục tiêu thứ hai là hỗ 9
  11. trợ cho các thao tác trên hệ thống máy tính hiệu quả hơn. Mục tiêu này đặc biệt quan trọng trong những hệ thống nhiều ngƣời dùng và trong những hệ thống lớn. Tuy nhiên hai mục tiêu này cũng có phần tƣơng phản vì vậy thuyết về hệ điều hành à đứng về phía người thiết ế ra hệ điều hành n n t p trung vào việc tối ưu h a việc s dụng tài nguy n của máy tính à quan trọng nh t 1.3. CHỨC N NG HỆ ĐIỀU HÀNH Để đạt mục tiêu trên hệ điều hành thực hiện hai chức năng chính nhƣ sau: - Gi p một máy tính m rộng: Máy tính là một thiết bị vi điện tử, nó đƣợc cấu thành từ các bộ phận nhƣ: Bộ xử lý, bộ nhớ, thiết bị nhập/xuất, BUS, Do đó, để làm việc với máy tính ngƣời dùng phải hiểu đƣợc cơ chế hoạt động của các bộ phận này và phải tác động trực tiếp vào nó, tất nhiên là dùng m máy ký số 0,1 . Điều này là quá khó đối với ngƣời dùng. Để đơn giản hơn, hệ điều hành phải che dấu hết các chi tiết phức tạp của phần cứng máy tính bởi một một máy tính m rộng. Máy tính mở rộng này có đầy đủ các chức năng của một máy tính thực nhƣng đơn giản và d sử dụng. Theo đó khi cần tác động vào máy tính thực ngƣời sử dụng chỉ cần tác động vào máy tính mở rộng, mọi sự chuyển đổi thông tin điều khiển từ máy tính mở rộng sang máy tính thực hoặc ngƣợc lại điều do hệ điều hành thực hiện. Mục đích của chức năng này là: giúp ngƣời sử dụng khai thác các chức năng phần cứng máy tính d dàng và hiệu quả hơn. - Qu n tài nguy n hệ thống gồm Bộ xử lý, bộ nhớ, thiết bị nhập/xuất, tập tin, Đây là những tài nguyên cơ bản mà hệ điều hành cấp phát cho các tiến trình trong khi điều khiển sự hoạt động của hệ thống. Khi ngƣời dùng cần thực hiện một chƣơng trình hay khi một chƣơng trình cần nạp thêm một tiến trình mới vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho chƣơng trình, tiến trình đó để chƣơng trình, tiến trình đó nạp đƣợc vào bộ nhớ và hoạt động đƣợc. Trong môi trƣờng hệ điều hành đa nhiệm có thể có nhiều chƣơng trình, tiến trình đồng thời cần đƣợc nạp vào bộ nhớ, nhƣng không gian lƣu trữ của bộ nhớ có giới hạn, do đó hệ điều hành phải tổ chức cấp phát bộ nhớ sao cho hợp lý để đảm bảo tất cả các chƣơng trình, tiến trình khi cần đều đƣợc nạp vào bộ nhớ để hoạt động. Ngoài ra hệ điều hành c n phải tổ chức bảo vệ các không gian nhớ đ cấp cho các chƣơng trình, tiến trình để tránh sự truy cập bất hợp lệ và sự tranh chấp bộ nhớ 10
  12. giữa các chƣơng trình, tiến trình, đặc biệt là các tiến trình đồng thời hoạt động trên hệ thống. Đây là một trong những nhiệm vụ quan trọng của hệ điều hành. Trong quá trình hoạt động của hệ thống, đặc biệt là các hệ thống đa ngƣời dùng, đa chƣơng trình, đa tiến trình, c n xuất hiện một hiện tƣợng khác, đó là nhiều chƣơng trình, tiến trình đồng thời sử dụng một không gian nhớ hay một tập tin dữ liệu, chƣơng trình nào đó. Trong trƣờng hợp này hệ điều hành phải tổ chức việc chia s và giám sát việc truy xuất đồng thời trên các tài nguyên nói trên sao cho việc sử dụng tài nguyên có hiệu quả nhƣng tránh đƣợc sự mất mát dữ liệu và làm hỏng các tập tin. Trên đây là hai dẫn chứng điển hình để chúng ta thấy vai tr của hệ điều hành trong việc quản lý tài nguyên hệ thống, sau này chúng ta sẽ thấy việc cấp phát, chia s , bảo vệ tài nguyên của hệ điều hành là một trong những công việc khó khăn và phức tạp nhất. Hệ điều hành đ tốn nhiều chi phí cho công việc nói trên để đạt đƣợc mục tiêu: Trong mọi trƣờng hợp tất cả các chƣơng trình, tiến trình nếu cần đƣợc cấp phát tài nguyên để hoạt động thì sớm hay muộn nó đều đƣợc cấp phát và đƣợc đƣa vào trạng thái hoạt động. Các nhà thiết kế hệ điều hành luôn hƣớng tới việc phát triển một hệ điều hành ngày càng thân thiện d sử dụng, c c u n n t c n c c c c n n sau1: - Hệ điều hành cho phép thực hiện nhiều chương trình đồng thời trong môi trường đa tác vụ (đa nhiệm). Hệ điều hành đa nhiệm bao gồm: Windows NT, Windows 2000, Linux và OS/2. Trong hệ thống đa nhiệm, hệ điều hành phải xác định khi nào thì một ứng dụng đƣợc chạy và mỗi ứng dụng đƣợc chạy trong khoản thời gian bao lâu thì phải dừng lại để cho các ứng dụng khác đƣợc chạy. - Hệ điều hành tự nạp n vào bộ nhớ: Quá trình nạp hệ điều hành vào bộ nhớ đƣợc gọi là quá trình Booting. Chỉ khi nào hệ điều hành đ đƣợc nạp vào bộ nhớ thì nó mới cho ph p ngƣời dùng giao tiếp với phần cứng. Trong các hệ thống có nhiều ứng dụng đồng thời hoạt động trên bộ nhớ thì hệ điều hành phải chịu trách nhiệm chia s không gian bộ nhớ RAM và bộ nhớ cache cho các ứng dụng này. - Hệ điều hành và API (Application Programming Interface): là một tập các hàm/thủ tục đƣợc xây dựng sẵn bên trong hệ thống, nó có thể thực hiện đƣợc 1 Nguy n Kim Tuấn, Giáo trình lý thuyết hệ điều hành, ĐH Huế, 2004,Tr.3. 11
  13. nhiều chức năng khác nhau nhƣ shutdown hệ thống, đảo ngƣợc hiệu ứng màn hình, khởi động các ứng dụng, Hệ điều hành giúp cho chƣơng trình của ngƣời dùng giao tiếp với API hay thực hiện một lời gọi đến các hàm/thủ tục của API. - Nạp dữ iệu cần thiết vào bộ nhớ: Dữ liệu do ngƣời dùng cung cấp đƣợc đƣa vào bộ nhớ để xử lý. Khi nạp dữ liệu vào bộ nhớ hệ điều hành phải lƣu lại địa chỉ của bộ nhớ nơi mà dữ liệu đƣợc lƣu ở đó. Hệ điều hành phải luôn theo dõi bản đồ cấp phát bộ nhớ, nơi dữ liệu và chƣơng trình đƣợc lƣu trữ ở đó. Khi một chƣơng trình cần đọc dữ liệu, hệ điều hành sẽ đến các địa chỉ bộ nhớ nơi đang lƣu trữ dữ liệu mà chƣơng trình cần đọc để đọc lại nó. - Hệ điều hành bi n dịch các chỉ thị chương trình: Hệ điều hành phải đọc và giải m các thao tác cần đƣợc thực hiện, nó đƣợc viết trong chƣơng trình của ngƣời dùng. Hệ điều hành cũng chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗi trong khi đang hoạt động. - Hệ điều hành qu n tài nguy n: Nó đảm bảo việc sử dụng thích hợp tất cả các tài nguyên của hệ thống nhƣ là: bộ nhớ, đĩa cứng, máy in, 1.4. PH N LOẠI HỆ ĐIỀU HÀNH Có nhiều cách khác nhau để phân loại hệ điều hành, ở đây chúng tôi dựa vào cách mà hệ điều hành thực hiện các công việc, các tác vụ, các tiến trình của ngƣời dùng để phân loại hệ điều hành. 1.4.1. Hệ điều hành xử lý theo lô đơn chương Hệ điều hành loại này thực hiện các tác vụ ần ượt theo những chỉ thị đ đƣợc xác định trƣớc. Khi một tác vụ chấm dứt thì hệ thống sẽ tự động thực hiện tác vụ tiếp theo mà không cần sự can thiệp từ bên ngoài, do đó hệ thống đạt tốc độ thực hiện cao. Để thực hiện đƣợc điều này hệ điều hành phải có bộ giám sát thƣờng trực. Bộ giám sát thường trực: Khi một công việc chấm dứt, hệ thống sẽ thực hiện công việc kế tiếp mà không cần sự can thiệp của ngƣời lập trình, do đó thời gian thực hiện sẽ mau hơn. Một chƣơng trình, c n gọi là bộ giám sát thƣờng trực đƣợc thiết kế để giám sát việc thực hiện d y các công việc một cách tự động, chƣơng trình này luôn luôn thƣờng trú trong bộ nhớ chính. 12
  14. Hệ điều hành Vùng chƣơng trình ngƣời dùng Bản 1.1. S p xếp bộ nhớ của hệ thống x theo ô đơn chương Môi trƣờng sử dụng Nhập công việc Môi trƣờng máy tính Hàng đợi công việc Kết quả n 2. Cài đ t hàng đợi các công việc người d ng Trong hệ điều hành này khi hệ thống cần thực hiện một công việc thì nó phải lƣu chƣơng trình và dữ liệu của các công việc vào hàng đợi các công việc, sau đó sẽ thực hiện lần lƣợt từng bộ chƣơng trình và dữ liệu của công việc tƣơng ứng trong hàng đợi và cho ra lần lƣợt các kết quả. B ng 1 1 ở trên minh họa cho sự hoạt động của hệ thống theo lô đơn chƣơng. Với cách tổ chức hàng đợi công việc, thì hệ thống không thể thay đổi chƣơng trình và dữ liệu của các công việc ngay cả khi chúng c n nằm trong hàng đợi, đây là một hạn chế. Mặt khác trong quá trình thực hiện công việc nếu công việc chuyển sang truy xuất trên thiết bị vào/ra thì CPU rơi vào trạng thái chờ điều này gây l ng phí thời gian xử lý của CPU. Các thao tác khác của hệ điều hành xử lý theo lô đơn chƣơng: - CPU và thao tác nh p xu t: CPU thƣờng hay nhàn rỗi do tốc độ làm việc của các thiết bị nhập xuất thƣờng là thiết bị cơ chậm hơn rất nhiều lần so với các thiết bị điện tử CPU . Cho dù là một CPU chậm nhất, nó cũng nhanh hơn rất nhiều lần so với thiết bị nhập xuất. Do đó phải có các phƣơng pháp để đồng bộ hóa việc hoạt động của CPU và thao tác nhập xuất. 13
  15. - X off_ ine: Thay vì CPU phải đọc trực tiếp từ thiết bị nhập và xuất ra thiết bị xuất, hệ thống dùng một bộ lƣu trữ trung gian. CPU chỉ thao thác với bộ phận lƣu trữ trung gian này. - Spool (simultaneous peripheral operation online : là đồng bộ hóa các thao tác bên ngoài online. Cơ chế này cho ph p xử lý của CPU là online, sử dụng đĩa để lƣu các dữ liệu nhập/xuất. 1.4.2. Hệ thống xử lý theo lô đa chương Một trong những hạn chế của hệ điều hành xử lý theo lô đơn giản là l ng phí thời gian xử lý của CPU khi công việc hiện tại truy xuất đến thiết bị vào/ra. Hệ điều hành xử lý theo lô đa chƣơng sẽ khắc phục hạn chế này. Hệ điều hành Công việc 1 Công việc 2 Công việc 3 Công việc 4 Bản 2. S p xếp bộ nhớ của hệ thống x theo ô đa chương Khi có nhiều công việc cùng truy xuất lên thiết bị, vấn đề lập lịch cho các công việc là cần thiết. Khía cạnh quan trọng nhất trong việc lập lịch là khả năng đa chƣơng (multiprogram). Mục ti u của n à gia tăng hiệu su t s dụng CPU b ng cách t chức các công việc sao cho CPU uôn uôn ph i trong trạng thái àm việc. Hệ điều hành loại này có khả năng thực hiện nhiều công việc, nhiều chƣơng trình đồng thời. Khi cần thực hiện nhiều công việc đồng thời hệ điều hành sẽ nạp một phần m lệnh và dữ liệu vào bộ nhớ các phần c n lại sẽ đƣợc nạp sau tại thời điểm thích hợp và tất cả đều ở trạng thái sẵn sàng thực hiện. Sau đó hệ điều hành dùng bộ định thời CPU chọn ra một công việc nào đó và cho nó thực thi trong CPU, nhƣng khi công việc đang thực hiện cần truy xuất thiết bị vào/ra thì CPU sẽ đƣợc chuyển sang thực hiện các công việc khác, và cứ nhƣ thế hệ điều hành tổ chức chuyển hƣớng CPU để 14
  16. thực hiện hết các phần công việc trong bộ nhớ cũng nhƣ các công việc mà hệ thống yêu cầu. Hệ điều hành loại này mang lại hai ƣu điểm đó là tiết iệm được bộ nhớ, vì hông nạp hết mã ệnh và dữ iệu của các công việc vào bộ nhớ, và hạn chế thời gian rỗi của CPU. Tuy nhiên nó phải trả chi phí cao cho việc lập lịch CPU, tức là khi CPU r nh hệ điều hành phải xem x t nên chuyển nó cho công việc nào trong số các công việc đang đợi ở trạng thái sẵn sàng. Ngoài ra hệ điều hành c n phải giải quyết việc chia s bộ nhớ chính cho các công việc khác nhau. Hệ điều hành MS-DOS là hệ điều hành đơn nhiệm, đa chƣơng. Với hệ đa chƣơng hệ điều hành ra quyết định cho ngƣời dùng. Vì vậy, hệ điều hành đa chƣơng rất tinh vi. Hệ phải xử lý các vấn đề lập lịch cho công việc, lập lịch cho bộ nhớ và cho cả CPU. 1.4.3. Hệ thống chia s thời gian Hệ thống chia s thời gian là một mở rộng logic của hệ đa chƣơng. Hệ thống này c n đƣợc gọi là hệ thống đa nhiệm nhƣ Windows 9x/NT. Chia sẻ thời gian đây chính à chia sẻ thời gian x của CPU cho các công việc, các tiến trình đang ở trong trạng thái sẵn sàng thực hiện. Mục ti u của n à cung c p cơ chế cho phép người d ng giao tiếp với mỗi chương trình trong hi chạy. Nguyên tắc của hệ điều hành chia s thời gian tƣơng tự nhƣ trong hệ điều hành xử lý theo lô đa chƣơng nhƣng việc chuyển CPU từ tác vụ, tiến trình này sang tác vụ, tiến trình khác không phụ thuộc vào việc tác vụ, tiến trình hiện tại có truy xuất đến thiết bị vào/ra hay không mà chỉ phụ thuộc vào sự điều phối CPU của hệ điều hành. Công việc điều phối CPU của hệ điều hành rất phức tạp phụ thuộc vào nhiều yếu tố khác nhau, chúng ta sẽ đề cập đến vấn đề này trong chƣơng sau của tài liệu này. Hệ điều hành chia s phức tạp hơn hệ điều hành đa chƣơng. Nó phải có các chức năng: quản trị và bảo vệ bộ nhớ, sử dụng bộ nhớ ảo. Nó cũng cung cấp hệ thống tập tin truy xuất online Hệ điều hành chia s là kiểu của các hệ điều hành hiện đại ngày nay. 1.4.4. Hệ thống đa xử lý hệ thống song song) 15
  17. Ngoài hệ thống một bộ xử lý c n có các hệ thống c nhiều bộ x c ng chia sẻ hệ thống đường truyền dữ iệu, đồng hồ, bộ nhớ và các thiết bị ngoại vi. Các bộ xử lý này liên lạc bên trong với nhau. n 3. Hệ thống đa x Có n u n uyên n ân xây d n t ốn d n n y: - Thông ượng được gia tăng: Với sự gia tăng số lƣợng bộ xử lý, công việc đƣợc thực hiện nhanh chóng hơn, Nhƣng không phải theo đúng tỉ lệ thời gian, nghĩa là có n bộ xử lý không có nghĩa là sẽ thực hiện nhanh hơn n lần. Vì trong khi nhiều bộ xử lý cộng tác trên một công việc, một lƣợng chi phí phải chịu trong việc giữ các thành phần làm việc phù hợp. Chi phí này cộng với chi phí cạnh tranh tài nguyên đƣợc chia s , làm giảm kết quả đƣợc mong đợi từ những bộ xử lý bổ sung. Tƣơng tự nhƣ một nhóm gồm N lập trình viên làm việc với nhau không dẫn đến kết quả công việc đang đạt đƣợc tăng N lần. - Tính inh tế của việc mở rộng: hệ thống đa xử lý có thể tiết kiệm nhiều chi phí hơn hệ thống đơn bộ xử lý, bởi vì chúng có thể chia s ngoại vi, thiết bị lƣu trữ và điện. Nếu nhiều chƣơng trình điều hành trên cùng tập hợp dữ liệu thì lƣu trữ dữ liệu đó trên một đĩa và tất cả bộ xử lý chia s chúng sẽ r hơn là có nhiều máy tính với đĩa cục bộ và nhiều bản sao dữ liệu. - Kh năng tin c y được gia tăng: nếu các chức năng đƣợc phân bổ hợp lý giữa các bộ xử lý thì lỗi trên một bộ xử lý sẽ không dừng hệ thống, chỉ năng lực bị giảm. Nếu chúng ta có 10 bộ xử lý và có 1 bộ xử lý bị sự cố thì mỗi bộ xử lý trong 9 bộ xử lý c n lại phải chia s của công việc của bộ xử lý bị lỗi. Do đó, toàn bộ hệ thống chỉ giảm 10% năng lực hơn là dừng hoạt động. Các hệ thống đƣợc thiết kế nhƣ thế đƣợc gọi là hệ thống có khả năng chịu lỗi fault tolerant 2. 2 Nguy n Phú Trƣờng, Giáo trình hệ điều hành, ĐH Cần Thơ, 2005,tr.8 16
  18. Hệ thống đa xử lý thông thƣờng sử dụng cách đa x đối xứng, trong cách này mỗi bộ xử lý chạy với một bản sao của hệ điều hành, những bản sao này liên lạc với nhau khi cần thiết. Một ví dụ về hệ thống xử lý đối xứng là phiên bản Encore của UNIX cho máy tính Multimax. Hệ thống này có hàng chục bộ xử lý. Ƣu điểm của nó là nhiều tiến trình có thể thực hiện cùng lúc. Một hệ thống đa xử lý cho ph p nhiều công việc và tài nguyên đƣợc chia s tự động trong những bộ xử lý khác nhau. Hầu nhƣ tất cả hệ điều hành hiện đại - gồm Windows NT, Solaris, Digital UNIX, OS/2 và LINUX - hiện nay cung cấp sự hỗ trợ đa xử lý đối xứng. Một số hệ thống sử dụng đa x b t đối xứng, trong đó mỗi bộ xử lý đƣợc giao một công việc riêng biệt. Một bộ xử lý chính kiểm soát toàn bộ hệ thống, các bộ xử lý khác thực hiện theo lệnh của bộ xử lý chính hoặc theo những chỉ thị đ đƣợc định nghĩa trƣớc. Mô hình này theo dạng quan hệ chủ tớ. Bộ xử lý chính sẽ lập lịch cho các bộ xử lý khác. 1.4.5. Hệ thống phân tán Hệ thống này cũng tƣơng tự nhƣ hệ thống chia s thời gian nhƣng các bộ xử lý không chia s bộ nhớ và đồng hồ, thay vào đó mỗi bộ xử lý có bộ nhớ cục bộ riêng. Các bộ x thông tin với nhau thông qua các đường truyền thông như những bus tốc độ cao hay đường dây điện thoại. Các bộ xử lý trong hệ phân tán thƣờng khác nhau về kích thƣớc và chức năng. Nó có thể bao gồm máy vi tính, trạm làm việc, máy mini, và những hệ thống máy lớn. Các bộ xử lý thƣờng đƣợc tham khảo với nhiều tên khác nhau nhƣ Site, Node, Computer v.v tùy thuộc vào trạng thái làm việc của chúng. C c n uyên n ân p ả xây d n t ốn p ân t n l : - Chia sẻ tài nguy n: Một ngƣời dùng A có thể sử dụng máy in của ngƣời dùng B và ngƣời dùng B có thể truy xuất những tập tin của A. Tổng quát, chia s tài nguyên trong hệ thống phân tán cung cấp một cơ chế để chia s tập tin ở vị trí xa, xử lý thông tin trong một cơ sở dữ liệu phân tán, in ấn tại một vị trí xa, sử dụng những thiết bị ở xa để thực hiện các thao tác. 17
  19. - Tăng tốc độ tính toán: Một thao tác tính toán đƣợc chia làm nhiều phần nhỏ cùng thực hiện một lúc. Hệ thống phân tán cho ph p phân chia việc tính toán trên nhiều vị trí khác nhau để tính toán song song. - An toàn: Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí khác vẫn tiếp tục làm việc. - Thông tin i n ạc với nhau: Có nhiều lúc, chƣơng trình cần chuyển đổi dữ liệu từ vị trí này sang vị trí khác. Ví dụ trong hệ thống Windows, thƣờng có sự chia s và chuyển dữ liệu giữa các cửa sổ. Khi các vị trí đƣợc nối kết với nhau trong một hệ thống mạng, việc trao đổi dữ liệu di n ra rất d . Ngƣời dùng có thể chuyển tập tin hay các Email cho nhau từ cùng vị trí hay những vị trí khác. 1.4.6. Hệ thống xử lý thời gian thực Hệ thống x thời gian thực được s dụng hi c những đòi hỏi h t he về thời gian tr n các thao tác của bộ x ho c dòng dữ iệu, nó thƣờng đƣợc dùng điều khiển các thiết bị trong các ứng dụng tận hiến. Máy tính phân tích dữ liệu và có thể chỉnh các điều khiển giải quyết cho dữ liệu nhập. Một hệ điều hành xử lý thời gian thực phải đƣợc định nghĩa tốt, thời gian xử lý nhanh. Hệ thống phải cho kết quả chính xác trong khoảng thời gian bị thúc p nhanh nhất. Có hai hệ thống xử lý thời gian thực là hệ thống thời gian thực cứng và hệ thống thời gian thực mềm Hệ thống thời gian thực cứng là công việc đƣợc hoàn tất đúng lúc. Lúc đó dữ liệu thƣờng đƣợc lƣu trong bộ nhớ ngắn hạn hay trong ROM. Việc xử lý theo thời gian thực sẽ xung đột với tất cả hệ thống liệt kê ở trên. Dạng thứ hai là hệ thống thời gian thực mềm, mỗi công việc có một độ ƣu tiên riêng và sẽ đƣợc thi hành theo độ ƣu tiên đó. Có một số lĩnh vực áp dụng hữu hiệu phƣơng pháp này là các ứng dụng đa phƣơng tiện. 1.4.7. Hệ xách tay Hệ xách tay gồm các máy ỹ thu t số hỗ trợ cá nhân (personal digital assistants- PDAs nhƣ Palm hay điện thoại di động với nối kết Internet. Những ngƣời phát triển hệ xách tay và ứng dụng gặp phải nhiều thử thách, nhất là sự giới hạn về ích thƣớc của thiết bị. Thí dụ, một PDA điển hình cao khoảng 12,7cm và rộng khoảng 7,62cm và 18
  20. trọng lƣợng của nó ít hơn 225g. Do sự giới hạn về kích thƣớc này, hầu hết các thiết bị xách tay có bộ nhớ nhỏ gồm các bộ xử lý thấp và màn hình hiển thị nhỏ. Bây giờ chúng ta sẽ xem x t mỗi sự giới hạn này. Nhiều thiết bị xách tay có dung lƣợng bộ nhớ 512KB và 8MB ngƣợc lại, các máy PC hay trạm làm việc có hàng trăm MB bộ nhớ . Do đó, hệ điều hành và các ứng dụng phải quản lý bộ nhớ hiệu quả. Hiện nay, nhiều thiết bị xách tay không dùng kỹ thuật bộ nhớ ảo do đó buộc ngƣời phát triển chƣơng trình làm việc trong phạm vi giới hạn của bộ nhớ vật lý. Vấn đề thứ hai mà ngƣời phát triển cần quan tâm đến là tốc độ của bộ xử lý đƣợc dùng trong thiết bị. Các bộ xử lý nhanh hơn yêu cầu điện năng nhiều hơn. Để chứa một bộ xử lý nhanh hơn bên trong thiết bị xách tay yêu cầu nhiều pin hơn và phải đƣợc nạp lại thƣờng xuyên. Để tối thiểu hoá kích thƣớc của các thiết bị xách tay đ i hỏi bộ xử lý nhỏ hơn, chậm hơn tiêu thụ ít điện năng hơn. Do đó, hệ điều hành và các ứng dụng phải đƣợc thiết kế không đ i hỏi sử dụng nhiều bộ xử lý. Vấn đề cuối cùng gây khó khăn cho ngƣời thiết kế chƣơng trình cho các thiết bị xách tay là màn hình hiển thị nhỏ. Màn hình cho thiết bị xách tay thƣờng có diện tích không quá 7,62cm. Những tác vụ quen thuộc nhƣ đọc email hay hiển thị các trang web, phải đƣợc cô đọng vào màn hình nhỏ hơn. Một phƣơng pháp để hiển thị nội dung các trang web là cắt xén web, ở đó chỉ một tập hợp nhỏ trang web đƣợc phân phát và hiển thị trên thiết bị xách tay. 1.5. L CH S PHÁT TRIỂN CỦ HỆ ĐIỀU HÀNH 1.5.1. Thế hệ 1 1945 – 1955) Vào khoảng giữa thập niên 1940, Howard Aiken ở Havard và John Von Neumann ở Princeton, đ thành công trong việc xây dựng máy tính dùng ống chân không. Những máy này rất lớn với hơn 10000 ống chân không nhƣng chậm hơn nhiều so với máy r nhất ngày nay3. Mỗi máy đƣợc một nhóm ngƣời thực hiện tất cả các khâu từ thiết kế, xây dựng lập trình, thao tác đến quản lý. Lập trình bằng ngôn ngữ máy tuyệt đối, thƣờng là bằng 3 Nguy n Hạnh Nhi, Bài giảng điện tử hệ điều hành nâng cao, Trƣờng Đại học Khoa học Tự nhiên 19
  21. cách dùng bảng điều khiển để thực hiện các chức năng cơ bản. Ngôn ngữ lập trình chƣa đƣợc biết đến và hệ điều hành cũng chưa nghe đến. Vào đầu thập niên 1950, phiếu đục lổ ra đời và có thể viết chƣơng trình trên phiếu thay cho dùng bảng điều khiển. 1.5.2 Thế hệ 2 1955 – 1965) Sự ra đời của thiết bị bán dẫn vào giữa thập niên 1950 làm thay đổi bức tranh tổng thể. Máy tính trở nên đủ tin cậy hơn. Nó đƣợc sản xuất và cung cấp cho các khách hàng. Lần đầu tiên có sự phân chia rõ ràng giữa ngƣời thiết kế, ngƣời xây dựng, ngƣời vận hành, ngƣời lập trình, và ngƣời bảo trì. Để thực hiện một công việc một chƣơng trình hay một tập hợp các chƣơng trình , lập trình viên trƣớc hết viết chƣơng trình trên giấy bằng hợp ngữ hay FORTRAN sau đó đục lỗ trên phiếu và cuối cùng đƣa phiếu vào máy. Sau khi thực hiện xong nó sẽ xuất kết quả ra máy in. Hệ thống x theo ô ra đời, nó lƣu các yêu cầu cần thực hiện lên băng từ, và hệ thống sẽ đọc và thi hành lần lƣợt. Sau đó, nó sẽ ghi kết quả lên băng từ xuất và cuối cùng ngƣời dùng sẽ đem băng từ xuất đi in. Hệ thống xử lý theo lô hoạt động dƣới sự điều khiển của một chƣơng trình đặc biệt là tiền thân của hệ điều hành sau này. Ngôn ngữ lập trình sử dụng trong giai đoạn này chủ yếu là FORTRAN và hợp ngữ. 1.5.3. Thế hệ 3 1965 – 1980) Trong giai đoạn này, máy tính đƣợc sử dụng rộng r i trong khoa học cũng nhƣ trong thƣơng mại. Máy IBM 360 là máy tính đầu tiên sử dụng mạch tích hợp IC . Từ đó kích thƣớc và giá cả của các hệ thống máy tính giảm đáng kể. Các thiết bị ngoại vi dành cho máy xuất hiện ngày càng nhiều và thao tác điều khiển bắt đầu phức tạp. Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và giải quyết các yêu cầu tranh chấp thiết bị. Chƣơng trình hệ điều hành dài cả triệu d ng hợp ngữ và do hàng ngàn lập trình viên thực hiện. Sau đó, hệ điều hành đa chương ra đời, có nhiều công việc cùng xuất hiện trong bộ nhớ. CPU không bao giờ r nh. Bộ nhớ đƣợc chia làm nhiều phần để lƣu các công việc khác nhau, khi một công việc chờ thực hiện nhập xuất, CPU sẽ xử lý các công 20
  22. việc khác. Tuy nhiên khi có nhiều công việc cùng tồn tại trong bộ nhớ, vấn đề là phải có một cơ chế bảo vệ tránh các công việc ảnh hƣởng đến nhau. Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia sẻ thời gian nhƣ CTSS4 của MIT5. Đồng thời các hệ điều hành lớn ra đời nhƣ MULTICS, UNIX và hệ thống các máy mini cũng xuất hiện nhƣ DEC PDP-1. 1.5.4. Thế hệ 4 1980-nay ) Giai đoạn này đánh dấu sự ra đời của máy tính cá nhân, đặc biệt là hệ thống IBM PC với hệ điều hành MS-DOS và Windows sau này. Bên cạnh đó là sự phát triển mạnh của các hệ điều hành tựa Unix trên nhiều hệ máy khác nhau nhƣ Linux. Ngoài ra, từ đầu thập niên 90 cũng đánh dấu sự phát triển mạnh mẽ của hệ điều hành mạng và hệ điều hành phân tán. Các chuyên gia về kiến trúc máy tính cũng dự đoán thế hệ thứ 5 dành cho các máy tính xử lý song song. Thế hệ của những máy tính thông minh, dựa trên các ngôn ngữ trí tuệ nhân tạo nhƣ LISP và PROLOG, và các giao diện ngƣời – máy. Năm 2004, Robot thông minh gần giống con ngƣời nhất là ASIMO Advanced Step Innovative Mobility: Bƣớc chân tiên tiến của đổi mới và chuyển động . 1.6. CẤU TR C CỦ HỆ ĐIỀU HÀNH 1.6.1. Các thành phần ên trong hệ điều hành 1.6.1.1. Quản lý tiến trình Một chƣơng trình không thực hiện đƣợc gì cả nếu nhƣ nó không đƣợc CPU thi hành. Một t ến tr n à một chương trình đang được thực thi, nhƣng ý nghĩa của nó c n rộng hơn. Một công việc theo lô là một tiến trình. Một chƣơng trình ngƣời dùng chia s thời gian là một tiến trình, một công việc của hệ thống nhƣ soopling xuất ra máy in cũng là một tiến trình. Một tiến trình ph i s dụng tài nguy n như thời gian s dụng CPU, hông gian bộ nhớ, t p tin, các thiết bị nh p xu t, đ hoàn t t công việc của mình. Các tài nguyên này đƣợc cung cấp khi tiến trình đƣợc tạo hay trong quá trình thi hành. Khi tiến trình đƣợc tạo, nó sử dụng rất nhiều tài nguyên vật lý và luận lý. Ví dụ, khảo sát tiến trình hiển thị trạng thái của tập tin lên màn hình. Đầu vào của tiến 4 Bộ máy tính chia s thời gian thực khổng lồ đƣợc gọi là CTSS 5 Viện công nghệ Massachusetts MIT vào giữa những năm 1960 21
  23. trình là tên tập tin, và tiến trình sẽ thực hiện những chỉ thị thích hợp, thực hiện lời gọi hệ thống để nhận đƣợc những thông tin mong muốn và hiển thị nó lên màn hình. Khi tiến trình kết thúc, hệ điều hành sẽ thu hồi các tài nguyên trƣớc đây đ cấp phát cho 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. Một hệ thống có thể có nhiều tiến trình cùng lúc, trong đó một số tiến trình là của hệ điều hành, một số tiến trình là của ngƣời dùng. các tiến trình này có thể di n ra đồng thời. Va trò của u n tron v c quản lý t ến tr n l : - Tạo và hủy các tiến trình của ngƣời dùng và của hệ thống. - Ngƣng và kích hoạt lại một tiến trình. - Cung cấp cơ chế đồng bộ tiến trình. - Cung cấp các thông tin liên lạc giữa các tiến trình. - Cung cấp cơ chế quản lý deadlock xem chƣơng2 . 1.6.1.2. Quản lý ộ nhớ chính Trong hệ thống máy tính hiện đại, bộ n ớ c ín (Physical Memory) là trung tâm của các thao tác, xử lý. Bộ nhớ chính có thể xem nhƣ một mảng kiểu Byte hay kiểu word. Mỗi phần tử đều có địa chỉ. Đó là nơi lƣu dữ liệu đƣợc CPU truy xuất một cách nhanh chóng so với các thiết bị nhập/xuất. CPU đọc những chỉ thị từ bộ nhớ chính. Các thiết bị nhập/xuất cài đặt cơ chế DMA xem chƣơng 4 cũng đọc và ghi dữ liệu trong bộ nhớ chính. Thông thƣờng bộ nhớ chính chứa các thiết bị mà CPU có thể định vị trực tiếp. Ví dụ CPU truy xuất dữ liệu từ đĩa, những dữ liệu này đƣợc chuyển vào bộ nhớ qua lời gọi hệ thống nhập/xuất. Một chƣơng trình muốn thi hành trƣớc hết phải đƣợc ánh xạ thành địa chỉ tuyệt đối và nạp vào bộ nhớ chính. Khi chƣơng trình thi hành, hệ thống truy xuất các chỉ thị và dữ liệu của chƣơng trình trong bộ nhớ chính. Ngay cả khi tiến trình kết thúc, dữ liệu vẫn c n trong bộ nhớ chính cho đến khi một tiến trình khác đƣợc ghi chồng lên. Để tối ƣu hóa quá trình hoạt động của CPU và tốc độ của máy tính, một số tiến trình đƣợc lƣu giữ trong bộ nhớ. Có rất nhiều kế hoạch quản trị bộ nhớ do có nhiều ứng dụng bộ nhớ khác nhau và hiệu quả của các thuật toán phụ thuộc tùy vào tình huống cụ 22
  24. thể. Lựa chọn một thuật toán cho một hệ thống đƣợc mô tả trƣớc phụ thuộc vào nhiều yếu tố, đặc biệt là phần cứng của hệ thống. u n có n ữn va trò n ư sau tron v c quản lý bộ n ớ c ính: - Lƣu giữ thông tin về các vị trí trong bộ nhớ đ đƣợc sử dụng và tiến trình nào sử dụng. - Quản lý không gian bộ nhớ trống - Quyết định tiến trình nào đƣợc nạp vào bộ nhớ chính, khi bộ nhớ đ sẳn dùng. - Cấp phát và thu hồi bộ nhớ khi cần thiết. - Lập lịch cho vấn đề đọc/ghi thông tin trên đĩa của đầu từ. 1.6.1.3. Quản lý ộ nhớ phụ Mục tiêu chính của hệ thống máy tính là thực hiện chƣơng trình. Những chƣơng trình với dữ liệu cần truy xuất của chúng phải đƣợc đặt trong bộ nhớ chính trong suốt quá trình thi hành. Nhƣng bộ nhớ chính quá nhỏ để có thể lƣu giữ mọi dữ liệu và chƣơng trình, ngoài ra dữ liệu sẽ mất khi không c n đƣợc cung cấp năng lƣợng. Hệ thống máy tính ngày nay cung cấp hệ thống ưu trữ phụ backing store nằm trên không gian c n trống của đĩa từ. Đa số các máy tính đều dùng đĩa để lƣu trữ cả chƣơng trình và dữ liệu. Hầu nhƣ tất cả chƣơng trình: chƣơng trình dịch, hợp ngữ, thủ tục, trình soạn thảo, định dạng đều đƣợc lƣu trữ trên đĩa cho tới khi nó đƣợc thực hiện, nạp vào trong bộ nhớ chính và cũng sử dụng đĩa để chứa dữ liệu và kết quả xử lý. Vì vậy một bộ quản lý hệ thống đĩa rất quan trọng cho hệ thống máy tính. Va trò của u n tron v c quản lý ĩa: - Quản lý không gian trống trên đĩa. - Định vị lƣu trữ. - Lập lịch cho đĩa. Vì hệ thống đĩa đƣợc sử dụng thƣờng xuyên, nên nó phải đƣợc dùng hiệu quả. Tốc độ của toàn bộ hệ thống tuỳ thuộc rất nhiều vào tốc độ truy xuất đĩa. 1.6.1.4. Quản lý hệ thống nhập/xuất 23
  25. Mỗi thiết bị nhập/xuất có trình điều khiển thiết bị riêng. Chỉ có device driver mới hiểu đến cấu trúc đặc thù của thiết bị mà nó mô tả. Một trong những mục tiêu của hệ điều hành là giúp ngƣời 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ị nhập/xuất phải trong suốt đối với ngƣời 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, chƣơng trình ứng dụng và ngƣời dùng với các thiết bị xuất/nhập. Bộ ph n điều hi n thiết bị thực hiện những nhiệm vụ sau: - G i mã ệnh điều hi 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 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 ỗ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ể. Một t ốn n ập/xuất bao ồm: - Hệ thống buffer caching. - Giao tiếp điều khiển thiết bị tổng quát. - Bộ điều khiển cho các thiết bị phần cứng. 1.6.1.5. Quản lý hệ thống 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 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. 24
  26. 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 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. 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ánh việc đọc/ghi bất hợp lệ trên tập tin. Như vậy bộ p ận quản lý tập t n của u n t c n n ữn n 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. - Ánh xạ tập tin trên hệ thống lƣu trữ phụ. - Backup tập tin trên các thiết bị lƣu trữ. 1.6.1.6. Hệ thống ảo vệ Trong một hệ thống nhiều ngƣời dùng và cho ph p nhiều tiến trình di n ra đồng thời, các tiến trình phải đƣợc bảo vệ đối với những hoạt động khác. Do đó, hệ thống cung cấp cơ chế để đảm bảo rằng tập tin, bộ nhớ, CPU, và những tài nguyên khác chỉ đƣợc truy xuất bởi những tiến trình có quyền. Ví dụ, bộ nhớ đảm bảo rằng tiến trình chỉ đƣợc thi hành trong phạm vi địa chỉ của nó. Bộ thời gian đảm bảo rằng không có tiến trình nào độc chiếm CPU. Cuối cùng các thiết bị ngoại vi cũng đƣợc bảo vệ. Hệ thống b o vệ là một cơ chế kiểm soát quá trình truy xuất của chƣơng trình, tiến trình, hoặc ngƣời dùng với tài nguyên của 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ống bảo vệ cũng làm tăng độ an toàn khi kiểm tra lỗi trong giao tiếp giữa những hệ thống nhỏ bên trong. 25
  27. 1.6.1.7. Hệ thống cơ chế dòng lệnh Một trong những phần quan trọng của chƣơng trình hệ thống trong một hệ điều hành là cơ chế dòng ệnh đƣợc biết đến nhƣ bộ thông dịch lệnh thành phần chính là bộ xử lý shell, đó là giao tiếp giữa ngƣời dùng và hệ điều hành. Bộ x she àm nhiệm vụ: nhận lệnh, phân tích lệnh, đáp ứng yêu cầu của lệnh. Một số hệ điều hành đặt cơ chế d ng lệnh bên trong hạt nhân, số khác nhƣ MS- DOS và UNIX thì xem hệ điều hành nhƣ là một chƣơng trình đặc biệt, đƣợc thi hành khi các công việc bắt đầu hoặc khi ngƣời dùng login lần đầu tiên. Các lệnh đƣa vào hệ điều hành thông qua bộ điều hi n ệnh. Trong các hệ thống chia s thời gian một chƣơng trình có thể đọc và thông dịch các lệnh điều khiển đƣợc thực hiện một cách tự động. Chƣơng trình này thƣờng đƣợc gọi là bộ thông dịch điều khiển, cơ chế d ng lệnh hoặc Shell. Chức năng của nó rất đơn giản đó là lấy lệnh kế tiếp và thi hành. Mỗi hệ điều hành sẽ có những giao tiếp khác nhau, dạng đơn giản theo cơ chế d ng lệnh, dạng thân thiện với ngƣời dùng nhƣ giao diện của Macintosh có các biểu tƣợng, cửa sổ thao tác dùng chuột. Các lệnh có quan hệ với việc tạo và quản lý các tiến trình, kiểm soát nhập xuất, quản lý bộ lƣu trữ phụ, quản lý bộ nhớ chính, truy xuất hệ thống tập tin và cơ chế bảo vệ. 1.6.2. 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 để thi hành các chƣơng trình, bằng cách cung cấp các dịch vụ cho chƣơng trình và cho ngƣời dùng. Các dịch vụ này trên mỗi hệ thống là khác nhau nhƣng cũng có những lớp chung. Các dịch vụ này giúp cho các lập trình viên thuận tiện hơn và việc lập trình d dàng hơn. - 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 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ó . 26
  28. - Thao tác nh p xu t: Một chƣơng trình thi hành có thể yêu cầu nhập xuất. Nhập xuất này có thể là tập tin hay thiết bị. Đối với thiết bị có một hàm đặc biệt đƣợc thi hành. Để tăng hiệu quả, ngƣời dùng không truy xuất trực tiếp các thiết bị nhập xuất mà thông qua cách thức do hệ điều hành cung cấp chẳng hạn, phải nạp đƣợc dữ liệu mà chƣơng trình cần vào bộ nhớ. - 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: có nhiều tình huống một tiến trình cần trao đổi thông tin với một tiến trình khác. Có hai cách thực hiện: Một là thực hiện thay thế tiến trình trên cùng máy tính, hai là thay thế tiến trình trên hệ thống khác trong hệ thống mạng. Thông tin có thể đƣợc cài đặt qua chia s bộ nhớ, hoặc bằng kỹ thuật chuyển thông điệp. Việc chuyển thông tin đƣợc thực hiện bởi hệ điều hành. - Phát hiện và x ỗ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 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.6.3. Lời gọi hệ thống Lời gọi hệ thống cung cấp một giao tiếp giữa tiến trình và hệ điều hành. Lời gọi này cũng nhƣ các lệnh hợp ngữ. Một số hệ thống cho ph p lời gọi hệ thống đƣợc thực hiện từ cấp lập trình ngôn ngữ cấp cao, nhƣ các hàm và lời gọi hàm. Nó có thể phát sinh lời gọi từ các thủ tục hay gọi trực tiếp trong cửa sổ lệnh. Để hiểu quá trình hoạt động của lời gọi hệ thống chúng ta cùng khảo sát một chƣơng trình nhỏ dùng để đọc dữ liệu từ một tập tin ch p qua tập tin khác. Dữ liệu nhập đầu tiên của của chƣơng trình là tên của hai tập tin: tập tin nhập và tập tin xuất. Tên này đƣợc mô tả bằng nhiều cách tùy thuộc vào thiết kế hệ điều hành nhƣ: chƣơng trình yêu cầu ngƣời dùng cho biết tên của hai tập tin, họ cũng có thể cung cấp bằng cách lựa chọn với chuột. Khi có tên của hai tập tin, chƣơng trình mở tập tin nhập và tạo tập tin xuất. Mỗi thao tác này đƣợc thực hiện bởi những lời gọi hệ thống khác nhau. 27
  29. Cũng có những trƣờng hợp phát sinh lỗi: Khi chƣơng trình mở tập tin nhập, có thể xảy ra trƣờng hợp không có tập tin có tên nhƣ mô tả hoặc tập tin bị cấm truy cập. Trong trƣờng hợp này chƣơng trình phải xuất thông điệp lên màn hình. Nếu tập tin nhập tồn tại, phải tạo tập tin mới. Hệ thống phải kiểm tra tiếp xem đ có tập tin xuất tồn tại không và sẽ có những lời gọi hệ thống tƣơng ứng để giải quyết hoặc là hủy tiến trình, hai là xóa tập tin đ tồn tại và tạo tập tin mới. Sau khi đ thiết lập xong tập tin, hệ thống tiếp tục tạo v ng lặp đọc dữ liệu từ tập tin nhận và ghi lên tập tin xuất. Mỗi bƣớc đều có kiểm tra lỗi. Sau khi ch p xong, chƣơng trình sẽ đóng hai tập tin lại dùng một lời gọi hệ thống khác , xuất thông báo lên màn hình dùng lời gọi hệ thống cuối cùng chấm dứt chƣơng trình lời gọi hệ thống cuối cùng . Trong các ngôn ngữ lập trình cấp cao, ngƣời dùng không cần quan tâm đến chi tiết mà chỉ cần thông qua các hàm hay các lệnh để thực hiện. Lời gọi hệ thống có thể di n ra theo một cách khác. Kiểu và khối lƣợng thông tin tùy thuộc vào hệ thống và lúc gọi. Có ba phương pháp được s dụng đ chuy n tham số cho hệ điều hành Cách đơn gi n nh t à chuy n tham số vào thanh ghi Nếu c nhiều tham số, n sẽ được ưu trữ trong hối ho c b ng trong bộ nhớ Cách cuối c ng à d ng cơ chế stac 6. Lời gọi hệ thống có thể đƣợc chia thành các loại: kiểm soát tiến trình, thao tác tập tin, thao tác thiết bị, thông tin liên lạc. 1.6.4. Cấu tr c hệ điều hành 1.6.4.1. Cấu tr c đơn giản Cấu trúc này trong một số hệ thống thƣơng mại và không có cấu trúc đƣợc định nghĩa tốt. thông thƣờng hệ điều hành bắt đầu là một hệ thống nhỏ, đơn giản và có giới hạn. MS-DOS là một hệ điều hành có cấu trúc đơn giản, nó cung cấp những chức năng cần thiết nhất trong một không gian nhỏ nhất do sự giới hạn của phần cứng mà nó chạy trên đó và không chia thành những đơn thể rõ rệt. 6 Nguy n Phú Trƣờng, Giáo trình hệ điều hành, ĐH Cần Thơ, 2005,tr.25 28
  30. Chƣơng trình ứng dụng Chƣơng trình hệ thống thƣờng trú MS-DOS device driver ROM BIOS device driver Hình 1.4. C u trúc của MS-DOS Mặc dù MS-DOS có cấu trúc nhƣng giữa giao diện và chức năng không có sự phân chia rõ rệt. Các chƣơng trình ứng dụng có thể truy xuất trực tiếp các thủ tục nhập xuất cơ bản và ghi trực tiếp lên màn hình hay bộ điều khiển đĩa. Một hệ điều hành cũng có cấu trúc đơn giản là UNIX với những phiên bản đầu tiên. Cấu trúc của nó chỉ bao gồm hai phần: hạt nhân và các chương trình hệ thống. Hạt nhân đƣợc chia thành một chuỗi giao tiếp và device driver (xem chƣơng 5, bộ điều khiển thiết bị). Ngƣời dùng Shell và lệnh Biên dịch và thông dịch Thƣ viện hệ thống Giao tiếp ời gọi hệ thống với nhân Tín hiệu kiểm soát hệ Hệ thống tập tin Lập lịch CPU, thống nhập xuất tuần chuyển đổi giữa thay thế phân tự của bộ điều khiển hệ thống nhập trang, yêu cầu Thiết bị đầu cuối xuất khối và bộ phân trang trong điều khiển đĩa bộ nhớ ảo Giao tiếp giữ hạt nhân và hạt nhân Bộ kiểm soát Thiết bị Bộ kiểm soát đĩa Bộ kiểm soát bộ đầu cuối nhớ Bản 1.3. C u trúc của hệ điều hành UNIX Những gì dƣới lời gọi hệ thống và trên phần cứng là hạt nhân. Hạt nhân cung cấp hệ thống tập tin, lập lịch CPU, quản trị bộ nhớ và những chức năng khác của hệ điều 29
  31. hành thông qua lời gọi hệ thống. Tóm lại là toàn bộ chức năng của hệ thống đƣợc kết hợp trong một lớp. Những chƣơng trình hệ thống dùng những lời gọi hệ thống đƣợc hỗ trợ bởi hạt nhân để cung cấp những chức năng hữu ích nhƣ biên dịch và thao tác tập tin. Lời gọi hệ thống định nghĩa một giao tiếp lập trình cho UNIX, đó là tập hợp những chƣơng trình hệ thống thông thƣờng trong đó có định nghĩa giao tiếp với ngƣời dùng. 1.6.4.2. Cấu tr c phân lớp Những phiên bản mới của UNIX đƣợc thiết kế để sử dụng phần cứng phức tạp hơn, do đó hệ điều hành đƣợc chia thành nhiều phần nhỏ hơn. Bằng cách sử dụng kỹ thuật topdown, những chức năng và đặc tính của hệ thống đƣợc chia làm nhiều thành phần nhỏ. Che dấu thông tin, không cho chƣơng trình của ngƣời dùng có thể cài đặt những hàm truy xuất cấp thấp, thay vào đó là những lớp giao tiếp bên trong. Hệ điều hành đƣợc chia thành nhiều lớp: Lớp dƣới cùng là phần cứng, lớp trên cùng là giao tiếp với ngƣời dùng. Lớp hệ điều hành đƣợc cài đặt thành những đối tƣợng trừu tƣợng. Thông thƣờng một lớp của hệ điều hành bao gồm một số cấu trúc dữ liệu và các hàm có thể đƣợc gọi bởi lớp ở trên và bản thân nó gọi những chức năng của lớp bên dƣới. Mỗi lớp cài đặt chỉ sử dụng những thao tác do lớp dƣới cung cấp. Một lớp cũng không cần biết hệ điều hành đƣợc cài đặt nhƣ thế nào, nó chỉ cần biết những thao tác này làm gì thôi. Cấu trúc lớp này lần đầu tiên đƣợc thiết kế và áp dụng cho hệ điều hành THE (Technische Hogeschool Eindhoven). Hệ thống này được chia thành sáu ớp như hình sau: Lớp 5: Chƣơng trình của ngƣời dùng Lớp 4: Quản lý bộ đệm cho thiết bị nhập xuất Lớp 3: Điều khiển thiết bị nhập xuất Lớp 2: Quản lý bộ nhớ / bộ nhớ ảo Lớp 1: Quản lý tiến trình Lớp 0: Phần cứng hệ thống Ví dụ hác như c u trúc ớp của hệ điều hành VENUS và OS/2: 30
  32. Lớp 6 Chƣơng trình ngƣời dùng Lớp 5 Trình điều khiển thiết bị và bộ lập lịch Lớp 4 Bộ nhớ ảo Lớp 3 Kênh nhập/xuất Lớp 2 Lập lịch CPU Lớp 1 Thông dịch các chỉ thị Lớp 0 Phần cứng Ứng dụng Ứng dụng Ứng dụng Giao tiếp với CTUD Mở rộng API Hệ thống con Hệ thống con Hệ thống con Hạt nhân Hệ thống Quản lý bộ nhớ Gửi các tác vụ Quản lý thiết bị Divice Divice Divice Divice driver driver driver driver Hình 1.5. C u trúc phân ớp của OS/2 31
  33. n 6. C u trúc phân ớp của hệ điều hành UNIX 1.6.4.3. Máy ảo Virtual Machine) Thông thƣờng, một hệ thống máy tính bao gồm nhiều lớp. Phần cứng ở lớp thấp nhất. Hạt nhân ở lớp kế dùng các chỉ thị của phần cứng để tạo một tập hợp các lời gọi hệ thống. Các chƣơng trình hệ thống có thể sử dụng hoặc là các lời gọi hệ thống hoặc là các chỉ thị của phần cứng. Vì vậy nó xem phần cứng và lời gọi hệ thống nhƣ cùng lớp. Một số hệ thống có tổ chức sao cho các chƣơng trình ứng dụng có thể gọi d dàng các chƣơng trình hệ thống. Mặc dù chƣơng trình hệ thống ở lớp cao hơn các phần khác nhƣng chƣơng trình ứng dụng có thể xem mọi phần dƣới nó là một phần của máy. Lớp ứng dụng này s dụng một hái niệm à máy o. Ví dụ hệ điều hành máy ảo của IBM. Bằng cách sử dụng lập lịch cho CPU và kỹ thuật bộ nhớ ảo, hệ điều hành có thể tạo nhiều tiến trình ảo, mỗi tiến trình sẽ thực hiện trên một bộ xử lý và bộ nhớ riêng. Những tiến trình này có những đặc điểm riêng nhƣ lời gọi hệ thống và hệ thống tập tin không đƣợc cung cấp phần cứng trực tiếp. Tài nguyên của hệ thống cũng đƣợc chia s để tạo những máy ảo. Lập lịch CPU, chia s CPU cho ngƣời dùng. Spooling và hệ thống tập tin đƣợc chia thành những th 32
  34. (card) đọc ảo và máy in ảo. Một thiết bị đầu cuối terminal cũng cung cấp các chức năng tạo các thao tác màn hình ảo. Vấn đề phức tạp nhất của máy ảo là hệ thống đĩa. Giả sử hệ thống chỉ có ba bộ điều khiển đĩa nhƣng có tới bảy máy ảo. Nhƣ vậy không thể gán cho mỗi máy ảo một bộ điều khiển đĩa và giải pháp là xây dựng hệ thống đĩa ảo. Mặc dù khái niệm máy ảo rất hữu ích nhƣng khó cài đặt. Máy ảo phải thực hiện ở hai dạng: dạng giám sát Monitor và dạng ngƣời dùng. Ngoài ra máy ảo c n phải giải quyết các vấn đề về vận chuyển dữ liệu và thời gian. n . So sánh giữa máy thực và máy o C hai ợi đi m chính trong việc s dụng máy o. Thứ nh t, bằng cách bảo vệ hoàn toàn các tài nguyên hệ thống, máy ảo cung cấp mức độ bảo mật cao Thứ hai, máy ảo cho ph p phát triển hệ thống đƣợc thực hiện mà không cần phá vỡ hoạt động hệ thống thông thƣờng. Mỗi máy ảo hoàn toàn bị cô lập từ các máy ảo khác, vì thế chúng ta không gặp phải bất kỳ vấn đề bảo mật nào nhƣ tài nguyên hệ thống khác hoàn toàn đƣợc bảo vệ. Thí dụ, các ứng dụng không đƣợc tin cậy đƣợc tải về từ Internet có thể đƣợc chạy trong một máy ảo riêng. Một bất lợi của môi trƣờng này là không có sự chia s tài nguyên trực tiếp. Hai tiếp cận cung cấp sự chia s đƣợc cài đặt. Thứ nh t, có thể chia s một 33
  35. đĩa nhỏ. Cơ chế này đƣợc làm mẫu sau một đĩa đƣợc chia s vật lý. Thứ hai, có thể định nghĩa một mạng của các máy ảo, mỗi máy ảo có thể gửi thông tin qua các mạng giao tiếp này nhƣng nó đƣợc cài đặt bằng phần mềm. Những hệ thống máy ảo nhƣ thế là một phƣơng tiện truyền thông hữu hiệu cho việc nghiên cứu và phát triển hệ điều hành. Thông thƣờng, thay đổi một hệ điều hành là một công việc khó. Vì các hệ điều hành là các chƣơng trình lớn và phức tạp, sự thay đổi trên một phần này có thể gây một lỗi khó hiểu trong những phần khác. Sức mạnh của hệ điều hành làm cho trƣờng hợp này là cực kỳ nguy hiểm. Vì hệ điều hành thực thi trong chế độ kiểm soát, một thay đổi sai trong một con trỏ có thể gây lỗi và có thể phá hủy toàn hệ thống tập tin. Do đó, cần phải kiểm tra tất cả thay đổi của hệ điều hành một cách cẩn thận. Tuy nhiên, hệ điều hành chạy trên máy và điều khiển hoàn toàn máy đó. Do đó, hệ thống hiện hành phải bị dừng và ngừng việc sử dụng trong khi những thay đổi đƣợc thực hiện và kiểm tra. Thời điểm này thƣờng đƣợc gọi là thời gian phát triển hệ thống. Vì nó làm cho hệ thống không sẵn dùng đối với ngƣời dùng nên thời gian phát triển hệ thống thƣờng đƣợc lập thời biểu vào buổi tối hay cuối tuần, khi tải hệ thống thấp. Một hệ thống máy ảo có thể loại trừ nhiều vấn đề này. Ngƣời lập trình hệ thống đƣợc cung cấp chính máy ảo của họ, và phát triển hệ thống đƣợc thực hiện trên máy ảo thay vì trên máy vật lý thật sự. Một hệ điều hành thông thƣờng ít khi bị phá vỡ vìphát triển hệ thống. Đƣơng nhiên, muốn cài đặt phần mềm máy ảo đ i hỏi cấu hình phần cứng phải mạnh. 1.6.4.4. Mô hình Client-Server Các hệ điều hành hiện đại thƣờng chuyển dần các công việc của hệ điều hành ra các lớp bên ngoài nhằm thu nhỏ phần cốt lõi của hệ điều hành thành hạt nhân cực tiểu kernel sao cho chỉ phần hạt nhân này phụ thuộc vào phần cứng. Để thực hiện đƣợc điều này hệ điều hành xây dựng theo mô hình Client-Server , theo mô hình này hệ điều hành bao gồm nhiều tiến trình đ ng vai trò Server c các chức năng chuy n biệt như qu n tiến trình, qu n bộ nhớ, , phần hạt nhân của hệ điều hành chỉ thực hiện nhiệm vụ tạo cơ chế thông tin i n ạc giữa các tiến trình C ient và Server Trong mô hình này, chức năng của hạt nhân chỉ là kiểm soát quá trình thông tin giữa Client và Server. Bằng cách chia hệ điều hành thành những phần nhỏ, mỗi phần 34
  36. chỉ kiểm soát một mặt của hệ thống nhƣ các dịch vụ về tập tin, tiến trình, thiết bị đầu cuối, bộ nhớ, mỗi phần sẽ gọn hơn và d quản lý hơn. Hơn nữa, tất cả Server thực hiện nhƣ những tiến trình ở mức độ ngƣời dùng user-mode không phải ở mức độ hạt nhân (kernel-mode , nên nó không truy xuất trực tiếp phần cứng. Do đó, nếu hệ thống tập tin bị lỗi, các dịch vụ về tập tin có thể bị hỏng nhƣng nó thƣờng không gây ảnh hƣởng đến toàn bộ hệ thống. Một ƣu điểm khác của mô hình Client-Server là nó có thể tƣơng thích d dàng với mô hình hệ thống phân tán. Nếu một Client giao tiếp với một Server bằng cách gửi những thông điệp, họ không biết là khi nào thông điệp đó đang đƣợc xử lý cục bộ tại máy hay đƣợc gửi vào mạng đến Server trên một máy từ xa. Khi Client quan tâm đến, một yêu cầu đƣợc gửi đi và một trả lời đáp ứng di n ra nhƣ nhau. N ư vậy c c t ến tr n tron t ốn ược c a t n hai lo : - Tiến trình bên ngoài hay tiến trình của chƣơng trình ngƣời dùng đƣợc gọi là các tiến trình Client. - Tiến trình của hệ điều hành đƣợc gọi là tiến trình Server. Khi cần thực hiện một chức năng hệ thống các tiến trình Client sẽ gởi yêu cầu tới tiến trình Server tƣơng ứng, tiến trình Server sẽ xử lý và trả lời kết quả cho tiến trình Client. N ận xét: - Hệ thống này d thay đổi và d mở rộng hệ điều hành. Để thay đổi các chức năng của hệ điều hành chỉ cần thay đổi ở Server tƣơng ứng, để mở rộng hệ điều hành chỉ cần thêm các dịch vụ phía Server. - Các tiến trình Server của hệ điều hành hoạt động trong chế độ không đặc quyền nên không thể truy cập trực tiếp đến phần cứng, điều này giúp hệ thống đƣợc bảo vệ tốt hơn. 35
  37. Hình 1.8. Mô hình C ient - Server Trong mô hình này, chức năng của hạt nhân chỉ là kiểm soát quá trình thông tin giữa Client và Server. Bằng cách chia hệ điều hành thành những phần nhỏ, mỗi phần chỉ kiểm soát một mặt của hệ thống nhƣ các dịch vụ về tập tin, tiến trình, thiết bị đầu cuối, bộ nhớ, mỗi phần sẽ gọn hơn và d quản lý hơn. Hơn nữa, tất cả Server thực hiện nhƣ những tiến trình ở mức độ ngƣời dùng user-mode không phải ở mức độ hạt nhân (kernel-mode), nên nó không truy xuất trực tiếp phần cứng. Do đó, nếu Server tập tin bị lỗi, các dịch vụ về tập tin có thể bị hỏng nhƣng nó thƣờng không gây ảnh hƣởng đến toàn bộ hệ thống. Một ƣu điểm khác của mô hình Client-Server là nó có thể tƣơng thích d dàng với mô hình hệ thống phân tán. Nếu một Client giao tiếp với một Server bằng cách gửi những thông điệp, họ không biết là khi nào thông điệp đó đang đƣợc xử lý cục bộ tại máy hay đƣợc gửi vào mạng đến Server trên một máy từ xa. Khi Client quan tâm đến, một yêu cầu đƣợc gửi đi và một trả lời đáp ứng di n ra nhƣ nhau. n . Mô hình Client-Server trong hệ thông phân tán 36
  38. Hình vẽ sau đây cho thấy cấu trúc của hệ điều hành Windows NT. Đây là một cấu trúc phức tạp với nhiều thành phần khác nhau và nó đƣợc xây dựng dựa trên mô hình hệ điều hành Client/ Server. n . C u trúc hệ điều hành Windows NT Tron cấu trúc n y c ún ta t ấy nổ rõ a ểm sau ây: - Cấu trúc của Windows NT đƣợc chia thành hai mode: Kernel mode và User mode. Các chƣơng trình ứng dụng của ngƣời dùng chỉ chạy trong User mode, các dịch vụ của hệ điều hành chỉ chạy trong Kernel mode. Nhờ vậy mà việc bảo vệ các chƣơng trình của ngƣời dùng cũng nhƣ các thành phần của hệ điều hành, trên bộ nhớ, đƣợc thực hiện d dàng hơn. - Trong User mode của Windows NT có chứa các hệ thống con môi trƣờng nhƣ: OS/2 subsystem và POSIX subsystem, nhờ có các hệ thống con môi trƣờng này mà các ứng dụng đƣợc thiết kế trên các hệ điều hành khác vẫn chạy đƣợc trên hệ 37
  39. điều hành Windows NT. Đây là điểm mạnh của các hệ điều hành Microsoft của từ Windows NT. Chúng tôi sẽ giải thích rõ hơn về hai khái niệm Kernel mode và User mode, và các thành phần trong cấu trúc của hệ điều hành Windows NT ở phần sau, thông qua việc giới thiệu về hệ điều hành Windows 2000. 1.7. MỘT SỐ HỆ ĐIỀU HÀNH HIỆN ĐẠI 1.7.1. Hệ điều hành Windows95 Windows95 là kết quả của một sự phát triển lớn từ Windows3.1. Microsoft không chọn giải pháp nâng cấp Windows3.1 mà nó thực hiện việc kiến trúc lại Windows để nó đủ mạnh để nó có thể thực hiện đƣợc các ứng dụng 32 bit trong một môi trƣờng ổn định. Kết quả là Microsoft có đƣợc một phiên bản hệ điều hành Windows95 đủ mạnh, có độ tin cậy và độ ổn định cao, và đặc biệt là cho ph p các ứng dụng 16 bit và DOS chạy trên môi Windows95 giữ lại các thành phần hệ thống của Windows3.1 để đảm bảo tƣơng thích với Win16, USER16 và các thành phần Kernel 16 bit. Một trong những thành phần quan trọng của Windows95 là thành phần Thunking. Nhờ có Thunking mà các module 16 bit có thể giao tiếp với các bản sao 32 bit của chúng và ngƣợc lại. Thunking là một tập các thƣờng trình, mà nó ánh xạ các địa chỉ để cho ph p các ứng dụng phân đoạn 16 bit chia s hoàn toàn bộ nhớ phẳng với các ứng dụng 32 bit. Hình vẽ sau đây cho thấy vai tr và vị trí của lớp Thunking trong Windows95. Hình 1.11. Lớp Thun ing trong Windows95 H ng Intel đƣa ra vi xử lý 32 bit 80386 đầu tiên năm 1995, nhƣng đến khi hệ điều hành Windows95 ra đời thì những điểm mạnh trong kiến trúc của nó mới đƣợc 38
  40. phát huy, vì Windows95 đ tận dụng đƣợc các điểm mạnh trong kiến trúc của Intel 32 bit để xây dựng thành một hệ điều hành 32 bit đủ mạnh. Các hệ điều hành 32 bit có thể truy xuất bộ nhớ theo mô hình bộ nhớ phẳng, trong mô hình này hệ điều hành có thể đánh địa chỉ bộ nhớ theo kiểu tuyến tính lên đến 4Gb, tức là nó loại trừ đƣợc sự phân đoạn bộ nhớ mà chúng ta đ thấy trong các hệ điều hành 16 bit. Khi chạy trên vi xử lý 80386 hệ điều hành Windows95 khai thác tối đa các điểm mạnh trong chế độ ảo của vi xử lý này, vi xử lý 80386 có thể hoạt động ở các chế độ: thực real mode , bảo vệ protected mode và ảo virtual mode . Chế độ ảo của 80386 c n đƣợc gọi là chế độ 8086 ảo, trong chế độ 8086 ảo ngoài việc cung cấp không gian bộ nhớ ảo cho các ứng dụng, 80386 c n cho ph p các ứng dụng chế độ 8086 ảo thực thi trong chế độ 8086 ảo, thực tế thực thi trong chế độ bảo vệ. Các ứng dụng chạy trong chế độ bảo vệ đƣợc hệ điều hành bảo vệ trên bộ nhớ và đƣợc truy xuất một không gian bộ nhớ lớn hơn đến 4Gb bộ nhớ RAM . Nhờ có chế độ 8086 ảo mà Windows95 có thể cho chạy nhiều ứng dụng đồng thời, kể cả các ứng dụng 16 bit của DOS và các ứng dụng 32 bit của Windows, trên bộ nhớ và các ứng dụng này đƣợc hệ điều hành bảo vệ để các ứng dụng không truy xuất bất hợp lệ lên các vùng nhớ của nhau, nếu có một ứng dụng bị hỏng thì các ứng dụng c n lại vẫn hoạt động bình thƣờng. Windows95 xây dựng các máy ảo DOS để chạy các ứng dụng 16 bit của DOS. Intel 80386 là một vi xử lý 32 bit, nhƣng nếu sử dụng với hệ điều hành 16 bit thì các hệ điều hành này xem nó nhƣ là các vi xử lý 80286 16 bit, nên khả năng quản lý bộ nhớ của nó sẽ bị giới hạn. Việc xử lý dữ liệu trong môi trƣờng 32 bit cũng có nhiều điểm lợi hơn trong môi trƣờng 16 bit. Cùng một ứng dụng đó nhƣng nếu chạy trong môi trƣờng 16 bit thì nó phải chia thành các phân đoạn 16 bit và chỉ có thể truy xuất dữ liệu trong không gian 64Kb, nhƣng khi chạy trong môi trƣờng 32 bit thì nó không cần chia nhỏ và có thể truy xuất dữ liệu trong không gian bộ nhớ 4Gb, trong trƣờng hợp này dữ liệu đƣợc tham chiếu theo kiểu tuyến tính nên tốc độ truy xuất đƣợc cải thiện hơn. 1.7.2. Hệ điều hành Windows 2000 Windows 2000 đƣợc thiết kế để chạy trên các kiến trúc phần cứng khác nhau nhƣ: Các hệ thống dựa trên nền Intel CISC và RISC, Alpha AXP, Motorola PowerPC, Nó đƣợc viết bởi C và C++, ngôn ngữ assembly chỉ đƣợc sử dụng để viết các thành phần giao tiếp trực tiếp với phần cứng, m ngôn ngữ assembly không chỉ tồn tại trong kernel 39
  41. và HAL mà nó c n tồn tại trong phần kernel mode của hệ thống con Win32, và trong một vài thƣ viện của user mode. Windows 2000 là hệ điều hành đa xử lý 32 bit, đƣợc xây dựng để quản lý các hệ thống mạng máy tính, nó hỗ trợ cả hai mô hình mạng: Client-Server (server-based) và peer-to-peer. Windows 2000 đƣợc xây dựng dựa trên Windows NT 4.0, nó cung cấp nhiều công cụ tốt hơn để quản lý Internet và các dịch vụ trên Internet. Windows 2000 là một họ gồm có 4 sản phẩm, một cho Client và ba cho server chẳng hạn Client: Windows 2000 Professional; Server: Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 datacenter Server. C c sản p ẩm trên k c n au ở c c ểm sau: Số các CPU đƣợc hỗ trợ. Số lƣợng bộ nhớ vật lý đƣợc hỗ trợ. Số các kết nối mạng hiện tại đƣợc hỗ trợ. Các dịch vụ có trong các sản phẩm server không có trong sản phẩm Client. Một số đặc tính của Windows 2000 so với các Windows trước: - Windows 2000 hỗ trợ các hệ thống đa xử lý trong khi các Windows trƣớc không hỗ trợ điều này. - Windows 2000 hỗ trợ hệ thống tập tin an toàn các Windows khác không có hệ thống tập tin an toàn. - Windows 2000 là hệ điều hành 32 bit đầy đủ, nó không chứa các m 16 bit, nó hỗ trợ các m khác để chạy các ứng dụng Windows 16 bit. Các Windows khác chứa một lƣợng lớn các m 16 bit cũ từ các phiên bản trƣớc. 1.7.3. Hệ điều hành Linux Linux là hệ điều hành mi n phí đƣợc xây dựng từ hệ điều hành Unix. Nó đƣợc phát triển bởi Linus Torvalds, một sinh viên của trƣờng Đại học Hensinki. Linus chỉ chịu trách nhiệm tạo ra hệ thống kernel. Kernel là phần lõi của hệ điều hành, nó chịu trách nhiệm thực hiện các công việc của hệ thống. Linux bây giờ nhƣ một tập các phần mềm mà trong đó bao gồm kernel và các thành phần khác để nó trở thành một hệ điều 40
  42. hành hoàn chỉnh. Một trong những nguyên nhân làm cho Linux đƣợc nhiều ngƣời biết đến là nó đƣợc cung cấp mi n phí với m nguồn mở. 1.7.4. Hệ điều hành Windows 7 Khi phiên bản Windows 7 vừa ra mắt, nhiều ngƣời lựa chọn ngay phiên bản 64 bit để cài đặt cho máy tính cá nhân mà không có lấy chút kiến thức về nó. Tuy nhiên, đây đúng là sự lựa chọn đúng đắn bởi những ƣu điểm vƣợt trội của Windows 7 (64 bit). Thứ nh t, nếu với Windows 32 bit, bạn chỉ có thể sử dụng tối đa 4GB RAM. Trong khi đó, Windows 64 bit cho ph p bạn chạy với thanh RAM 4GB, sau đó có thể nâng cấp lên 8 hay 16GB. Thứ hai, về mặt lý thuyết, hệ điều hành 32 bit sử dụng đƣợc 4GB RAM, tuy nhiên, phiên bản 32 bit của Windows Vista và Win7 chỉ sử dụng tối đa là 3,12GB. Trong khi với 64 bit, bạn có thể sử dụng toàn bộ 4GB. Thứ ba, vấn đề bảo mật của Windows 64 bit tốt hơn 32 bit. Nhiều cải tiến trong nhân đƣợc Microsoft giới thiệu rộng r i cùng với Vista chỉ đƣợc dùng cho phiên bản 64 bit, bao gồm công cụ Data Execution Prevention và PatchGuard hỗ trợ phần cứng. Ngoài ra, phiên bản Vista và Windows 7 (64 bit) yêu cầu các chƣơng trình điều khiển phải đƣợc các nhà cung cấp m hóa bằng kí tự số để ngăn chặn tin tặc và những k phát tán Rootkit7 và đặt các công cụ khai thác nhƣ những chƣơng trình điều khiển của nhân. Thứ tư, do hệ điều hành 64 bit xử lý nhiều thông tin hơn cũng nhƣ hỗ trợ RAM lớn hơn, máy tính của bạn sẽ đảm bảo chạy ổn định khi sử dụng các ứng dụng lớn, phức tạp cùng lúc. Nếu bạn thƣờng xuyên làm việc với các ứng dụng đồ họa nhƣ Photoshop, biên tập Video, tr chơi, sử dụng AutoCAD, thì 64 bit là lựa chọn tốt hơn. Thứ năm, đó là việc các ứng dụng 32 bit đều làm việc đƣợc trong hệ điều hành 64 bit. Làm đƣợc nhƣ vậy là nhờ có một công cụ đƣợc biết đến dƣới tên Win32 on Win64 hay WOW giúp chuyển các Call lệnh đƣợc các ứng dụng sử dụng để yêu cầu dịch vụ API - 32 bit từ một ứng dụng Win32 di sản thành Call API - 64 bit có thể đƣợc các hệ thống phụ riêng của bản Windows 7 (64 bit) hỗ trợ. 7 Phần mềm dùng để chiếm quyền kiểm soát máy tính 41
  43. Khi đó các ứng dụng 32 bit sẽ vận hành ổn định trên hệ điều hành Windows 64 bit, và hiện nay một số d ng CPU của AMD8 và Intel c n có khả năng tối ƣu hóa tới tốc độ cực đại. Một số ngoại lệ với khả năng tƣơng thích của WOW thƣờng xảy ra với các ứng dụng sử dụng một hay nhiều chƣơng trình điều khiển của các thiết bị 32 bit di sản riêng không phù hợp với các phiên bản 64 bit. Nếu có vài chƣơng trình không làm việc, bạn cũng có thể hy vọng nhà phát triển sẽ sớm sửa các lỗi này. 1.7.5. Hệ điều hành Windows 8 Windows 7 ra mắt chính thức 2009, không đƣợc bao lâu thì những thông tin về phiên bản tiếp theo là Windows 8 đ bị r rỉ từ nhóm nghiên cứu và phát triển. Theo tin từ chuyên gia cao cấp Robert Morgan, Windows 8 thậm chí là cả Windows 9 sẽ sử dụng cấu trúc 128 bit, đồng thời Microsoft sẽ mời các nhà sản xuất máy tính lớn nhƣ Intel, AMD, HP và IBM xây dựng các thông số phần cứng để có thể tƣơng thích với hệ điều hành mới này. Về lý thuyết, các máy tính trên nền 64 bit sẽ nhận nhiều RAM hơn do đó tốc độ xử lý sẽ nhanh hơn so với bản 32 bit. Nhƣ thế, với các phiên bản 128 bit ngƣời dùng sẽ trải nghiệm một hệ thống đạt tốc độ xử lý ƣu việt hơn. Nếu theo đúng nhƣ những gì Robert Morgan tiết lộ và theo lộ trình phát hành các bản Windows của Microsoft, phiên bản 128 bit dành cho máy tính để bàn sẽ xuất hiện vào năm 2012. Theo PcAdvisor). 1.7.6. Hệ điều hành Android9 Android là một hệ điều hành dựa trên nền tảng Linux đƣợc thiết kế dành cho các thiết bị di động có màn hình cảm ứng nhƣ điện thoại thông minh và máy tính bảng. Ban đầu, Android đƣợc phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này đƣợc chính Google mua lại vào năm 2005. Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và vi n thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android đƣợc bán vào tháng 10 năm 2008. 8 AMD là nhà sản xuất bộ vi xử lý (CPU) x86 lớn thứ hai thế giới sau Intel 9 42
  44. Android có m nguồn mở và Google phát hành m nguồn theo Giấy ph p Apache. Chính m nguồn mở cùng với một giấy ph p không có nhiều rang buộc đ cho ph p các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết đƣợc điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android c n có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lƣợt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ƣớc tính khoảng 25 tỷ lƣợt. 1.8. TÓM TẮT Hệ điều hành thực hiện tất cả các chức năng đáp ứng yêu cầu ngƣời dùng. Hệ điều hành phải cung cấp một số dịch vụ. Tại cấp thấp nhất, lời gọi hệ thống cho phép một chƣơng trình đang chạy thực hiện yêu cầu trực tiếp từ hệ thống. Tại cấp cao hơn, trình thông dịch cung cấp cơ chế cho ngƣời dùng đƣa ra yêu cầu mà không viết chƣơng trình. Các lệnh có thể xuất phát từ tập tin trong suốt thời gian thực thi theo chế độ xử lý theo lô, hay trực tiếp từ bàn phím trong chế độ tƣơng tác hay chia s thời gian. Các chƣơng trình hệ thống đƣợc cung cấp để thoả m n nhiều yêu cầu thông thƣờng của ngƣời dùng. Các loại yêu cầu khác nhau dựa theo cấp yêu cầu. Cấp gọi hệ thống phải cung cấp các chức năng cơ bản, nhƣ điều khiển quá trình, quản lý tập tin và thiết bị. Các yêu cầu cấp cao hơn đƣợc thoả m n bởi trình thông dịch lệnh và chƣơng trình hệ thống đƣợc dịch thành một chuỗi các lời gọi hệ thống. Các dịch vụ hệ thống có thể đƣợc phân cấp thành nhiều loại: điều khiển chƣơng trình, yêu cầu trạng thái, yêu cầu nhập/xuất. Một khi dịch vụ hệ thống đƣợc định nghĩa, cấu trúc của hệ điều hành đƣợc phát triển. Thiết kế một hệ điều hành mới là công việc rất quan trọng. Khái niệm máy ảo thực hiện tiếp cận phân tầng và xem nhân của hệ điều hành và phần cứng nhƣ là phần cứng của nó. Các hệ điều hành khác có thể đƣợc nạp trên đỉnh của máy ảo. Các hệ điều hành đƣợc sử dụng ngày nay trên các máy tính đa chức năng nhƣ máy tính cá nhân chủ yếu gồm hai chủng loại: hệ điều hành họ Unix và hệ điều hành họ Microsoft Windows. Các máy tính mẹ (Mainframe computer) và các hệ thống 43
  45. nhúng dùng nhiều loại hệ điều hành khác nhau, không phải là Unix hay Windows, nhƣng cũng tƣơng tự nhƣ Unix hay Windows. Các hệ điều hành hiện đại: Hệ điều hành thuộc họ Unix: Linux, Ubuntu, Android, Sailfish, Fedora, Firefox OS đƣợc coi là hệ điều hành nguồn mở. Hệ điều hành thuộc họ Windows: WinXP, Win7, Win8, Windows Phone, Câu hỏi ôn tập 1. Chức năng hệ điều hành là gì? 2. Thiết kế hệ điều hành đáp ứng mục tiêu gì? 3. Các thành phần hệ thống máy tính? 4. Phân biệt hệ điều hành đơn chƣơng và đa chƣơng? 5. Phân biệt hệ điều hành đơn nhiệm và đa nhiệm? 6. Phân biệt bộ nhớ chính và bộ nhớ thứ cấp? 7. Giải thích đa nhiệm, đa chƣơng, đa xử lý? 8. CPU ảo là gì? Cho ví dụ trong hệ điều hành? 9. Hệ đa xử lý có ƣu điểm gì? 10. Liệt kê các kiến trúc của hệ điều hành? 11. Hệ điều hành Windows đƣợc thiết kế theo kiến trúc nào? 12. Lý do hệ điều hành linux không đƣợc sử dụng rộng r i trong sinh viên Việt Nam? 13. Ƣu điểm của Windows 8 so với các phiên bản trƣớc đó là gì? TÀI LIỆU TH M KHẢO [1] Nguyễn Kim Tuấn, Giáo trình Hệ điều hành, ĐH Huế, 2004. [2] Nguyễn Ph Trường, Hệ điều hành , Khoa CNTT, Đại học Cần Thơ, 2005 44
  46. CHƯ NG 2: QUẢN L TIẾN TR NH 2.1. MỤC TIÊU Sau khi học xong chƣơng này, ngƣời học nắm đƣợc những kiến thức sau: - Hiểu các khái niệm liên quan đến tiến trình quá trình - Process) - Hiểu cách lập thời biểu CPU cho các tiến trình - Hiểu cơ chế đồng bộ hóa các quá trình - Hiểu cơ chế tắc nghẽn và chống tắc nghẽn Tất cả các hệ điều hành từ đơn chƣơng đến đa chƣơng, từ đơn nhiệm đến đa nhiệm đều phải đƣợc xây dụng dựa trên khái niệm về tiến trình. Vì thế, một yêu cầu quan trọng trong thiết kế hệ điều hành là thành phần quản lý tiến trình của hệ điều hành phải đáp ứng tất cả những gì liên quan đến tiến trình: - Hệ điều hành phải cho ph p thực hiện nhiều tiến trình đồng thời để khai thác tối đa thời gian xử lý của CPU nhƣng cũng cung cấp đƣợc thời gian hồi đáp hợp lý. - Hệ điều hành phải cấp phát tài nguyên để tiến trình hoạt động một cách hiệu quả với một chính sách hợp lý nhƣng không xảy ra tình trạng tắc nghẽn trong hệ thống. - Hệ điều hành phải có cơ chế đồng bộ hóa yêu cầu các tiến trình hợp tác lẫn nhau tránh việc mất mát dữ liệu. 2.2. TỔNG QU N VỀ TIẾN TR NH 2.2.1. Nhu cầu xử lý đồng hành Hầu hết các hệ điều hành hiện đại đều cho phép người d ng thi hành nhiều công việc đồng thời tr n c ng một máy tính Nhu cầu x đồng hành (concurrency) này xu t phát từ đâu, và hệ điều hành cần ph i t chức hỗ trợ như thế nào cho các môi trường đa nhiệm như thế? Đ à nội dung chúng ta sẽ tìm hi u trong bài này Có hai động lực chính khiến cho các hệ điều hành hiện đại thƣờng hỗ trợ môi trƣờng đa nhiệm trong đó chấp nhận nhiều công việc thực hiện đồng thời trên cùng một máy tính: 45
  47. - Tăng hiệu suất sử dụng CPU: Phần lớn các công việc khi thi hành đều trải qua nhiều chu kỳ xử lý Chu kỳ CPU, sử dụng CPU và chu kỳ nhập xuất Chu kỳ IO, sử dụng các thiết bị nhập xuất xen kẽ nhƣ sau : CPU IO CPU IO CPU Bản 2 Chu ỳ CPU và chu ỳ I/O Nếu chỉ có một tiến trình duy nhất trong hệ thống, thì vào các chu kỳ I/O của công việc, CPU sẽ hoàn toàn nhàn rỗi. Ý tƣởng tăng cƣờng số lƣợng công việc trong hệ thống là để tận dụng CPU: nếu công việc 1 yêu cầu I/O, thì có thể tận dụng CPU để thực hiện công việc 2 Công việc 1 CPU IO CPU IO CPU Công việc 2 CPU IO CPU IO Bản 2 2. Tăng hiệu su t s dụng CPU - Tăng tốc độ xử lý: Một số bài toán có bản chất xử lý song song nếu đƣợc xây dựng thành nhiều module hoạt động đồng thời thì sẽ tiết kiệm đƣợc thời gian xử lý. Ví dụ : X t bài toán tính giá trị biểu thức kq = a*b + c*d . Nếu tiến hành tính đồng thời a*b và c*d thì thời gian xử lý sẽ ngắn hơn là thực hiện tuần tự. Trong các trƣờng hợp đó, cần có một mô hình xử lý đồng hành thích hợp. Trên máy tính có cấu hình nhiều CPU, hỗ trợ xử lý song song thật sự, điều này sẽ giúp tăng hiệu quả thi hành của hệ thống đáng kể. 2.2.2. Khái niệm tiến trình Những hệ điều hành ban đầu cho ph p chỉ một chƣơng trình đƣợc thực thi tại một thời điểm. Chƣơng trình này có toàn quyền điều khiển hệ thống và có thể truy xuất tới tất cả tài nguyên của hệ thống. Những hệ điều hành hiện đại cho ph p nhiều chƣơng 46
  48. trình đƣợc nạp vào bộ nhớ và đƣợc thực thi đồng hành. Sự phát triển này yêu cầu sự điều khiển mạnh mẽ hơn và phân chia tài nguyên nhiều hơn giữa các tiến trình sao cho cân bằng và hiệu quả. Yêu cầu này dẫn đến khái niệm tiến trình Process . Hình 2.1. (a) đa chương với 4 chương trình (b)Mô hình hái niệm với 4 chương trình độc p (c)Tại một thời đi m chỉ c 1 chương trình hoạt động Tiến trình à một chương trình đang x , s hữu một con trỏ ệnh, t p các thanh ghi và các biến Đ hoàn thành công việc của mình, một tiến trình c th cần đến một số tài nguy n như CPU, bộ nhớ chính, các t p tin và thiết bị nh p/xu t10. 10 Trần Hạnh Nhi, Giáo trình điện tử hệ điều hành nâng cao, Trƣờng Đại học Khoa học Tự nhiên TP.HCM. 47
  49. Hình 2.2. Tiến trình (Process) Cần phân biệt hai hái niệm chương trình và tiến trình Một chương trình à một thực th thụ động, chứa đựng các chỉ thị điều hi n máy tính đ tiến hành một công việc nàođ ; hi cho thực hiện các chỉ thị này, chương trình chuy n thành tiến trình, à một thực th hoạt động, với con trỏ ệnh xác định chỉ thị ế tiếp sẽ thi hành, èm theo t p các tài nguy n phục vụ cho hoạt động của tiến trình Về mặt ý niệm, có thể xem nhƣ mỗi tiến trình sở hữu một bộ xử lý ảo cho riêng nó, nhƣng trong thực tế, chỉ có một bộ xử lý thật sự đƣợc chuyển đổi qua lại giữa các tiến trình. Sự chuyển đổi nhanh chóng này đƣợc gọi là sự đa chương (multiprogramming). Hệ điều hành chịu trách nhiệm sử dụng một thuật toán định thời CPU để quyết định thời điểm cần dừng hoạt động của tiến trình đang xử lý để phục vụ một tiến trình khác, và lựa chọn tiến trình tiếp theo sẽ đƣợc phục vụ. Bộ phận thực hiện chức năng này của hệ điều hành đƣợc gọi là bộ định thời (scheduler). Một hệ điều hành phức tạp hơn đƣợc mong đợi nhiều hơn trong việc thực hiện các hành vi của ngƣời dùng. Mặc dù quan tâm chủ yếu của hệ điều hành là thực thi chƣơng trình ngƣời dùng, nhƣng nó cũng quan tâm đến các công việc khác nhau bên ngoài nhân. Do đó, một hệ thống chứa tập hợp các quá trình: quá trình hệ điều hành thực thi m hệ thống, quá trình ngƣời dùng thực thi m ngƣời dùng. Tất cả quá trình này có tiềm năng thực thi đồng hành, với một CPU hay nhiều CPU đƣợc đa hợp giữa chúng. Bằng cách chuyển đổi CPU giữa các quá trình, hệ điều hành có thể làm cho máy tính hoạt động với năng suất cao hơn. 48
  50. 2.2.3. Phân loại tiến trình Các tiến trình trong hệ thống có thể chia thành hai loại: tiến trình tuần tự và tiến trình song song. Tiến trình tuần tự là các tiến trình mà điểm khởi tạo của nó là điểm kết thúc của tiến trình trƣớc đó. Tiến trình song song là các tiến trình mà điểm khởi tạo của tiến trình này mằn ở thân của các tiến trình khác, tức là có thể khởi tạo một tiến trình mới khi các tiến trình trƣớc đó chƣa kết thúc. Tiến trình song song đƣợc chia thành nhiều loại: - Tiến trình song song độc p: là các tiến trình hoạt động song song nhƣng không có quan hệ thông tin với nhau, trong trƣờng hợp này hệ điều hành phải thiết lập cơ chế bảo vệ dữ liệu của các tiến trình, và cấp phát tài nguyên cho các tiến trình một cách hợp lý. - Tiến trình song song c quan hệ thông tin: trong quá trình hoạt động các tiến trình thƣờng trao đổi thông tin với nhau, trong một số trƣờng hợp tiến trình gởi thông báo cần phải nhận đƣợc tín hiệu từ tiến trình nhận để tiếp tục, điều này d dẫn đến bế tắc khi tiến trình nhận tín hiệu không ở trong trạng thái nhận hay tiến trình gởi không ở trong trạng thái nhận thông báo trả lời. - Tiến trình song song phân c p: Trong quá trình hoạt động một tiến trình có thể khởi tạo các tiến trình khác hoạt động song song với nó, tiến trình khởi tạo đƣợc gọi là tiến trình cha, tiến trình đƣợc tạo gọi là tiến trình con. Trong mô hình này hệ điều hành phải giải quyết vấn đề cấp phát tài nguyên cho các tiến trình con. Tiến trình con nhận tài nguyên ở đâu, từ tiến trình cha hay từ hệ thống. Để giải quyết vấn đề này hệ điều hành đƣa ra hai mô hình quản lý tài nguyên: Thứ nhất, mô hình tập trung, trong mô hình này hệ điều hành chịu trách nhiệm phân phối tài nguyên cho tất cả các tiến trình trong hệ thống. Thứ hai, mô hình phân tán, trong mô hình này hệ điều hành cho ph p tiến trình con nhận tài nguyên từ tiến trình cha, tức là tiến trình khởi tạo có nhiệm vụ nhận tài nguyên từ hệ điều hành để cấp phát cho các tiến trình mà nó tạo ra, và nó có nhiệm vụ thu hồi lại tài nguyên đ cấp phát trả về cho hệ điều hành trƣớc khi kết thúc. - Tiến trình song song đồng mức: là các tiến trình hoạt động song song sử dụng chung tài nguyên theo nguyên tắc lần lƣợt, mỗi tiến trình sau một khoảng thời gian chiếm giữ tài nguyên phải tự động trả lại tài nguyên cho tiến trình kia. 49
  51. Các tiến trình tuần tự chỉ xuất hiện trong các hệ điều hành đơn nhiệm đa chƣơng, nhƣ hệ điều hành MS-DOS, loại tiến trình này tồn tại nhiều hạn chế, điển hình nhất là không khai thác tối đa thời gian xử lý của CPU. Các tiến trình song song xuất hiện trong các hệ điều hành đa nhiệm đa chƣơng, trên cả hệ thống đơn xử lý và đa xử lý. Nhƣng sự song song thực, chỉ có ở các hệ thống đa xử lý, trong hệ thống này mỗi CPU chịu trách nhiệm thực hiện một tiến trình. Sự song song trên các hệ thống đơn xử lý là sự song song giả, các tiến trình song song trên hệ thống này thực chất là các tiến trình thay nhau sử dụng CPU, tiến trình này đang chạy thì có thể dừng lại để nhƣờng CPU cho tiến trình khác chạy và sẽ tiếp tục lại sau đó khi có đƣợc CPU. Đây là trƣờng hợp mà ở trên ta cho rằng: điểm khởi tạo của tiến trình này nằm ở thân của tiến trình khác. Hình vẽ sau đây minh họa sự khác nhau, về mặt thực hiện, giữa các tiến trình song song/đồng thời trong hệ thống đơn xử lý với các tiến trình song song/đồng thời trong hệ thống đa xử lý. Hình 2.3. Sự thực hiện đồng thời của các tiến trình trong hệ thống đơn x Hình 2.4. Sự thực hiện đồng thời của các tiến trình trong hệ thống đa x Trong tài iệu này chúng ta chỉ h o sát sự hoạt động của các tiến trình song song (hay đồng thời) tr n các hệ thống đơn x . Đối với ngƣời dùng thì trong hệ thống chỉ có hai nhóm tiến trình. Thứ nhất, là các tiến trình của hệ điều hành. Thứ hai, là các tiến trình của chƣơng trình ngƣời dùng. Các tiến trình của hệ điều hành hoạt động trong chế độ đặc quyền, nhờ đó mà nó có thể truy xuất vào các vùng dữ liệu đƣợc bảo vệ của hệ thống. Trong khi đó các tiến trình của chƣơng trình ngƣời dùng hoạt động trong chế độ không đặc quyền user mode , nên nó 50
  52. không thể truy xuất vào hệ thống, nhờ đó mà hệ điều hành đƣợc bảo vệ. Các tiến trình của chƣơng trình ngƣời dùng có thể truy xuất vào hệ thống thông qua các tiến trình của hệ điều hành bằng cách thực hiện một lời gọi hệ thống. 2.2.4. Tiểu trình Thread) và mô hình đa tiểu trình Multithread) 2.2.4.1. Khái niệm tiểu trình Trong hầu hết các hệ điều hành, mỗi tiến trình có một không gian địa chỉ và chỉ có một d ng xử lý. Tuy nhiên, có nhiều tình huống ngƣời dùng mong muốn có nhiều d ng xử lý cùng chia s một không gian địa chỉ, và các d ng xử lý này hoạt động song song tƣơng tự nhƣ các tiến trình phân biệt ngoại trừ việc chia s không gian địa chỉ . Ví dụ : Một server quản lý tập tin thỉnh thoảng phải tự khóa để chờ các thao tác truy xuất đĩa hoàn tất. Nếu server có nhiều d ng xử lý, hệ thống có thể xử lý các yêu cầu mới trong khi một d ng xử lý bị khoá. Nhƣ vậy việc thực hiện chƣơng trình sẽ có hiệu quả hơn. Điều này không thể đạt đƣợc bằng cách tạo hai tiến trình server riêng biệt vì cần phải chia s cùng một vùng đệm, do vậy bắt buộc phải chia s không gian địa chỉ. Chính vì các tình huống tƣơng tự, ngƣời ta cần có một cơ chế xử lý mới cho ph p có nhiều d ng xử lý trong cùng một tiến trình. Ngày nay đ có nhiều hệ điều hành cung cấp một cơ chế nhƣ thế và gọi là ti u trình (threads). Hình 2.5. Ti u trình (Thread) Một ti u trình à một đơn vị x cơ b n trong hệ thống Mỗi ti u trình x tuần tự đoạn mã ệnh của n , s hữu một con trỏ ệnh, t p các thanh ghi và một v ng nhớ 51
  53. stac ri ng Các ti u trình chia sẻ CPU với nhau giống như cách chia sẻ giữa các tiến trình: một ti u trình x trong hi các ti u trình hác chờ đến ượt Một ti u trình cũng c th tạo p các tiến trình con, và nh n các trạng thái hác nhau như một tiến trình th t sự Một tiến trình c th s hữu nhiều ti u trình 2.2.4.2. Phân iệt tiến trình và tiểu trình Tiến trình Process) Tiểu trình Thread) Process có code segment, data segment, stack Thread không có data segment & heap segment, heap & một số phần I/O nữa Mỗi process có ít nhất một thread Thread tồn tại trong process Thread trong cùng một process dùng chung Có thể có nhiều thread trong một nhau code/data/heap và I/O; nhƣng chúng process, và main là một trong số đó có stack segment, registers riêng. Tạo ra một process mất nhiều thời gian Tạo ra một thread mất ít thời gian Chuyển đổi chậm Chuyển đổi nhanh Khi process kết thúc hoạt động, tất cả các Khi thread kết thúc hoạt động vùng bộ thread kết thúc theo. nhớ stack của nó đƣợc giải phóng Bản 2 3. So sánh tiến trình và ti u trình Các tiến trình tạo thành những thực thể độc lập. Mỗi tiến trình có một tập tài nguyên và một môi trƣờng riêng một con trỏ lệnh, một Stack, các thanh ghi và không gian địa chỉ . Các tiến trình hoàn toàn độc lập với nhau, chỉ có thể liên lạc thông qua các cơ chế thông tin giữa các tiến trình mà hệ điều hành cung cấp. Ngƣợc lại, các tiểu trình trong cùng một tiến trình lại chia s một không gian địa chỉ chung, điều này có nghĩa là các tiểu trình có thể chia s các biến toàn cục của tiến trình. Một tiểu trình có thể truy xuất đến cả các stack của những tiểu trình khác trong cùng tiến trình. Cấu trúc này không đề nghị một cơ chế bảo vệ nào, và điều này cũng không thật cần thiết vì các tiểu trình trong cùng một tiến trình thuộc về cùng một sở hữu chủ đ tạo ra chúng trong ý định cho ph p chúng hợp tác với nhau. 52
  54. Hình 2.6. Các ti u trình trong c ng một tiến trình Phân bổ thông tin lƣu trữ cấu trúc mô tả tiến trình và tiểu trình: Tiến trình Tiểu trình Không gian địa chỉ Con trỏ lệnh+các thanh ghi Tài nguyên toàn cục Stack Các thông tin thống kê Tài nguyên cục bộ 2.2.4.3. Kernel thread và user thread Khái niệm tiểu trình có thể đƣợc cài đặt trong kernel của Hệ điều hành, khi đó đơn vị cơ sở sử dụng CPU để xử lý là tiểu trình, Hệ điều hành sẽ phân phối CPU cho các tiểu trình trong hệ thống. Tuy nhiên đối với một số hệ điều hành, khái niệm tiểu trình chỉ đƣợc hỗ trợ nhƣ một đối tƣợng ngƣời dùng, các thao tác tiểu trình đƣợc cung cấp kèm theo do một bộ thƣ viện xử lý trong chế độ ngƣời dùng không đặc quyền user mode . Lúc này Hệ điều hành sẽ chỉ biết đến khái niệm tiến trình, do vậy cần có cơ chế để liên kết các tiểu trình cùng một tiến trình với tiến trình cha trong kernel đối tƣợng này đôi lúc đƣợc gọi là LWP lightweight process . 53
  55. Hình 2.7. chế độ người d ng hông đ c quyền (user mode) 2.3. TỔ CHỨC QUẢN L TIẾN TR NH 2.3.1. Các trạng thái của tiến trình Trạng thái của tiến trình tại một thời điểm đƣợc xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó. Trong quá trình sống, một tiến trình thay đổi trạng thái do nhiều nguyên nhân nhƣ: phải chờ một sự kiện nào đó xảy ra, hay đợi một thao tác nhập/xuất hoàn tất, buộc phải dừng hoạt động do đ hết thời gian xử lý  Xét tiến trình hai trạng thái Một số ít hệ điều hành chỉ cho ph p tiến trình tồn tại ở một trong hai trạng thái: Not Running và Running. Khi hệ điều hành tạo ra một tiến trình mới, hệ điều hành đƣa tiến trình đó vào hệ thống ở trạng thái Not Running, tiến trình ở trạng thái này để chờ đƣợc chuyển sang trạng thái Running. Vì một lý do nào đó, tiến trình đang thực hiện bị ngắt thì bộ phân phát dispatcher sẽ thu hồi lại CPU của tiến trình này và chọn một tiến trình ở trạng thái Not running để cấp CPU cho nó và chuyển nó sang trạng thái Running. Tiến trình bị thu hồi CPU sẽ đƣợc chuyển về lại trạng thái Not running. Hình 2.8. Sơ đồ tiến trình hai trạng thái 54
  56. Tại một thời điểm xác định chỉ có duy nhất một tiến trình ở trạng thái Runnig, nhƣng có thể có nhiều tiến trình ở trạng thái Not running, các tiến trình ở trạng thái Not running đƣợc chứa trong một hàng đợi Queue . Tiến trình đang ở trạng thái Running bị chuyển sang trạng thái Not running sẽ đƣợc đƣa vào hàng đợi. Hình vẽ sau đây mô tả việc chuyển tiến trình vào hàng đợi. Hình 2.9. Sơ đồ chuy n tiến trình vào hàng đợi  Xét tiến trình ba trạng thái Đa số hệ điều hành đều cho ph p tiến trình tồn tại ở một trong ba trạng thái, đó là: ready, running, blocked: Hình 2.10. Sơ đồ tiến trình 3 trạng thái Trạng thái sẵn sàng Ready: Ngay sau khi khởi tạo tiến trình, đƣa tiến trình vào hệ thống và cấp phát đầy đủ tài nguyên trừ CPU cho tiến trình, hệ điều hành đƣa tiến trình vào trạng thái ready. Hay nói cách khác, trạng thái ready là trạng thái của một tiến trình trong hệ thống đang chờ đƣợc cấp CPU để bắt đầu thực hiện. Trạng thái thực thi (Running): Là trạng thái mà tiến trình đang đƣợc sở hữu CPU để hoạt động, hay nói cách khác là các chỉ thị của tiến trình đang đƣợc thực hiện/ xử lý bởi CPU. 55
  57. Trạng thái khoá (Blocked): Là trạng thái mà tiến trình đang chờ để đƣợc cấp phát thêm tài nguyên, để một sự kiện nào đó xảy ra, hay một quá trình vào/ra kết thúc. Quá trình chuyển trạng thái trong sơ đồ Hình 2.10 nhƣ sau: 1. Admit Tiến trình đƣợc khởi tạo, đƣợc đƣa vào hệ thống, đƣợc cấp phát đầy đủ tài nguyên chỉ thiếu CPU. 2. Dispatch Tiến trình đƣợc cấp CPU để bắt đầu thực hiện/ xử lý. 3. Release Tiến trình hoàn thành xử lý và kết thúc. 4. Time_out Tiến trình bị bộ phân phát thu hồi CPU, do hết thời gian đƣợc quyền sử dụng CPU, để cấp phát cho tiến trình khác. 5. (Event Wait Tiến trình đang chờ một sự kiện nào đó xảy ra hay đang chờ một thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chƣa đƣợc hệ điều hành đáp ứng. 6. (Event Occurs Sự kiện mà tiến trình chờ đ xảy ra, thao tác vào/ra mà tiến trình đợi đ kết thúc, hay tài nguyên mà tiến trình yêu cầu đ đƣợc hệ điều hành đáp ứng, Bộ phận phân phát thu hồi CPU từ một tiến trình đang thực hiện trong các trƣờng hợp sau: (1) Tiến trình đang thực hiện hết thời gian time-out đƣợc quyền sử dụng CPU mà bộ phận phân phát dành cho nó. (2) Có một tiến trình mới phát sinh và tiến trình mới này có độ ƣu tiên cao hơn tiến trình hiện tại. (3) Có một tiến trình mới phát sinh và tiến trình mới cần một khoảng thời gian của CPU nhỏ hơn nhiều so với khoảng thời gian c n lại của tiến trình hiện tại. Tại một thời điểm xác định trong hệ thống có thể có nhiều tiến trình đang ở trạng thái Ready hoặc Blocked nhƣng chỉ có một tiến trình ở trạng thái Running. Các tiến trình ở trạng thái Ready và Blocked đƣợc chứa trong các hàng đợi Queue riêng. 56
  58. Hình 2.11. Sơ đồ chuy n tiến trình vào các hàng đợi Có nhiều lý do để một tiến trình đang ở trạng thái running chuyển sang trạng thái blocked, do đó đa số các hệ điều hành đều thiết kế một hệ thống hàng đợi gồm nhiều hàng đợi, mỗi hàng đợi dùng để chứa những tiến trình đang đợi cùng một sự kiện nào đó.  Xét tiến trình ốn trạng thái Trong môi trƣờng hệ điều hành đa nhiệm thì việc tổ chức các Queue để lƣu các tiến trình chƣa thể hoạt động là cần thiết, nhƣng nếu tồn tại quá nhiều tiến trình trong Queue, hay chính xác hơn trong bộ nhớ chính, sẽ dẫn đến trình trạng l ng phí bộ nhớ, không c n đủ bộ nhớ để nạp các tiến trình khác khi cần thiết. Mặt khác nếu các tiến trình trong Queue đang chiếm giữ tài nguyên của hệ thống, mà những tài nguyên này lại là những tài nguyên các tiến trình khác đang cần, điều này dẫn đến tình trạng sử dụng tài nguyên không hợp lý, làm cho hệ thống thiếu tài nguyên thực chất là thừa trầm trọng và có thể làm cho hệ thống tắc nghẽn. Với những lý do trên các hệ điều hành đa nhiệm thiết kế thêm một trạng thái tiến trình mới, đ à trạng thái Suspend (tạm dừng). Trạng thái này rất cần thiết cho các hệ thống sử dụng kỹ thuật Swap trong việc cấp phát bộ nhớ cho các tiến trình. Khái niệm Swap sẽ đƣợc đề cập đến trong chƣơng Quản lý bộ nhớ của tài liệu này. Hình 2.12. Sơ đồ tiến trình 4 trạng thái 57
  59. Trạng thái Suspend là trạng thái của một tiến trình khi nó đang đƣợc lƣu trữ trên bộ nhớ phụ, hay chính xác hơn đây là các tiến trình đang ở trong trạng thái blocked và/hoặc ready bị hệ điều hành chuyển ra đĩa để thu hồi lại không gian nhớ đ cấp cho tiến trình hoặc thu hồi lại tài nguyên đ cấp cho tiến trình để cấp cho một tiến trình khác đang rất cần đƣợc nạp vào bộ nhớ tại thời điểm hiện tại.  Tiến trình năm trạng thái Trong thực tế hệ điều hành thiết kế hai trạng thái suspend: một trạng thái suspend dành cho các tiến trình từ blocked chuyển đến, trạng thái này đƣợc gọi là blocked- suspend và một trạng thái suspend dành cho các tiến trình từ ready chuyển đến, trạng thái này đƣợc gọi là ready-suspend. Tới đây ta c th hi u các trạng thái tiến trình như sau: - New: tiến trình mới tạo ra đƣợc đƣa vào hệ thống - Ready: tiến trình đƣợc định vị trong bộ nhớ chính và đang chờ đƣợc cấp CPU để thực hiện. - Running: tiến trình đang đƣợc thực thi đang sở hữu CPU - Blocked: tiến trình đƣợc định vị trong bộ nhớ chính và đang đợi một sự kiện hay một quá trình I/O nào đó. - Blocked-suspend: tiến trình đang bị chứa trên bộ nhớ phụ đĩa và đang đợi một sự kiện nào đó. - Ready-suspend: tiến trình đang bị chứa trên bộ nhớ phụ nhƣng sẵn sàng thực hiện ngay sau khi đƣợc nạp vào bộ nhớ chính. Sau đây chúng ta xem x t sự chuyển trạng thái tiến trình trong sơ đồ Hình 2.13: 58
  60. Hình 2.13. Sơ đồ chuy n tiến trình năm trạng thái Blocked sang Blocked-suspend: nếu không c n tiến trình ready trong bộ nhớ chính và bộ nhớ chính không c n không gian nhớ trống thì phải có ít nhất một tiến trình blocked bị chuyển ra ngoài, blocked-suspend, để dành bộ nhớ cho một tiến trình không bị khoá khác. Blocked-suspend sang Ready-suspend: một tiến trình đang ở trạng thái blocked- suspend đƣợc chuyển sang trạng thái ready-suspend khi sự kiện mà nó đợi đ xảy ra. Ready-suspend sang Ready: có hai lý do để hệ điều hành chọn khi chuyển một tiến trình ở trạng thái ready-suspend sang trạng thái ready: o Không c n tiến trình ready trong bộ nhớ chính, hệ điều hành phải nạp một tiến trình mới vào để nó tiếp tục thực hiện. o Nếu có tiến trình ready-suspend có độ ƣu tiên cao hơn so với các tiến trình ready hiện tại thì hệ điều hành có thể chuyển nó sang trạng thái ready để nó nhiều cơ hội để đƣợc thực hiện hơn. Ready sang Ready suspend: Hệ điều hành thƣờng chuyển các tiến trình blocked sang suspend hơn là các tiến trình ready, vì các tiến trình ở trạng thái blocked không thể thực hiện ngay lập tức nhƣng lại chiếm nhiều không gian bộ nhớ chính hơn so với các tiến trình ở trạng thái ready. Tuy nhiên, nếu việc chọn tiến trình để chuyển sang suspend dựa vào hai điều kiện: chiếm ít không gian bộ nhớ hơn và có độ ƣu tiên thấp hơn thì hệ điều hành có thể chuyển một tiến trình ready sang trạng thái suspend. 59
  61. Nhƣ vậy với việc chuyển tiến trình sang trạng thái suspend hệ điều hành sẽ chủ động hơn trong việc cấp phát bộ nhớ và ngăn chặn các tình huống tắc nghẽn có thể xảy ra do sự tranh chấp về tài nguyên, nhờ vậy mà hệ điều hành tiết kiệm đƣợc bộ nhớ, chia s đƣợc tài nguyên cho nhiều tiến trình và tăng đƣợc mức độ đa chƣơng của hệ thống. Tuy nhiên, để có đƣợc những lợi ích trên hệ điều hành đ phải chi phí rất nhiều cho việc tạm dừng tiến trình. Hệ điều hành phải xem x t tiến trình nào đƣợc chọn để suspend, khi suspend một tiến trình hệ điều hành phải lƣu lại tất cả các thông tin liên quan đến tiến trình đó con trỏ lệnh, tài nguyên mà tiến trình đ đƣợc cấp, , hệ điều hành phải lựa chọn thời điển thích hợp để đƣa tiến trình ra bộ nhớ ngoài, những thao tác đó sẽ làm chậm tốc độ thực hiện của toàn bộ hệ thống. Nhƣng dầu sao đi nữa thì hệ điều hành vẫn phải sử dụng trạng thái suspend vì tăng mức độ đa chƣơng của hệ thống là một trong những mục tiêu lớn của hệ điều hành. 2.3.2. Chế độ xử lý của tiến trình Để đảm bảo hệ thống hoạt động đúng đắn, hệ điều hành cần phải đƣợc bảo vệ khỏi sự xâm phạm của các tiến trình. Bản thân các tiến trình và dữ liệu cũng cần đƣợc bảo vệđể tránh các ảnh hƣởng sai lạc lẫn nhau. Một cách tiếp cận để giải quyết vấn đề là phân biệt hai chế độ xử lý cho các tiến trình: chế độ hông đ c quyền và chế độ đ c quyền nhờ vào sự trợ giúp của cơ chế phần cứng. Tập lệnh của CPU đƣợc phân chia thành các lệnh đặc quyền và lệnh không đặc quyền. Cơ chế phần cứng chỉ cho ph p các lệnh đặc quyền đƣợc thực hiện trong chế độ đặc quyền. Thông thƣờng chỉ có hệ điều hành hoạt động trong chế độ đặc quyền, các tiến trình của ngƣời dùng hoạt động trong chế độ không đặc quyền, không thực hiện đƣợc các lệnh đặc quyền có nguy cơ ảnh hƣởng đến hệ thống. Nhƣ vậy hệ điều hành đƣợc bảo vệ. Khi một tiến trình ngƣời dùng gọi đến một lời gọi hệ thống, tiến trình của hệ điều hành xử lý lời gọi này sẽ hoạt động trong chế độ đặc quyền, sau khi hoàn tất thì trả quyền điều khiển về cho tiến trình ngƣời dùng trong chế độ không đặc quyền. 60
  62. Ngƣời dùng Chế độ không đặc quyền Shell, editor,compiler, Hệ điều hành Chế độ đặc quyền Hardware Hình 2.14. Hai chế độ x đ c quyền và hông đ c quyền 2.3.3. Cấu tr c dữ liệu khối quản lý tiến trình Hệ điều hành quản lý các tiến trình trong hệ thống thông qua hối qu n tiến trình (process control block -PCB . PCB là một vùng nhớ lƣu trữ các thông tin mô tả cho tiến trình, với các thành phần chủ yếu bao gồm: Hình 2.15. Khối mô t tiến trình Định danh của tiến trình (1 : giúp phân biệt các tiến trình Trạng thái tiến trình 2 : xác định hoạt động hiện hành của tiến trình. 61