1/22/2008 Nguyên lý Hệ điều hành 5Định nghĩa hệ điều hành Bộ phân phối tài nguyên Quản lý và điều phối tài nguyên Bộ điều khiển chương trình Điều khiển thực thi chương trình của người dù
Trang 11/22/2008 Nguyên lý Hệ điều hành 2
1 Hệ điều hành là gì?
Thành phần trung gian giữa người dùng và
hệ thống phần cứng máy tính Mục đích của hệ điều hành:
Thực thi chương trình người dùng dễ dàng hơn
Sử dụng hệ thống máy tính thuận tiện hơn
Sử dụng hệ thống máy tính một cách hiệu quả
Điều khiển và điều phối việc sử dung phần cứng máy tính
phục vụ các chương trình ứng dụng của người dùng.
Các chương trình ứng dụng
Sử dụng các tài nguyên máy tính để giải quyết các vấn đề
tính toán của người dùng
Người dùng
tính
Trang 21/22/2008 Nguyên lý Hệ điều hành 5
Định nghĩa hệ điều hành
Bộ phân phối tài nguyên
Quản lý và điều phối tài nguyên
Bộ điều khiển chương trình
Điều khiển thực thi chương trình của người dùng
và điều khiển thao tác của các thiết bị vào ra
Các hệ máy tính cá nhân Các hệ song song, các hệ phân tán, các hệ thời gian thực
Hệ điều hành đầu tiên, tương đối đơn giản
Nhiệm vụ của HĐH: truyền quyền điều khiển
tuần tự cho các “công việc” (job) trong lô
(batch)
“Công việc”: chương trình, dữ liệu, các thông
tin điều khiển…
Nhược điểm: không tận dụng CPU một cách
hiệu quả
đơn giản
Trang 3Một chương trình người dùng không thể cùng một
lúc sử dụng cả CPU và các thiết bị vào ra
1/22/2008 Nguyên lý Hệ điều hành 10
Các hệ xử lý theo lô, đa chương trình
Tư tưởng chính:
Trong trường hợp công việc đang phải đợi thực
hiện một thao tác nào đó (ví dụ thao tác vào/ra)
HĐH sẽ chọn việc khác để thực hiện
Các hệ xử lý theo lô, đa chương trình
Đặc điểm:
Tương đối phức tạpKhái niệm “Nhóm công việc” (job pool)Lập lịch công việc: chọn các công việc để chuyểnvào bộ nhớ trong
Quản lý lưu trữ: lưu cùng lúc một số công việctrong bộ nhớ trong
Lập lịch CPU: chọn thực thi một trong các côngviệc đang ở bộ nhớ trong
Trang 41/22/2008 Nguyên lý Hệ điều hành 13
2.3 Các hệ phân chia thời gian
Vì sao?
Các hệ xử lý theo lô, đa chương trình cung cấp
một môi trường trong đó các tài nguyên hệ thống
được sử dụng một cách hiệu quả, nhưng không
cung cấp cho người dùng khả năng tương tác với
hệ thống
Các hệ phân chia thời gian là sự mở rộng của
các hệ xử lý theo lô, đa chương trình
Khái niệm “tiến trình”: chương trình được nạp vào
bộ nhớ và đang được thực thi
Vào/ra tương tác I/O phụ thuộc “people speech” ví dụ tốc độ nhập dữ liệu
Các hệ phân chia thời gian
Đặc điểm:
Phức tạp hơn hệ xử lý theo lô, đa chương trình
Quản lý bộ nhớ và bảo vệ
Tráo đổi các công việc từ đĩa cứng và bộ nhớ
(swap in/swap out) phương pháp bộ nhớ ảo
Hệ thống file trên một số đĩa cứng quản lý đĩa
cứng
Thực thi đồng thời Lập lịch CPU
Giao tiếp và đồng bộ hoá
Giải quyết bế tắc
2.4 Các hệ máy tính cá nhân
Xuất hiện những năm 1970 Hướng tới sự tiện dụng của người dùng Các hệ điều hành cho máy tính cá nhân
Microsoft Windows, Apple MacintoshLinux, Unix-like OS cho PCs
Kế thừa sự phát triển của hệ điều hành cho các
hệ Mainframe
Trang 51/22/2008 Nguyên lý Hệ điều hành 17
Các hệ song song
Còn gọi là Hệ đa xử lý (multiprocessor systems)
Một hệ thống có nhiều bộ xử lý, giao tiếp “gần”,
chia sẻ computer bus, clock …
1/22/2008 Nguyên lý Hệ điều hành 18
Các hệ song song: ưu điểm
Tăng thông lượng: làm được nhiều việc hơn trong một đơn vị thời gian
Hiệu quả kinh tế: Hệ song song tiết kiệm hơn nhiều hệ đơn vì có thể chia sẻ các thiết bị ngoại vi, thiết bị lưu trữ và nguồn
Tăng độ tin cậy: Một bộ xử lý gặp trục trặc không làm sụp đổ cả hệ thống
Các hệ song song: Phân loại
Hai loại
Đa xử lý đối xứng (SMP)
Mỗi bộ xử lý có một phiên bản sao chép hệ điều hành,
giao tiếp với nhau peer-to-peer
Đa xử lý không đối xứng (AMP):
Mỗi bộ xử lý được gán một nhiệm vụ
Bộ xử lý chủ (master) sắp xếp công việc và quản lý các
Các hệ phân tán:
Các hệ client-server
Trang 61/22/2008 Nguyên lý Hệ điều hành 21
Các hệ thời gian thực
Các hệ thời gian thực có những ràng buộc về
thời gian
Xử lý phải được thực hiện trong một thời gian xác
định hoặc việc thực thi sẽ không có ý nghĩa
Ví dụ: các hệ điều khiển máy móc tự động, robot
Một hệ thống máy tính gồm một hoặc nhiều CPU và một số
bộ điều khiển thiết bị kết nối với nhau thông qua một bus
chung , chia sẻ một bộ nhớ chung
Các thao tác trong hệ thống máy tính
Các thao tác trong hệ thống máy tính
Khởi động (người dùng)Chương trình mồi (thường nằm trong ROM hay EPROM)
Khởi tạo: thanh ghi CPU, các bộ điều khiển thiết bị, nội dung bộ nhớ
Tải hệ điều hành (chương trình mồi phải biết địa chỉ bắt đầu của hệ điều hành) vào bộ nhớ trong
Chuyển quyền thực thi cho hệ điều hành
Hệ điều hành
Thực hiện tiến trình đầu tiên (init) và chờ đợi các “sự kiện” (các “ngắt” từ phần cứng/phần mềm)
Trang 71/22/2008 Nguyên lý Hệ điều hành 25
Các thao tác trong hệ thống máy tính
Các thiết bị vào ra và CPU có thể thực thi đồng thời;
tương tranh các chu kì bộ nhớ
Mỗi bộ điều khiển thiết bị(device controller) chịu trách
nhiệm một loại thiết bị xác định
Mỗi bộ điều khiển thiết bị có mộtbộ đệm
CPU chuyển dữ liệu từ/vào bộ nhớ ra/từ các bộ đệm
Thao tác vào ra(I/O) là các thao tác từ thiết bị đến bộ
đệm của bộ điều khiển
Các bộ điều khiển thiết bị báo cho CPU biết chúng đã
hoàn thành các tác vụ của chúng bằng cách làm sinh
Thiết bị lưu trữ thứ cấp
Vd: đĩa từ
Cấu trúc lưu trữ
Cơ chế đọc đĩa
3.3 Phân cấp thiết bị lưu trữ
Các hệ thống lưu trữ được phân cấp theo các tiêu chí về.
Tốc độGiá thànhTính không ổn định (Volatility)
Caching – sao chép thông tin vào thiết bị lưu trữ nhanh hơn; bộ nhớ chính có thể được xem là cache của bộ nhớ thứ cấp
Trang 8Sử dụng bộ nhớ tốc độ cao để lưu trữ dữ liệu
mới được truy cập
Cần một chiến lược quản lý cache
Caching làm nảy sinh một cập độ mới trong
phân cấp lưu trữ
đảm bảo tính nhất quán của dữ liệu được lưu trữ
cùng lúc ở nhiều nơi (với các cấp độ truy cập
Trình điều khiển thiết bị (device driver)
Thường được cung cấp bởi Hệ điều hành Tương ứng với mỗi bộ điều khiển thiết bị là một trình điều khiển thiết bị
Cung cấp một giao diện truy nhập đến thiết bị cho các thành phần khác của hệ điều hành
Trang 91/22/2008 Nguyên lý Hệ điều hành 33
Cấu trúc vào/ra
1/22/2008 Nguyên lý Hệ điều hành 34
4 Các thao tác trong hệ điều hành
Hệ điều hành quản lý bởi ngắt
Cơ chế dual-mode Timer
Các nhiệm vụ của ngắt
Ngắt chuyển điều khiển đến dịch vụ ngắt, thông qua
một vectoc ngắt– nơi chứa địa chỉ của tất cả các dịch
vụ ngắt
Trong kiến trúc ngắt, ta phải lưu giữ địa chỉ của lệnh
tại đó có tín hiệu ngắt ngắt cho việc khôi phục lại
quá trình tính toán sau khi xử lý ngắt
Trong khi một ngắt đang được xử lý, các ngắt khác sẽ
bị từ chối để tránh hiện tượng “lost interupt”
người dùng, sinh ra do lỗi hoặc một yêu cầu đặc biệt
Xác định loại tín hiệu ngắt, gọi dịch vụ ngắt
Tìm kiếm tuần tự theo thông tin ngắt
Sử dụng vector ngắt
Dịch vụ ngắt
Phân tích thông tin ngắt (interrupt information)
Trang 101/22/2008 Nguyên lý Hệ điều hành 37
Cơ chế dual-mode
Hỗ trợ phần cứng cho việc tách biệt ít nhất
hai modes thao tác
User mode – thực thi dưới tư cách người dùng
Monitor mode (còn gọi là kernel mode hay
system mode) – thực thi dưới tư cách hệ điều
hành
Bit mode được thêm vào phần cứng để chỉ
mode hiện thời: monitor (0) or user (1).
Khi có ngắt hoặc là phát sinh lỗi, phần cứng
được chuyển qua monitor mode
1/22/2008 Nguyên lý Hệ điều hành 38
Cơ chế dual-mode (cont.)
Timer
Timer được sử dụng để ngăn các tiến trình
chiếm tài nguyên quá lâu
Sinh ra ngắt sau một đơn vị thời gian
Các chương trình hệ thống Cấu trúc hệ điều hành
Trang 11Giao diện người dùng
CLI, GUI, Batch
Thực thi chương trình
Hệ thống phải có khả năng tải chương trình người dùng vào
bộ nhớ và thực thi chương trình, sau đó kết thúc việc thực thi (có lỗi hoặc thành công)
Các thao tác vào/ra – Một chương trình đang thực thi có thể có yêu cầu vào/ra như đọc một file hay một thiết bị vào/ra
Thực thi hệ thống file – Cung cấp cách tổ chức file, thư mục, các thao tác đọc/ghi/sửa/xóa/liệt kê
Các dịch vụ hệ thống
Một tập các dịch vụ hệ điều hành cung cấp
các tính năng hữu ích cho người dùng (cont.)
Giao tiếp – Các tiến trình (trên cùng một máy/trên
một mạng) có thể trao đổi thông tin với nhau
Giao tiếp có thể thông qua sử dụng bộ nhớ chia sẻ
hoặc truyền thông báo
Sửa lỗi
Xác định được lỗi xuất hiện tại CPU hay bộ nhớ, trong
thiết bị vào/ra hay trong chương trình người dùng
Với mỗi loại lỗi, Hệ điều hành (OS) lựa chọn một hoạt
động thích hợp để đảm bảo việc tính toán đúng đắn và
Các dịch vụ hệ thống
Một số tính năng khác của OS cho phép thực thi hệ thống hiệu quả nhờ chia sẻ tài nguyên
Phân phối tài nguyên
Kế toán: cho biết người dùng nào sử dụng baonhiêu và những loại tài nguyên hệ thống nào.Bảo vệ và bảo mật: bảo vệ việc sử dụng thông tin trong các hệ thống đa người dùng, các hệ thốngnối mạng; bảo vệ các tiến trình thực thi đồng thời
Trang 121/22/2008 Nguyên lý Hệ điều hành 45
5.3 Các lời gọi hệ thống
Giao diện lập trình đến các dịch vụ hệ thống
được cung cấp bởi OS
Thường được viết bằng ngôn ngữ bậc cao
(C hay C++)
Các chương trình thường truy nhập đến các
lời gọi hệ thống thông qua giao diện chương
trình ứng dụng (API) (không gọi trực tiếp các
Ví dụ của một API chuẩn
Hàm Readfile trong Win32 API –hàm cho
phép đọc từ một file
Cài đặt lời gọi hệ thống
Các lời gọi hệ thống được liên kết với một số hiệu
Giao diện lời gọi hệ thống quản lý một bảng đánh chỉ số theo các số hiệu này
Giao diện lời gọi hệ thống tham chiếu đến lời gọi hệthống mong muốn trong nhân OS và trả lại trạngthái của lời gọi hệ thống và các giá trị trả về nếu cóChương trình không cần biết lời gọi hệ thống đượcthực thi thế nào
Chỉ cần gọi đúng API và hiểu OS sẽ làm gì với lời gọi đó Hầu hết các chi tiết của OS được che dấu
Trang 131/22/2008 Nguyên lý Hệ điều hành 49
1/22/2008 Nguyên lý Hệ điều hành 50
Ví dụ về thư viện C chuẩn
Truyền tham số cho lời gọi hệ thống
Ba cách truyền tham số
Truyền qua thanh ghi
Các tham số được lưu trong khối (hay bảng) trong bộ nhớ
và địa chỉ của khối được truyền cho thanh ghi
Được thực hiện bởi Linux và Solaris
Các tham số được chương trình người dùng đặt hoặc đẩy
vào một ngăn xếp và sau đó được đọc ra bởi hệ điều hành
Các phương pháp thông qua khối hay ngăn xếp
không giới hạn số lượng của các tham số được
truyền
Truyền tham số thông qua bảng
Trang 14Một số hệ thống thực thi registry – được sử dụng để lưu và nhận các thông tin cấu hình
Các chương trình hệ thống
Soạn thảo file
Trình tạo và soạn thảo file
Các lệnh cho phép tìm kiểm và định dạng text
Hỗ trợ chương trình người dùng – compilers,
assemblers, debuggers và intereters
Giao tiếp
Web browser, gửi thông điệp giữa các máy, gửi
thư điện tử, remote, truyền file
Mục tiêu người dùng và mục tiêu hệ thống
Mục tiêu người dùng: hệ điều hành phải dễ dùng,
dễ học, tin cậy, an toàn và nhanhMục tiêu hệ thống: OS phải dễ dàng thiết kế, càiđặt, bảo trì, hiệu quả, kháng lỗi, linh hoạt, đáng tin
Trang 151/22/2008 Nguyên lý Hệ điều hành 57
Cấu trúc đơn giản
MS-DOS – được viết để cung cấp hầu hết
các tính năng và dung lượng bé nhất có thể
Không được chia thành các modules
Dù MS-Dos cũng có cấu trúc, giao diện và các
tính năng của nó không được phân chia tốt lắm
Bao gồm mọi thứ dưới giao diện lời gọi hệ thống và trên phần cứng vật lý
Cung cấp hệ thống file, lập lịch CPU, quản lý bộ nhớ, và các tính năng khác của OS
Trang 16Hầu hết các OS hiện đại thực hiện module hóa nhân
Hướng tiếp cận hướng đối tượngCác thành phần nhân tách biệtCác thành phần giao tiếp thông qua giao diễn.Mỗi thành phần có thể được tải theo yêu cầu
Trang 18Truyền thông giữa các tiến trình
1.1 Khái niệm về tiến trình
Một HĐH thực hiện nhiều chương trình
Hệ thống xử lý theo lô: công việc (job)
Hệ thống chia sẻ thời gian: tác vụ(task)
Ở đây chúng ta dùng tiến trình và công việc
với cùng ý nghĩa
Tiến trình
Chương trình đang được thực hiện
Phần văn bản Ngăn xếp Phần dữ liệu Giá trị bộ đếm chương trình, thanh ghi
CPU xử lý tiến trình tuần tựThực thể hoạt động
vs chương trình
Trang 19Tại một thời điểm chỉ có một tiến trình ở trạng tháirunning
Trang 20Mục đích của phân chia thời gian
Người dùng có thể tương tác với tiến trình tronglúc nó đang thực thi
Xử lý nhiều tiến trình Lập lịch tiến trình
Tập các tiến trình chờ một thiết bị vào/ra
Các tiến trình di trú từ hàng đợi này đến hàng đợi
khác
Trang 213/12/2008 Nguyên lý Hệ điều hành 13
3/12/2008 Nguyên lý Hệ điều hành 14
Vòng đời của một tiến trình
Khởi tạo: hàng đợi sẵn sàng
Các sự kiện có thể xảy ra khi tiến trình đã đượcgán CPU
Sinh ra một yêu cầu I/O, đi vào hàng đợi I/O Tạo ra một tiến trình con và đợi cho nó kết thúc
Bị tước quyền sử dụng CPU
Bộ lập lịch ngắn hạn (lập lịch CPU)
Chọn trong số các tiến trình trong hàng đợi sẵnsàng để thực hiện
Trang 22Không thường xuyên
Thể hiện mức độ “đa chương trình”
3/12/2008 Nguyên lý Hệ điều hành 18
Bộ lập lịch dài hạn
Hai loại tiến trình:
Giới hạn I/O Giới hạn CPU
Chọn một kết hợp tốt các tiến trình giới hạn vào/ra và các tiến trình giới hạn CPU.
Một số hệ thống phân chia thời gian không
Hoạt động chuyển đổi ngữ cảnh
Kernel lưu lại ngữ cảnh của tiến trình cũ trongPCB và tải ngữ cảnh được lưu của tiến trình mớiđược lập lịch
Trang 233/12/2008 Nguyên lý Hệ điều hành 21
Chuyển đổi ngữ cảnh (tt)
Thời gian chuyển đổi ngữ cảnh: lãng phí
Phụ thuộc vào máy, thông thường từ 1 đến 1000
micro giây
Phụ thuộc vào sự hỗ trợ của phần cứng
Các kĩ thuật quản lý bộ nhớ
Bottleneck sử dụng các cấu trúc mới như
thread để tránh nút cổ chai này
3/12/2008 Nguyên lý Hệ điều hành 22
1.3 Các thao tác trên tiến trình
Tạo tiến trình Hủy tiến trình
Tạo tiến trình
Một tiến trình có thể tạo ra nhiều tiến trình
con, qua lời gọi hệ thống create_process
Tiến trình cha
Tiến trình con
Cây tiến trình
Trang 24Tạo tiến trình trong Unix
Mỗi tiến trình có một ID (PID) Gọi lời gọi hệ thống fork() để tạo tiến trình mới
Tiến trình cha có thể đợi hoặc thực hiện đồng thờivới tiến trình con
Không gian địa chỉ của tiến trình con là một BẢN SAO của không gian địa chỉ tiến trình cha
Mã trả về từ fork()Tiến trình con có thể gọi lời gọi hệ thống execlp()
để tải một chương trình mới vào thực hiện
Hủy tiến trình
Tiến trình thực thi xong
HĐH thực hiện lệnh exit (có thể) trả về dữ liệu cho tiến trình cha Hủy các tài nguyên đã được phân phối cho tiến trình
Tiến trình bị hủy bởi một tiến trình khác (tiến trìnhcha)
Tiến trình cha cần biết chỉ số của tiến trình con
Trang 253/12/2008 Nguyên lý Hệ điều hành 29
Hủy tiến trình (tt)
Tiến trình cha dừng sự hoạt động của tiến trình con
vì
Tiến trình con dùng quá tài nguyên cho phép
Nhiệm vụ của tiến trình con không còn quan trọng
Tiến trình cha thoát và HĐH thực thi cơ chế “hủy theo dây
chuyền”(cascading termination)
¦ u£¨hông thực hiện cơ chế hủy theo dây
chuyền, tiến trình init ¬ £thành tiến trình cha
Chia sẻ thông tin
Đồng thời truy cập đến tài nguyên chia sẻ
Tăng tốc độ tính toán
Chia thành các bài toán con, thực thi song song
Chỉ có được trong các hệ thống có nhiều thành phần xử lý
(đa CPU, đa kênh vào/ra)
Tính module hóa: Chia nhỏ các chức năng
Tiện dụng
Có thể thực hiện nhiều nhiệm vụ tại một thời điểm
Bài toán “Producer - Consumer” (1)
Nhà sản xuất (producer)
Sinh sản phẩm (thông tin)
Người tiêu dùng (consumer)
Dùng s ª£«§ © do Nhà sản xuất sinh ra
Bộ đệm chung
Không giới hạn Giới hạn
Hỗ trợ bởi hệ điều hành (thông qua IPC)
Trang 261.5 Truyền thông giữa các tiến trình
Các tiến trình có thể giao tiếp thông qua tính năng truyền thông giữa các tiến trình (IPC) của HĐH
IPC cho phép các tiến trình không gian địa chỉ giao tiếp và đồng bộ
Hệ thống truyền thông báo
Trang 273/12/2008 Nguyên lý Hệ điều hành 37
Hệ thống truyền thông báo (1)
Giao tiếp giữa các tiến trình người dùng
không cần chia sẻ dữ liệu mà thông qua việc
truyền thông báo
Hai tiến trình P & Q truyền thông bằng cách gửi và nhận thông báo
Tạo thành một kết nối truyền thông
Hệ thống truyền thông báo (3)
Các phương pháp để thiết lập liên kết và các
thao tác gửi/nhận
Truyền thông trực tiếp/ gián tiếp
Truyền thông đối xứng/ bất đối xứng
Gửi bản sao hay gửi tham chiếu
Các thông điệp kích thước cố định hoặc thay đổi
Định danh
Các tiến trình muốn giao tiếp với nhau cần có một cách thức để tham chiếu đến nhau!
Trang 283/12/2008 Nguyên lý Hệ điều hành 41
Truyền thông trực tiếp (1)
Phải khai báo tên của người nhận/gửi trong khi giao
tiếp
send (P, message)
receive (Q, message)
Tính chất
Tự động thiết lập liên kết khi cần giao tiếp
Mỗi liên kết có đúng hai tiến trình
Có đúng một liên kết giữa bất kì 2 cặp tiến trình
3/12/2008 Nguyên lý Hệ điều hành 42
Truyền thông trực tiếp (2)
Hệ thống vừa xét: đối xứng địa chỉ
Hệ thống bất đối xứng địa chỉ
Chỉ có người gửi định danh người nhậnNgười nhận không cần định danh người gửi
Send(P, message) Receive(id, message)
Thay đổi tên một tiến trình duyệt lại toàn bộcác tiến trình
Truyền thông gián tiếp (1)
Gửi và nhận thông qua hòm thư hoặc cổng
Mỗi hòm thư có một số định danh
Các thao tác gửi/nhận
Send(A, message) – A là hòm thư
Receive(A, message) – nhận một thông báo từ
Trang 293/12/2008 Nguyên lý Hệ điều hành 45
Đồng bộ hóa
Truyền thông báo có thể là phong tỏa hay
không phong tỏa(đồng bộ hoặc không đồng
bộ)
Phong tỏa gửi
Không phong tỏa gửi
Thực hiện kiểm tra ngữ pháp và chính tả ngầm
luồng
Trang 30Phân phối tài nguyên và bộ nhớ cho tiến trình tốnkém
Tận dụng các kiến trúc đa xử lý
Quản lý luồng được thực hiện bởi thư viện
Trang 323/12/2008 Nguyên lý Hệ điều hành 57
Pthreads
Chuẩn Posix (IEEE 1003.1c), API cho việc
tạo và đồng bộ tiến trình
API xác định giao diện của thư viện,thực thi
tùy thuộc vào cài đặt thư viện.
Phổ biến trong dòng hệ điều hành Unix.
2.1 Các khái niệm cơ bản
Tận dụng tối đa CPU trong đa chương trình Chu kỳ của các CPU-I/O burst – Việc thực thi tiến trình là một chu kì của các thực thi bởi CPU và chờ đợi vào ra
Phân phối CPU burst
Trang 33Chọn trong số các tiến trình trong bộ nhớ trong và ở trạng thái
ready để thực hiện (trao quyền sử dụng CPU cho tiến trình đó)
Việc lập lịch có thể được thực hiện trong một số trường hợp
1 Tiến trình trạng thái running chuyển sang waiting
2 Tiến trình trạng thái running chuyển sang trạng thái ready
3 Có một tiến trình ở trạng thái waiting chuyển sang trạng thái
ready
4 Tiến trình hiện tại kết thúc thực thi
Lập lịch trong chỉ trong các trường hợp 1 và 4 gọi là lập lịch
không chiếm đoạt (hay còn gọi là cộng tác)
Các trường hợp còn lại gọi là lập lịch chiếm đoạt
Bộ điều vận
Bộ điều vận có nhiệm vụ chuyển điều khiển CPU cho tiến trình được lựa chọn bởi bộ lập lịch ngắnhạn
Chức năng của bộ điều vận bao gồm
Chuyển đổi ngữ cảnh Chuyển sang user mode Chuyển điều khiển đến một vị trí xác định trong chương trình người dùng để khởi động lại chương trình
Độ trễ điều vận
Trang 34Vấn đề tối ưu các điều kiện
Cực đại hóa tính tận dụng CPU Cực đại hóa thông lượng
Cực tiểu hóa thời gian quay vòng Cực tiểu hóa thời gian đợi
Cực tiểu hóa thời gian phản ứng
2.3 Các thuật toán lập lịch
Đến trước – Phục vụ trước (FCFS)
Công việc ngắn nhất trước (SJF)
Lập lịch với độ ưu tiên
Biểu đồ Gantt trong lập lịch FCFS
Thời gian chờ của P1 = 0; P2= 24; P3 = 27 Thời gian chờ trung bình: (0 + 24 + 27)/3= 17
0
Trang 353/12/2008 Nguyên lý Hệ điều hành 69
Nếu các tiến trình đến theo thứ tự P2, P3, P1
Biểu đồ Gantt cho lập lịch
Thời gian chờ của P1 = 6; P2 = 0; P3 = 3
Thời gian chờ trung bình: (6 + 0 + 3)/3 = 3
Tốt hơn nhiều so với trường hợp trên
Công việc ngắn nhất trước (SJF)
Liên kết mỗi tiến trình độ dài của “CPU burst” tiếptheo Sử dụng độ dài này để lập lịch tiến trình vớithời gian ngắn nhất
Hai dạng
Không chiếm đoạt – Một khi CPU đã được gán cho tiến trình, CPU không thể bị chiếm đoạt bởi một tiến trình nào khác (SJN)
Chiếm đoạt – Nếu một tiến trình mới đến với độ dài CPU burst nhỏ hơn thời gian thực thi còn lại của tiến trình sở hữu CPU, tiến trình mới được chiếm hữu CPU – Dạng
“Thời gian còn lại ngắn nhất trước” (SRN)
SJF tối ưu thời gian chờ
SJF không chiếm đoạt: Ví dụ
SJF (không chiếm đoạt(SJN))
Thời gian chờ trung bình:(0 + 6 + 3 + 7)/4 = 4
Trang 363/12/2008 Nguyên lý Hệ điều hành 73
Ước lượng độ dài nhờ độ dài của các CPU
burst trước đó
: Define 4.
1 0 , 3.
burst CPU next the for value predicted
2.
burst CPU of
lenght actual
α α
Lập lịch với độ ưu tiên
Mỗi tiến trình liên kết với một độ ưu tiên (số nguyên)
xác định
CPU được phân phối cho tiến trình với độ ưu tiên
cao nhất (giá trị độ ưu tiên nhỏ nhất)
Chiếm đoạt
Không chiếm đoạt
SJF là lập lịch với độ ưu tiên trong đó độ ưu tiên
chính là khoảng CPU burst tiếp theo
Vấn đề: “Chết đói” – Những tiến trình với độ ưu tiên
thấp có thể sẽ không bao giờ được gán CPU
Giải pháp: các tiến trình tăng độ ưu tiên theo thời gian
FIFO
Q phải đủ lớn so với thời gian chuyển giao ngữcảnh
Trang 373/12/2008 Nguyên lý Hệ điều hành 77
Process Burst Time
RR có thời gian quay vòng trung bình (lưu trung bình)
cao hơn SJF nhưng có tính phản ứng tốt hơn
Sử dụng nhiều hơn một hàng đợi sẵn sàng
Ví dụ: hàng đợi nền trước ( foreground queue ) cho các chương trình tương tác, hàng đợi nền sau ( background ) cho các chương trình duy trì hệ thống, các chương trình theo lô
Sử dụng các thuật toán lập lịch khác nhau cho cáchàng đợi
Ví dụ: RR cho hàng đợi nền trước, FCFS cho hàng đ i n n sau
Chia thời gian cho các hàng đợi
Ví dụ: 80% thời gian cho hàng đợi nền trước, 20% cho nền
Trang 383/12/2008 Nguyên lý Hệ điều hành 81
Hàng đợi nhiều mức
3/12/2008 Nguyên lý Hệ điều hành 82
Hàng đợi nhiều mức phản hồi (MFQ)
Không cố định tiến trình trên một hàng đợi
Ví dụ: các hàng đợi với các độ ưu tiên khác nhau
Các tiến trình gắn với Vào/Ra ở hàng đợi có độ
ưu tiên caoChuyển các tiến trình sử dụng CPU đến các hàngđợi có độ ưu tiên thấp
Chuyển các tiến trình phải đợi lâu đều đặn lênphía trên
JVM sử dụng thuật toán Preemptive, và
dựa trên độ ưu tiên trong lập lịch
Hàng đợi FIFO được sử dụng nếu có
nhiều luồng cùng mức ưu tiên
Lập lịch các luồng trong Java
JVM lập lịch khi:
1. Tiến trình đang chạy ra khỏi trạng thái runnable
2. Một tiến trình có độưu tiên cao hơn vào trạngtháirunnable
Trang 39Giải pháp của Peterson Đồng bộ nhờ phần cứng Semaphores
3 bài toán đồng bộ điển hình Monitors
Trang 403/12/2008 Nguyên lý Hệ điều hành 89
4.1 Nền tảng
Truy nhập đồng thời đến dữ liệu chia sẻ có
thể gây ra sự không nhất quán về dữ liệu
//produce an item while (count == BUFFER_SIZE);
while (count == 0)
; // do nothing
nextConsumed = buffer[out]; out = (out + 1) %
Giả sử ban đầu “count = 5”:
S0: producer thực thi register1 = count {register1 = 5}
S1: producer thực thi register1 = register1 + 1 {register1 = 6}
S2: consumer thực thi register2 = count {register2 = 5}
S3: consumer thực thi register2 = register2 - 1 {register2 = 4}
S4: producer thực thi count = register1 {count = 6 }
S5: consumer thực thi count = register2 {count = 4}
Chạy đua
Chạy đua: Tình huống nhiều tiến trình cùng truycập và xử lý dữ liệu dùng chung đồng thời Giá trịcuối cùng của dữ liệu phụ thuộc vào tiến trình sẽ kếtthúc cuối
Để tránh việc chạy đua, các tiến trình đồng thời cầnphải được đồng bộ hóa