You are on page 1of 70

HỆ ĐIỀU HÀNH

CHƯƠNG 2. QUẢN LÝ TIẾN TRÌNH

Phan Trung Kiên


Bộ môn Kỹ thuật máy tính và Mạng
Nội dung
2.1. Tiến trình
2.2. Luồng
2.3. Định thời CPU
2.4. Đồng bộ hoá (Synchronization)
2.5. Deadlock (bế tắc)

Phan Trung Kiên 2


2.1. Tiến trình
 2.1.1. Khái niệm cơ bản
 2.1.2. Định thời tiến trình
 2.1.3. Các tác vụ cơ bản: tạo/kết thúc tiến trình
 2.1.4. Sự cộng tác giữa các tiến trình
 2.1.5. Giao tiếp giữa các tiến trình

Phan Trung Kiên 3


2.1.1. Khái niệm cơ bản
 Hệ thống máy tính thực thi nhiều chương trình khác nhau
 Batch system: jobs
 Time-shared systems: user programs, tasks
 Job  process
 Tiến trình (process)
 một chương trình đang thực thi
Một tiến trình bao gồm
 Text section (program code), data section (chứa global variables)
 Hoạt động hiện thời: program counter (PC), process status word
(PSW), stack pointer (SP), memory management registers

Phan Trung Kiên 4


Các bước nạp chương trình vào bộ nhớ

Phan Trung Kiên 5


Từ chương trình đến tiến trình
 Dùng load module để biểu diễn chương trình thực thi được
 Layout logic của process image Process image in
main memory

Executable binary file


(load module)

start address
program program
code code

data data

stack

Phan Trung Kiên 6


Khởi tạo tiến trình
 Các bước hệ điều hành khởi tạo tiến trình
 Cấp phát một định danh duy nhất (process number hay
process identifier, pid) cho tiến trình
 Cấp phát không gian nhớ để nạp tiến trình
 Khởi tạo khối dữ liệu Process Control Block (PCB)
cho tiến trình
 PCB là nơi hệ điều hành lưu các thông tin về tiến trình
 Thiết lập các mối liên hệ cần thiết (vd: sắp PCB vào
hàng đợi định thời,…)

Phan Trung Kiên 7


Các trạng thái của tiến trình
 Các trạng thái của tiến trình (process states):
 new: tiến trình vừa được tạo
 ready: tiến trình đã có đủ tài nguyên, chỉ còn cần CPU
 running: các lệnh của tiến trình đang được thực thi
 waiting: hay là blocked, tiến trình đợi I/O hoàn tất, tiệp
nhận một tín hiệu.
 terminated: tiến trình đã kết thúc.

Phan Trung Kiên 8


Các trạng thái của tiến trình (tt)
 Chuyển đổi giữa các trạng thái của tiến trình

terminated
new admit dispatch exit

ready running

interrupt
I/O or event I/O or
completion event wait

waiting

Phan Trung Kiên 9


Process control block
 Đã thấy là mỗi tiến trình trong hệ thống đều được cấp
phát một Process Control Block (PCB)
 PCB là một trong các cấu trúc dữ liệu
quan trọng nhất của hệ điều hành

Ví dụ layout của một PCB:


(trường pointer dùng để liên kết
các PCBs thành một linked list)

Phan Trung Kiên 10


Yêu cầu đối với hệ điều hành về quản lý tiến trình

 Hỗ trợ sự thực thi luân phiên giữa nhiều tiến trình


 Hiệu suất sử dụng CPU
 Thời gian đáp ứng

 Phân phối tài nguyên hệ thống hợp lý


 tránh deadlock, trì hoãn vô hạn định,…

 Cung cấp cơ chế giao tiếp và đồng bộ hoạt động


các tiến trình
 Cung cấp cơ chế hỗ trợ user tạo/kết thúc tiến trình
Phan Trung Kiên 11
Quản lý các tiến trình: các hàng đợi
 Ví dụ
các PCB

running 7 process number

ready

11 4 2 17

waiting

19 11

Có gì sai trong ví dụ?

Phan Trung Kiên 12


2.1.2. Định thời tiến trình
 Tại sao phải định thời?
 Multiprogramming
 Có nhiều tiến trình phải thực thi luân phiên nhau
 Mục tiêu: cực đại hiệu suất sử dụng của CPU
 Time-sharing
 Cho phép users tương tác với tiến trình đang thực thi
 Mục tiêu: tối thiểu thời gian đáp ứng
 Một số khái niệm cơ bản
 Các bộ định thời (scheduler)
 Các hàng đợi định thời (scheduling queue)

Phan Trung Kiên 13


Các hàng đợi định thời
 Job queue
 Ready queue
 Device queues
 …

Phan Trung Kiên 14


Mô hình của lập lịch tiến trình

Phan Trung Kiên 15


Bộ lập lịch
 Bộ lập lịch dài hạn (Long-term scheduler - Lập lịc
công việc): lựa chọn các chương trình để đưa vào
hàng đợi ready .
 Bộ lập lịch ngắn hạn (Short-term scheduler – lập
lịch CPU): chọn một tiến trình đã sẵn sàng để
chuyển giao cho CPU thực thi.

Phan Trung Kiên 16


Phương án trung hạn
 Đôi khi hệ điều hành (như time-sharing system) có thêm phương
án trung hạn (medium-term scheduling) để điều chỉnh mức độ
multiprogramming của hệ thống
 Medium-term scheduler
– chuyển tiến trình từ bộ nhớ sang đĩa (swap out)
– chuyển tiến trình từ đĩa vào bộ nhớ (swap in)

Phan Trung Kiên 17


Chuyển ngữ cảnh (context switch)

 Ngữ cảnh (context) của một tiến trình là trạng thái của tiến trình
 Ngữ cảnh của tiến trình được biểu diễn trong PCB của nó
 Chuyển ngữ cảnh (context switch) là công việc giao CPU cho tiến
trình khác. Khi đó cần:
– lưu ngữ cảnh của tiến trình cũ vào PCB của nó
– nạp ngữ cảnh từ PCB của tiến trình mới để tiến trình mới thực thi

Phan Trung Kiên 18


Chuyển ngữ cảnh (tt)

Phan Trung Kiên 19


2.1.3. Các tác vụ đối với tiến trình
 Tạo tiến trình mới (process creation)
 Một tiến trình có thể tạo tiến trình mới thông qua một
system call (vd: hàm fork trong Unix)
 Ví dụ: (Unix) Khi user đăng nhập hệ thống, một command
interpreter (shell) sẽ được tạo ra cho user
tiến trình được tạo là tiến trình con của tiến trình tạo
(tiến trình cha). Quan hệ cha-con định nghĩa một cây
tiến trình.

Phan Trung Kiên 20


Cây tiến trình trong Linux/Unix
root

pagedaemon swapper init

bash bash bash

gcc ls mkdir grep


Các tác vụ đối với tiến trình
 Tạo tiến trình mới
 Chia sẻ tài nguyên của tiến trình cha
 tiến trình cha và con chia sẻ mọi tài nguyên
 tiến trình con chia sẻ một phần tài nguyên của cha
 Trình tự thực thi
 tiến trình cha và con thực thi đồng thời (concurrently)
 tiến trình cha đợi đến khi các tiến trình con kết thúc.

Phan Trung Kiên 22


Về quan hệ cha/con
 Không gian địa chỉ (address space)
 Không gian địa chỉ của tiến trình con được nhân bản từ cha
 Không gian địa chỉ của tiến trình con được khởi tạo từ template.
 Ví dụ trong UNIX/Linux
 System call fork() tạo một tiến trình mới
 System call exec() dùng sau fork() để nạp một chương trình mới
vào không gian nhớ của tiến trình mới

đồng bộ

Phan Trung Kiên 23


Ví dụ tạo process với fork()
#include <stdio.h>
#include <unistd.h>
int main (int argc, char *argv[]){
int pid;
/* create a new process */
pid = fork();

if (pid > 0){


printf(“This is parent process”);
wait(NULL);
exit(0);
}
else if (pid == 0)
{
printf(“This is child process”);
execlp(“/bin/ls”, “ls”, NULL);
exit(0);
}
else {
printf(“Fork error\n”);
exit(-1);
}
}
Phan Trung Kiên 24
Các tác vụ đối với tiến trình (tt)
 Kết thúc tiến trình
 Tiến trình tự kết thúc
 Tiến trình kết thúc khi thực thi lệnh cuối và gọi system routine exit
 tiến trình kết thúc do tiến trình khác (có đủ quyền, vd: tiến trình
cha của nó)
 Gọi system routine abort với tham số là pid (process identifier) của tiến
trình cần được kết thúc
 Hệ điều hành thu hồi tất cả các tài nguyên của tiến trình kết thúc
(vùng nhớ, I/O buffer,…)

Phan Trung Kiên 25


2.1.4. Cộng tác giữa các tiến trình
 Trong tiến trình thực thi, các tiến trình có thể cộng tác
(cooperate) để hoàn thành công việc
 Các tiến trình cộng tác để
 Chia sẻ dữ liệu (information sharing)
 Tăng tốc tính toán (computational speedup)
 Nếu hệ thống có nhiều CPU, chia công việc tính toán thành nhiều công
việc tính toán nhỏ chạy song song
 Thực hiện một công việc chung
 Xây dựng một phần mềm phức tạp bằng cách chia thành các
module/process hợp tác nhau
 Sự cộng tác giữa các tiến trình yêu cầu hệ điều hành hỗ
trợ cơ chế giao tiếp và cơ chế đồng bộ hoạt động của các
tiến trình

Phan Trung Kiên 26


Bài toán producer-consumer
 Ví dụ cộng tác giữa các tiến trình: bài toán
producer-consumer
 Producer tạo ra các dữ liệu và consumer tiêu thụ, sử
dụng các dữ liệu đó. Sự trao đổi thông tin thực hiện
qua buffer
 unbounded buffer: kích thước buffer vô hạn (không thực tế).
 bounded buffer: kích thước buffer có hạn.
 Producer và consumer phải hoạt động đồng bộ vì
 Consumer không được tiêu thụ khi producer chưa sản xuất
 Producer không được tạo thêm sản phẩm khi buffer đầy.

Phan Trung Kiên 27


2.1.5. Giao tiếp giữa các tiến trình
 Interprocess communication (IPC): là cơ chế cung
cấp bởi hệ điều hành nhằm giúp các tiến trình
 giao tiếp với nhau
 và đồng bộ hoạt động

mà không cần chia sẻ không gian địa chỉ

Phan Trung Kiên 28


Mô hình giao tiếp

(a) Message passing. (b) Shared memory.

Phan Trung Kiên 29


Message passing system
 Làm thế nào để các tiến trình giao tiếp nhau? Các vấn đề:
 Naming
 Giao tiếp trực tiếp
 send(P, msg): gửi thông điệp đến tiến trình P
 receive(Q, msg): nhận thông điệp đến từ tiến trình Q
 Giao tiếp gián tiếp: thông qua mailbox hay port
 send(A, msg): gửi thông điệp đến mailbox A
 receive(B, msg): nhận thông điệp từ mailbox B
 Synchronization: blocking send, nonblocking send, blocking receive, nonblocking
receive
 Buffering: dùng queue để tạm chứa các message
 Zero capacity (no buffering)
 Bounded capacity: độ dài của queue là giới hạn
 Unbounded capacity: độ dài của queue là không giới hạn

Phan Trung Kiên 30


2.2 Luồng (Thread)
 2.2.1. Tổng quan
 2.2.2. Các mô hình đa luồng
 2.2.3. Pthreads (POSIX thread)
 2.2.4. Multithreading trong Solaris 2
 2.2.5. Multithreading với Java

Phan Trung
44 Kiên
2.2.1 Tổng quan
 Khái niệm tiến trình truyền thống: tiến trình gồm
 Không gian địa chỉ (text section, data section)
 Một luồng thực thi duy nhất (single thread of
execution)
 program counter
 các register
 stack
 Các tài nguyên khác (các open file, các tiến trình
con,…)

Phan Trung
45 Kiên
Mở rộng khái niệm tiến trình
 Mở rộng khái niệm tiến trình truyền thống bằng cách
hiện thực nhiều luồng thực thi trong cùng một môi
trường của tiến trình.
 Tiến trình gồm
 Không gian địa chỉ (text section, data section)
 Một hay nhiều luồng thực thi (thread of execution), mỗi luồng
thực thi (thread) có riêng
 program counter
 các register
 stack
 Các tài nguyên khác (các open file, các tiến trình con,…)

Phan Trung
46 Kiên
Tiến trình đơn luồng và đa luồng

Phan Trung Kiên 47


Tiến trình đa luồng
 Các thread trong cùng một process chia sẻ code
section, data section và tài nguyên khác (các file
đang mở,...) của process.
 Tiến trình đa luồng (multithreaded process) là
tiến trình có nhiều luồng.

Phan Trung
48 Kiên
Sử dụng thread

mouse

A word processor with three threads


Phan Trung
49 Kiên
Process & thread information
Per process items
Address space
Open files
Child processes
Signals & handlers
Accounting info
Global variables

Per thread items Per thread items Per thread items


Program counter Program counter Program counter
Registers Registers Registers
Stack & stack pointer Stack & stack pointer Stack & stack pointer
State State State

(Tiến trình gồm ba thread)


Phan Trung
50 Kiên
Multiplexing CPU giữa các thread

time

CPU

ba tiến trình
single-threaded

Phan Trung
51 Kiên
Multiplexing CPU giữa các thread (tt)

time

CPU

hai tiến trình


multithreaded

Phan Trung
52 Kiên
Ví dụ Pthread program (Linux)
#include <stdio.h> Static Data
void* thread1(){
int i;
Heap
for (i = 0; i < 10; i++){
printf(“Thread 1\n”); sleep(1); thread1
} SP1 stack
}
void* thread2(){
thread2
int i;
for (i = 0; i < 10; i++){ SP2 stack
printf(“Thread 2\n”); sleep(1);
}
PC1
int main(){ Text PC2
pthread_t th1, th2;
pthread_create(&th1, NULL, thread1, NULL);
pthread_create(&th2, NULL, thread2, NULL);
sleep(20);
return 0; Sơ đồ bộ nhớ
}

Phan Trung
53 Kiên
Ưu điểm của thread
 Tính đáp ứng (responsiveness) cao cho các ứng dụng
tương tác multithreaded
 Chia sẻ tài nguyên (resource sharing): vd memory
 Tiết kiệm chi phí hệ thống (economy)
 Chi phí tạo/quản lý thread nhỏ hơn so với tiến trình
 Chi phí chuyển ngữ cảnh giữa các thread nhỏ hơn so với tiến
trình
 Tận dụng kiến trúc đa xử lý (multiprocessor)
 Mỗi thread chạy trên một processor riêng, do đó tăng mức độ
song song của chương trình.

Phan Trung
54 Kiên
Thư viện luồng
 Một thư viện thread (thread library, run-time
system) được hiện thực trong không gian ứng
dụng để hổ trợ các tác vụ lên thread
 Thư viện thread cung cấp các hàm khởi tạo, định thời
và quản lý thread như
 thread_create
 thread_exit
 thread_wait
 thread_yield
 Thư viện thread dùng Thread Control Block (TCB) để
lưu trạng thái của user thread (program counter, các
register, stack)
Phan Trung
55 Kiên
User thread
 Ví dụ: hệ điều hành truyền thống chỉ cung cấp
một “kernel thread” duy nhất (biểu diễn bởi một
PCB) cho mỗi process.
 Blocking problem: Khi một thread trở nên blocked thì
kernel thread cũng trở nên blocked, do đó mọi thread
khác của process cũng sẽ trở nên blocked.
user
thread

thread library thread library thread library

PCB PCB PCB


kernel

Phan Trung
56 Kiên
Kernel thread
 Cơ chế multithreading được hệ điều hành trực tiếp hỗ trợ
 Kernel quản lý cả process và các thread
 Việc định thời CPU được kernel thực hiện trên thread

Phan Trung
57 Kiên
Kernel thread (tt)
 Cơ chế multithreading được hỗ trợ bởi kernel
 Khởi tạo và quản lý các thread chậm hơn
 Tận dụng được lợi thế của kiến trúc multiprocessor
 Thread bị blocked không kéo theo các thread khác bị blocked.
 Một số hệ thống multithreading (multitasking)
 Windows 9x/NT/200x
 Solaris
 Linux

Phan Trung
58 Kiên
Các mô hình đa luồng
 Thread có thể hiện thực theo một trong các mô
hình sau
 Mô hình many-to-one
 Mô hình one-to-one
 Mô hình many-to-many

Phan Trung
59 Kiên
Mô hình many-to-one
 Nhiều user-level thread “chia
sẻ” một kernel thread để thực
thi
 Việc quản lý thread được thực
hiện thông qua các hàm của một
thread library được gọi ở user
level.
 Blocking problem: Khi một
thread trở nên blocked thì
kernel thread cũng trở nên
blocked, do đó mọi thread khác
của process cũng sẽ trở nên
blocked. kernel thread
 Có thể được hiện thực đối với
hầu hết các hệ điều hành.
60
Phan Trung Kiên
Mô hình one-to-one
 Mỗi user-level thread
thực thi thông qua một
kernel thread riêng của

 Mỗi khi một user thread
được tạo ra thì cũng cần
tạo một kernel thread
tương ứng

 Hệ điều hành phải có cơ kernel thread

chế cung cấp được nhiều


61
Phan Trung Kiên
Mô hình many-to-many
 Nhiều user-level thread
được phân chia thực thi
(multiplexed) trên một số
kernel thread.
 Tránh được một số khuyết
điểm của hai mô hình
many-to-one và one-to-one
 Ví dụ
 Solaris 2
 Windows NT/2000 với
package ThreadFiber kernel thread

62
Phan Trung Kiên
2.2.3. Pthreads
 Chuẩn POSIX (IEEE 1003.1c) cung cấp các API hỗ trợ
tạo thread và đồng bộ thread (synchronization)
 Phổ biến trong các hệ thống UNIX/Linux
 Là một thư viện hỗ trợ user-level thread
 Tham khảo thêm ví dụ về lập trình thư viện Pthread với
ngôn ngữ C trong hệ thống Unix-like, trang 140,
“Operating System Concepts”, Silberschatz et al, 6th Ed,
2003.
 Biên dịch và thực thi chương trình multithreaded C trong
Linux
$ gcc source_file.c -lpthread –o output_file
$ ./output_file

Phan Trung
63 Kiên
2.2.4. Thread trong Solaris
 User-level threads
 Pthread và UI-thread
 Lightweight process (LWP)
 Mỗi process chứa ít nhất một LWP
 Thư viện thread có nhiệm vụ phân định user thread vào các
LWP
 User-level thread được gắn với LWP thì mới được thực thi.
 Thư viện thread chịu trách nhiệm điều chỉnh số lượng LWP
 Kernel-level thread
 Mỗi LWP tương ứng với một kernel-level thread
 Ngoài ra, hệ thống còn có một số kernel threads dành cho một
số công việc ở kernel (các thread này không có LWP tương
ứng)
Phan Trung
64 Kiên
 Đối tượng được định thời trong hệ thống là các kernel thread
2.2.4. Thread trong Solaris (tt)

many-to-many
Phan Trung
65 Kiên
2.2.4. Thread trong Solaris (tt)

LWP1 LWP2 LWP3

Tiến trình trong Solaris


Phan Trung
66 Kiên
2.2.5. Thread trong Java
 Hỗ trợ tạo và quản lý thread ở mức ngôn ngữ lập trình
(language-level)
 Tất cả chương trình Java chứa ít nhất là một thread
 Các thread của Java được quản lý bởi JVM
 Hai phương pháp tạo Java Threads
1. extend Thread class và override method run()
2. Hiện thực (implementing) Runnable interface

Phan Trung
67 Kiên
Trạng thái của Java thread

Phan Trung Kiên 68


2.3. ĐỊNH THỜI CPU
(CPU Scheduling)
Nội dung
2.3.1. Các khái niệm cơ bản
2.3.2. Tiêu chí lập lịch
2.3.3. Các thuật toán lập lịch
2.3.4. Lập lịch trên hệ thống nhiều CPU

Phan Trung Kiên 70


2.3.1. Các khái niệm cơ bản
 Chu kỳ CPU-I/O

 CPU-bound process có thời


gian sử dụng CPU nhiều
hơn thời gian sử dụng I/O

 I/O-bound process dùng


phần lớn thời gian để đợi
I/O

Phan Trung Kiên 71


Các khái niệm cơ bản
 Trong các hệ thống multitasking
 Tại một thời điểm trong bộ nhớ có nhiều process
 Tại mỗi thời điểm chỉ có một process được thực thi
 Do đó, cần phải giải quyết vấn đề phân chia, lựa chọn
process thực thi sao cho được hiệu quả nhất. Cần có
chiến lược lập lịch CPU

Phan Trung Kiên 72


Phân loại các hoạt động lập lịch
new
Long-term Long-term
scheduling scheduling
Đường gạch rời:
chuyển đổi không nhất thiết có
Medium-term
suspended scheduling Short-term
ready
ready scheduling

running

Medium-term
scheduling
suspended
blocked terminated
blocked

Phan Trung Kiên 73


Phân loại các hoạt động lập lịch
 Lập lịch dài hạn (long-term scheduling): xác
định process nào được chấp nhận vào hệ thống
 Lập lịch trung hạn (medium-term scheduling):
xác định process nào được đưa vào (swap in),
đưa ra khỏi (swap out) bộ nhớ chính
 Lập lịch ngắn hạn (short-term scheduling): xác
định process nào được thực thi tiếp theo

Phan Trung Kiên 74


Lập lịch dài hạn
 Xác định chương trình nào sẽ được đưa vào hệ
thống để thực thi
 Quyết định độ-đa-lập-trình (degree of
multiprogramming)
 Nếu càng nhiều process được đưa vào hệ thống
 Khả năng các process bị block có xu hướng giảm
 Sử dụng CPU hiệu quả hơn
 Mỗi process được phân chia khoảng thời gian sử dụng
CPU thấp hơn
 Thường có xu hướng đưa vào một tập lẫn lộn các
CPU-bound process và I/O-bound process
Phan Trung Kiên 75
Lập lịch trung hạn
 Quyết định việc đưa process vào bộ nhớ chính,
hay ra khỏi bộ nhớ chính
 Phụ thuộc vào yêu cầu quản lý việc đa-lập-trình
(multiprogramming)
 Cho phép bộ lập lịch dài hạn chấp nhận nhiều process
hơn số lượng process mà có tổng kích thước được chứa
vừa trong bộ nhớ chính
 Nhưng nếu có quá nhiều process thì sẽ làm tăng việc
truy xuất đĩa, do đó cần phải lựa chọn độ-đa-lập-trình
cho phù hợp
 Được thực hiện bởi phần mềm quản lý bộ nhớ
Phan Trung Kiên 76
Lập lịch ngắn hạn
 Xác định process nào được thực thi tiếp theo, còn
gọi là lập lịch CPU
 Được kích hoạt khi có một sự kiện có thể dẫn đến
khả năng chọn một process để thực thi
 Ngắt thời gian (clock interrupt)
 Ngắt ngoại vi (I/O interrupt)
 Lời gọi hệ thống (operating system call)
 Signal

Phan Trung Kiên 77


Nội dung cần quan tâm
 Chương này sẽ tập trung vào lập lịch ngắn hạn.
 Lập lịch trên hệ thống có một processor
(uniprocessor scheduling): quyết định việc sử
dụng (một) CPU cho một tập các process trong hệ
thống

Phan Trung Kiên 78


Hai thành phần của chiến lược lập lịch
 Hàm lựa chọn (selection function)
 Xác định process nào trong ready queue sẽ được thực
thi tiếp theo. Thường theo các tiêu chí như
 w = tổng thời gian đợi trong hệ thống
 e = thời gian đã được phục vụ
 s = tổng thời gian thực thi của process (bao gồm cả trị e)

Phan Trung Kiên 79


Hai thành phần của chiến lược lập lịch

 Chế độ quyết định (decision mode)


 Chọn thời điểm hàm lựa chọn lập lịch thực thi
 Nonpreemptive (độc quyền)
 Một process sẽ ở trạng thái running cho đến khi nó bị block
hoặc nó kết thúc
 Preemptive (không độc quyền)
 Process đang thực thi có thể bị ngắt và chuyển về trạng thái
ready
 Tránh trường hợp một process độc chiếm CPU

Phan Trung Kiên 80


Nonpreemptive và preemptive
 Hàm lập lịch có thể được thực thi khi có quá trình
(1) chuyển từ trạng thái running sang waiting
(2) chuyển từ trạng thái running sang ready
(3) chuyển từ trạng thái waiting, new sang ready
(4) kết thúc thực thi Tải bản FULL (121 trang): https://bit.ly/3dT1NTl
Dự phòng: fb.com/TaiHo123doc.net

 Định thời nonpreemptive: chỉ thực thi hàm lập


lịch trong trường hợp 1 và 4
 Định thời preemptive: ngoài trường hợp 1 và 4
còn thực thi thêm hàm lập lịch trong trường hợp 2
hoặc 3 (hoặc cả hai)
Phan Trung Kiên 81
Dispatcher
 Dispatcher sẽ chuyển quyền điều khiển CPU về cho process
được chọn bởi bộ lập lịch ngắn hạn
 Bao gồm: Tải bản FULL (121 trang): https://bit.ly/3dT1NTl
Dự phòng: fb.com/TaiHo123doc.net
 Chuyển ngữ cảnh (sử dụng thông tin ngữ cảnh trong PCB)
 Chuyển về user mode
 Nhảy đến vị trí thích hợp trong chương trình ứng dụng để khởi động
lại chương trình (chính là program counter trong PCB)
 Công việc này gây ra phí tổn
 Dispatch latency: thời gian mà dispatcher dừng một process và khởi
động một process khác

Phan Trung Kiên 82


Dispatch latency

3139332
Conflict phase: xem p. 171

Phan Trung Kiên 83

You might also like