You are on page 1of 46

NGUYÊN LÝ HỆ ĐIỀU HÀNH

CẤU TRÚC HỆ ĐIỀU HÀNH


Nội dung

 Các dịch vụ của HĐH – OS Services


 Giao diện người sử dụng – User OS Interface
 Gọi hệ thống – System calls
 Các kiểu gọi hệ thống – Type of system calls
 Chương trình hệ thống – System programs

Lê Minh Tuấn @2013


Nội dung (tiếp)

 Thiết kế và cài đặt – Design and


Implementation
 Cấu trúc HĐH – OS Structure
 Tìm và khắc phục lỗi – Debugging
 Khởi động – System boot

Lê Minh Tuấn @2013


Mục tiêu

 Mô tả các dịch vụ một HĐH cung cấp cho


người sử dụng, tiến trình và các hệ thống khác
 Thảo luận các cách tổ chức khác nhau của một
hệ điều hành
 Giải thích cách cài đặt, cá nhân hóa HĐH và
cách hệ thống khởi động

Lê Minh Tuấn @2013


Các dịch vụ của HĐH

 HĐH cung cấp môi trường thực thi và các dịch


vụ cho ứng dụng và người dùng
 Một tập dịch vụ cung cấp các chức năng tiện
ích cho người sử dụng
 Giao diện người dùng (User Interface): Hầu hết các HĐH
đều cung cấp giao diện người sử dụng (UI)
 Nhiều biến thể:
− Command Line (CLI)
− Graphic User Interface (GUI)
− Batch

Lê Minh Tuấn @2013


Các dịch vụ của HĐH (tiếp)

 Một tập dịch vụ cung cấp các chức năng tiện


ích cho người sử dụng (2)
 Thực thi chương trình (Program Execution): hệ thống có
khả năng load chương trình vào bộ nhớ, chạy chương
trình, kết thúc thực thi, dừng chương trình (abbort)
 Thao tác vào ra (I/O Operations): các chương trình đang
thực thi có thể yêu cầu I/O, liên quan đến file hoặc thiết
bị I/O

Lê Minh Tuấn @2013


Các dịch vụ của HĐH (tiếp)

 Một tập dịch vụ cung cấp các chức năng tiện


ích cho người sử dụng (3)
 Thao tác hệ thống file (File system manipulation): thao tác
trên file, thư mục như đọc, ghi, tạo, xóa, tìm kiếm, hiển
thị thông tin, quản lý quyền truy cập
 Truyền thông (communications): trao đổi thông tin giữa
các tiến trình trong cùng hệ thống hoặc qua mạng
 Phát hiện lỗi (Error detection): khả năng phát hiện và xử

lý lỗi

Lê Minh Tuấn @2013


Các dịch vụ của HĐH (tiếp)

 Một tập dịch vụ khác đảm bảo hệ thống hoạt


động hiệu quả
 Cấp phát tài nguyên (Resource allocation): cấp phát tài
nguyên cho người dùng hoặc công việc một cách hiệu quả
khi có nhiều người dùng hoặc công việc chạy đồng thời
 Kế toán thống kê (Accounting): theo dõi người dùng nào
sử dụng tài nguyên gì và bao nhiêu
 Bảo vệ và an ninh (Protection and security): đảm bảo rằng

việc truy cập tài nguyên hệ thống có kiểm soát


(protection) và chống lại sự tấn công từ bên ngoài vào hệ
thống (security)

Lê Minh Tuấn @2013


Tổng quan các dịch vụ của HĐH

Tổng quan các dịch vụ của hệ điều hành

Lê Minh Tuấn @2013


Giao diện người dùng - CLI

 CLI hay command interpreter cho phép nhập


trực tiếp lệnh
 Được cài đặt trong nhân hệ thống, hoặc chương trình hệ
thống
 Có thể có nhiều biến thể - shells

 Nhận lệnh từ người dùng và thực thi

 Các lệnh

 Build-in
 Tên ứng dụng

Lê Minh Tuấn @2013


Bourne Shell Command Interpreter

Lê Minh Tuấn @2013


Giao diện người dùng - GUI

 Giao diện desktop thân thiện


 Thường là mouse, keyboard, và monitor
 Icons đại diện cho files, programs, hành động, etc

 Nhiều hình dáng con trỏ chuột khi di chuyển qua đối

tượng trong giao diện người dùng tùy thuộc theo các
hành động (cung cấp thông tin, các tùy chọn, thực thi, mở
thư mục (folder))
 Nhiều hệ thống hiện nay có cả CLI và GUI
 Microsoft Windows có cả GUI và CLI “command” shell
 Apple Mac OS X is “Aqua” GUI và shells

 Unix và Linux có CLI và các tùy chọn GUI (CDE, KDE,


GNOME)
Lê Minh Tuấn @2013
Màn hình cảm ứng

 Thiết bị với màn hình


cảm ứng (touchscreen)
yêu cầu một giao diện
mới
 Không dùng chuột
 Hành động và chọn dựa
trên điệu bộ cử chỉ
 Bàn phím ảo hỗ trợ nhập

văn bản
 Ra lệnh bằng giọng nói

Lê Minh Tuấn @2013


Gọi hệ thống

 System calls

 Giao diện lập trình tới dịch vụ được cung cấp


bởi HĐH

 Thường được viết bằng ngôn ngữ bậc cao (C


hoặc C++)

Lê Minh Tuấn @2013


Gọi hệ thống (tiếp)

 Được gọi bởi chương trình thông qua các


Application Programming Interface (API) thay
vì gọi trực tiếp

 Ba APIs phổ biến là:


 Win 32 API dành cho Windows
 POSIX API dành cho Unix, Linux và Max OS X

 Java API dành cho máy ảo Java

Lê Minh Tuấn @2013


Ví dụ về gọi hệ thống

 Gọi hệ thống tự sao chép nội dung của một tệp


tin vào một tệp tin khác

Lê Minh Tuấn @2013


Example of Standard API

Lê Minh Tuấn @2013


Cài đặt gọi hệ thống

 Mỗi gọi hệ thống được gắn một số


 Giao diện gọi hệ thống (System call interface) duy trì một
bảng chỉ mục theo các số này
 Bộ gọi (caller) không cần biết các system call
được cài đặt như thế nào
 Chỉ cần tuân theo các quy gọi API tương ứng
và hiểu OS trả về kết quả gì
 Hầu hết chi tiết giao diện HĐH ẩn đối với các lập trình
viên

Lê Minh Tuấn @2013


API – System Call – OS Relationship

Lê Minh Tuấn @2013


Truyền tham số cho gọi hệ thống

 Thông thường, nhiều thông tin yêu cầu được


cung cấp cho gọi hệ thống
 Kiểu và số lượng thông tin truyền cho gọi hệ thống phụ
thuộc vào HĐH
 Có 3 phương thức được sử dụng để truyền
tham số (parameter)
 Truyền qua thanh ghi (registers)
 Trong một vài trường hợp, số tham số có thể nhiều hơn số
thanh ghi

Lê Minh Tuấn @2013


Truyền tham số cho gọi hệ thống

 Có 3 phương thức được sử dụng để truyền


tham số (parameter) (tiếp)
 Tham số được lưu trong một khối (block), hoặc bảng
(table), trong bộ nhớ, và địa chỉ của một khối được truyền
như là một tham số trong thanh ghi
 Linux và Solaris thực hiện theo cách này
 Tham số được đặt vào (push) ngăn xếp (stack) bởi chương
trình và lấy ra (pop) khỏi stack bởi HĐH
 Block và stack không giới hạn độ dài hay số lượng tham số

truyền vào

Lê Minh Tuấn @2013


Truyền tham số qua bảng

Lê Minh Tuấn @2013


Các kiểu gọi hệ thống

 Điều khiển tiến trình (process control)


 Tạo, chấm dứt tiến trình
 Kết thúc, hủy bỏ tiến trình

 Nạp, thực thi

 Lấy, đặt (get, set) các thuộc tính tiến trình

 Đợi (time)

 Đợi sự kiện, tín hiệu

 Cấp phát và giải phóng tài nguyên

 Dump memory (màn hình xanh)

 Tìm và sửa lỗi

 Quản lý truy cập tài nguyên chia sẻ giữa các tiến trình

Lê Minh Tuấn @2013


Các kiểu gọi hệ thống (tiếp)

 Quản lý file (file management)


 Tạo, xóa file
 Đóng, mở file

 Đọc, ghi, đặt lại vị trí

 Lấy, đặt các thuộc tính file

 Quản lý thiết bị (Device management)


 Yêu cầu, giải phóng thiết bị
 Đọc, ghi

 Lấy, đặt các thuộc tính thiết bị

 attach hoặc detach thiết bị

Lê Minh Tuấn @2013


Các kiểu gọi hệ thống (tiếp)

 Information maintenance
 Lấy, đặt lại time hoặc date
 Lấy, đặt system data

 Lấy, đặt tiến trình, file, hoặc thuộc tính thiết bị

 Communications
 Tạo, xóa kết nối truyền thông
 Gửi, nhận tin nhắn nếu message passing model tới host
name hoặc process name
 Từ client tới server

Lê Minh Tuấn @2013


Các kiểu gọi hệ thống (tiếp)

 Communications (tiếp)
 Shared-memory model tạo và truy cập vào vùng nhớ
 Truyền thông tin trạng thái

 attach và detach remote devices

 Protection
 Kiểm soát truy cập đến tài nguyên
 Thiết lập quyền (permission)

 Kiểm soát truy cập của người dùng

Lê Minh Tuấn @2013


Ví dụ về gọi hệ thống

Lê Minh Tuấn @2013


Ví dụ: thư viện chuẩn C

 C sử dụng printf(), sẽ gọi đến gọi hệ thống


write()

Lê Minh Tuấn @2013


Ví dụ: MS-DOS

 Đơn nhiệm
 Shell được gọi khi system booted
 Phương thức đơn giản để chạy chương trình
 Không có tiến trình nào được tạo ra
 Không gian bộ nhớ đơn
 Nạp chương trình vào bộ nhớ, ghi đè tất cả trừ
kernel
 Thoát chương trình -> nạp lại shell

Lê Minh Tuấn @2013


Example: MS-DOS

At system startup running a program

Lê Minh Tuấn @2013


Ví dụ: FreeBSD

 Đa nhiệm
 User login -> gọi shell người
dùng
 Shell thực thi fork() để tạo tiến
trình
 Thực thi exec() nạp chương trình vào
tiến trình
 Shell đợi tiến trình kết thúc hoặc tiếp tục

với lệnh người dùng mới


 Tiến trình kết thúc với
 code = 0 – không lỗi
 code > 0 – mã lỗi
Lê Minh Tuấn @2013
Chương trình hệ thống

 Cung cấp môi trường thuận lợi để phát triển và


thực thi chương trình. Được chia thành:
 File manipulation
 Status information sometimes stored in a File modification

 Programming language support

 Program loading and execution

 Communications

 Background services

 Application programs

Lê Minh Tuấn @2013


Thiết kế và cài đặt hệ điều hành

 Một vài cách tiếp cận đã được chứng minh


 Cấu trúc bên trong các HĐH khác nhau thì
khác nhau
 Xác định mục tiêu và đặc tả
 Bị ảnh hưởng bởi phần cứng, loại hệ thống
 Mục tiêu người dùng, mục tiêu hệ thống
 Người dùng: thân thiện, dễ sử dụng, tin cậy, an toàn và
nhanh chóng
 Hệ thống: dễ thiết kế, cài đặt, bảo trì, linh hoạt, không có
lỗi, và hiệu quả

Lê Minh Tuấn @2013


Cấu trúc hệ điều hành

 Nhiều kiểu
 Simple structure -- MS-DOS
 More complex -- UNIX

 Layered -- an abstraction

 Microkernel -- Mach

Lê Minh Tuấn @2013


Simple Structure -- MS-DOS

 MS-DOS – viết nhằm


cung cấp nhiều chức
năng nhất với ít bộ
nhớ nhất
 Không phân chia thành
các modules
 Mặc dù MS-DOS có vài
cấu trúc, giao diện và
mức chức năng không
phân chia một cách rõ
ràng

Lê Minh Tuấn @2013


Non Simple Structure -- UNIX

 UNIX – giới hạn bởi chức năng phần cứng, bản


gốc UNIX có cấu trúc hạn chế. UNIX bao gồm
hai phần riêng biệt
 Systems programs
 The kernel

 Bao gồm mọi thứ bên dưới giao diện gọi hệ thống và bên
trên phần cứng máy tính
 Cung cấp hệ thống file, lập lịch CPU, quản lý memory, và các
chức năng khác của HĐH

Lê Minh Tuấn @2013


Traditional UNIX System Structure

Lê Minh Tuấn @2013


Layered Approach

 HĐH được chia thành


từng lớp (layer), mỗi
lớp được xây dựng
trên đỉnh lớp thấp hơn.
Lớp trong cùng (layer
0), là phần cứng; Lớp
ngoài cùng (layer N) là
giao diện người dùng.

Lê Minh Tuấn @2013


Microkernel System Structure

 Dịch chuyển từ kernel sang không gian người


dùng
 Giao tiếp giữa các module người dùng sử dụng
phương pháp truyền thông điệp
 Lợi ích:
 Dễ dàng mở rộng một microkernel
 Dễ dàng chuyển HĐH sang kiến trúc mới

 Tăng độ tin cậy (ít mã nguồn được chạy ở kernel)

 An toàn hơn

 Bất lợi:
 Chi phí hiệu năng giao tiếp giữa không gian người dùng và
nhân hệ thống Lê Minh Tuấn @2013
Microkernel System Structure

Application File Device user


Program System Driver mode

messages messages

Interprocess memory CPU kernel


Communication managment scheduling mode

microkernel

hardware

Lê Minh Tuấn @2013


Modules

 Nhiều HĐH hiện đại cài đặt loadable kernel


modules
 Sử dụng cách tiếp cận hướng đối tượng (object-oriented)
 Các thành phần riêng rẽ

 Giao tiếp với nhau thông qua giao diện

 Được nạp khi cần trong kernel

 Giống như layers nhưng linh động hơn


 Linux, Solaris, etc

Lê Minh Tuấn @2013


Solaris Modular Approach

Lê Minh Tuấn @2013


Operating-System Debugging

 Debugging là tìm và sửa lỗi, hoặc bugs


 HĐH ghi lỗi vào log files
 Một ứng dụng lỗi có thể tạo ra core dump file
ghi lại bộ nhớ của tiến trình
 HĐH lỗi có thể tạo ra crash dump file chứa bộ
nhớ kernel
 Tùy thuộc vào lỗi, performance tuning có thể
tối ưu hóa hiệu năng của hệ thống
 Dùng trace liệt kế các hành động, ghi lại để phân tích

Lê Minh Tuấn @2013


Performance Tuning

 Tăng hiệu năng bằng


cách loại bỏ nút thắt
(bottlenecks)
 Ví dụ, Windows Task
Manager

Lê Minh Tuấn @2013


System Boot

 HĐH phải được tạo sẵn cho phần cứng


 Bộ phận nhỏ của mã – trình nạp khởi động (bootstrap
loader), được lưu trong ROM hoặc EEPROM định vị
kernel, nạp vào bộ nhớ, và bắt đầu khởi động
 Đôi khi 2-bước của quá trình ở đó khối khởi động (boot

block) tại vị trí cố định được nạp bởi ROM, nạp trình khởi
động từ đĩa

Lê Minh Tuấn @2013


Bài tập

Lê Minh Tuấn @2013

You might also like