1. Trang chủ
  2. » Công Nghệ Thông Tin

Tai lieu on cuoi ki HDH

34 292 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 1,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

I. Mô hình process: a. Khái niệm process: Process là chương trình được thực thi: Được nạp vào bộ nhớ: mã chương trình, mã lệnh……. Có các thông tin trạng thái: thanh ghi PC, các thanh ghi,… Mỗi process thực thi trên một CPU ảo Hệ thống có nhiều process đồng thời: Đa chương 1 CPU. Đa xử lý nhiều CPU trên 1 máy. Phân bố nhiều CPU trên nhiều máy. b. Tổ chức thứ bậc các process: Tạo process mới : hệ điều hành thực hiện Tạo cấu trúc thông tin quản lý Cập nhật vùng nhớ, nạp chương trình Tình huống tạo process: Hệ điều hành tạo process mới. User yêu cầu tạo process mới. Process tạo process mới. Kết thúc process: Chủ động: Kết thúc bình thường Kết thúc có lỗi sai Bị động: Bị kết thúc bởi yêu cầu của process khác Kết thúc do lỗi nghiêm trọng (kết thúc bởi hệ điều hành) Thu hồi tài nguyên Quan hệ thứ bậc Parentchild (chacon) Process tạo: Parent process. Process được tạo: Child process. Hiện thực: UNIX : process group: khi cha bị hủy, con bị hủy theo Windows: không có tổ chức thứ bậc, các process ngang hàng.

Trang 1

Vấn đề 1 Quản lý process

I Mô hình process:

a Khái niệm process:

− Process là chương trình được thực thi:

 Được nạp vào bộ nhớ: mã chương trình, mã lệnh……

 Có các thông tin trạng thái: thanh ghi PC, các thanh ghi,…

− Mỗi process thực thi trên một CPU ảo

− Hệ thống có nhiều process đồng thời:

 Đa chương - 1 CPU

 Đa xử lý - nhiều CPU trên 1 máy

 Phân bố - nhiều CPU trên nhiều máy

b Tổ chức thứ bậc các process:

− Tạo process mới : hệ điều hành thực hiện

 Tạo cấu trúc thông tin quản lý

 Cập nhật vùng nhớ, nạp chương trình

− Tình huống tạo process:

 Hệ điều hành tạo process mới

 User yêu cầu tạo process mới

 Process tạo process mới

 Bị kết thúc bởi yêu cầu của process khác

 Kết thúc do lỗi nghiêm trọng (kết thúc bởi hệ điều hành)

 Thu hồi tài nguyên

− Quan hệ thứ bậc

 Parent-child (cha-con)

 Process tạo: Parent process

 Process được tạo: Child process

 Hiện thực:

 UNIX : process group: khi cha bị hủy, con bị hủy theo

 Windows: không có tổ chức thứ bậc, các process ngang hàng

c Các trạng thái của process:

1 Mô hình đơn giản:

Trang 2

2 Mô hình 3 trạng thái:

− Thực thi – Running:

 Đang thực thi (đang sử dụng CPU)

 Chỉ có 1 running process tại 1 thời điểm trên hệ thống đa chương

− Sẵn sàng – Ready:

 Sẵn sàng thực thi, tạm dừng chờ CPU

 Có nhiều ready process

 Được quản lý bằng ready queue

− Bị chặn – Blocked:

 Không thể thực thi cho đến khi có biến cố xảy ra

 Có nhiều blocked process

 Được quản lý bằng blocked queue

2 Chuyển trạng thái:

− Running -> Blocked(1): chờ biến cố

− Running -> Ready (2): hết thời gian

− Ready - > Running (3): được thực thi

− Blocked -> Ready (4): biến cố xảy ra

Thời điểm chuyển trạng thái:

 Ngắt quãng thời gian – Clock Interrupt

 Dùng để kiểm soát thời gian

 Ngắt quãng thiết bị - I/O Interrupt

 Liên quan đến thiết bị I/O

 Lệnh gọi hệ thống, lỗi – System call, trap

 Khi gọi system calls, hay khi có lỗi

 Lỗi truy suất bộ nhớ (Memory Fault)

 System Call, trap

Bộ điều phối:(scheduler)

Trang 3

3 Mô hình 5 trạng thái:

− New: khối thông tin quản lý process đã được tạo Process chưa được nạp vào bộ nhớ chính

− Exit: process đã kết thúc, khối thông tin process vẫn được lưu trữ  cho phép rút trích

− Chuyển trạng thái:

 NULL -> new

 New -> Ready : Khi số process nạp chưa vượt quá giới hạn

 Running -> Exit : Process kết thúc xảy ra tương ứng với các tình huống chủ động

4 Trạng thái trì hoãn (Suspend):

− Tiến trình không thực thi được chuyển tạm ra bộ nhớ ngoài -> đình hoãn

− Dành bộ nhớ để nạp các tiến trình thực thi khác

− Mô hình 1 trạng thái đình hoãn:

− Mô hình 2 trạng thái đình hoãn:

• Blocked -> Blocked / Suspend

 Không còn process sẵn sang

 Còn Process sẵn sang nhưng cần thêm bộ nhớ

• Blocked/ Suspend -> Ready/Suspend

• Ready/Suspend -> Ready

Trang 4

 Không còn process ở trạng thái sẵn sàng

 Process ở trạng thái sẵn sàng/ đình hoãn có độ ưu tiên cao

 Bảng File – File Tables

 Bảng xuất nhập – I/O Tables

 Memory table:

 Thông tin cấp phát bộ nhớ cho process

 Bộ nhớ chính

 Bộ nhớ phụ

 Các thuộc tính bảo vệ vùng nhớ dung chung

 Thông tin cần cho việc quản lý bộ nhớ ảo

 Hầu hết các thông tin được quản lý bởi hệ thống quản lý file.

− Cấu trúc các bảng phụ thuộc hệ điều hành

− Process trên bộ nhớ -> ảnh process (process image)

− Thông tin quản lý process:

 Danh hiệu (ID) cho phép xác định 1 process

+Độ ưu tiên +…

 PCB : Process Control Block

− Khối thông tin quản lý process

Trang 5

 Được tạo và quản lý bởi hệ điều hành

 Được tạo vào thời điểm tạo process

− Chứa các thông tin cần thiết để quản lý process

 Process ID

 Thông tin trạng thái CPU

 Thông tin điều khiển Process

 Chuyển đổi ngữ cảnh: 2 công đoạn

III Truyền thông giữa các process

a Tương tác giữa các process

− Nhiều tiến trình thực hiện đồng thời

− Ba dạng tương tác giữa các tiến trình

 Các process độc lập

 Các process biết nhau gián tiếp (thông qua tài nguyên dùng chung)

 Các process biết nhau trực tiếp (các process thuộc về 1 phần mềm)

− Các process dùng chung tài nguyên Việc dùng chung tài nguyên có thể dẫn đến tranh chấp

b Tranh chấp tài nguyên

− Điều kiện dẫn đến tranh chấp:

 Hai hoặc nhiều process cùng truy suất tài nguyên dùng chung

 Thứ tự truy xuất ảnh hưởng đến kết quả thực hiện của các process (truy xuất có cập nhật, sửa đổi)

− Giải pháp giải quyết triệt để vấn đề tranh chấp tài nguyên giữa các process:

Khi có một process vào vùng tranh chấp thì tất cả các process khác phải ở ngoài vùng tranh chấp.

 Các vấn đề nảy sinh:

− Deadlock

− Starvation

 Các yêu cầu:

(1) Tại một thời điểm chỉ có tối đa một process đang ở trong vùng tranh chấp.( Điều kiện tiên quyết)

(2) Không có giả sử gì về tốc độ và số lượng CPU

(3) Không có process nào ở ngoài vùng tranh chấp có thể ảnh hưởng đến process khác

(4) Không có process nào chờ vô hạn định

Trang 6

 Áp dụng:

− Nguyên tắc chung:

• Đi vào vùng tranh chấp (enter_region())

 Kiểm tra điều kiện “được vào”

+ Thỏa: báo hiệu đã vào + Không thỏa: chờ

• Ra khỏi vùng tranh chấp (leave_region())

 Báo hiệu: “đã ra”

 Cơ chế chờ:

Có 2 dạng chờ:

− Busy-Waiting

 Chờ bằng vòng lặp

 Lặp vòng kiểm tra điều kiện “được vào”

 Dùng trong các giải pháp loại trừ tương hỗ

 Bằng phần mềm

 Phần cứng hỗ trợ

− Sleep-Wakeup

 Chờ bằng trạng thái Blocked:

 Process chờ vào vùng tranh chấp -> chuyển sang trạng thía Blocked (sleep)

 Process ra khỏi vùng tranh chấp báo hiệu -> đánh thức process chờ

 Giải pháp loại trừ tương hỗ có sự hỗ trợ của hệ điều hành

 Giải pháp:

 Phần mềm giải quyết loại trừ tương hỗ:

Giải thuật đơn giản:

P0flag=0;

while ( TRUE ){

while (flag==0) flag=1; //vào critical_region();

flag=0; //ra noncritical_region();

}

 (chưa giải quyết được)

Giải thuật luân phiên nghiêm ngặt: (Strict Alternation)

 Giải quyết trường hợp 2 process (P0 và P1) và một tài nguyên

 Hai process dùng một biến turn để xác định đến phiên process nào vào vùng tranh chấp

 Khởi động turn = 0

Trang 7

P0 kiểm tra biến turn:

P0 vào vùng tranh chấp nếu turn = 0P0 chờ khi turn = 1

P0 gán turn = 1 khi rời vùng tranh chấp

 Đánh giá giải thuật luân phiên nghiêm ngặt

 Đạt yêu cầu (1) và yêu cầu (4)

 Giả sử P0 vào vùng tranh chấp 100 lần/đơn_vị_thời_gian , P1 vào vùng tranh chấp 1 lần/đơn_vị_thời_gian: do luân phiên nghiêm ngặt nên P0 chỉ được vào vùng tranh chấp

1 lần/đơn_vị_thời_gian  không thỏa yêu cầu (2)

 Giả sử P1 có lỗi ngoài vùng tranh chấp: P0 dừng mãi mãi tại vòng while không thỏa yêu cầu (3)

Giải thuật Peterson:

 Xét trường hợp 2 process (P0 và P1) và một tài nguyên

 Hai process dùng chung:

 Biến turn: xác định đến phiên process nào vào vùng tranh chấp.

 Mảng boolean interested[2]: thể hiện process sẵn sàng vào vùng tranh chấp.

 Interested[0] : P0 sẵn sàng vào vùng tranh chấp

 khởi động interested[0] = interested[1]=FALSE

#define FALSE 0

#define TRUE 1

#define N 2 //số process

void enter_region( int process)

{

while (turn == process && interested[other] == TRUE);

Trang 8

 Phần cứng hỗ trợ giải quyết loại trừ tương hỗ:

TSL (Test Set Lock):

Đọc giá trị một từ nhớ vào một thanh ghi sau đó ghi giá trị khác 0 (thường là 1) vào từ nhớ

Thao tác đọc và ghi nêu trên là trong cùng một lệnh – Thao tác đơn vị (atomic, primitive)

 Ứng dụng lệnh TSL trong loại trừ tương hỗ:

Giải quyết trường hợp n process

n process dùng chung 1 biến flag, khợi động flag = 0

enter_region:

leave_region:

CPMXCHG (IA32) – Compare and Exchange

Cú pháp: CMPXCHG DEST, SRC

Hoạt động: CMP accumulator(AL/AX/EAX) với toán hạng đích.Nếu bằng nhau thì toán hạng nguồn

sẽ được copy sang toán hạng đích Còn không thì toán hạng đích sẽ được copy sang accumulator

Swap thao tác trên nội dung của 2 từ; như chỉ thị TSL, nó được thực thi theo tính nguyên tử

Hoạt động loại trừ tương hỗ: 1 biến luận lý toàn cục lock được khai báo và được khởi tạo là false Ngoài ra, mỗi quá trình cũng có 1 biến luận lý cục bộ key Cấu trúc của quá trình Pi được hiển thị như sau:

}

Trang 9

Dùng để báo hiệu (signaling)

Khi process chờ báo hiệu thì vào trong trạng thái blocked, không chờ bằng vòng lặp

Khởi động giá trị - init() ; (Semaphore nhận giá trị không âm.)

Giảm giá trị - down() / wait() / P() ; (Giảm giá trị semaphore 1 đơn vị

Nếu semaphore âm thì process gọi thao tác down() sẽ bị blocked, và vào hàng đợi semaphore.)

Tăng giá trị - up() / signal() / V(); (Tăng giá trị semaphore 1 đơn vị

Nếu semaphore không dương thì có 1 process trong hàng đợi semaphore được chuyển sang trạng thái ready )

s.count++;

if (s.count <= 0){

lấy 1 process P ra khỏi s.queue;

đưa process P vào read queue;

} }

d/ Áp dụng semaphores xử lý loại trừ tương hỗ:

Giải quyết trường hợp n process bằng cách dùng chung một semaphore s, khởi động s = 0

while(TRUE) {

down(s); //kiểm tra điều kiện

critical_region(); // vùng tranh chấp

up(s); //thông báo trạng thái

noncritcal_region(); //vùng không tranh chấp

}

e/ Phân loại semaphores

• Couting semaphore (dạng đếm)còn gọi là general semaphore

• Binary Semaphore (dạng nhị phân), trị semaphore thuộc {0,1}

f/ Mutex

• Dạng hiện thực đơn giản của binary semaphore

• Cấu trúc dữ liệu:

struct mutex {

Trang 10

Lấy 1 process P ra khỏi s.queue;

Đưa process P vào read queue;

} }

g/ Monitors

Module phần mềm có chức năng tương tự semaphore

Tính chất:

• Dữ liệu cục bộ chỉ có thể truy xuất được bởi các procedure của monitor

• Process vào monitors bằng cách gọi procedure của monitor

• Tại một thời điểm chỉ có tối đa một process đang vận hành trong monitors

 Vấn đề đồng bộ

Bài toán Producer/Consumer

Nhận xét:

• Tổ chức buffer có dạng xoay vòng (circular buffer)

• Producer nhanh hơn: mất dữ liệu

• Consumer nhanh hơn: trùng dữ liệu

Giải quyết:

#define N 100 /* kích thước buffer */

typedef int semaphore; /* kiểu semaphore */

Trang 11

}

}

Bài toán Dining Philosophers

 Có 5 triết gia ngồi quanh 1 bàn tròn

 Mỗi triết gia có 1 đĩa thức ăn, khi ăn cần 2 nĩa

 Hoạt động của triết gia: luân phiên giữa suy nghĩ và ăn

 Khi triết gia đói: cần nĩa trái và nĩa phải đồng thời, nếu có 2 nĩa thì ăn

 Sau khi ăn thì trả 2 nĩa và típ tục suy nghĩ

 Nếu 5 triết gia đồng thời cầm nĩa trái, chờ nĩa phài : deadlock

 Nếu 5 triết gia đồng thời trả nĩa trái, suy nghĩ, đồng thời cầm nĩa phải: Starvation

#define N 5 // tổng số triết gia

#define LEFT (i+N-1)%N // số thứ tự của triết gia bên trái

#define RIGHT (i+1)%N // số thứ tự của triết gia bên phải

#define THINKING 0 // đang suy nghĩ

#define HUNGRY 1 // triết gia đói

#define EATING 2 // đang ăn

typedef int semaphore; // semaphore

void philosopher( int i) // i: số thứ tự của triết gia từ 0 đến 4

{

while ( TRUE )

{

Trang 12

take_forks(i); // lấy nĩa

}

void put_forks( int i)

{

Bài toán Reader and Writer

 Reader: đọc dữ liệu từ nguồn

 Writer: ghi dữ liệu vào nguồn

 Nhiều reader có thể cùng đọc dữ liệu Tại 1 thời điểm reader và writer ko thể cùng thao tác trên

nguồn dữ liệu Tại 1 thời điểm chỉ có 1 writer ghi dữ liệu

typedef int semaphore;

if (rc == 0) up(&db); // nếu đây là reader cuối cùng

use_data_read();

}

}

Trang 13

void writer( void )

{

while ( TRUE ){

think_up_data();

}

}

Bài toán Baber shop

 Một cửa hiệu cắt tóc có một thợ, một ghế cắt tóc và N ghế cho khách đợi

 Nếu không có khách hàng, anh thợ cắt tóc sẽ ngồi vào ghế cắt tóc và ngủ thiếp đi

 Khi một khách hàng vào tiệm, anh ta phải đánh thức người thợ

 Nếu một khách hàng vào tiệm khi người thợ đang bận cắt tóc cho khách hàng khác, người mới

vào sẽ phải ngồi chờ nếu có ghế đợi trống, hoặc rời khỏi tiệm nếu đã có N người đợi

while ( TRUE ) {

down(&mutex);

if (waiting<CHAIR) {

up(&mutex);

} }

IV Điều phối

a/ Khái niệm:

Trang 14

− Điều phối (scheduling):

 Xác định thời điểm và chọn process được thực thi

 Do bộ điều phối(scheduler) thực hiện

− Các dạng điều phối trên hệ thống đa chương (3 phân cấp điều phối):

 Thời gian dài:

 Xác định chương trình đưa vào hệ thống để thực thi

 Liên quan việc tạo process mới; kiểm soát bậc MultiPrograming

 Thời gian trung bình:

 Quyết định chuyển process sang trạng thái đình hoãn và ngừng lại

 Liên quan việc đưa process vào và ra bộ nhớ

 Thời gia ngắn:

 Chọn ready process để cho thực thi

 Được gọi khi có các sự kiện:

+ Clock Interrupt + I/O interrupt + Operaing system call + Signal

− Các chiến lược điều phối:

⇒ Non-preemptive:

 Không dừng process đang thực thi

 Một process đang thực thi sẽ thực thi cho đến khi kết thúc hoặc bị chặn

 Thực hiện chức năng điều phối

− Cơ chế chính sách điều phối:

 Tình huống:

Process có nhiều thread / process con

Process biết mức độ quan trọng của các thread/process con

 Cơ chế:

Kernel thực hiện giải thuật điều phối có thông số

Cơ chế của Kernel cho phép qui định chính sách điều phối thông qua các thông số

 Chính sách điều phối:

User process cung cấp thông số cho giải thuật điều phối

Qui định chính sách điều phối

− Tiêu chuẩn:

 Mọi hệ thống :

Cân bằng phảiCông bằng

 Hệ thống xử lí theo nhóm

Thông lượng caoThời gian thực hiện ngắn

Trang 15

Hiệu quả sử dụng CPU cao

 Hệ thống tương tác:

Thời gian đáp ứng ngắnThời gian đáp ứng phù hợp với tiêu chuẩn công việc

b/ Mục tiêu điều phối:

− Thời gian đáp ứng

− Thông lượng

− Sử dụng CPU hiệu quả

c/ Các phương pháp điều phối:

(1) Độ ưu tiên (Priorities)

(2) First – In – First – Out (FIFO)

(3) Round Robin (RR)

(4) Shortest Job First (SJF)

(5) Shortest Remaining Time (SRT)

(6) Multi-level Feedback Queues (MFQ)

Bài tập xem phần ôn giữa kì: OS.OnGiuaKi.doc

-Vấn đề 2 Quản lý bộ nhớ

I Quản lý bộ nhớ ảo:

− Bộ nhớ ảo (virtual memory) là kỹ thuật do hệ điều hành thực hiên với hỗ trợ của phần cứng

 Phân biệt địa chỉ luận lý (địa chỉ ảo ) và địa chỉ vật lý

− Chương trình được viết trên không gian địa chỉ ảo, là thông số của CPU và hệ điều hành

 CPU IA 32: 246bytes, Windows: 232bytes

− Khi thực thi, hệ điều hành nạp chương trình vào bộ nhớ, chuyển đổi địa chỉ ảo thành địa chỉ vật lý, thực thi trên bộ nhớ vật lý

 Phần thực thi được nạp vào bộ nhớ

 Phần còn lại đặt trên đĩa

 Cho phép dùng chung không gian địa chỉ giữa các process

 Hỗ trợ liên kết động

 Bộ nhớ ảo dạng phân trang (paging)

 Bộ nhớ ảo dạng phân đoạn (segmentation)

 Bộ nhớ ảo dạng phân đoạn có phân trang (paged segmentation/ segmentation with paging)

a/ Tổ chức phân trang:

− Không gian địa chỉ ảo chia thành các trang (page)

 Kích thước vài KB, vài MB

− Không gian địa chỉ vật lý bao gồm các khung trang (page frame/ frame)

 Kích thước khung trang = kích thước trang

 Chứa các trang

Trang 16

 Các trang của một process không cần ở trên các khung trang liên tục.

− Có bảng trang (page table) quản lý các trang

 Mỗi process có một bảng trang

b/ Bảng trang:

− Có N dòng, với N là số trang -> mỗi dòng tương ứng với 1 trang

− Cấu trúc phần tử bảng trang:

 Control bits: các bit điều khiển, phục vụ việc thay thế trang hiệu quả

 Bit R (referenced): R = 1 nếu trang đang có được truy xuất trên bộ nhớ

 Bit M (modified): M = 1 nếu trang có được ghi trên bộ nhớ

 Valid bit/ Present bit:

 Valid =0 nếu trang chưa có trên bộ nhớ

 Valid = 1 nếu trang đang có trên bộ nhớ

 Frame number(Frame #)

Số thứ tự khung trang đang chứa trang

c/ Chuyển đổi địa chỉ:

− Chương trình được viết trong không gian đĩa chỉ ảo (luận lý) và được nạp từng phần và thực thi trong không gian địa chỉ thực (vật lý) Cần có chương trình chuyển đổi địa chỉ ảo sang địa chỉ thực cho mỗi thao tác truy xuất bộ nhớ

− MMU: thành phần của CPU thực hiện việc chuyển đổi địa chỉ ảo sang địa chỉ vật lý

− Vai trò bảng trang: chứa thông tin cần thiết cho việc chuyển đổi địa chỉ

− Hoạt động:

− Địa chỉ ảo theo phân trang

 Page Number: số thứ tự trang

 Offset /Displacement: địa chỉ trong trang

− Địa chỉ vật lý

 Page number: số thứ tự khung trang

 Offset /Displacement: địa chỉ trong khung trang

− Truy xuất theo địa chỉ ảo:

 Tách page # và offset từ địa chỉ ảo

 Chuyển page # thành frame # bằng cách truy xuất bảng trang

A Tìm phần tử quản lý trang

B Kiểm tra Valid bit

1 Valid = 1:

a Thay page# bằng frame#

b Truy xuất dữ liệu trên khung với vị trí offset

2 Valid = 0 :lỗi trang

a Tìm trang trên đĩa

Trang 17

b Tìm 1 khung trống (có thề phải thay thế trang nếu khung đấy).

c Sao chép trang vào khung trống

d Cập nhật bảng trang (valid =1, frame# mới)

e Thực hiện truy xuất như bước 1

Sơ đồ + bài tập xem OS.OnGiuaKi.doc

− Tổ chức theo nhiều cấp  giảm phí tổn bộ nhớ

− Chỉ bảng trang đang sử dụng mới được nạp vào bộ nhớ  giảm phí tổn bộ nhớ

Sơ đồ

 Bảng trang dạng bảng băm

− Thường đúng với không gian địa chỉ > 32 bit

− Số phần tử bảng trang << số trang

+ Chỉ số phần tử bảng trang tương ứng với các giá trị hàm

− Tổ chức lưu trữ thông tin trang

+ hashvalue = hash(pageAddress) : tính giả trị hàm băm + pagetable[hashvalue].add(pageinfo) : truy xuất

Sơ đồ

 Bảng trang nghịch đảo

− Số phần tử bằng số khung trang

+ Kích thước nhỏ + Chỉ cần 1 bảng trên hệ thống + Vị trí trong bảng là frame number

− Mỗi phần tử bao gồm:

+ Số thứ tự trang tương ứng + Thông tin về process đang sở hữu trang

− Truy xuất theo cơ chế hash

+ Có chuỗi liên kết (chain) giải quyết trường hợp có nhiều trang cũng như số

thứ tự trên bộ nhớ

Sơ đồ

− Tăng tốc độ truy xuất

− TLB (Translation Look aside Buffer)

Ngày đăng: 09/06/2017, 12:32

TỪ KHÓA LIÊN QUAN

w