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
45 trang |
Chia sẻ: phuongt97 | Lượt xem: 597 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Hệ điều hành - Chương II: 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:
- bai_giang_he_dieu_hanh_chuong_ii_cau_truc_he_dieu_hanh_ha_du.pdf