Chương 2 giới thiệu về cấu trúc hệ điều hành. Mục tiêu của chương này là mô tả các dịch vụ mà một hệ điều hành cung cấp cho các user, tiến trình và các hệ thống khác; thảo luận các cách xây dựng hệ điều hành khác nhau; giải thích các HĐH được cài đặt và khởi động như thế nào. Mời các bạn cùng tham khảo.
Nội dung chương BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH Các dịch vụ HĐH Giao diện người sử dụng HĐH Chương 2: Cấu trúc hệ điều hành Phạm Quang Dũng Bộ môn Khoa học máy tính Khoa Cơng nghệ thơng tin Trường Đại học Nơng nghiệp Hà Nội Website: fita.hua.edu.vn/pqdung Lời gọi HĐH (System Calls) Các chương trình hệ thống Thiết kế thực thi HĐH Cấu trúc HĐH Virtual Machines Tạo HĐH (Operating System Generation) Bài giảng Nguyên lý Hệ điều hành Mục tiêu 2.2 Phạm Quang Dũng ©2008 2.1 Các dịch vụ hệ điều hành Mô tả dịch vụ mà HĐH cung cấp cho user, tiến trình hệ thống khác Một tập dịch vụ HĐH cung cấp chức hữu dụng với user: Giao diện người sử dụng (user interface, UI) – tất HĐH có giao diện người sử dụng Thảo luận cách xây dựng HĐH khác Giải thích HĐH cài đặt khởi động z Khác giao diện dòng lệnh (Command-Line, CLI), giao diện đồ họa (Graphics User Interface, GUI), Batch Thực chương trình (Program execution) – khả hệ thống để nạp chương trình vào nhớ chạy nó, dừng chương trình (bình thường bất thường) Thực vào-ra (I/O operations) – chương trình người sử dụng thực trực tiếp hoạt động vào/ra, HĐH phải cung cấp số phương pháp để thực vào/ra (1 file thiết bị vào/ra) Thao tác với hệ thống file (File-system manipulation) – chương trình cần đọc, ghi, tạo, xố, tìm kiếm, liệt kê thông tin, quản lý quyền với file thư mục Bài giảng Nguyên lý Hệ điều hành 2.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.4 Phạm Quang Dũng ©2008 Các dịch vụ hệ điều hành (tiếp) Các dịch vụ hệ điều hành (tiếp) Giao tiếp (Communications) – trao đổi thơng tin tiến Có tập chức khác HĐH để đảm bảo hoạt động hiệu thơng qua chia sẻ tài ngun: trình thực máy tính máy tính khác nối mạng z Giao tiếp thơng qua nhớ chia sẻ (shared memory) chuyển thông điệp (message passing): gói tin chuyển HĐH Phát lỗi (Error detection) – HĐH cần phải thường xuyên quan tâm đến lỗi xảy chương trình người sử dụng z Với loại lỗi, HĐH cần có hành động thích hợp để đảm bảo tính tốn phù hợp đắn z Có nhiều loại tài nguyên: số (như chu kỳ CPU, nhớ chính, file) có mã phân phối đặc biệt, số khác (như thiết bị vào/ra) có mã yêu cầu giải phóng chung Accounting – theo dõi ghi lại loại tài nguyên lượng sử dụng (tài Protection & Security – người chủ thơng tin hệ thống máy tính nhiều người sử dụng nối mạng muốn kiểm sốt sử dụng thơng tin đó, tiến trình đồng thời khơng nên can thiệp lẫn z Protection gồm đảm bảo tất truy nhập đến tài nguyên hệ z Tính sửa lỗi tăng đáng kể khả sử dụng hiệu HĐH người sử dụng lập trình viên 2.5 user/tiến trình chúng chạy đồng thời ngun) user nhằm mục đích thống kê z Có thể lỗi CPU nhớ, thiết bị vào-ra, Bài giảng Nguyên lý Hệ điều hành Resource allocation – tài nguyên phải phân phối cho thống kiểm soát z Security hệ thống từ bên yêu cầu thẩm định người sử dụng, chống thiết bị vào/ra bên (modem, NIC) cố truy nhập không hợp lệ Phạm Quang Dũng ©2008 2.2 Giao diện người sử dụng HĐH Bài giảng Nguyên lý Hệ điều hành 2.6 Phạm Quang Dũng ©2008 Giao diệ diện ngườ người sử sử dụng củ HĐH (tiếp) b) Graphical User Interface (GUI) a) Command-Line Interpreter (CLI) Giao diện desktop thân thiện CLI cho phép nhập lệnh trực tiếp để HĐH thực Đôi CLI thực thi kernel, chương trình hệ thống Đơi hệ thống có nhiều CLI – shells, vd: UNIX, LINUX Chức tìm nạp lệnh từ người sử dụng thực z Thường dùng chuột, bàn phím, hình z Icons đại diện cho file, chương trình, hành động,… z Các nút chuột khác đối tượng gây hành động khác (cung cấp thông tin, lựa chọn, thực chức năng, mở thư mục) z Được phát minh Xerox PARC năm 1970 – Đôi lệnh built-in, – Đơi tên chương trình (vd UNIX): » Vd lệnh rm file.txt » Nếu sau cần thêm lệnh khơng cần sửa đổi shell Hiện nhiều HĐH bao gồm giao diện CLI GUI z Microsoft Windows có GUI với CLI “command” shell z Apple Mac OS X có giao diện GUI “Aqua” với UNIX kernel bên có shell z Solaris CLI với giao diện GUI tùy chọn (Java Desktop, KDE) Bài giảng Nguyên lý Hệ điều hành 2.7 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.8 Phạm Quang Dũng ©2008 2.3 System Calls Ví dụ System Call Cung cấp giao diện lập trình cho dịch vụ HĐH Chuỗi system call để copy nội dung file tới file khác Thường viết ngôn ngữ bậc cao (C, C++) Hầu hết truy nhập chương trình thơng qua giao diện lập trình ứng dụng (Application Program Interface API) bậc cao, sử dụng trực tiếp system call Ba API phổ biến Win32 API cho Windows, POSIX API cho hệ thống POSIX (gồm hầu hết phiên UNIX, Linux, Mac OS X), Java API cho Java virtual machine (JVM) Tại lại sử dụng API thay system call? (Chú ý: tên system-call sử dụng tổng quát) Bài giảng Nguyên lý Hệ điều hành 2.9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Ví dụ API chuẩn 2.10 Phạm Quang Dũng ©2008 Thực thi system call Xét hàm ReadFile() Win32 API – hàm đọc file Thường số gắn với system call z Giao diện system-call trì bảng đánh số theo số Giao diện system call gọi system call mong muốn kernel HĐH trả trạng thái giá trị trả Người gọi khơng cần biết system call thực thi z Chỉ cần tuân thủ API hiểu HĐH làm kết Các tham số truyền cho ReadFile() z HANDLE file – file cần đọc z Hầu hết giao diện HĐH ẩn lập trình viên API z LPVOID buffer – buffer để liệu đọc vào ghi Được quản lý thư viện hỗ trợ giai đoạn chạy (tập z DWORD bytesToRead – số byte đọc vào buffer z LPDWORD bytesRead – số byte đọc lần đọc trước hàm xây dựng vào thư viện với trình biên dịch) z LPOVERLAPPED ovl – sử dụng vào/ra kiểu gối chồng Bài giảng Nguyên lý Hệ điều hành 2.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.12 Phạm Quang Dũng ©2008 Mối quan hệ API – System Call – HĐH Ví dụ thư viện C chuẩn Chương trình C gọi lời gọi thư viện printf(), mà gọi tới system call write() Bài giảng Nguyên lý Hệ điều hành 2.13 Phạm Quang Dũng ©2008 Truyền tham số cho System Call Bài giảng Nguyên lý Hệ điều hành 2.14 Phạm Quang Dũng ©2008 Truyền tham số thông qua Bảng Thường cần nhiều thông tin đơn giản xác định system call mong muốn z Kiểu lượng thơng tin xác thay đổi theo HĐH theo lời gọi Ba phương thức tổng quát sử dụng để truyền tham số cho HĐH Đơn giản nhất: Truyền tham số ghi Trong số trường hợp: số tham số nhiều số ghi Tham số chứa bảng nhớ, địa bảng truyền tham số ghi Phương pháp sử dụng Linux Solaris Đẩy (push, store) tham số vào stack chương trình, lấy khỏi stack (pop) HĐH z Các phương pháp dùng bảng stack không giới hạn số lượng hay độ dài tham số truyền Bài giảng Nguyên lý Hệ điều hành 2.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.16 Phạm Quang Dũng ©2008 Các loại System Calls Các loại System Calls (tiếp) Quản lý file (File management) Điều khiển tiến trình (Process control) z kết thúc, bỏ dở (abort) z tạo file, xóa file z nạp, thực z mở, đóng z tạo, chấm dứt tiến trình z đọc, ghi, định vị z lấy, thiết lập thuộc tính tiến trình z lấy/ thiết lập thuộc tính file Quản lý thiết bị (Device management) z chờ đợi z đợi kiện, báo hiệu kiện z yêu cầu thiết bị, giải phóng thiết bị z phân phối giải phóng nhớ z đọc, ghi, định vị z lấy/ thiết lập thuộc tính thiết bị z gắn kết (attack), tháo gỡ (detach) logic thiết bị Bài giảng Nguyên lý Hệ điều hành 2.17 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Các loại System Calls (tiếp) Phạm Quang Dũng ©2008 2.18 MS-DOS Duy trì thơng tin (Information maintenance) z lấy/ thiết lập ngày z lấy/ thiết lập liệu hệ thống z lấy/ thiết lập thuộc tính tiến trình, file, thiết bị Giao tiếp (Communications) z tạo, xóa kết nối giao tiếp z gửi, nhận thơng điệp z truyền thông tin trạng thái z gắn kết, tháo gỡ logic thiết bị xa (remote device) At System Start-up Bài giảng Nguyên lý Hệ điều hành 2.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Running a Program 2.20 Phạm Quang Dũng ©2008 UNIX Các phương thức giao tiếp Sự giao tiếp thực cách sử dụng phương thức message passing shared memory Shared Memory Message Passing Bài giảng Nguyên lý Hệ điều hành 2.21 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.22 Phạm Quang Dũng ©2008 2.4 Các chương trình hệ thống 2.5 Thiết kế thực thi HĐH Các chương trình hệ thống cung cấp mơi trường thuận tiện cho Thiết kế thực thi HĐH khơng có giải pháp hoàn hảo, việc thực phát triển chương trình Chúng phân loại thành: z Thông tin trạng thái: ngày giờ, dung lượng nhớ trống, số user… z Sửa đổi file: trình soạn thảo văn tạo, sửa nội dung file đĩa z Hỗ trợ ngơn ngữ lập trình: trình biên dịch, trình thơng dịch, trình gỡ lỗi… z Nạp thực chương trình: nạp CT biên dịch vào nhớ để thực z Giao tiếp: cung cấp chế tạo kết nối ảo tiến trình, user, máy tính để gửi message, duyệt web, gửi email, truyền file… Hầu hết cách nhìn nhận người sử dụng HĐH xác định chương trình hệ thống, khơng thực system call 2.23 Cấu trúc bên HĐH khác khác z Thao tác với file: tạo, xóa, copy, đổi tên… file thư mục Bài giảng Nguyên lý Hệ điều hành số phương pháp chứng minh thành cơng Phạm Quang Dũng ©2008 Bắt đầu từ việc xác định mục tiêu đặc điểm Bị tác động lựa chọn phần cứng, loại HĐH: chia sẻ thời gian, đơn người dùng, đa người dùng, phân tán, thời gian thực… User goals System goals z User goals – HĐH cần dễ sử dụng, dễ học, đáng tin cậy, an toàn, nhanh z System goals – HĐH cần dễ thiết kế, thực thi trì, linh hoạt, đáng tin cậy, khơng có lỗi, hiệu Bài giảng Nguyên lý Hệ điều hành 2.24 Phạm Quang Dũng ©2008 Thiết kế thực thi HĐH (tiếp) Nguyên lý quan trọng tách biệt: Trước đây, HĐH viết ngơn ngữ assembly, viết ngơn ngữ bậc cao Policy (chính sách): Cái làm? - What Mechanism (cơ chế): Làm nào? - How (UNIX, PS/2, Windows NT chủ yếu viết C) z Sự tách biệt sách với chế cho phép linh hoạt tối đa sau định sách thay đổi z VD: Các HĐH vi nhân (như UNIX, Solaris) tách biệt chế sách cách thực thi tập khối tạo dựng ban đầu, độc lập với sách; cho phép chế sách tiên tiến thêm vào thông qua môđun kernel người sử dụng tạo chương trình người sử dụng Trong phiên Solaris, tùy vào bảng nạp, hệ thống chia sẻ thời gian, xử lý theo lô, thời gian thực, chia sẻ công bằng, hay dạng kết hợp Bài giảng Nguyên lý Hệ điều hành Phạm Quang Dũng ©2008 2.25 Thực thi hệ thống 2.6 Cấu trúc hệ điều hành Mã viết ngôn ngữ bậc cao: z viết nhanh z đọng z dễ hiểu dễ gỡ rối Một HĐH viết ngôn ngữ bậc cao dễ dàng chuyển sang phần cứng Bài giảng Nguyên lý Hệ điều hành 2.26 Phạm Quang Dũng ©2008 b) Phương pháp phân lớp HĐH chia thành lớp (layer, level), lớp a) Cấu trúc đơn giản xây dựng đỉnh lớp thấp Hệ điều hành MS-DOS Lớp đáy (layer 0) phần cứng; lớp cao MS-DOS – viết để cung (layer N) user interface cấp hầu hết chức không gian nhỏ Bằng cách chia thành module trên, z Không chia thành module lớp sử dụng chức dịch vụ z Dù MS-DOS có vài cấu lớp trúc, giao diện mức chức khơng phân định rõ ràng Bài giảng Nguyên lý Hệ điều hành Cấu trúc lớp MS-DOS 2.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.28 Phạm Quang Dũng ©2008 HĐH phân lớp Cấu trúc HĐH UNIX UNIX – HĐH khác mà ban đầu bị hạn chế chức phần cứng HĐH UNIX bao gồm phần riêng biệt: z Systems programs – chương trình hệ thống z The kernel - nhân Bao gồm tất lớp nằm giao diện system-call nằm physical hardware Cung cấp hệ thống file, lập lịch CPU, quản lý nhớ chức HĐH khác; nhiều chức cho mức Bài giảng Nguyên lý Hệ điều hành 2.29 Phạm Quang Dũng ©2008 Cấu trúc lớp HĐH UNIX (tiếp) Bài giảng Nguyên lý Hệ điều hành 2.30 Phạm Quang Dũng ©2008 c) Cấu trúc vi nhân (Microkernel) Vd: Windows NT Chuyển nhiều thành phần không thiết yếu từ kernel vào user space ⇒ microkernel Sự giao tiếp diễn module người sử dụng phương thức message passing Các lợi điểm: - dễ dàng mở rộng hệ điều hành mà thay đổi kernel - dễ dàng mang HĐH đặt vào kiến trúc khác - đáng tin cậy (ít mã lệnh chạy kernel mode) - an tồn (ít thứ phải bảo vệ hơn) Nhược điểm: làm giảm hiệu tải giao tiếp từ user space tới kernel space Bài giảng Nguyên lý Hệ điều hành 2.31 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.32 Phạm Quang Dũng ©2008 Cấu trúc vi nhân lai Mac OS X d) Modules Hầu hết HĐH đại thực thi kernel module: z Sử dụng phương pháp hướng đối tượng z Mỗi thành phần hạt nhân tách biệt z Mỗi thành phần giao tiếp với thành phần khác qua giao diện định trước z Mỗi thành phần nạp vào kernel cần thiết Tổng quát: tương tự lớp phức tạp Bài giảng Nguyên lý Hệ điều hành 2.33 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Cấu trúc mơđun HĐH Solaris 2.34 Phạm Quang Dũng ©2008 2.7 Virtual Machines Một máy ảo (virtual machine) chương trình giả lập phần cứng (hardware simulator) Chạy N copy chương trình giả lập này, máy vật lý trở thành N máy ảo Mỗi máy ảo chạy: z tiến trình đơn HĐH đơn z tất tiến trình user HĐH z HĐH chia sẻ thời gian phức tạp (vd: để gỡ rối) “HĐH” (Virtual Machine) có phần: z Trình giả lập phần cứng - hardware simulator, z Tài nguyên (processor, memory) chia sẻ trình giả lập, z HĐH chạy trình giả lập Bài giảng Nguyên lý Hệ điều hành 2.35 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.36 Phạm Quang Dũng ©2008 Các mơ hình hệ thống VM non-VM Các lợi điểm Virtual Machine Virtual-machine cung cấp bảo vệ hồn tồn tài ngun hệ thống máy ảo tách biệt với máy ảo khác Rất lý tưởng cho việc nghiên cứu phát triển HĐH Sự phát triển hệ thống ảo không phá vỡ hoạt động hệ thống thật Non-virtual Machine Bài giảng Nguyên lý Hệ điều hành Virtual Machine 2.37 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành Các bất lợi Virtual Machine 2.38 Phạm Quang Dũng ©2008 Kiến trúc VMware Khơng chia sẻ trực tiếp tài nguyên Khó thực Để tăng hiệu quả, chạy lệnh không đặc quyền phần cứng Nhưng điều xảy nếu… z Chương trình người sử dụng trình giả lập tạo system call chế độ thực (real user mode), gây ngắt thực z HĐH thực chế độ real kernel, thiết lập trình giả lập thành chế độ simulated kernel, khởi động lại thực trình giả lập chế độ real user z Trình giả lập chạy lệnh đặc quyền (vd: I/O) chế độ real user, gây real trap z HĐH thực giả lập I/O chế độ real kernel, khởi động lại trình giả lập chế độ simulated kernel real user Nếu điều khó hiểu, tưởng tượng xem việc viết code xử lý khó khăn nào… Bài giảng Nguyên lý Hệ điều hành 2.39 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.40 Phạm Quang Dũng ©2008 10 Java Virtual Machine Java Virtual Machine (tiếp) Các chương trình Java sau biên dịch thành tệp bytecode có tính trung lập (platform-neutral bytecode, có tên mở rộng class), thực Java Virtual Machine (JVM) JVM bao gồm: - trình nạp lớp (class loader) - trình xác định lớp (class verifier) - trình thơng dịch thời gian chạy (runtime interpreter) Trình thơng dịch Java là: z mơđun phần mềm thơng dịch bytecode lần z Just-In-Time (JIT) compiler chuyển bytecode thành ngôn ngữ máy tự nhiên → làm tăng hiệu Bài giảng Nguyên lý Hệ điều hành 2.41 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.42 Phạm Quang Dũng ©2008 2.8 System Generation (SYSGEN) SYSGEN (tiếp) Các HĐH thiết kế để chạy loại máy nào; sau hệ Các thơng tin sau thường System generation sử thống phải cấu hình cho máy tính cụ thể Tiến trình dụng để tạo bảng thích hợp mơ tả hệ thống để sinh gọi System generation hệ thống HĐH thường phân phối đĩa CD Để tạo HĐH, sử dụng chương trình đặc biệt - SYSGEN Sau hệ thống sinh ra, phải phần cứng sử dụng → để phần cứng biết nơi chứa nhân HĐH Chương trình SYSGEN xác định thơng tin liên quan đến cấu hình riêng hệ thống phần cứng từ file yêu cầu người sử dụng (kernel), nạp nào? Booting – trình khởi động máy tính cách nạp nhân cung cấp: Bootstrap program – đoạn mã chứa ROM hầu z Sử dụng CPU nào? Dung lượng nhớ khả dụng? z Thông tin thiết bị khả dụng? hết hệ thống máy tính để xác định vị trí nhân, z Các lựa chọn HĐH yêu cầu? Những giá trị tham số nạp vào nhớ, bắt đầu thực sử dụng? Bài giảng Nguyên lý Hệ điều hành 2.43 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 2.44 Phạm Quang Dũng ©2008 11 ... Passing Bài giảng Nguyên lý Hệ điều hành 2. 21 Phạm Quang Dũng ? ?20 08 Bài giảng Nguyên lý Hệ điều hành 2. 22 Phạm Quang Dũng ? ?20 08 2. 4 Các chương trình hệ thống 2. 5 Thiết kế thực thi HĐH Các chương. .. chồng Bài giảng Nguyên lý Hệ điều hành 2. 11 Phạm Quang Dũng ? ?20 08 Bài giảng Nguyên lý Hệ điều hành 2. 12 Phạm Quang Dũng ? ?20 08 Mối quan hệ API – System Call – HĐH Ví dụ thư viện C chuẩn Chương. .. chức không phân định rõ ràng Bài giảng Nguyên lý Hệ điều hành Cấu trúc lớp MS-DOS 2. 27 Phạm Quang Dũng ? ?20 08 Bài giảng Nguyên lý Hệ điều hành 2. 28 Phạm Quang Dũng ? ?20 08 HĐH phân lớp Cấu trúc HĐH