Nội dung chương 1<br />
<br />
BÀI GIẢNG<br />
<br />
NGUYÊN LÝ HỆ ĐIỀU HÀNH<br />
<br />
Hệ điều hành (Operating System) làm việc gì?<br />
Tổ chức của hệ thống máy tính<br />
Cấu trúc của HĐH<br />
<br />
Chương 1: Giới thiệu chung<br />
<br />
Hoạt động của HĐH<br />
Sự quản lý tiến trình<br />
Sự quản lý bộ nhớ chính<br />
<br />
Phạm Quang Dũng<br />
Bộ môn Khoa học máy tính<br />
Khoa Công nghệ thông tin<br />
Trường ĐH Nông nghiệp Hà Nội<br />
Website: fita.hua.edu.vn/pqdung<br />
<br />
Sự quản lý bộ nhớ lưu trữ<br />
Protection và Security<br />
Các môi trường sử dụng máy tính<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
Mục tiêu<br />
<br />
1.2<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
1.1. Hệ điều hành làm việc gì<br />
<br />
Cung cấp một chuyến du ngoạn lớn qua các thành<br />
<br />
Cung cấp sự tổng quát về tổ chức hệ thống máy tính<br />
<br />
Hệ điều hành (Operating System): Là một chương<br />
trình hoạt động như một lớp trung gian giữa người<br />
sử dụng máy tính và phần cứng máy tính.<br />
<br />
cơ bản.<br />
<br />
Các mục đích của HĐH:<br />
<br />
phần chính của hệ điều hành.<br />
<br />
Thực hiện các chương trình của người sử dụng và giúp<br />
việc giải các bài toán của người sử dụng dễ dàng hơn.<br />
Giúp cho việc sử dụng hệ thống máy tính thuận tiện hơn.<br />
Sử dụng phần cứng máy tính theo một cách hiệu quả.<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.3<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.4<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
1<br />
<br />
Cấu trúc của hệ thống máy tính<br />
<br />
Bốn thành phần hệ thống máy tính<br />
<br />
1. Phần cứng (Hardware) – cung cấp các tài nguyên<br />
tính toán cơ bản (CPU, memory, I/O devices)<br />
2. Hệ điều hành (Operating system) – điều khiển và sắp<br />
xếp việc sử dụng phần cứng trong các chương trình<br />
ứng dụng khác nhau đối với những người sử dụng<br />
khác nhau.<br />
3. Các chương trình ứng dụng (Applications programs)<br />
– định cách sử dụng tài nguyên hệ thống để giải<br />
quyết các bài toán của người sử dụng (word<br />
processors, compilers, database systems, video games)<br />
<br />
4. Users (people, machines, other computers)<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.5<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Các cách nhìn đối với hệ điều hành<br />
Là trình phân phối tài nguyên (Resource allocator) – quản lý và<br />
quyết định phân phối các tài nguyên (CPU, không gian bộ nhớ,<br />
các thiết bị vào/ra...) cho các yêu cầu nhằm đạt hiệu quả và<br />
công bằng.<br />
Là một chương trình điều khiển (Control program) – điều khiển<br />
sự thực hiện các chương trình của người sử dụng và sự hoạt<br />
động của các thiết bị vào/ra để ngăn các lỗi và sự sử dụng sai.<br />
Không có định nghĩa hoàn toán đúng về HĐH.<br />
Kernel (nhân) – là một chương trình chạy liên tục không<br />
ngừng trên máy tính (tất cả các chương trình khác là chương<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.6<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Những gì dễ nhầm với hệ điều hành?<br />
Các lệnh/ứng dụng truy vấn trạng thái hệ thống:<br />
<br />
ls (UNIX), Task<br />
<br />
Manager (Windows). Đó là các công cụ và không chạy liên tục.<br />
Các trình điều khiển thiết bị ngoại vi (drivers): khiến cho HĐH có<br />
thể sử dụng phần cứng mới, chúng là OS extensions chứ không<br />
phải là bản thân OS. Cũng giống như browser plugin và browser.<br />
Các phần mềm có thể đơn phương truy nhập phần cứng:<br />
VMWare là một virtual PC (không phải hardware). Có thể cài<br />
Windows “trên” nó.<br />
Java VM là một virtual machine (không phải hardware), API<br />
(application program interface) của nó là một HĐH suy rộng.<br />
(Careful: JavaOS là một project riêng)<br />
<br />
trình hệ thống hoặc chương trình ứng dụng).<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.7<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.8<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
2<br />
<br />
Tại sao phải nghiên cứu HĐH?<br />
Thiết kế HĐH là một nghiên cứu riêng (case study) rất<br />
tốt về thiết kế kỹ nghệ phần mềm.<br />
The better you know the OS, the better apps you<br />
write, the better you understand its bugs and work<br />
around them.<br />
HĐH sử dụng các thuật giải phức tạp, rất nhiều trong<br />
đó có thể được sử dụng lại trong các phần mềm<br />
khác, vd: phát hiện bế tắc (deadlock detection).<br />
<br />
Sự khởi động máy tính<br />
bootstrap program (chương trình mồi) được nạp khi<br />
bật máy hoặc khi khởi động lại.<br />
Thường được chứa trong ROM hoặc EPROM, thường được<br />
gọi là firmware.<br />
Khởi tạo tất cả các khía cạnh của hệ thống.<br />
Nạp nhân (kernel) của HĐH và bắt đầu sự thực hiện.<br />
<br />
HĐH cần có sự phát triển nhanh của phần cứng.<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.9<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
1.2. Tổ chức của hệ thống máy tính<br />
Một hoặc nhiều CPU, device controler kết nối với nhau bằng bus<br />
chung cho phép truy nhập bộ nhớ chia sẻ.<br />
Sự thực hiện đồng thời của CPU và các thiết bị cạnh tranh các<br />
chu kỳ bộ nhớ.<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.10<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Hoạt động của hệ thống máy tính<br />
Các thiết bị vào-ra và CPU có thể thực hiện đồng thời.<br />
Mỗi mạch điều khiển thiết bị (device controller) phụ trách một loại<br />
thiết bị riêng và có một bộ nhớ đệm riêng (local buffer).<br />
CPU chuyển dữ liệu từ/đến bộ nhớ chính đến/từ các buffer.<br />
Vào-ra từ thiết bị đến local buffer của mạch điều khiển.<br />
Mạch điều khiển thiết bị thông báo cho CPU biết nó đã hoàn tất<br />
công việc của nó bằng cách gây ra một ngắt (interrupt).<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.11<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.12<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
3<br />
<br />
Các chức năng chính của ngắt<br />
HĐH được điều khiển bằng ngắt (interrupt driven), nghĩa là mã<br />
lệnh của nó chỉ được gọi đến khi ngắt xuất hiện.<br />
Thông thường ngắt chuyển điều khiển cho thường trình dịch vụ<br />
ngắt thông qua vector ngắt (interrupt vector), có chứa địa chỉ của<br />
tất cả các thường trình dịch vụ ngắt (interrupt service routine).<br />
Kiến trúc ngắt (Interrupt architecture) phải lưu địa chỉ của lệnh bị<br />
ngắt.<br />
<br />
Xử lý ngắt<br />
HĐH duy trì trạng thái của CPU bằng cách lưu giữ nội dung các<br />
thanh ghi, bộ đếm chương trình (program counter - PC) và địa<br />
chỉ của lệnh bị ngắt.<br />
HĐH xác định loại ngắt nào đã xuất hiện và có những hành động<br />
thực hiện tương ứng:<br />
polling<br />
vectored<br />
<br />
Các ngắt đến bị vô hiệu (disabled) trong khi một ngắt đang được<br />
thực hiện để tránh bị mất ngắt (lost interrupt).<br />
<br />
Thường trình dịch vụ ngắt (interrupt service routine) chịu trách<br />
nhiệm thực hiện các ngắt, CPU được dành cho xử lý ngắt.<br />
<br />
Một bẫy (trap) là phần mềm tạo ngắt gây ra bởi một lỗi hoặc yêu<br />
cầu của người sử dụng.<br />
<br />
Sau khi phục vụ ngắt, HĐH khôi phục lại ngữ cảnh trước ngắt<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.13<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
Interrupt Timeline<br />
<br />
1.14<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Cấu trúc vào-ra<br />
Synchronous I/O: Sau khi bắt đầu vào-ra, quyền kiểm soát chỉ<br />
quay lại chương trình của người sử dụng khi vào-ra đó kết thúc.<br />
Chờ lệnh làm rỗi CPU cho đến khi có lệnh ngắt kế tiếp.<br />
Chờ theo vòng lặp kiểm tra CPU rỗi → tranh chấp truy nhập bộ nhớ.<br />
Tại một thời điểm, chỉ có 1 yêu cầu vào-ra được thực hiện, không có<br />
sự xử lý I/O đồng thời.<br />
<br />
Asynchronous I/O: Sau khi I/O bắt đầu, quyền kiểm soát quay lại<br />
chương trình của người sử dụng mà không cần chờ I/O kết thúc.<br />
System call – gửi yêu cầu tới HĐH cho phép người sử dụng đợi I/O<br />
kết thúc (nếu muốn).<br />
Bảng trạng thái thiết bị (Device-status table) chứa thông tin (entry)<br />
của mỗi thiết bị I/O cho biết trạng thái, địa chỉ và loại của thiết bị.<br />
HĐH tra cứu vào bảng I/O device để xác định trạng thái thiết bị và<br />
sửa đổi thông tin để thêm thông tin ngắt.<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.15<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.16<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
4<br />
<br />
Mô tả 2 phương pháp vào-ra<br />
Đồng bộ - Synchronous<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
Bảng trạng thái thiết bị<br />
<br />
Không đồng bộ - Asynchronous<br />
<br />
1.17<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
Cấu trúc DMA (Direct Memory Access)<br />
Được sử dụng cho các thiết bị tốc độ cao (disk, communications<br />
network) để có thể tăng tốc độ trao đổi thông tin gần tới tốc độ<br />
<br />
1.18<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Cấu trúc hệ thống nhớ<br />
Bộ nhớ chính (Main memory: RAM) – phương tiện lưu trữ lớn<br />
duy nhất mà CPU có thể truy nhập trực tiếp.<br />
<br />
bộ nhớ.<br />
<br />
Quá nhỏ để có thể lưu trữ ổn định tất cả các chương trình và dữ<br />
liệu cần thiết.<br />
<br />
Mạch điều khiển thiết bị chuyển toàn bộ các khối dữ liệu (block<br />
<br />
Có tính không ổn định ⇒ mất dữ liệu khi tắt nguồn.<br />
<br />
of data) từ bộ nhớ buffer trực tiếp tới bộ nhớ chính không qua sự<br />
can thiệp của CPU.<br />
Chỉ có 01 ngắt được sinh ra đối với mỗi block, tối ưu hơn là mỗi<br />
ngắt đối với 01 byte (hoặc word) đối với các thiết bị tốc độ chậm.<br />
<br />
Bộ nhớ thứ cấp (Secondary storage) – là sự mở rộng của bộ<br />
nhớ chính, để cung cấp dung lượng bộ nhớ lớn và ổn định.<br />
Vd: Đĩa từ (Magnetic disks: đĩa cứng, đĩa mềm)<br />
Cấu tạo bằng kim loại cứng hoặc các miếng kính được bao bọc<br />
bởi vật liệu nhiễm từ.<br />
Bề mặt đĩa được chia (vật lý) thành các tracks, mỗi track được chia<br />
thành các sectors.<br />
Mạch điều khiển đĩa (disk controller) xác định sự tương tác vật lý<br />
giữa thiết bị và máy tính.<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.19<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
Bài giảng Nguyên lý Hệ điều hành<br />
<br />
1.20<br />
<br />
Phạm Quang Dũng ©2008<br />
<br />
5<br />
<br />