Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Đề thi các khóa trước

+2
TruongThiMinhNgoc57(102C)
DinhCongTung(102C)
6 posters

Go down

Đề thi các khóa trước Empty Đề thi các khóa trước

Bài gửi  DinhCongTung(102C) 28/4/2011, 19:13

Hôm thứ tư thầy có hứa sẽ gửi đề thi khóa trước cho chúng em tham khảo,nhưng sao vẫn chưa thấy trên diễn đàn, nếu có thời gian và điều kiện, kính mong thầy up sớm cho chúng em tham khảo. nếu được thầy có thể cho thêm bài tập để chúng em luyện không ạ.

Admin
- Thày hứa đưa lên Câu thi liên quan đến MFQS (Multilevel Feedback Queue Scheduling).
- Tham khảo và giải: Đề thi Tốt nghiệp 2011

DinhCongTung(102C)

Tổng số bài gửi : 15
Join date : 25/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  DinhCongTung(102C) 29/4/2011, 18:21

buổi trưa em có lên nhưng không down được, bây giờ đã down được rồi thank thầy đã post lại, em sẽ xem trong thời gian nghỉ lễ.

DinhCongTung(102C)

Tổng số bài gửi : 15
Join date : 25/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  TruongThiMinhNgoc57(102C) 30/4/2011, 20:24

cám ơn câu hỏi của thầy ạ. chúc các bạn ôn tập tốt.
TruongThiMinhNgoc57(102C)
TruongThiMinhNgoc57(102C)

Tổng số bài gửi : 90
Join date : 17/02/2011
Đến từ : TPHCM

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  DinhCongTung(102C) 4/5/2011, 13:31

Vì hơi bận nên mình xin giải từng câu , các bạn thấy sai thì sửa giúp mình nhé
Câu 1
Giải thích sơ đồ sau:(các bạn xem hình trên đề nhé mình sẽ không post lên đây)

Hình trên có ba mức (hàng đợi)
-tạm đặt mức thứ 1 q1 ;với thời lượng là 8 mili giây.
-tạm đặt mức thứ 2 q2 ;với thời lượng là 16 mili giây.
-tạm đặt mức thứ 3 q3 ;mức này dùng giải thuật FCFS.
Tiến trình điều phối như sau
Một tiến trình sẽ bắt đầu tại mức q1.Nó sẽ chiếm dụng CPU trong khoảng thời lượng là 8 miligiây. Nếu sau thời gian này mà nó vẫn chưa hoàn thành xong thì tiến trình sẽ chuyển sang mức 2 là q2.
Tại q2 cũng tương tự như vậy nhưng với thời lượng là 16 mili giây ,nếu vẫn chưa hòan thành thì nó sẽ bị tước quyền và được chuyển xuống mức 3

Admin
Sai.

DinhCongTung(102C)

Tổng số bài gửi : 15
Join date : 25/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  LuuDucPhu (102C) 4/5/2011, 15:31

Mình xin phép giải câu 3.

Một hệ thống có 3 tiến trình với thời điểm đến và thời gian sử dụng CPU như sau:
Tiến trình Thời điểm đến(ms)CPU-Burst(ms)
P1 020
P2 10 5
P3 15 10

Dùng thuật giải Preemptive SJFS để điều phối CPU:
a.Thể hiện bằng biểu đồ Gantt
b.Tính thời gian chờ trung bình của các tiến trình

GIẢI :

a. Biểu đồ Gantt.

|.....P1.....|...P2...|.....P1.....|.....P3.....|
0............10.......15...........25............35

b.Thời gian chờ trung bình của các tiến trình.

P1= 15 - 10 = 5 ms
P2 = 0 ms
P3 = 25 - 15 =10 ms

t =(P1+P2+P3)/3=(5+0+10)/3=15/3= 5ms

LuuDucPhu (102C)

Tổng số bài gửi : 40
Join date : 17/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  DinhCongTung(102C) 5/5/2011, 09:01

Em giải lại câu 1:
Hình vẽ với 3 hàng đợi (hay 3 mức) với độ ưu tiên từ 0 tới 1 theo windows mức 0 là mức có độ ưu tiên cao nhất rồi tới mức 1 sau đó là mức 2, như vậy đầu tiên trình điều phối sẽ thực hiện tất cả các tiến trình tại mức 0,khi mức 0 rỗng nó sẽ thực thi các tiến trình tại mức 1, và tương tự như vậy tại mức 2 khi tất cả các tiến trình tại mức 0 và 1 rỗng.
Đầu tiên 1 tiến trình được đưa vào ready queue tại hàng đợi mức 0.tiến trình tại mức 0 sẽ có thời lượng là 8milli giây. Nếu nó không được hoàn thành trong khoảng thời gian này, nó sẽ được di chuyển xuống cuối hàng đợi mức 1. trường hợp tại mức 0 rỗng, tiến trình sẽ được đặt ở đầu hàng đợi mức 1, và có thời lượng là 16 milli giây, tại đây nếu không hoàn thành trong khoảng thời gian này nó sẽ bị tiếm quyền và được đặt vào trong hàng đợi mức 2. Các tiến trình tại hàng đợi mức 2 sẽ dùng thuật giải FCFS,nhưng nó chỉ được chạy khi tại mức 0 và 1 đều rỗng.

Admin
- Có 3 hàng chờ Ready với độ ưu tiên khác nhau. Hoạt động các tiến trình ở 2 mức trên (Mức 1: Độ 0 và Mức 2: Độ 1) được điều phối bằng thuật giải RRS với thời lượng tương ứng là 8 và 16 ms. Mức 3 (độ ưu tiên thấp nhất) dùng thuật giải FCFS (đến trước chạy trước, không có tiếm quyền).
- Đầu tiên, tiến trình mới được đưa vào hàng chờ Mức 1 (Độ 0 là độ ưu tiên cao nhất).
- Hệ điều hành có thể "Hạ cấp" tiến trình bằng cách đưa xuống mức dưới, khi tiến trình đó ảnh hưởng đến hiệu năng toàn hệ (ví dụ, quá "Hướng CPU").
- Theo sơ đồ, có sự "Nâng cấp" tiến trình từ Mức 3 (Độ 2) lên Mức 2 (Độ 1), khi một tiến trình cần được ưu tiên hơn nữa (ví dụ, khi nó làm việc lâu mà vẫn chưa xong hoặc trước đó quá "Hướng I/O" mà bây giờ cần CPU để nhanh chóng hoàn tất công việc).

DinhCongTung(102C)

Tổng số bài gửi : 15
Join date : 25/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  LuuDucPhu (102C) 5/5/2011, 10:39

Giải tiếp câu 2:
void Consumer(){
int nextConsumed;
// biến chứa sản phẩm được tiêu thụ
while (1){
while(in==out); //trong khoang chứa hết sản phẩm thì quẩn tại đây
nextConsumed=buffer[out]; //sản phẩm ở vị trí buffer out được đưa vào biến netxconsumed
out=(out+1)%BUFFER_SIZE;//out tăng lên 1, nếu out đang nằm ở cuối mảng thì out sẽ trở về đầu mảng
Sleep(GetTickCount()%5000); // hàm gettickcount() sẽ trả về thời gian tính bằng ms trôi qua kể từ khi hệ thống khởi động tới thời điểm hiện tại, chia lấy số dư cho 5000 sẽ ra được 1 con số từ 0-4999, cho luồng tiêu thụ này tạm dừng trong khoảng thời gian đó.
}
}

Có gì sai sót các bạn góp ý thêm.

LuuDucPhu (102C)

Tổng số bài gửi : 40
Join date : 17/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  huynhthanhphong(102c) 9/5/2011, 10:18

Exclamation

huynhthanhphong(102c)

Tổng số bài gửi : 29
Join date : 23/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  NguyenHoaiHien(i92C) 10/5/2011, 22:43

LuuDucPhu (102C) đã viết:Giải tiếp câu 2:
void Consumer(){
int nextConsumed;
// biến chứa sản phẩm được tiêu thụ
while (1){
while(in==out); //trong khoang chứa hết sản phẩm thì quẩn tại đây
nextConsumed=buffer[out]; //sản phẩm ở vị trí buffer out được đưa vào biến netxconsumed
out=(out+1)%BUFFER_SIZE;//out tăng lên 1, nếu out đang nằm ở cuối mảng thì out sẽ trở về đầu mảng
Sleep(GetTickCount()%5000); // hàm gettickcount() sẽ trả về thời gian tính bằng ms trôi qua kể từ khi hệ thống khởi động tới thời điểm hiện tại, chia lấy số dư cho 5000 sẽ ra được 1 con số từ 0-4999, cho luồng tiêu thụ này tạm dừng trong khoảng thời gian đó.
}
}

Có gì sai sót các bạn góp ý thêm.
Không biết đúng hay sai, cũng xin cảm ơn bạn nhiều
NguyenHoaiHien(i92C)
NguyenHoaiHien(i92C)

Tổng số bài gửi : 75
Join date : 08/11/2010
Đến từ : Tiền Giang

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  TranQuyCanh (102C) 10/5/2011, 23:43

Với câu 2, mình chỉ thắc mắc ở đoạn :
out=(out+1)%BUFFER_SIZE;
Sleep(GetTickCount()%5000);

Bạn nào có thể giải thích rõ hơn giúp mình k ạ ? Smile
TranQuyCanh (102C)
TranQuyCanh (102C)

Tổng số bài gửi : 25
Join date : 16/02/2011
Age : 35
Đến từ : Quảng Ngãi

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  LuuDucPhu (102C) 11/5/2011, 14:21

TranQuyCanh (102C) đã viết:Với câu 2, mình chỉ thắc mắc ở đoạn :
out=(out+1)%BUFFER_SIZE;
Sleep(GetTickCount()%5000);

Bạn nào có thể giải thích rõ hơn giúp mình k ạ ? Smile

- out=(out+1)%BUFFER_SIZE; tăng biến out lên 1 nếu biến out = với buffer_size thì biến out sẽ trở về vị trí đầu tiên của buffer.
Ví dụ: buffer_size = 10, out = 0 thì (0 + 1)%10 = 1 và khi out = 9(vị trí cuối của buffer)
thì (9+1)%10 = 0(vị trí đầu tiên của buffer)
- Sleep(GetTickCount()%5000); Hàm sleep dùng để ngừng tiến trình trong khoảng thời gian nào đó(milisecond). hàm gettickcount() sẽ trả về thời gian tính bằng ms trôi qua kể từ khi hệ thống khởi động tới thời điểm hiện tại. GetTickCount()%5000 sẽ được giá trị từ 0 đến 4999 như vậy tiến trình sẽ ngừng tạm thời trong n ms với n ngẫu nhiên trong đoạn [0,4999]

LuuDucPhu (102C)

Tổng số bài gửi : 40
Join date : 17/02/2011

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  TranQuyCanh (102C) 12/5/2011, 15:44

LuuDucPhu (102C) đã viết:
TranQuyCanh (102C) đã viết:Với câu 2, mình chỉ thắc mắc ở đoạn :
out=(out+1)%BUFFER_SIZE;
Sleep(GetTickCount()%5000);

Bạn nào có thể giải thích rõ hơn giúp mình k ạ ? Smile

- out=(out+1)%BUFFER_SIZE; tăng biến out lên 1 nếu biến out = với buffer_size thì biến out sẽ trở về vị trí đầu tiên của buffer.
Ví dụ: buffer_size = 10, out = 0 thì (0 + 1)%10 = 1 và khi out = 9(vị trí cuối của buffer)
thì (9+1)%10 = 0(vị trí đầu tiên của buffer)
- Sleep(GetTickCount()%5000); Hàm sleep dùng để ngừng tiến trình trong khoảng thời gian nào đó(milisecond). hàm gettickcount() sẽ trả về thời gian tính bằng ms trôi qua kể từ khi hệ thống khởi động tới thời điểm hiện tại. GetTickCount()%5000 sẽ được giá trị từ 0 đến 4999 như vậy tiến trình sẽ ngừng tạm thời trong n ms với n ngẫu nhiên trong đoạn [0,4999]

Chân thành cảm ơn bạn LuuDucPhu (102C) đã giúp mình What a Face
Mình đã hiểu rồi, lúc đầu chỉ là không hiểu về out+1, nhưng giờ thì ổn rồi, cảm ơn bạn nhiều lắm bounce
TranQuyCanh (102C)
TranQuyCanh (102C)

Tổng số bài gửi : 25
Join date : 16/02/2011
Age : 35
Đến từ : Quảng Ngãi

Về Đầu Trang Go down

Đề thi các khóa trước Empty Re: Đề thi các khóa trước

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết