Bài giảng Hệ điều hành - Chương 2: Cấu trúc hệ điều hành - Hà Duy An

iao diện lời gọi hệ thống (System-call interface): cung cấp giao

diện trực tiếp đến các lời gọi hệ thống bên trong nhân => bắt các lời

gọi hàm trong API và gọi các lời gọi hệ thống cần thiết

• Thông thường, mỗi system call sẽ được kết hợp với một số

o Giao diện lời gọi hệ thống duy trì một bảng được lặp chỉ mục theo các

số này

• Giao diện lời gọi hệ thống gọi system call được chỉ định trong nhân

HĐH (OS kernel) và trả về trạng thái + giá trị (nếu có) của lời gọi hệ

thống

• Người lập trình không cần biết bất cứ gì về cách thức system call

được cài đặt

o Chỉ cần tuân theo API và hiểu HĐH sẽ làm gì khi thực hiện một lời gọi

o Hầu hết các chi tiết của giao diện HĐH ẩn với người lập trình bởi API

ịnh danh của lời gọi hệ thống (kiểu, dữ liệu, tùy chọn)

• Nhìn chung có 3 phương pháp để truyền tham số cho HĐH:

o Đơn giản nhất: truyền qua các thanh ghi

• Có thể có nhiều tham số hơn số lượng thanh ghi có thể chứa

o Các tham số được lưu trữ như là một khối (block) hay bảng

(table) trong bộ nhớ và địa chỉ của khối hay bảng tham số được

truyền như là một tham số vào thanh ghi (Linux, Solaris)

o Dùng stack: các tham số được đặt (pushed) vào stack bởi chương

trình và lấy ra bởi HĐH

o Phương pháp dùng block hay stack không giới hạn số lượng hay

chiều dài của tham số cần truyền

pdf45 trang | Chia sẻ: trungkhoi17 | Lượt xem: 513 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 2: Cấu trúc hệ điều hành - Hà Duy An, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An 1. Các dịch vụ của hệ điều hành 2. Giao diện người dùng 3. Lời gọi hệ thống 4. Chương trình hệ thống 5. Thiết kế và cài đặt 6. Cấu trúc hệ điều hành 8/17/2013 Chương 2: Cấu trúc hệ điều hành2 8/17/2013 Chương 2: Cấu trúc hệ điều hành4 • HĐH cung cấp môi trường cho các chương trình thực thi và các dịch vụ cho các chương trình và người dùng. • Các dịch vụ cung cấp các tính năng hữu ích với người dùng: o User interface (UI) - Hầu hết tất cả các hệ điều hành điều có một giao diện người dùng: Command-Line (CLI), Graphics User Interface (GUI), Batch. o Program execution – nạp chương trình vào bộ nhớ, thực thi và kết thúc nó o I/O operations – do chương trình người dùng không thể thực hiện trực tiếp các thao tác I/O, HĐH phải cung cấp phương tiện để thực hiện thao tác I/O (file trên đĩa hay các thiết bị I/O khác) o File-sytem manipulation – cung cấp các phương tiện để chương trình có thể đọc, ghi, tạo, xóa, liệt kê, tìm kiếm, quản lý quyền truy cập trên tập tin/thư mục. 8/17/2013 Chương 2: Cấu trúc hệ điều hành5 • Communications – các tiến trình có thể trao đổi thông tin với nhau trên cùng một máy tính hay giữa các máy tính thông qua mạng o Việc giao tiếp có thể qua bộ nhớ chia sẽ (shared memory) hay qua phương thức truyền thông điệp (message passing) • Error detection – để bảo đảm tính toán chính xác HĐH cần phát hiện ra các lỗi xảy ra trong hệ thống o Có thể tồn tại trong CPU, memory, I/O devices, user program o Với mỗi loại lỗi, HĐH cần có một cơ chế thích hợp để đảm bảo việc tính toán là chính xác và nhất quán. 8/17/2013 Chương 2: Cấu trúc hệ điều hành6 • Các dịch vụ đảm bảo sự hoạt động hiệu quả của chính hệ thống với cơ chế chia sẽ tài nguyên o Resource allocation – khi có nhiều người dùng hay nhiều công việc đang thực thi đồng thời, các nguồn tài nguyên phải được cấp phát cho mỗi công việc • Có nhiều loại tài tài nguyên – một vài loại có mã cấp phát riêng biệt (CPU cycles, main memory, file storage), những loại khác có mã yêu cầu và giải phóng tài nguyên chung (I/O devices) o Accounting - theo dõi và ghi lại thông tin sử dụng tài nguyên của người dùng để làm cơ sở tính tiền sử dụng hệ thống hoặc thống kê sử dụng. 8/17/2013 Chương 2: Cấu trúc hệ điều hành7 • Protection and security – đảm bảo rằng tất cả truy cập đến hệ thống đều được kiểm soát. o Protection: đảm bảo tất cả các truy cập đến các nguồn tài nguyên của hệ thống điều được kiểm soát o Security: đảm bảo an toàn cho hệ thống từ các truy cập bên ngoài o Để đảm bảo an toàn, sự phòng ngừa phải được thực hiện trên toàn hệ thống 8/17/2013 Chương 2: Cấu trúc hệ điều hành8 • CLI hay command interpreter cho phép nhập các câu lệnh trực tiếp o Có thể được cài đặt trong nhân hay như là một chương trình hệ thống (system program) o Một hệ thống có thể cài đặt nhiều CLI – shells • Các CLI có thể được cung cấp bởi bên thứ 3 o Chức năng chính là lấy lệnh từ người dùng và thực thi nó o Các lệnh trên shell có thể được cài đặt: • Shell chứa mã thực thi các lệnh của người dùng • Shell thực thi các lệnh của người dùng bằng cách gọi các chương trình bên ngoài => chương trình CLI nhỏ, việc cập nhật các lệnh không ảnh hưởng đến CLI 8/17/2013 Chương 2: Cấu trúc hệ điều hành10 8/17/2013 Chương 2: Cấu trúc hệ điều hành11 • Giao diện người dùng đồ họa (Desktop): thân thiện, dễ sử dụng o Mouse, keyboard, monitor o Icons hiển thị file, chương trình, thao tác, o Các sự kiện chuột trên những đối tượng khác nhau trên giao diện là cơ sở cho các thao tác khác nhau o Phát minh tại Xerox PARC • Nhiều hệ thống ngày nay có cả CLI và GUI: o Microsoft Windows o Apple Mac OS X o Unix và Linux GUI (CDE, KDE, GNOME), CLI (BASH SHELL, C SHELL, ) 8/17/2013 Chương 2: Cấu trúc hệ điều hành12 8/17/2013 Chương 2: Cấu trúc hệ điều hành13 • Giao diện màn hình cảm ứng: o Không sử dụng chuột o Các thao tác dựa trên cử chỉ o Dùng bàn phím ảo • Lời gọi hệ thống (System call) là giao diện lập trình để sử dụng các dịch vụ được cung cấp bởi hệ điều hành • Thường được viết bằng ngôn ngữ cấp cao (C, C++) • Hầu hết các chương trình sử dụng system call thông qua một giao diện lập trình ứng dụng ở mức cao (API) hơn là dùng trực tiếp • 3 API phổ biến nhất: o Windows API (HĐHWindows) o POSIX API cho POSIX-based systems (tất cả các phiên bản của UNIX, Linux, Mac OS X) o Java API cho Java virtual machine (JVM) 8/17/2013 Chương 2: Cấu trúc hệ điều hành15 • Sử dụng system call để sao chép tuần tự nội dung một file vào một file khác: 8/17/2013 Chương 2: Cấu trúc hệ điều hành16 • Giao diện lời gọi hệ thống (System-call interface): cung cấp giao diện trực tiếp đến các lời gọi hệ thống bên trong nhân => bắt các lời gọi hàm trong API và gọi các lời gọi hệ thống cần thiết • Thông thường, mỗi system call sẽ được kết hợp với một số o Giao diện lời gọi hệ thống duy trì một bảng được lặp chỉ mục theo các số này • Giao diện lời gọi hệ thống gọi system call được chỉ định trong nhân HĐH (OS kernel) và trả về trạng thái + giá trị (nếu có) của lời gọi hệ thống • Người lập trình không cần biết bất cứ gì về cách thức system call được cài đặt o Chỉ cần tuân theo API và hiểu HĐH sẽ làm gì khi thực hiện một lời gọi o Hầu hết các chi tiết của giao diện HĐH ẩn với người lập trình bởi API 8/17/2013 Chương 2: Cấu trúc hệ điều hành18 8/17/2013 Chương 2: Cấu trúc hệ điều hành19 • Thông thường, nhiều thông tin được yêu cầu hơn là chỉ có định danh của lời gọi hệ thống (kiểu, dữ liệu, tùy chọn) • Nhìn chung có 3 phương pháp để truyền tham số cho HĐH: o Đơn giản nhất: truyền qua các thanh ghi • Có thể có nhiều tham số hơn số lượng thanh ghi có thể chứa o Các tham số được lưu trữ như là một khối (block) hay bảng (table) trong bộ nhớ và địa chỉ của khối hay bảng tham số được truyền như là một tham số vào thanh ghi (Linux, Solaris) o Dùng stack: các tham số được đặt (pushed) vào stack bởi chương trình và lấy ra bởi HĐH o Phương pháp dùng block hay stack không giới hạn số lượng hay chiều dài của tham số cần truyền 8/17/2013 Chương 2: Cấu trúc hệ điều hành20 8/17/2013 Chương 2: Cấu trúc hệ điều hành21 • Các System Call có thể được nhóm vào trong 6 loại chính: process control, file manipulation, device manipulation, information maintenance, communications, protection • Process control o end, abort o load, execute o create process, terminate process o get process attributes, set process attributes o wait for time o wait event, signal event o allocate and free memory 8/17/2013 Chương 2: Cấu trúc hệ điều hành22 • File management o create file, delete file o open, close file o read, write, reposition o get and set file attributes • Device management o request device, release device o read, write, reposition o get device attributes, set device attributes o logically attach or detach devices 8/17/2013 Chương 2: Cấu trúc hệ điều hành23 • Information maintenance o get time or date, set time or date o get system data, set system data o get and set process, file, or device attributes • Communications o create, delete communication connection o send, receive messages if message passing model to host name or process name • From client to server o Shared-memory model create and gain access to memory regions o transfer status information o attach and detach remote devices 8/17/2013 Chương 2: Cấu trúc hệ điều hành24 • Protection o Control access to resources o Get and set permissions o Allow and deny user access 8/17/2013 Chương 2: Cấu trúc hệ điều hành25 8/17/2013 Chương 2: Cấu trúc hệ điều hành26 • Các chương trình hệ thống (System Programs) cung cấp một môi trường thuận lợi cho việc phát triển và thực thi chương trình. Nó có thể đơn giản là giao diện đến các lời gọi hệ thống hay phức tạp hơn. Bao gồm: o File management o Status information o File modification o Programming language support o Program loading and execution o Communications o Background services • Hầu hết người dùng quan tâm đến các chương trình hệ thống được cung cấp kèm theo HĐH, mà không cần biết về system call 8/17/2013 Chương 2: Cấu trúc hệ điều hành29 • File management – Create, delete, copy, rename, print, dump, list, và các thao tác chung trên các file và thư mục • Status information o Là những chương trình yêu cầu hệ thống cung cấp các thông tin như ngày, giờ, lượng bộ nhớ hay đĩa sẵn dùng, số lượng người dùng. o Hay các thông tin chi tiết phức tạp hơn: tình trạng thực thi, logging, debugging o Các chương trình này định dạng và xuất dữ liệu ra máy in hay các thiết bị xuất khác o Vài hệ thống cài đặt một registry – dùng để lưu trữ và truy xuất thông tin cấu hình 8/17/2013 Chương 2: Cấu trúc hệ điều hành30 • File modification o Các trình soạn thảo văn bản dùng để tạo và sửa đổi file o Có cung cấp các lệnh để tìm kiếm nội dung file hay thực hiện việc chuyển đổi văn bản • Programming-language support – Compilers, assemblers, debuggers, interpreters cho các ngôn ngữ phổ biến • Program loading and execution – Absolute loaders, relocatable loaders, linkage editors, and overlay-loaders, debugging systems for higher-level and machine language • Communications – cung cấp cơ chế để tạo các kết nối ảo giữa các tiến trình, người dùng hay các hệ thống máy tính 8/17/2013 Chương 2: Cấu trúc hệ điều hành31 • Background Services: disk checking, error monitoring, network daemon o Khởi chạy vào thời gian hệ thống được khởi động • Vài chương trình dùng để khởi động hệ thống, sau đó kết thúc • Vài chương trình thực thi đến khi hệ thống shutdown o Chạy trong chế độ người dùng o Được biết như là services, subsystems, daemons 8/17/2013 Chương 2: Cấu trúc hệ điều hành32 8/17/2013 Chương 2: Cấu trúc hệ điều hành33 • Có nhiều hướng tiếp cận • Cấu trúc bên trong các HĐH có thể rất khác nhau • Bắt đầu bằng việc xác định các mục tiêu và đặt tả kỹ thuật o Phần cứng, kiểu hệ thống (batch, time sharing, single user, multiuser, distributed, real time, or general purpose) • Mục tiêu người dùng và mục tiêu hệ thống: o Mục tiêu người dùng: HĐH cần tiện dụng, dễ học, đáng tin cậy, an toàn và nhanh o Mục tiêu hệ thống: HĐH cần dễ thiết kế, cài đặt và bảo trì, linh hoạt, tin cậy, không lỗi và hiệu quả 8/17/2013 Chương 2: Cấu trúc hệ điều hành34 • Nguyên tắt quan trọng: phân chia chính sách (policy) và cơ chế (Mechanism) o Chính sách : cái gì được làm? o Cơ chế : làm như thế nào? • Đây là nguyên tắt quan trọng cho phép hệ thống có khả năng linh hoạt cao khi các chính sách bị thay đổi sau đó 8/17/2013 Chương 2: Cấu trúc hệ điều hành35 • Ngôn ngữ sử dụng: o Hợp ngữ o Các ngôn ngữ lập trình hệ thống nhưAlgol, PL/1 o C, C++ • Thực tế thường là sự kết hợp của nhiều ngôn ngữ: o Mức thấp: hợp ngữ o Phần chính: C o Các chương trình hệ thống: C, C++, scripting languages (PERL, Python, shell scripts) • Việc dùng ngôn ngữ cấp cao cho phép HĐH dễ thực thi trên các phần cứng khác nhau nhưng chậm hơn 8/17/2013 Chương 2: Cấu trúc hệ điều hành36 8/17/2013 Chương 2: Cấu trúc hệ điều hành37  Các hệ điều hành đa mục đích rất lớn và phức tạp  Các thành phần cần được bố trí cẩn thận => đảm bảo các chức năng và dễ bổ xung sửa đổi • MS-DOS – được viết để cung cấp nhiều chức năng nhất với dung lượng nhỏ nhất. o Không được chia thành các modules. o Mặc dù MS-DOS được tổ chức có cấu trúc, nhưng các mức chức năng và giao diện giữa chúng không được tách biệt rõ ràng. 8/17/2013 Chương 2: Cấu trúc hệ điều hành38 • UNIX – bị giới hạn bởi phần cứng, hệ điều hành UNIX khởi đầu có cấu trúc giới hạn. Gồm 2 phần riêng biệt: o Các chương trình hệ thống o Nhân (kernel) • Bao gồm tất cả những gì bên dưới giao diện lời gọi hệ thống và bên trên phần cứng • Cung cấp hệ thống quản lý tập tin, định thời CPU, quản lý bộ nhớ, và các chức năng khác của HĐH => một lượng lớn các chức năng trong cùng một mức 8/17/2013 Chương 2: Cấu trúc hệ điều hành39 • Có cấu trúc hơi giống với cấu trúc phân tầng 8/17/2013 Chương 2: Cấu trúc hệ điều hành40 • HĐH được chia thành một số tầng (mức), mỗi tầng được xây dựng trên nền tảng của một tầng khác thấp hơn. Tầng thấp nhất (layer 0) là tầng vật lý, tầng cao nhất (layer N) là giao diện người dùng. • Sự phân chia chức năng được thực hiện sao cho mỗi một tầng sẽ sử dụng các chức năng và các dịch vụ được cung cấp chỉ bởi các tầng mức thấp hơn 8/17/2013 Chương 2: Cấu trúc hệ điều hành41 • Di chuyển nhiều chức năng từ nhân lên mức người dùng, giữ lại các phần chính yếu: quản lý quá trình, bộ nhớ, giao tiếp giữa các quá trình→ nhân nhỏ hơn • Giao tiếp giữa các quá trình người dùng được thực hiện bằng cơ chế chuyển thông điệp gián tiếp thông qua nhân • Lợi ích: o Dễ dàng mở rộng HĐH như các dịch vụ mới, đưa vào không gian người dùng o Dễ dàng chuyển đổi HĐH sang các kiến trúc mới do nhân nhỏ hơn o Tin cậy và an toàn hơn (ít mã lệnh chạy ở mức nhân hơn) • Nhược điểm: o Chi phí cho việc giao tiếp giữa các tiến trình trong không gian người dùng và nhân 8/17/2013 Chương 2: Cấu trúc hệ điều hành42 8/17/2013 Chương 2: Cấu trúc hệ điều hành43 Application Program File System Device Driver Interprocess Communication memory managment CPU scheduling messagesmessages microkernel hardware user mode kernel mode • Hầu hết các HĐH dùng các loadable kernel module o Dùng tiếp cận hướng đối tượng o Các thành phần lõi được tách ra o Giao tiếp với nhau thông qua các interface o Được nạp vào trong nhân khi cần thiết • Nhìn chung gần giống với kiến trúc phân tầng nhưng linh hoạt hơn o Linux, Solaris, Mac OS X, Windows, 8/17/2013 Chương 2: Cấu trúc hệ điều hành44 8/17/2013 Chương 2: Cấu trúc hệ điều hành45 • Hầu hết các hệ điều hành không thật sự dùng một kiểu cấu trúc đơn nhất o Kết hợp nhiều hướng tiếp cận nhằm đạt được hiệu suất, độ an toàn, khả năng linh hoạt cao nhất có thể 8/17/2013 Chương 2: Cấu trúc hệ điều hành46

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_he_dieu_hanh_chuong_2_cau_truc_he_dieu_hanh_ha_duy.pdf
Tài liệu liên quan