1. Trang chủ
  2. » Giáo án - Bài giảng

kỹ thuật điện hệ điều hành assignmentignmentignmentignment1 v1 sinhvienzone com

8 32 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 192,76 KB

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

Nội dung

• Ở mỗi CPU, sau khi hoàn thành CPU-burst ở một quá trình, quá trình này được chuyển vào hàng đợi waiting-queue để thực hiện tác vụ I/O với thời gian I/O-burst tương ứng cho quá trình đó

Trang 1

Đại học Bách Khoa TP HCM, Khoa KH & KTMT

BÀI TẬP LỚN Môn: Hệ điều hành Thời hạn: 23:59 14/11/2014

Lê Hải Sơn Email: sonlh@hcmut.edu.vn Ngày 23 tháng 9 năm 2014

1 Bài tập lớn 1: Giả lập giải thuật định thời

1.1 Mô tả chương trình

Viết chương trình C giả lập và đo hiệu suất các giải thuật định thời CPU: FCFS và SJF Thiết kế của chương trình như sau:

CPUs

I/O

waiting-queue ready-queue

new processes

Hình 1.1: Thiết kế hệ thống BTL 1

Trang 2

• Một quá trình mới khởi tạo sẽ được đưa vào danh sách hàng đợi readyqueue -được chia sẻ giữa các CPU

• Các CPU sẽ truy cập vào ready-queue để bắt đầu thực thi các quá trình với thời gian CPU-burst tương ứng

• Ở mỗi CPU, sau khi hoàn thành CPU-burst ở một quá trình, quá trình này được chuyển vào hàng đợi waiting-queue để thực hiện tác vụ I/O với thời gian I/O-burst tương ứng cho quá trình đó

• I/O xử lý các quá trình trong hàng đợi waiting-queue theo chính sách FCFS

• Sau khi I/O thực hiện xong I/O-burst, quá trình được đưa vào cuối danh sách ready-queue

Đối với mỗi quá trình, trạng thái của nó như sau:

• S_READY: Quá trình đang ở hàng đợi ready-queue

• S_RUNNING: Quá trình đang được thực thi bởi một CPU

• S_WAITING: Quá trình đang ở hàng đợi waiting-queue hoặc đang xử lý bởi I/O

• S_TERMINATED: Quá trình kết thúc thực thi

1.2 Giao diện chương trình

Tên chương trình là schedsim Chương trình hỗ trợ các tương tác với người dùng như sau:

schedsim [-h] [-c #CPUs] -i job_file -s ID -o output_file

• -h: Hiển thị ra màn hình thông tin: Tên và MSSV thực hiện

• -c #CPUs: Cho biết số lượng CPU trong hệ thống Nếu người dùng không nhập, giá trị mặc định số lượng CPU là 1

• -i jobs_file: File đặc tả các quá trình sẽ được giả lập

• -s ID: Định danh của bộ định thời sẽ được dùng để giả lập

– FCFS: Định thời FCFS – SJF: Định thời SJF

• -o output_file: File output sau khi chạy giả lập

Ví dụ: lệnh sau đây thực hiện giả lập định thời FCFS cho hệ thống có 2 CPU, thông tin

về quá trình được lấy từ file p1.txt, kết quả giả lập được ghi vào file kq.txt:

schedsim -c 2 -i p1.txt -s FCFS -o kq.txt Yêu cầu hiện thực makefile cho chương trình Các sourcecode cùng với file báo cáo được đặt chung vào cùng một folder với tên là MSSV, zip folder lại với tên MSSV.zip và nộp Sakai

Trang 3

1.2.1 Định dạng job_file Đặc tả của các quá trình trong hệ thống được khai báo trong job_file Mỗi dòng trong file tương ứng với một quá trình, với định dạng cho mỗi dòng như sau:

<Start> <Total_CPU_burst> <CPU_burst> <IO_burst>

Giá trị của mỗi trường thông tin đều là số tự nhiên, trong đó,

• Start: Thời điểm quá trình được đẩy vào ready-queue

• Total_CPU_burst: Khi tổng thời gian sử dụng CPU vượt qua giá trị này, quá trình

sẽ kết thúc với trạng thái S_TERMINATED

• CPU_burst: Thời gian CPU-burst

• IO_burst: Thời gian xử lý IO-burst

Một ví dụ về nội dung của job-file cho 4 quá trình như sau:

0 10 3 2

2 20 4 1

2 10 4 0

4 15 1 5 1.2.2 Định dạng file output File kết quả cần có những thông tin về hiệu suất của bộ định thời: trung bình độ lợi CPU (CPU_Util), trung bình thời gian chờ (Waiting_time), trung bình thời gian đáp ứng (Response_time) và thời gian hệ thống hoàn thành các quá trình (Total_time), Tất cả những thông tin này được lưu thành một dòng trong output file như sau:

<CPU_Util> <Waiting_time> <Response_time> <Total_time>

1.3 Hướng dẫn hiện thực chương trình

Sau đây hướng dẫn một cách hiện thực chương trình schedsim Mỗi CPU hay I/O sẽ tương ứng với một quá trình hay thread Các thread/ quá trình này cùng chia sẻ các danh sách waiting-queue và ready-queue Bên cạnh đó, còn có 2 quá trình/thread quan trọng khác là: clock và khởi tạo quá trình

Xử lý tại các quá trình CPU

while (1) {

wait_new_clock();

if (CPU-state == FREE) {

<Lấy một quá trình từ ready-queue>;

CPU-state = BUSY;

Trang 4

<Cập nhật thời gian chiếm CPU tại burst hiện hành>;

If (Thời gian chiếm CPU == CPU_burst) {

<Chuyển quá trình vào cuối waiting-queue>;

CPU-state = FREE;

if (<Lấy một quá trình từ ready-queue> == SUCCESS)

CPU-state = BUSY;

}

pass_current_clock();

}

Xử lý tại quá trình I/O

while (1) {

wait_new_clock();

if (IO-state == FREE) {

<Lấy một quá trình từ waiting-queue>;

IO-state = BUSY;

}

<Cập nhật thời gian dùng IO của quá trình tại burst hiện hành>;

If (Thời gian chiếm I/O == IO_burst) {

<Chuyển quá trình vào cuối ready-queue>;

IO-state = FREE;

if (<Lấy một quá trình từ waiting-queue> == SUCCESS)

IO-state = BUSY;

}

pass_current_clock();

}

Xử lý của đồng hồ clock

clock = 0;

while (1) {

start_set_clock();

clock ++;

end_set_clock();

}

Xử lý của việc khởi tạo các quá trình giả lập

Sort all processes by start time;

while (1) {

wait_new_clock();

if (process_start_time == clock)

Chuyển quá trình vào hàng đợi ready;

Trang 5

}

Xem mối quan hệ đồng bộ giữa các quá trình/thread này ở hình 1.2

start set clock

CLOCK CPU I/O Start-process

end set clock

pass current clock

wait new clock

Hình 1.2: Quan hệ đồng bộ giữa các quá trình: CPU, I/O, Clock và Khởi tạo quá trình

1.4 Yêu cầu báo cáo

• Trình bày và mô tả quá trình hiện thực chương trình

• File báo cáo được đặt tên MSSV.pdf và cùng folder với các file sourcecode

Trang 6

2 Bài tập lớn 2: Sinh các quá trình / thread có quan hệ

đồng bộ

2.1 Mô tả chương trình

Viết chương trình C mô phỏng mối quan hệ đồng bộ cho trước của một tập các quá trình hay thread Mối quan hệ được mô tả dưới dạng đồ thị có hướng như ví dụ trong Hình 2.1, trong đó có 4 quá trình đang tranh chấp sử dụng 3 loại tài nguyên R1, R2 và R3 Tài nguyên (chia sẻ) có thể là đơn thực thể (như R3) hay đa thực thể (như R1 hay R2)

P4

R3

R1

Hình 2.1: Đồ thị quan hệ sử dụng tài nguyên (BTL2)

Các quá trình hay thread sinh ra phải thể hiện được quan hệ phụ thuộc như trong đặc tả Mỗi quá trình có thể yêu cầu một hay nhiều tài nguyên, trong đó:

• Pi → Rj: Quá trình Pi đang đợi một thực thể trống của tài nguyên Rj

• Rj → Pi: Quá trình Pi đang sử dụng một thực thể của tài nguyên Rj

Sau khi quá trình đã có ĐỦ tài nguyên yêu cầu, nó sẽ tốn một khoảng thời gian T để thực thi (thời gian chiếm CPU), sau đó trả các tài nguyên đã chiếm giữ cho hệ thống và kết thúc

2.2 Giao diện chương trình

Tên chương trình là syncgen, tương tác với người dùng thông qua cú pháp sau:

syncgen [-h] -t Tvalue -i input_file -o output_file

• -h: Hiển thị ra màn hình thông tin: Tên và MSSV thực hiện

• -i input_file: File đặc tả các mối quan hệ giữa các quá trình

• -t Tvalue: Giá trị của T (đơn vị giây)

• -o output_file: File output sau khi chạy các chương trình trong hệ thống

Trang 7

Ví dụ: lệnh sau đây thực hiện việc sinh các quá trình theo đặc tả trong file p1.txt và kết quả chương trình được lưu trong file kq.txt, với thời gian T là 1 giây:

syncgen -t 1 -i p1.txt -o kq.txt Yêu cầu hiện thực makefile cho chương trình Các sourcecode cùng với file báo cáo được đặt chung vào cùng một folder với tên là MSSV, zip folder lại với tên MSSV.zip và nộp Sakai

2.3 Đặc tả input file

Input file mô tả các quan hệ giữa các quá trình và tài nguyên thông qua một ma trận

R, trong đó

• R[i, j] = 1: Quá trình Pi đang đợi tài nguyên Rj hay Pi → Rj

• R[i, j] = −1: Quá trình Pi đang giữ tài nguyên Rj hay Rj → Pi

• R[i, j] = 0: Quá trình Pi và tài nguyên Rj không có quan hệ với nhau

Bên cạnh đó, dòng đầu tiên trong file input cho biết số lượng thực thể của mỗi tài nguyên Với ví dụ trong Hình 2.1, file input sẽ có nội dung như Bảng 2.1 (trong phần được đóng khung):

R1 R2 R3

P2 -1 -1 0

Bảng 2.1: Nội dung file input cho ví dụ ở Hình 2.1

2.4 Đặc tả output file

File output chứa thông tin thứ tự hoàn thành của các quá trình được sinh ra Với một cấu hình input file và thời gian T , có thể có nhiều kết quả ouput khác nhau, chỉ cần xuất ra một trong các trường hợp có thể xảy ra tương ứng tại thời điểm thực thi Ví dụ, kết quả của ví dụ Hình 2.1 có thể có các trường hợp như sau:

P2 P4 P1 P3 P2 P4 P3 P1 P4 P2 P3 P1 P4 P2 P1 P3

Trang 8

Nếu chương trình có khả năng xác định xảy ra deadlock từ file input, thì không cần thực thi các quá trình, mà chỉ xuất ra file output chuỗi "DEADLOCK"

2.5 Viết báo cáo

• Trình bày và mô tả quá trình hiện thực chương trình

• File báo cáo được đặt tên MSSV.pdf và cùng folder với các file sourcecode

3 Yêu cầu chung:

Các yêu cầu về makefile, input, output và các option của chương trình phải được thực hiện nghiêm túc và chính xác Mọi lỗi liên quan dẫn đến chương trình không thể compile hoặc run được đều không được xem xét và điểm 0 cho assignment Trường hợp phát hiện gian lận sẽ nhận điểm 0 cho toàn môn học

Ngày đăng: 28/01/2020, 22:10