Chuyển tới nội dung chính

Trắc nghiệm: Đồng bộ và miền găng

Ba yêu cầu của bài toán Critical Section rất hay bị hỏi xoay vòng trong đề — đọc kỹ phần giải thích để phân biệt Progress với Bounded Waiting. Phần sau là các cơ chế đồng bộ: Peterson, mutex lock, semaphore, monitor và bài toán producer–consumer.

Khoá sai thứ tự là sinh ra kẹt vĩnh viễn — phần đó nằm ở trắc nghiệm deadlock.

Chương 6: Đồng bộ tiến trình

27 câu · đã làm 0

Chọn đáp án là biết đúng/sai ngay, bấm “Chi tiết” để xem giải thích.

  1. Câu 1Critical SectionCuối kỳ HĐH – SPKT

    Một tiến trình tạm dừng bên ngoài miền găng (Critical Section) không được ngăn cản các tiến trình khác vào miền găng, điều này liên quan tới yêu cầu nào trong bài toán Critical Section?

  2. Câu 2Critical SectionCuối kỳ HĐH – SPKT

    Không có tiến trình nào phải chờ vô hạn để được vào miền Critical-section liên quan tới yêu cầu nào trong bài toán Critical Section?

  3. Câu 3Critical SectionCuối kỳ HĐH – SPKT

    Không có hai tiến trình cùng ở trong miền Critical-section cùng lúc liên quan tới yêu cầu nào trong bài toán Critical Section?

  4. Câu 4PetersonCuối kỳ HĐH – SPKT

    Đoạn code sau giải quyết bài toán Critical-section thuộc giải pháp nào sau đây?

    while (true) {
    
        flag[i] = true;   /* Pi ready */
        turn = j;         /* preemptive Pj */
        while (flag[j] && turn == j)
            ;
    
        /* critical section */
    
        flag[i] = false;
    
        /* remainder section */
    }
  5. Câu 5Mutex lockCuối kỳ HĐH – SPKT

    Giải pháp cho bài toán Critical-section nào dùng 2 thao tác acquire() và release()?

  6. Câu 6SemaphoreCuối kỳ HĐH – SPKT

    Giải pháp cho bài toán Critical-section nào dùng 2 thao tác wait() và signal()?

  7. Câu 7Critical SectionCuối kỳ HĐH – SPKT

    Hai tiến trình P1 và P2 dùng hai biến boolean chung S1 và S2 (giá trị ban đầu gán ngẫu nhiên) để vào Critical section. Câu nào mô tả đúng các thuộc tính đạt được?

    Method Used by P1          Method Used by P2
    while (S1 == S2) ;         while (S1 != S2) ;
        Critical Section           Critical Section
    S1 = S2;                   S2 = not (S1);
  8. Câu 8SemaphoreCuối kỳ HĐH – SPKT

    Chương trình sau gồm 3 tiến trình đồng thời và 3 binary semaphore, khởi tạo S0 = 1, S1 = 0, S2 = 0. Tiến trình P0 print "0" bao nhiêu lần?

    Process P0              Process P1       Process P2
    while (true) {          wait(S1);        wait(S2);
        wait(S0);           release(S0);     release(S0);
        print '0';
        release(S1);
        release(S2);
    }
  9. Câu 9Critical SectionCuối kỳ HĐH – SPKT

    Hai tiến trình X và Y cần truy cập một critical section, dùng cấu trúc đồng bộ hoá sau (varP, varQ là biến chia sẻ, khởi tạo false). Phát biểu nào sau đây là đúng?

    Process X                       Process Y
    while (true)                    while (true)
    {                               {
        varP = true;                    varQ = true;
        while (varQ == true)            while (varP == true)
        {                               {
            /* Critical Section */          /* Critical Section */
            varP = false;                   varQ = false;
        }                               }
    }                               }
  10. Câu 10Critical SectionCuối kỳ HĐH – SPKT

    Xem xét giải pháp đồng bộ hoá hai tiến trình sau, biến chia sẻ turn khởi tạo bằng 0. Điều nào sau đây là ĐÚNG?

    Process 0                          Process 1
    Entry: loop while (turn == 1);     Entry: loop while (turn == 0);
           (critical section)                 (critical section)
    Exit:  turn = 1;                   Exit:  turn = 0;
  11. Câu 11Race conditionCuối kỳ HĐH – SPKT

    Hai tiến trình P1 và P2 thực thi đồng thời trên các biến dùng chung a, b, c. Giá trị nào sau đây không thể là giá trị của c sau khi cả hai tiến trình hoàn tất?

    Khởi tạo: a = 4, b = 5, c = 0
    
    P1                      P2
    if (a < 0)              b = 10;
        c = b-a;            a = -3;
    else
        c = b+a;
  12. Câu 12SemaphoreCuối kỳ HĐH – SPKT

    Hai hoạt động nguyên tử được phép trên Semaphores là ____ và ____.

  13. Câu 13Mutex lockCuối kỳ HĐH – SPKT

    Hai hoạt động nguyên tử được phép trong Mutex locks là ____ và ____.

  14. Câu 14Bài toán kinh điểnCuối kỳ HĐH – SPKT

    Bài toán Bounded buffer còn được gọi là

  15. Câu 15Critical SectionCuối kỳ HĐH – SPKT

    Mutual Exclusion xảy ra khi nào?

  16. Câu 16SemaphoreCuối kỳ HĐH – SPKT

    Tại thời điểm cụ thể, giá trị của một counting semaphore là 12. Nó sẽ trở thành 15 khi:

    • (a) 3 hoạt động của signal()
    • (b) 3 hoạt động của wait()
    • (c) 5 hoạt động của signal() và 2 hoạt động của wait()
    • (d) 2 hoạt động của signal() và 5 hoạt động của wait()

    Phương án nào sau đây là đúng?

  17. Câu 17SemaphoreCuối kỳ HĐH – SPKT

    Ba thread T1, T2, T3 chạy trên một bộ xử lý duy nhất, đồng bộ bằng 3 binary semaphore S1, S2, S3. Việc khởi tạo semaphore nào sẽ in ra chuỗi BCABCABCA…?

    T1                  T2                  T3
    while (true) {      while (true) {      while (true) {
        wait(S3);           wait(S1);           wait(S2);
        print("C");         print("B");         print("A");
        signal(S2); }       signal(S3); }       signal(S1); }
  18. Câu 18SemaphoreCuối kỳ HĐH – SPKT

    Semaphores được sử dụng để giải quyết vấn đề của:

    • I. Deadlock
    • II. Process Synchronization
    • III. Starvation
    • IV. Không có cái nào
  19. Câu 19SemaphoreCuối kỳ HĐH – SPKT

    Giá trị của một counting semaphore đang là 7. Sau đó 20 phép wait() và 15 phép signal() được hoàn thành trên semaphore này. Giá trị kết quả là bao nhiêu?

  20. Câu 20SemaphoreCuối kỳ HĐH – SPKT

    Một counting semaphore được khởi tạo là 10. Sau đó 6 phép wait() và 4 phép signal() được hoàn thành trên semaphore này. Giá trị kết quả là bao nhiêu?

  21. Câu 21Race conditionCuối kỳ HĐH – SPKT

    P1 và P2 cùng dùng chung biến TaiKhoan và mỗi tiến trình có TienRut riêng (không âm). Khởi đầu TaiKhoan = 1000, P1 rút 600, P2 rút 500. Khi xảy ra race condition, TaiKhoan có khả năng bằng bao nhiêu?

    if (TaiKhoan - TienRut >= 0)
        TaiKhoan = TaiKhoan - TienRut;
    else
        error();
  22. Câu 22SemaphoreCuối kỳ HĐH – SPKT

    Mô phỏng nào sau đây đúng cho hàm Wait(s) trong giải pháp Semaphore?

  23. Câu 23SemaphoreCuối kỳ HĐH – SPKT

    P1 và P2 cùng truy xuất Buffer, semaphore S = 1 kiểm soát truy xuất. Khi P1 đang truy xuất thành công Buffer thì giá trị S bằng bao nhiêu?

    P1                          P2
    ...                         ...
    Wait(S);                    Wait(S);
      đặt data vào Buffer;        lấy data từ Buffer;
    Signal(S);                  Signal(S);
    ...                         ...
  24. Câu 24SemaphoreCuối kỳ HĐH – SPKT

    Dùng semaphore để đồng bộ thứ tự: tác vụ X1 (trong P1) phải xong trước rồi X2 (trong P2) mới chạy. Với S = 1, khi P2 kết thúc hoạt động thì S bằng bao nhiêu?

    P1                     P2
    ...                    ...
    Wait(S);               Wait(S);
      Đoạn CT P1;            Đoạn CT P2;
    Signal(S);             ...
    ...
  25. Câu 25Producer-ConsumerCuối kỳ HĐH – SPKT

    Bài toán Producer–Consumer với buffer n phần tử và 3 semaphore: mutex = 1, full = 0, empty = n. Khi Buffer chứa đầy data, giá trị của mutex, full, empty lần lượt là bao nhiêu?

  26. Câu 26Producer-ConsumerCuối kỳ HĐH – SPKT

    Cùng bài toán Producer–Consumer với mutex = 1, full = 0, empty = n. Khi P1 đang đặt phần tử data đầu tiên vào Buffer, giá trị mutex, full, empty lần lượt là bao nhiêu?

    P1 (Producer)                P2 (Consumer)
    ...                          ...
    Tạo data;                    Wait(full);
    Wait(empty);                 Wait(mutex);
    Wait(mutex);                   lấy data từ Buffer;
      đặt data vào Buffer;       Signal(mutex);
    Signal(mutex);               Signal(empty);
    Signal(full);                Xử lý data;
  27. Câu 27Producer-ConsumerCuối kỳ HĐH – SPKT

    Cùng bài toán Producer–Consumer (mutex = 1, full = 0, empty = n). Khi P2 đang lấy phần tử data cuối cùng ra khỏi Buffer thì mutex, full, empty lần lượt bằng bao nhiêu?

    P1 (Producer)                P2 (Consumer)
    ...                          ...
    Tạo data;                    Wait(full);
    Wait(empty);                 Wait(mutex);
    Wait(mutex);                   lấy data từ Buffer;
      đặt data vào Buffer;       Signal(mutex);
    Signal(mutex);               Signal(empty);
    Signal(full);                Xử lý data;