30.11.2016
Hệ điều hành
Thông tin chung
1
Dang Minh Quan - NEU, 2016
Thông tin về giảng viên
• TS. Đặng Minh Quân
• Địa chỉ: C101- ĐHKTQD
• Email:
Dang Minh Quan - NEU, 2016
2
1
30.11.2016
Kế hoạch giảng dạy
Ghi chú
Trong đó
STT
Nội dung
Tổng số
tiết
Lý thuyết
Bài tập, thảo luận, kiểm
tra
1
Chương 1
3
2,5
0,5
2
Chương 2
12
10
2
3
Chương 3
4
3
1
4
Chương 4
5
3
2
5
Chương 5
3
2,5
0,5
6
Chương 6
3
2,5
0,5
7
Chương 7
6
5
1
8
Chương 8
9
7,5
1,5
45
36
9
Cộng
Dang Minh Quan - NEU, 2016
3
Phương pháp đánh giá học phần
• Dự lớp: có mặt trên lớp trên 80% số buổi học
theo môn.
• Thảo luận và dự lớp đánh giá 10% số điểm (hệ
số 0.1)
• Bài kiểm tra: đánh giá 20% số điểm. (hệ số 0.2)
• Thi cuối kỳ: đáng giá 70% số điểm. (hệ số 0.7)
• Thang điểm: 10
Dang Minh Quan - NEU, 2016
4
2
30.11.2016
Môi trường lập trình
• Ngôn ngữ lập trình C/C++
• Trình biên dịch gcc
• Hệ điều hành Ubuntu
5
Dang Minh Quan - NEU, 2016
Tài liệu tham khảo
• Andrew S. Tanenbaum, Modern Operating
Systems (2nd Edition), 2001
• Abraham Silberschatz, Peter B. Galvin, Greg
Gagne, Operating System Concepts (8th
edition), 2008
Dang Minh Quan - NEU, 2016
6
3
30.11.2016
Hệ điều hành
Chương 1: Giới thiệu chung
7
Dang Minh Quan - NEU, 2016
Mục tiêu chương 1
• Nêu được chức năng chính của hệ điều hành
• Phân biệt được các loại hệ điều hành
• Nhận dạng được các thành phần chính của hệ
điều hành
Dang Minh Quan - NEU, 2016
8
4
30.11.2016
Tổng quan
•
•
•
•
Khái niệm về hệ điều hành
Lịch sử phát triển hệ điều hành
Phân loại hệ điều hành
Cấu trúc hệ điều hành
Dang Minh Quan - NEU, 2016
9
1.1. Khái niệm về hệ điều hành
• Hệ điều hành trong hệ thống máy tính
• Mục tiêu hệ điều hành
• Định nghĩa hệ điều hành
Dang Minh Quan - NEU, 2016
10
5
30.11.2016
Hệ điều hành trong hệ thống máy
tính
Phần cứng - cung cấp các tài
nguyên máy tính cơ bản
(CPU, bộ nhớ, các thiết bị I /
O).
Hệ điều hành - kiểm soát và điều
phối việc sử dụng phần cứng
cho các chương trình ứng
dụng khác nhau và người sử
dụng khác nhau.
Chương trình ứng dụng – sử
dụng tài nguyên hệ thống
máy tính để giải quyết các
vấn đề của người sử dụng.
Người sử dụng (người, máy móc,
các máy tính khác).
11
Dang Minh Quan - NEU, 2016
Mục tiêu hệ điều hành
• Mục tiêu của hệ điều hành:
– Chạy chương trình và giúp giải quyết vấn đề của
người sử dụng dễ dàng hơn.
– Làm cho hệ thống máy tính dễ sử dụng.
– Sử dụng phần cứng máy tính một cách hiệu quả.
Dang Minh Quan - NEU, 2016
12
6
30.11.2016
Định nghĩa hệ điều hành
• Bộ cấp phát tài nguyên - quản lý và phân bổ
tài nguyên.
• Chương trình điều khiển - điều khiển việc
thực hiện các chương trình của người sử
dụng và hoạt động của các thiết bị I / O.
• Hạt nhân - một chương trình luôn luôn chạy.
Dang Minh Quan - NEU, 2016
13
1.2. Lịch sử phát triển hệ điều
hành
• Các hệ thống mainframe
– Hệ thống xử lý theo lô
– Hệ thống đa chương trình
– Hệ thống đa người dùng
•
•
•
•
•
•
Hệ thống để bàn
Hệ thống đa xử lý
Các hệ thống phân tán: khách – chủ, điểm tới điểm
Hệ thống cluster
Hệ thống thời gian thực
Hệ thống cầm tay
Dang Minh Quan - NEU, 2016
14
7
30.11.2016
Hệ thống xử lý theo lô
• Người dùng không tương tác
trực tiếp với hệ thống máy
tính
• Người dùng chuẩn bị một
công việc và đệ trình tới
người vận hành máy tính
• Người dùng nhận lại kết quả
sau 1 khoảng thời gian không
xác định
Dang Minh Quan - NEU, 2016
15
Hệ thống đa chương trình
• HĐH giữ nhiều chương trình
trong bộ nhớ
• HĐH chạy 1 chương trình
trong số đó, khi chương trình
này phải đợi, HĐH chuyển
sang chạy chương trình khác.
Dang Minh Quan - NEU, 2016
16
8
30.11.2016
Hệ thống đa người dùng
• Còn gọi là hệ thống chia sẻ thời gian, cho
phép nhiều người dùng tương tác với máy
tính
• Mỗi người dùng có ít nhất 1 chương trình
đang chạy gọi là tiến trình.
• Hệ thống chia cho mỗi tiến trình một khe thời
gian.
• Khi hết khe thời gian thì hệ thống chay tiến
trình khác
17
Dang Minh Quan - NEU, 2016
Hệ thống để bàn
• Một người dùng sử dụng toàn bộ hệ thống
• Tận dụng hiệu năng CPU không còn là vấn
đề quan tâm hàng đầu
• Một số tính năng của hệ thống chia sẻ thời
gian vẫn được áp dụng cho hệ thống để bàn
Dang Minh Quan - NEU, 2016
18
9
30.11.2016
Hệ thống đa xử lý
• Phổ biến là hệ thống đa xử lý đối xứng
• Mỗi CPU chạy một bản copy của HĐH và
liên lạc với nhau khi cần
• Hệ thống đa xử lý có các lợi ích sau
– Tăng hiệu năng
– Tăng tính kinh tế khi mở rộng
– Tăng độ tin cậy
19
Dang Minh Quan - NEU, 2016
Hệ thống khách – chủ
• Hệ thống máy chủ dùng phục vụ các yêu cầu
từ nhiều máy khách
Dang Minh Quan - NEU, 2016
20
10
30.11.2016
Hệ thống điểm tới điểm
• Một HĐH mạng cung cấp một giao thức liên
lạc cho phép các tiến trình khác nhau trên các
máy tính khác nhau có thể truyền tin được
cho nhau.
• Một máy tính trong hệ thống này hoạt động
độc lập nhưng vẫn nhận biết được mạng và
có thể liên lạc với các máy tính khác trong
mạng.
• Máy tính trong hệ thống vừa sử dụng dịch vụ
vừa cung cấp dịch vụ
21
Dang Minh Quan - NEU, 2016
Hệ thống cluster
• Hệ thống cluster bao gồm 2 hay nhiều hệ
thống đơn lẻ
• Thường dùng để tăng độ sẵn sàng và hiệu
năng
Dang Minh Quan - NEU, 2016
22
11
30.11.2016
Hệ thống thời gian thực
• Hệ thống thời gian thực phải đáp ứng các
thách thức về mặt thời gian
• Công việc phải được hoàn thành trong một
giới hạn thời gian đã xác định
• Hệ thống thời gian thực cứng đảm bảo các
tác vụ quan trọng được hoàn thành đúng hạn
• Hệ thống thời gian thực mềm đảm bảo các
tác vụ quan trọng có độ ưu tiên cao nhất
23
Dang Minh Quan - NEU, 2016
Hệ thống cầm tay
• Bị giới hạn về sức mạnh phần cứng: tốc độ
CPU, kích thước bộ nhớ, kích thước màn
hình
• Rất tiện lợi và mang đi được
Dang Minh Quan - NEU, 2016
24
12
30.11.2016
Các môi trường tính toán
• Tính toán truyền thống
• Tính toán dựa trên Web
• Tính toán nhúng
Dang Minh Quan - NEU, 2016
25
1.3. Phân loại hệ điều hành
•
•
•
•
Hệ thống xử lý thời gian thực
HĐH đơn nhiệm, đơn người sử dụng
HĐH đa nhiệm, đơn người sử dụng
HĐH đa người sử dụng
Dang Minh Quan - NEU, 2016
26
13
30.11.2016
1.4. Cấu trúc hệ điều hành
•
•
•
•
•
Cấu trúc máy tính
Các dịch vụ hệ điều hành
Cấu trúc HĐH: đơn giản
Cấu trúc HĐH: phân lớp
Cấu trúc HĐH: Máy ảo
27
Dang Minh Quan - NEU, 2016
Cấu trúc máy tính
Dang Minh Quan - NEU, 2016
28
14
30.11.2016
Các dịch vụ hệ điều hành
29
Dang Minh Quan - NEU, 2016
Cấu trúc HĐH: đơn giản
• MS-DOS có cấu trúc nhưng
giữa giao diện và chức
năng không có sự phân chia
rõ rệt
• UNIX bao gồm hai phần :
hạt nhân và các chương
trình hệ thống
Dang Minh Quan - NEU, 2016
30
15
30.11.2016
Cấu trúc HĐH: phân lớp
• Các hệ thống điều hành
được chia thành một số lớp,
mỗi lớp được xây dựng trên
đỉnh các lớp thấp hơn. Các
lớp dưới cùng (layer 0), là
phần cứng, lớp cao nhất
(layer N) là giao diện người
dùng.
• Với tính mô đun, một lớp
chỉ sử dụng chức năng và
dịch vụ của các lớp cấp
thấp hơn.
31
Dang Minh Quan - NEU, 2016
Cấu trúc HĐH: Máy ảo
Dang Minh Quan - NEU, 2016
32
16
30.11.2016
Nội dung chính chương 1
• Khái niệm về hệ điều hành: vị trí, vai trò,
định nghĩa.
• Lịch sử phát triển hệ điều hành cùng với sự
phát triển của các hệ thống máy tính
• Phân loại hệ điều hành: thời gian thực, đơn
nhiệm, đa nhiệm.
• Cấu trúc hệ điều hành: đơn giản, phân lớp,
máy ảo
33
Dang Minh Quan - NEU, 2016
Tài liệu tham khảo
• Abraham Silberschatz, Peter B. Galvin, Greg
Gagne (2008), Operating System Concepts
(8th edition), Wiley. Chương I, trang 3 – 46;
Chương II, trang 49-97
Dang Minh Quan - NEU, 2016
34
17
30.11.2016
Hệ điều hành
Chương 2: Quản lý tiến trình
35
Dang Minh Quan - NEU, 2016
Mục tiêu chương 2
• Phân biệt được chương trình và tiến trình
• Áp dụng được các thuật toán điều phối vào
các tình huống giả định
• Nêu được các kỹ thuật liên lạc giữa các tiến
trình và đồng bộ hóa tiến trình
Dang Minh Quan - NEU, 2016
36
18
30.11.2016
Tổng quan
•
•
•
•
•
Giới thiệu tổng quan về tiến trình và luồng
Điều phối tiến trình và luồng
Cơ chế thông tin liên lạc giữa các tiến trình
Đồng bộ hoá tiến trình
Tắc nghẽn
Dang Minh Quan - NEU, 2016
37
2.1. Tổng quan về tiến trình và
luồng
•
•
•
•
•
•
•
Khái niệm tiến trình
Khái niệm luồng
Các trạng thái của tiến trình
Chế độ xử lý của tiến trình
Cấu trúc dữ liệu khối quản lý tiến trình
Thao tác trên tiến trình
Tiến trình và luồng trên LINUX
Dang Minh Quan - NEU, 2016
38
19
30.11.2016
Khái niệm tiến trình
• Chương trình là một thực thể thụ động, chứa
đựng các chỉ thị điều khiển máy tính để tiến
hành một tác vụ nào đó.
• Tiến trình là một chương trình đang xử lý, sở
hữu
– một con trỏ lệnh,
– tập các thanh ghi
– các biến.
39
Dang Minh Quan - NEU, 2016
Khái niệm tiến trình
• Tiến trình trong bộ
nhớ
Dang Minh Quan - NEU, 2016
40
20
30.11.2016
Các trạng thái của tiến trình
• Khi một tiến trình được chạy, nó sẽ thay đổi
trạng thái
–
–
–
–
new: Tiến trình đang được tạo ra
running: Các lệnh đang được xử lý
waiting: Tiến trình đang đợi một sự kiện nào đó
ready: Tiến trình đang đợi để được gán cho một
quá trình xử lý
– terminated: Tiến trình kết thúc
Dang Minh Quan - NEU, 2016
41
Các trạng thái của tiến trình
Dang Minh Quan - NEU, 2016
42
21
30.11.2016
Khối quản lý tiến trình PCB
Lưu giữ thông tin của một tiến trình
• Trạng thái tiến tình
• Bộ đếm chương trình
• Các thanh ghi CPU
• Thông tin lập lịch CPU
• Thông tin quản lý bộ nhớ
• Thông tin tài khoản
• Thông tin trạng thái I/O
Dang Minh Quan - NEU, 2016
43
Cấu trúc dữ liệu khối quản lý tiến
trình
Dang Minh Quan - NEU, 2016
44
22
30.11.2016
Thao tác trên tiến trình
• Hệ điều hành cung cấp các thao tác
chủ yếu sau đây trên một tiến trình :
–
–
–
–
–
Tạo lập tiến trình (create)
Kết thúc tiến trình (destroy)
Tạm dừng tiến trình (suspend)
Tái kích hoạt tiến trình (resume)
Thay đổi độ ưu tiên tiến trình
45
Dang Minh Quan - NEU, 2016
Tạo lập tiến trình (1)
• Một tiến trình có thể tạo lập nhiều tiến trình
mới bằng cách sử dụng một lời gọi hệ thống
tương ứng
Dang Minh Quan - NEU, 2016
46
23
30.11.2016
Tạo lập tiến trình (2)
• Định danh cho tiến trình mới phát sinh
• Đưa tiến trình vào danh sách quản lý của hệ
thống
• Xác định độ ưu tiên cho tiến trình
• Tạo PCB cho tiến trình
• Cấp phát các tài nguyên ban đầu cho tiến
trình
47
Dang Minh Quan - NEU, 2016
Tạo lập tiến trình (3)
• Tiến trình cha tiếp tục xử lý đồng hành với
tiến trình con.
• Tiến trình cha chờ đến khi một tiến trình con
nào đó, hoặc tất cả các tiến trình con kết thúc
xử lý.
Dang Minh Quan - NEU, 2016
48
24
30.11.2016
Tạo lập tiến trình (4)
• Hàm fork()
– Tạo tiến trình con
• Hàm exec()
– Chạy chương trình
49
Dang Minh Quan - NEU, 2016
Tạo lập tiến trình (5)
#include <sysltypes.h>
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid =fork();
if (pid < 0) {
fprintf(stderr, "Fork Failed");
return 1;
} else if (pid == 0) { /* child process */ execlp("/bin/ls","ls",NULL);
} else { /* parent process */
/* parent will wait for the child to complete */ wait (NULL) ;
printf("Child Complete");
}
return 0;
}
Dang Minh Quan - NEU, 2016
50
25