Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Bài giảng Hệ điều hành

Bài giảng Hệ điều hành

Published by Nguyen Thi Thuy Linh, 2021-11-05 15:32:48

Description: Biên soạn: Nguyễn Thị Thùy Linh
Khoa SP Toán - Tin Trướng ĐH Đồng Tháp

Search

Read the Text Version

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

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

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

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 QUAN 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

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À ĐĨA .......................................................................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

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

TÀI LIỆU THAM KHẢO ...................................................................................................311 DANH MỤC THUẬT NGỮ VIẾT TẮT KÝ HIỆU THUẬT NGỮ Ý NGHĨA 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 CLI Clean Interrupt các đĩa CD_ROM. CPU Processor Cấm ngắt CRT Cathode-Ray Tube Bộ xử lý CS Critical Section Ống phóng điện tử chân không CSDL Cơ sở dữ liệu Miền găng, đoạn găng DMA Direct Memory Access FAT File Allocation Table Truy xuất bộ nhớ trực tiếp FCFS First-Come, First-Served Bảng cấp phát tập tin FDD Floppy Disk Đến trước được phục vụ trước FIFO First In First Out Đĩa mềm FSD File System Driver Vào trước ra trước HDD Hard disk Điều khiển hệ thống tập tin I/O device Input/Output device Đĩa cứng IC Integrated C rcuit Thiết bị nhập/xuất International Organization for Mạch tích hợp ISO Standardization Tổ chức tiêu chuẩn hoá quốc tế KTCN Logical Cluster Numbers LCNs The Least Frequently Used Kiểm tra cập nhật LFU Least-Recently-Used Số hiệu Cluster logic LRU Lightweight Process Ít được dùng thường xuyên nhất. LWP Lâu nhất chưa sử dụng Memory Liên kết các tiểu trình của cùng MEM Master File Table một tiến trình MFT The Most Frequently Used Bộ nhớ MFU Memory Management Unit MMU Microsoft Disk Operrating System Trang được sử dụng nhiều nhất MS-DOS Not Recently Used Đơn vị quản lý bộ nhớ NRU New Technology File System Hệ điều hành MS-DOS NTFS Optimal Không sử dụng gần đây OPT Operating System Hệ thống tập tin NTFS OS Process Tối ưu hóa P Personal Computer Hệ điều hành PC Tiến trình, quá trình Máy tính cá nhân 6

PCB Program Counter Nghĩa khác: Bộ đếm chương trình PCT Process Control Block Khối điều khiển tiến trình PDA Page Control Table Bảng trang PTBR Personal Digital Assistant Thiết bị kỹ thuật số hỗ trợ cá nhân RID Page Table Base Register Thanh ghi nền bảng trang Resource Identification Định danh của khối quản lý tài ROM RR Read Only Memory nguyên SCT Round Robin Bộ nhớ chỉ đọc SJF Segment Control Table STBR Shortest Job First Bảng phân đoạn Segment Table Base Register Công việc ngắn nhất trước STI Thanh ghi nền của bảng phân STLR Setting Interrupt đoạn Segment Table Length Register Mở ngắt THE Thanh ghi giới hạn của bảng phân TLBs Technische Hogeschool Eindhoven đoạn TSL Translation Look-aside Buffers Hệ điều hành THE UDF Test and Set Bộ nhớ kết hợp Kiểm tra khóa UMA Uniform Memory Access Là hệ thống tập tin được đưa ra để USER USER quản lý các đĩa từ/quang, chủ yếu VCNs Virtual Cluster Numbers là các đĩa DVD_ROM Truy xuất bộ nhớ đồng nhất Người dùng Số hiệu Cluster ảo 7

CHƯƠNG 1: TỔNG QUAN 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

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

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 lý thuyết về hệ điều hành là đứng về phía người thiết kế 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 là 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ả lậ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 lý 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

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 hệ điều hành hiện đại thực hiện các chức năng 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

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ữ liệ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 lý 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ụ lần lượ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

Hệ điều hành Vùng chương trình người dùng Bảng 1.1. Sắp xếp bộ nhớ của hệ thống xử lý theo lô đơ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ả Hình 1.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

- Xử lý off_line: 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ảng 1.2. Sắp xếp bộ nhớ của hệ thống xử lý theo lô đ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ó là 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 luôn luôn phải trong trạng thái là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

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 kiệm được bộ nhớ, vì không nạp hết mã lệnh và dữ liệ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 là chia sẻ thời gian xử lý 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ó là cung cấp cơ chế cho phép người dùng giao tiếp với mỗi chương trình trong khi 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

Ngoài hệ thống một bộ xử lý còn có các hệ thống có nhiều bộ xử lý cùng chia sẻ hệ thống đường truyền dữ liệ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. Hình 1.3. Hệ thống đa xử lý Có nhiều nguyên nhân xây dựng hệ thống dạng này: - Thông lượ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 kinh 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

Hệ thống đa xử lý thông thường sử dụng cách đa xử lý đố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ử lý 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ử lý 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 nguyên nhân phải xây dựng hệ thống phâ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

- 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 liên lạ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ử lý thời gian thực được sử dụng khi có những đòi hỏi khắt khe về thời gian trên các thao tác của bộ xử lý hoặc dòng dữ liệ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 kỹ 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

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ỦA 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

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ử lý theo lô 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

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ỦA HỆ ĐIỀU HÀNH 1.6.1. Các thành phần bê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 tiến trình là 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, khô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

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. Vai trò của hệ điều hành trong việc quản lý tiến trình là: - Tạo và hủy các tiến trình của người 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ý bộ nhớ chính Trong hệ thống máy tính hiện đại, bộ nhớ chính (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

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. Hệ điều hành có những vai trò như sau trong việc quản lý bộ nhớ chí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ý bộ 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 lư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. Vai trò của hệ điều hành trong việ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

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 khiển thiết bị thực hiện những nhiệm vụ sau: - Gởi mã lệnh điều khiển đến thiết bị: Hệ điều hành điều khiển các thiết bị bằng các mã điều khiển, do đó trước khi bắt đầu một quá trình trao đổi dữ liệu với thiết bị thì hệ điều hành phải gởi mã điều khiển đến thiết bị. - Tiếp nhận yêu cầu ngắt từ các thiết bị: Các thiết bị khi cần trao đổi với hệ thống thì nó phát ra một tín hiệu yêu cầu ngắt, hệ điều hành tiếp nhận yêu cầu ngắt từ các thiết bị, xem xét và thực hiện một thủ tục để đáp ứng yêu cầu từ các thiết bị. - Phát hiện và xử lý lỗi: quá trình trao đổi dữ liệu thường xảy ra các lỗi như: thiết bị vào ra chưa sẵn sàng, đường truyền hỏng, ... do đó hệ điều hành phải tạo ra các cơ chế thích hợp để phát hiện lỗi sớm nhất và khắc phục các lỗi vừa xảy ra nếu có thể. Một hệ thống nhập/xuất bao gồ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

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ộ phận quản lý tập tin của hệ điều hành thực hiện những nhiệm vụ sau: - Tạo/xoá một tập tin/thư mục. - Bảo vệ tập tin khi có hiện tượng truy xuất đồng thời. - Cung cấp các thao tác xử lý và bảo vệ tập tin/thư mục. - Tạo mối quan hệ giữa tập tin và bộ nhớ phụ chứa tập tin. - Tạo cơ chế truy xuất tập tin thông qua tên tập tin. - Á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 bả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

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 lệ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ử lý shell là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 khiển lệ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

- 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ử lý lỗi: Hệ điều hành phải có các công cụ để chính hệ điều hành và để hệ điều hành giúp chương trình của người 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

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 là chuyển tham số vào thanh ghi. Nếu có nhiều tham số, nó sẽ được lưu trữ trong khối hoặc bảng trong bộ nhớ. Cách cuối cùng là dùng cơ chế stack6. 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

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 lờ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ảng 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

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 lớ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ụ khác như cấu trúc lớp của hệ điều hành VENUS và OS/2: 30

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 lớp của OS/2 31

Hình 1.6. Cấu trúc phân lớ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 khái niệm là 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

(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. Hình 1.7. So sánh giữa máy thực và máy ảo Có hai lợ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

đĩ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 lý tiến trình, quản lý 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 liên lạc giữa các tiến trình Client 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

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. Như vậy các tiến trình trong hệ thống được chia thành hai loại: - 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. Nhậ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

Hình 1.8. Mô hình Client - 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. Hình 1.9. Mô hình Client-Server trong hệ thông phân tán 36

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. Hình 1.10. Cấu trúc hệ điều hành Windows NT Trong cấu trúc này chúng ta thấy nổi rõ hai điể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

đ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 Thunking 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

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

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 phẩm trên khác nhau ở các điể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

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

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 http://vi.wikipedia.org/wiki/Android 42

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

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 THAM 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

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 QUAN 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ử lý đồ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ế? Đó là 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

- 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ảng 2.1. Chu kỳ CPU và chu kỳ 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ảng 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

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 khái niệm với 4 chương trình độc lập (c)Tại một thời điểm chỉ có 1 chương trình hoạt động Tiến trình là một chương trình đang xử lý, sở hữu một con trỏ lệ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

Hình 2.2. Tiến trình (Process) Cần phân biệt hai khái niệm chương trình và tiến trình. Một chương trình là một thực thể thụ động, chứa đựng các chỉ thị điều khiển máy tính để tiến hành một công việc nàođó; khi cho thực hiện các chỉ thị này, chương trình chuyển thành tiến trình, là một thực thể hoạt động, với con trỏ lệnh xác định chỉ thị kế tiếp sẽ thi hành, kè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

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 lậ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


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook