15 Dang Minh Quan - NEU, 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
Trang 11 Dang Minh Quan - NEU, 2016
Hệ điều hành
Thông tin chung
Thông tin về giảng viên
• TS Đặng Minh Quân
• Địa chỉ: C101- ĐHKTQD
• Email: quandm@neu.edu.vn
Trang 23 Dang Minh Quan - NEU, 2016
Kế hoạch giảng dạy
5 7,5
0,5
2
1
2 0,5 0,5
1 1,5
• 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
Trang 35 Dang Minh Quan - NEU, 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
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
Trang 47 Dang Minh Quan - NEU, 2016
Hệ điều hành
Chương 1: Giới thiệu chung
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
Trang 59 Dang Minh Quan - NEU, 2016
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
Trang 611 Dang Minh Quan - NEU, 2016
Hệ điều hành trong hệ thống máy
• 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ả
Trang 713 Dang Minh Quan - NEU, 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
Trang 815 Dang Minh Quan - NEU, 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
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
Trang 917 Dang Minh Quan - NEU, 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
• 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
Trang 1019 Dang Minh Quan - NEU, 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
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
Trang 1121 Dang Minh Quan - NEU, 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
Trang 1223 Dang Minh Quan - NEU, 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
Trang 1325 Dang Minh Quan - NEU, 2016
Các môi trường tính toán
• 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
Trang 1427 Dang Minh Quan - NEU, 2016
Trang 1529 Dang Minh Quan - NEU, 2016
Các dịch vụ hệ điều hành
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
Trang 1631 Dang Minh Quan - NEU, 2016
Trang 1733 Dang Minh Quan - NEU, 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
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
Trang 1835 Dang Minh Quan - NEU, 2016
Hệ điều hành
Chương 2: Quản lý tiến trình
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
Trang 1937 Dang Minh Quan - NEU, 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
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
Trang 2039 Dang Minh Quan - NEU, 2016
Khái niệm tiến trình
Trang 2141 Dang Minh Quan - NEU, 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
Các trạng thái của tiến trình
Trang 2243 Dang Minh Quan - NEU, 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
Cấu trúc dữ liệu khối quản lý tiến
trình
Trang 2345 Dang Minh Quan - NEU, 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
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
Trang 2447 Dang Minh Quan - NEU, 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
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ý
Trang 2549 Dang Minh Quan - NEU, 2016
} 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;
Trang 2651 Dang Minh Quan - NEU, 2016
• Hủy bỏ PCB của tiến trình
Tạm dừng tiến trình - tái kích hoạt
tiến trình
Trang 2753 Dang Minh Quan - NEU, 2016
Đa chương (multiprogramming)
Trang 2855 Dang Minh Quan - NEU, 2016
Cơ chế hoạt động 2 chế độ
• Chia sẻ tài nguyên hệ thống đòi hỏi hệ điều
hành đảm bảo rằng một chương trình bị lỗi
không thể ảnh hưởng tới các chương trình
khác
• Cung cấp hỗ trợ cho phần cứng để phân biệt
giữa hai phương thức hoạt động
– 1 Chế độ người dùng – chạy chương trình thay
mặt cho một người sử dụng
– 2 Monitor mode (chế độ giám sát hoặc chế độ hệ
thống) - chạy chương trình thay mặt cho hệ điều
hành
Cơ chế hoạt động 2 chế độ (Cont.)
• Bit chế độ thêm vào
Trang 2957 Dang Minh Quan - NEU, 2016
Cơ chế hoạt động 2 chế độ (Cont.)
• Các lệnh đặc quyền là các lệnh có thể gây hại
Khái niệm luồng
• Một luồng là một đơn vị xử lý cơ bản trong
hệ thống Mỗi luồng xử lý tuần tự đoạn code
của nó
• Một luồng phải ở trong 1 tiến trình
• 1 tiến trình có thể có nhiều luồng
• Mỗi luồng xử lý tuần tự đoạn code của nó, sở
hữu
– một con trỏ lệnh
– tập các thanh ghi
– vùng nhớ stack riêng
Trang 3059 Dang Minh Quan - NEU, 2016
Khái niệm đa luồng
2.2 Điều phối tiến trình
• Khái niệm chung
• Các yêu cầu với quá trình điều phối
• Tổ chức điều phối
Trang 3161 Dang Minh Quan - NEU, 2016
Khái niệm về điều phối
• Bộ điều phối phải lựa chọn tiến trình được xử
lý tiếp theo
• Bộ phân phối sẽ chịu trách nhiệm chuyển đổi
ngữ cảnh và trao CPU cho tiến trình được
chọn bởi bộ điều phối để xử lý
Đặc điểm tiến trình
• Tính hướng xuất / nhập của tiến trình
• Tính hướng xử lý của tiến trình
• Tiến trình tương tác hay xử lý theo lô
• Độ ưu tiên của tiến trình
• Thời gian đã sử dụng CPU của tiến trình
• Thời gian còn lại tiến trình cần để hoàn tất
Trang 3263 Dang Minh Quan - NEU, 2016
Nguyên lý điều phối độc quyền
• Cho phép một tiến trình khi nhận được CPU
sẽ có quyền độc chiếm CPU đến khi hoàn tất
xử lý hoặc tự nguyện giải phóng CPU
• Hoạt động điều phối CPU sẽ xảy ra khi:
– Khi tiến trình chuyển từ trạng thái đang xử lý
sang trạng thái bị khóa
• Hoạt động điều phối CPU sẽ xảy ra khi:
– Khi tiến trình chuyển từ trạng thái đang xử lý
sang trạng thái bị khóa
– Khi tiến trình chuyển từ trạng thái đang xử lý
sang trạng thái ready
– Khi tiến trình chuyển từ trạng thái chờ sang trạng
thái
– Khi tiến trình kết thúc
Trang 3365 Dang Minh Quan - NEU, 2016
Các yêu cầu với quá trình điều
phối
• Sự công bằng
• Tính hiệu qủa
• Thời gian đáp ứng hợp lý
• Thời gian lưu lại trong hệ thống
• Thông lượng tối đa
Các danh sách sử dụng trong quá
trình điều phối (1)
• Danh sách sẵn sàng (ready list)
– Chỉ các tiến trình đang thường trú trong bộ nhớ chính và
ở trạng thái sẵn sàng tiếp nhận CPU để hoạt động
– Hệ điều hành chỉ sử dụng một danh sách sẵn sàng cho
toàn hệ thống
• Danh sách chờ đợi(waiting list)
– Tiến trình sẽ được chuyển sang một danh sách chờ khi
xảy ra các sự kiện
– Mỗi một tài nguyên ( thiết bị ngoại vi ) có một danh sách
chờ đợi riêng bao gồm các tiến trình đang chờ được cấp
phát tài nguyên đó
Trang 3467 Dang Minh Quan - NEU, 2016
Các danh sách sử dụng trong quá
trình điều phối (2)
Chuyển đổi giữa các danh sách
điều phối
Trang 3569 Dang Minh Quan - NEU, 2016
Điều phối tác vụ (job scheduling)
• Quyết định lựa chọn tác vụ nào được đưa vào
hệ thống và nạp những tiến trình của tác vụ
đó vào bộ nhớ chính để thực hiện
• Chức năng điều phối tác vụ quyết định mức
độ đa chương của hệ thống
• Được kích hoạt khi
– Hệ thống tạo lập một tiến trình
– Có một tiến trình kết thúc xử lý
• Điều phối tác vụ có tần suất hoạt động thấp
Điều phối tiến trình
• Chọn một tiến trình ở trạng thái sẵn sàng ( đã
được nạp vào bộ nhớ chính, và có đủ tài
nguyên để hoạt động ) và cấp phát CPU cho
tiến trình đó thực hiện
• Có tần suất hoạt động cao, sau mỗi lần xảy ra
ngắt
Trang 3671 Dang Minh Quan - NEU, 2016
Điều phối trung gian
• Kết hợp cả hai cấp độ điều phối tác vụ và tiến
trình
Chiến lược điều phối FIFO
• CPU được cấp phát cho tiến trình đầu tiên
trong danh sách sẵn sàng có yêu cầu
• Điều phối theo nguyên tắc độc quyền
• Có thể xảy ra hiện tượng tích lũy thời gian
chờ
• Không phù hợp với các hệ phân chia thời
gian
Trang 3773 Dang Minh Quan - NEU, 2016
Chiến lược điều phối xoay vòng
• Bộ điều phối lần lượt cấp phát cho từng tiến
trình trong danh sách một khoảng thời gian
sử dụng CPU gọi là quantum
• Khi một tiến trình sử dụng CPU đến hết thời
gian quantum dành cho nó, hệ điều hành thu
hồi CPU và cấp cho tiến trình kế tiếp trong
danh sách
Chiến lược điều phối ưu tiên
• Mỗi tiến trình được gán cho một độ ưu tiên
tương ứng
• Tiến trình có độ ưu tiên cao nhất sẽ được
chọn để cấp phát CPU đầu tiên
• Giải thuật điều phối với độ ưu tiên có thể
theo nguyên tắc độc quyền hay không độc
quyền
• Tình trạng „đói CPU‟ (starvation) là một vấn
đề chính yếu
Trang 3875 Dang Minh Quan - NEU, 2016
Chiến lược công việc ngắn nhất
• Khi CPU được tự do, nó sẽ được cấp phát
cho tiến trình yêu cầu ít thời gian nhất để kết
thúc- tiến trình ngắn nhất
• Giải thuật này cũng có thể độc quyền hay
không độc quyền
• Khó khăn thực sự của giải thuật SJF là không
thể biết được thời gian yêu cầu xử lý còn lại
Trang 3977 Dang Minh Quan - NEU, 2016
Chiến lược điều phối với nhiều
Chiến lược điều phối Xổ số
• Phát hành một số vé số và phân phối cho các
tiến trình trong hệ thống
• Khi đến thời điểm ra quyết định điều phối, sẽ
tiến hành chọn 1 vé "trúng giải", tiến trình
nào sỡ hữu vé này sẽ được nhận CPU
Trang 4079 Dang Minh Quan - NEU, 2016
2.3 Cơ chế thông tin liên lạc giữa
các tiến trình
• Nhu cầu liên lạc giữa các tiến trình
• Các vấn đề nảy sinh trong việc liên lạc giữa
Trang 4181 Dang Minh Quan - NEU, 2016
Các vấn đề nảy sinh trong việc
liên lạc giữa các tiến trình
• Liên kết tường minh hay tiềm ẩn (explicit
• Một tín hiệu được sử dụng để thông báo cho
tiến trình về một sự kiện nào đó xảy ra
• Mỗi tiến trình sở hữu một bảng biễu diễn các
tín hiệu khác nhau
• Với mỗi tín hiệu sẽ có tương ứng một trình
xử lý tín hiệu
Trang 4283 Dang Minh Quan - NEU, 2016
Liên lạc bằng tín hiệu (2)
• Các tín hiệu được gởi đi bởi :
– Phần cứng
– Hạt nhân hệ điều hành gởi đến một tiến trình
– Một tiến trình gởi đến một tiến trình khác
– Người dùng
Liên lạc bằng tín hiệu (3)
• Khi một tiến trình nhận một tín hiệu, nó có
thể xử sự theo một trong các cách sau :
– Bỏ qua tín hiệu
– Xử lý tín hiệu theo kiểu mặc định
– Tiếp nhận tín hiệu và xử lý theo cách đặc biệt của
tiến trình
Trang 4385 Dang Minh Quan - NEU, 2016
Liên lạc bằng tín hiệu (4)
• Liên lạc bằng tín hiệu mang tính chất không
đồng bộ
• Hơn nữa các tiến trình không thể kiểm tra
được sự kiện tương ứng với tín hiệu có thật
sự xảy ra ?
• các tiến trình chỉ có thể thông báo cho nhau
về một biến cố nào đó, mà không trao đổi dữ
liệu
Liên lạc bằng đường ống (1)
• Một pipe là một kênh liên lạc trực tiếp giữa
hai tiến trình : dữ liệu xuất của tiến trình này
được chuyển đến làm dữ liệu nhập cho tiến
trình kia dưới dạng một dòng các byte
Trang 4487 Dang Minh Quan - NEU, 2016
Liên lạc bằng đường ống (2)
• Tiến trình đọc pipe sẽ bị khóa nếu pipe trống,
nó sẽ phải đợi đến khi pipe có dữ liệu để truy
xuất
• Tiến trình ghi pipe sẽ bị khóa nếu pipe đầy,
nó sẽ phải đợi đến khi pipe có chỗ trống để
chứa dữ liệu
• Liên lạc bằng pipe là một cơ chế liên lạc một
chiều (unidirectional)
• Chỉ cho phép kết nối hai tiến trình có quan hệ
cha-con, và trên cùng một máy tính
Liên lạc bằng vùng nhớ chia sẻ(1)
• Cho nhiều tiến trình cùng truy xuất đến một
vùng nhớ chung gọi là vùng nhớ chia sẻ
(shared memory)
• Một vùng nhớ chia sẻ tồn tại độc lập với các
tiến trình
• Khi một tiến trình muốn truy xuất đến vùng
nhớ này, tiến trình phải kết gắn vùng nhớ
chung đó vào không gian địa chỉ riêng của
từng tiến trình
Trang 4589 Dang Minh Quan - NEU, 2016
Liên lạc bằng vùng nhớ chia sẻ(2)
• Phương thức này làm phát
sinh các khó khăn trong việc
bảo đảm sự toàn vẹn dữ liệu
(coherence)
• Không thể áp dụng hiệu quả
trong các hệ phân tán
Liên lạc bằng trao đổi thông điệp
• Hệ điều hành cung cấp các hàm IPC chuẩn
(Interprocess communication)
– Send(message) : gởi một thông điệp
– Receive(message) : nhận một thông điệp
• Đơn vị truyền thông tin trong cơ chế trao đổi
thông điệp là một thông điệp nên các tiến
trình có thể trao đổi dữ liệu ở dạng có cấu
trúc