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.

Thảo luận Bài 7

+92
ĐoànMinhQuangI12A
LeMinhDuc (I11C)
LUUDINHTOAN(I11C)
HoNgocTuan142(I12A)
TranQuangHien40
NguyenVanThang25 (I12A)
VoThiHongNhung(I12A)
levanhop.it
NguyenVinhQuang_I12A
lymydung_I12A
HUYNHMINHHAI(I12A)
TranHuyCuong17 (I12A)
DaoThaiHuyI12A
quicly_I111c
dangquoctri
NgoXuanQuoc_(102C)
TranVanBao(I12A)
nguyenthihongtham_I12C
nguyenhuutrang_11h1010135
letannghia(I12A)
VoTrongQuyet-I12A
PhamDucPhuong(I12A)
TranBinhCongLuanI12A
nguyen_tuan_phat_I12A
nguyenthanhphongHC11TH2A
LamThanhLoc_I12A
NguyenHaCamThu(I12A)
leminhtam13(I12A)
LeVanNhan(I12A)
DoanNgocDan(I12A)
vominhhai_09H1012028
Nguyen Doan Linh051(I11c)
HuynhMinhChanh(i91C)
NguyenTuanHai_I12A
LeThanhTung (I11C)
dangmonghai(I12A)
TranPhiLong (I11C)
nguyenhuutho
NguyenthechinhI12A
BuiHuongTra(I12A)
KimHue36 (I11C)
tranthithanhuyen85 (I11C)
nguyenthimao_I12A
TranThiMyKhanh(I12A)
LacChiHao(I12A)
TranMinhTuan143(I12A)
DiepMaiNgocYen(I12A)
dangvannhan_11h1010085
plminhhoangI12A
LuongHueChanh_I12A
thailongI12C
phamduyI12A
LuongGiaDuc(I12A)
nguyenvanhonglac_0066
Đỗ Phan Diễm Hương I12A
phamquangvu53(I12A)
TranTrungHienI12C
huynhthao.hc11th2a
nguyenthingocmai_I12A
TranThiAnhDao89I12C
phuongnguyen
NguyenQuocThang(I12C)
NguyenHoangThangI12A
lethianhnhat_I12A
hoxuanvu_I12A
NguyenMinhCanh(I12A)
letanthanh18(I12A)
TranThiNgocQuynh(I12C)
NguyenVanBenI12C
NguyenHongHaiI12C
tranvanthien27(I12C)
luthioanh-I12A
lethanhsang_I12A
VuNguyenQuynhLam_I12C
nguyenthanhnghi_I12C
TrinhVinhThanh (I12A)
TrinhThiPhuongThaoI12C
trinhvanminh_11h1010077
nguyenxuankieu(i12a)
hoanggiangI12C
maidangvu_I12A
HoNguyenQuocTuy(I12A)
NguyenPhuocNguyen (I12A)
LeXuanHau (I12C)
DaoQuangTri38(I12A)
huynhvanhung(I12A)
phamphihung55
LePhucHiep(102C)
PhamQuangHien_I12A
minhtam_I12C
huynhtamhaoI12A
Admin
96 posters

Trang 1 trong tổng số 8 trang 1, 2, 3, 4, 5, 6, 7, 8  Next

Go down

Thảo luận Bài 7 Empty Thảo luận Bài 7

Bài gửi  Admin 11/4/2012, 14:22

Thảo luận những vấn đề liên quan đến Bài 7.

Admin
Admin

Tổng số bài gửi : 294
Join date : 18/02/2009

https://hedieuhanh.forumvi.com

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Tại sao cần phải đồng bộ hoá công việc các tiến trình?

Bài gửi  huynhtamhaoI12A 11/4/2012, 14:48

Mục đích của đồng bộ hoá công việc các tiến trình là đảm bảo Tính nhất quán của tài nguyêndùng chung và Tránh được hiện tượng Deadlock (Hiện tượng kẹt tiến trình).

Thảo luận Bài 7 263bf1c6c00c
huynhtamhaoI12A
huynhtamhaoI12A

Tổng số bài gửi : 24
Join date : 17/02/2012
Age : 33

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Re: Thảo luận Bài 7

Bài gửi  minhtam_I12C 11/4/2012, 15:49

Trình bày những lý do đồng bộ hóa công việc tiến trình. Cho ví dụ minh họa.
- Mục đích của đồng bộ hóa công việc các tiến trình là
+đảm bảo Tính nhất quán của tài nguyên chung
+Tránh được hiện tượng Deadloack( Hiện tượng kẹt tiến trình )

VD1:
Trong thư viện của trường học chỉ có 1 máy tính (tài nguyên dùng chung) , Sinh viên A vào sử dụng máy tính để nghiên cứu tư liệu .Sinh viên B vào sau muốn sừ dụng máy tính thì phài đợi SV A sử dụng xong mới dùng được .

VD2 :
Tong công ty , có 1 chiếc thang máy ( tài nguyên dùng chung ) , nhân viên A vào thang máy trước nên lên trước . Nhân viên B tới sau thì đợi lên sau .



minhtam_I12C

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

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Khái niệm đoạn tương tranh, loại trừ lẫn nhau, vùng tranh chấp.

Bài gửi  PhamQuangHien_I12A 11/4/2012, 16:00

- Đoạn tương tranh là 1 đoạn mã trong chương trình của HĐH. Đoạn mã có tính chất khi thực hiện các lệnh trong đoạn tương tranh thì các đoạn đó có thể tác động đến tài nguyên dùng chung, biến dùng chung (count ++, count --), có thể sửa chữa những kết quả trong tài nguyên.
- "Loại trừ lẫn nhau" hay còn gọi là đoạn tương hỗ. Chỉ có 1 tiến trìnhđược rơi vào đoạn tương tranh mà thôi, có 1 tiến trình khác muốn tương tranh thì phải chờ HĐH cho phép.

Admin
Đoạn tương tranh là 1 đoạn mã trong chương trình của tiến trình người dùng (không phải của HĐH).

PhamQuangHien_I12A

Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Thực thi đèn hiệu có chờ

Bài gửi  PhamQuangHien_I12A 11/4/2012, 16:01

- Với tác nguyên Wait có vòng lặp vô tận kiểm tra biến đếm S có nhỏ hơn 0 hay không, điều đó làm cho các tiến trình có thể tự khóa mình (Block Itseft) và chuyển sang trạng thái waiting, sau đó xếp vào hàng chờ của đèn hiệu. Trình điếu phối CPU có thể chọn tiến trình khác trong hàng chờ Ready để thực hiện.
- Khi một tiến trình nào đó thực hiện lệnh Signal(S), một tiến trình P nào đó đang chờ tại S được lựa chọn và đánh thức bằng lệnh WakeUp(P) để chuyển P từ trạng thái Waiting sang trạng thái Ready. Lúc này trình điều phối có thể cho P thực thi ngay hay không còn tuỳ thuộc vào thuật giải cụ thể.

PhamQuangHien_I12A

Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Định nghĩa đèn hiệu với 2 tác nguyên Wait và Signal.

Bài gửi  LePhucHiep(102C) 11/4/2012, 16:10

- Đèn hiệu là phương tiện đồng bộ hoá được E.W. Dijkstra đề xuất năm 1965.
- Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ) và Signal (Báo hiệu):
typedef int semaphore; // Định nghĩa kiểu Đèn hiệu
wait (semaphore S)
{
while ( S <= 0 ); // Chờ bận nếu S<=0
S --; // Giảm S đi 1
}

signal (semaphore S)
{
S ++; // Tăng S lên 1
}
- Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal) phải được thực hiện trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do đó Wait và Signal được gọi là các tác nguyên (Atomic Operations).
LePhucHiep(102C)
LePhucHiep(102C)

Tổng số bài gửi : 69
Join date : 29/08/2011
Age : 39
Đến từ : Đăk Nông

http://www.ngoisao24h.com

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Khái niệm về đồng bộ hóa tiến trình

Bài gửi  phamphihung55 11/4/2012, 16:11

Đồng bộ hóa tiến trình là đồng bộ hóa các luồng ở bên trong của tiến trình, là biết cách điều khiển các luồng cho chúng ăn nhập với nhau có trước có sau để đảm bảo tính nhất quán và tính toàn vẹn của tài nguyên dùng chung,và đảm bảo theo yêu cầu của người dùng.
Tài nguyên dùng chung trong bài toán sản xuất tiêu thụ là Buffer, các biến In,Out
Ví dụ BUFFER_SIZE 10
Tài nguyên dùng chung là vùng nhớ để chúng trao đổi thông tin với nhau.
Tránh được hiện tượng Deadlock.
Trở lại vấn đề bài toán sản xuất – tiêu thụ với giải pháp mới dùng biến đếm Count.
Cấu trúc bộ nhớ đệm chung.
#define BUFFER_SIZE 10
typedef struct {
. . . // Mô tả các thành phần của 1 khoang chứa
} item;
item buffer [BUFFER_SIZE]; // Bộ nhớ đệm.
int in = 0; // Con trỏ tới vị trí trống kế kiếp.
int out = 0; // Con trỏ tới vị trí lấy tiếp theo.
int count= 0;// Đếm số sản phẩm có trong Buffer.

Admin
"Chế biến" không trọn vẹn !
phamphihung55
phamphihung55

Tổng số bài gửi : 83
Join date : 16/02/2012
Age : 33

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Sử dụng Đèn hiệu nhị phân Mutex để đảm bảo tính loại trừ lẫn nhau

Bài gửi  huynhtamhaoI12A 11/4/2012, 16:14

Code:

typedef int semaphore;
semaphore mutex = 1; // Binary Semaphore
while (1)
{
              remainder section
          wait (mutex);
              critical section
          signal (mutex);
              remainder section
}
huynhtamhaoI12A
huynhtamhaoI12A

Tổng số bài gửi : 24
Join date : 17/02/2012
Age : 33

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Sử dụng Đèn hiệu Synch để đồng bộ 2 tiến trình.

Bài gửi  huynhtamhaoI12A 11/4/2012, 16:17

Xét hai process: P1 và P2
Yêu cầu: lệnh S1 trong P1 cần được thực thi trước lệnh S2 trong P2
Định nghĩa semaphore “synch” dùng đồng bộ
Khởi động semaphore:synch.value= 0
Để đồng bộ hoạt động theo yêu cầu, P1 phải định nghĩa như sau:
S1;
signal(synch);
Và P2 định nghĩa như sau:
wait(synch);
S2;
huynhtamhaoI12A
huynhtamhaoI12A

Tổng số bài gửi : 24
Join date : 17/02/2012
Age : 33

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Trình bày những lý do đồng bộ hóa công việc của các tiến trình. ví dụ

Bài gửi  huynhvanhung(I12A) 11/4/2012, 16:18

-- Đảm bảo tính nhất quán của tài nguyên dùng chung.
-- Tránh được hiện tượng Deadlock (Hiện tượng kẹt tiến trình) .
VD: một trường học chỉ có 1 phòng lab (tài nguyên dùng chung) , lớp có giờ học trước thì được vào phòng lab học, các lớp còn lại phải chờ đến khi lớp học trước đó hết giờ mới được vào phòng lab.
huynhvanhung(I12A)
huynhvanhung(I12A)

Tổng số bài gửi : 43
Join date : 17/02/2012
Age : 36
Đến từ : TP.HCM

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Những lý do đồng bộ hóa công việc tiến trình. Cho ví dụ minh họa

Bài gửi  DaoQuangTri38(I12A) 11/4/2012, 16:19

- Mục đích của đồng bộ hóa công việc các tiến trình là đảm bảo Tính nhất quán của tài nguyên chung và Tránh được hiện tượng Deadloack( Hiện tượng kẹt tiến trình )
+ Đảm bảo tính nhất quán của tài nguyên dùng chung.
+ Tránh được hiện tượng Deadlock (Hiện tượng kẹt tiến trình) .
VD1: một trường học chỉ có 1 phòng lab (tài nguyên dùng chung) , lớp có giờ học trước thì được vào phòng lab học, các lớp còn lại phải chờ đến khi lớp học trước đó hết giờ mới được vào phòng lab

DaoQuangTri38(I12A)

Tổng số bài gửi : 26
Join date : 22/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Sử dụng Mutex trong Linux

Bài gửi  LeXuanHau (I12C) 11/4/2012, 16:42

CountThread trong Linux


#include
#include

const int numThreads = 10;
const int iterations = 1000000;

int count;

void *CountThread (void *iterations){
int n, i, x;

n=(int) iterations;

for (i=0; i x=count;
x++;
count=x;
}
}

main(){
pthread_t handles[numThreads];
int i;

count=0;

// Tạo các luồng
for (i=0; i CountThread, (void *)iterations);

// Chờ các luồng kết thúc
for (i=0; i
printf("* Giá trị của Count là:%d \n", count);
getchar();
}


LeXuanHau (I12C)

Tổng số bài gửi : 33
Join date : 16/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Thực thi đèn hiệu có hàng chờ

Bài gửi  NguyenPhuocNguyen (I12A) 11/4/2012, 16:54

- Với tác nguyên Wait có vòng lặp vô tận kiểm tra biến đếm S có nhỏ hơn 0 hay không, điều đó làm cho các tiến trình có thể tự khoá mình (Block Itself) và chuyển sang trạng thái waiting, sau đó xếp vào hàng chờ của đèn hiệu. Trình điều phối CPU có thể chọn tiến trình khác trong hàng chờ Ready để thực hiện.

- Khi một tiến trình nào đó thực hiện lệnh Signal(S), một tiến trình P nào đó đang chờ tại S được lựa chọn và đánh thức bằng lệnh WakeUP(P) để chuyển P từ trang thái Waiting sang trạng thái Ready. Lúc này trình điều phối có thể cho P thực thi ngay hay không còn tuỳ thuộc vào giải thuật cụ thể.

NguyenPhuocNguyen (I12A)

Tổng số bài gửi : 25
Join date : 15/02/2012
Age : 33
Đến từ : Đà Lạt

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Phát biểu bài toán Dining-Philosophers

Bài gửi  NguyenPhuocNguyen (I12A) 11/4/2012, 17:03

- Có 5 triết gia ngồi ăn trên 1 bàn tròn.
- Mỗi người cần 2 chiếc đũa để ăn.
- Trên bàn, chỉ có 5 chiếc đũa xếp xoay vòng và xen kẽ mỗi người.
- Người nào có đủ 2 chiếc đũa sẽ sử dụng và ăn được.

=> Bài toán này minh hoạ sự khó khăn trong việc phân phối tài nguyên giữa các process sao cho không xả ra deadlock và starvation.

NguyenPhuocNguyen (I12A)

Tổng số bài gửi : 25
Join date : 15/02/2012
Age : 33
Đến từ : Đà Lạt

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Đoạn Tương Tranh

Bài gửi  HoNguyenQuocTuy(I12A) 11/4/2012, 19:21

Đoạn tương tranh là doạn mã cho tiến trình mà khi thực hiện nó truy cập, tác động và thay đổi được tài nguyên dùng chung.
Còn đoạn mã ko truy cập, tác động và thay đổi được tài nguyên dùng chung là đoạn còn lại

HoNguyenQuocTuy(I12A)

Tổng số bài gửi : 11
Join date : 21/02/2012
Age : 34
Đến từ : An Khê - Gia Lai

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Giới thiệu về tương tranh

Bài gửi  HoNguyenQuocTuy(I12A) 11/4/2012, 19:32

  • Trong hệ đa chương, thường có nhiều process chạy song hành,
    nhưng mỗi process có không gian làm việc độc lập, không ai có
    thể truy xuất trực tiếp không gian làm việc của process khác => rất
    tốt cho việc bảo vệ chúng lẫn nhau nhất là khi các process này là
    những chương trình độc lập.

  • Nếu 2 hay nhiều process cần giao tiếp nhau để đồng bộ hay để
    trao đổi dữ liệu, ta cần cung cấp cơ chế cho chúng. Có 2 cơ chế
    giao tiếp chính giữa các process : truy xuất bộ nhớ dùng chung và
    gởi/nhận thông báo..

  • Truy xuất bộ nhớ chung là 1 trong nhiều hoạt động tương tranh
    giữa các process. Vấn đề tương tranh trên 1 tài nguyên dùng
    chung là vấn đề lớn cần phải giải quyết triệt để vì nếu nhiều
    process truy xuất đồng thời vào 1 tài nguyên dùng chung mà
    không có sự kiểm soát thì dễ xảy ra lỗi làm hư hỏng tài nguyên
    (điều kiện Race)..

  • Phân tích kỹ code của chương trình, ta nhận thấy chúng là
    danh sách liên tiếp của 2 loại đoạn code :

  • đoạn code truy xuất các biến cục bộ của chương trình. Đoạn
    code này thường dài và xuất hiện nhiều. May mắn là chúng ta
    không cần quan tâm và kiểm soát đoạn code này.

  • Đoạn code truy xuất tài nguyên dùng chung và có thể tranh
    chấp với process khác. Đây là đoạn code, mặc dù ít xuất hiện
    và thường rất ngắn, nhưng dễ gây lỗi trên tài nguyên nên ta
    gọi nó là 'critical session‘ (viết tắt là CS), chúng ta cần kiểm
    soát cẩn thận đoạn code CS này.

Thảo luận Bài 7 >

HoNguyenQuocTuy(I12A)

Tổng số bài gửi : 11
Join date : 21/02/2012
Age : 34
Đến từ : An Khê - Gia Lai

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Đôi nét về giải thưởng Turing

Bài gửi  maidangvu_I12A 11/4/2012, 21:08

Giải thưởng Turing (A. M. Turing Award) là giải thưởng thường niên của Hiệp hội Khoa học Máy tính Association for Computing Machinery cho các cá nhân hoặc một tập thể với những đóng góp quan trọng cho cộng đồng khoa học máy tính. Giải thưởng thường được coi như là giải Nobel cho lĩnh vực khoa học máy tính. Giải thưởng được đặt theo tên của nhà bác học Alan Mathison Turing, nhà toán học người Anh, người được coi là cha đẻ của lý thuyết khoa học máy tính và trí tuệ nhân tạo. Từ năm 2007, giải thưởng có giá trị $250.000, được đồng tài trợ bởi Intel và Google.

Người nhận giải thưởng đầu tiên năm 1966, là Alan Perlis của viện Carnegie Institute of Technology. Năm 2006, Frances E. Allen của IBM là người phụ nữ đầu tiên và duy nhất cho đến nay được nhận giải thưởng.

maidangvu_I12A

Tổng số bài gửi : 28
Join date : 28/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Tiểu sử về người được đặt tên cho giải thưởng Turing

Bài gửi  maidangvu_I12A 11/4/2012, 21:15

Thảo luận Bài 7 Turingq
Tên đầy đủ của ông là Alan Mathison Turing (sinh ngày 23/6/1912 – mất ngày 7/6/1954):
Ông là một nhà toán học, logic học và mật mã học người Anh thường được xem là cha đẻ của ngành khoa học máy tính. Phép thử Turing (Turing test) là một trong những cống hiến của ông trong ngành trí tuệ nhân tạo: thử thách này đặt ra câu hỏi rằng máy móc có khi nào đạt được ý thức và có thể suy nghĩ được hay không. Ông đã công thức hóa khái niệm thuật toán và tính toán với máy Turing, đồng thời đưa ra phiên bản của "Turing", mà ngày nay được đông đảo công chúng chấp nhận, về luận đề Church-Turing, một luận đề nói rằng bất cứ mô hình tính toán thiết thực nào đều có khả năng thấp hơn hoặc bằng khả năng của một máy Turing.

Trong Đệ nhị thế chiến, Turing đã từng làm việc tại Bletchley Park, trung tâm giải mật mã của Anh, và một thời là người chỉ huy của Hut 8, một bộ phận của Anh có trách nhiệm trong việc giải mã của hải quân Đức. Ông đã sáng chế ra nhiều kỹ sảo hòng phá mật mã của Đức, trong đó có phương pháp nối các máy giải mã lại với nhau thành một bộ Bombe, một máy điện-cơ để tìm ra công thức gài đặt cho máy Enigma.

Sau chiến tranh, ông cộng tác tại Phòng thí nghiệm Vật lý Quốc gia (National Physical Laboratory), và đã tạo ra một trong những đồ án đầu tiên cho một máy tính có khả năng lưu trữ chương trình (stored-program computer), nhưng nó không bao giờ được kiến tạo thành máy. Năm 1947 ông chuyển đến Đại học Victoria tại Manchester để làm việc, đa số trên phần mềm cho máy Manchester Mark I, lúc đó là một trong những máy tính hiện đại đầu tiên.

maidangvu_I12A

Tổng số bài gửi : 28
Join date : 28/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Khái niệm Đoạn tương tranh và Loại trừ lẫn nhau

Bài gửi  hoanggiangI12C 11/4/2012, 21:18

Giả sử có n tiến trình { P0 , P1 , ... , Pn-1 }. Mỗi tiến trình có đoạn mã gọi là Đoạn tương tranh ( ĐTT ) trong đó tiến trình có thể truy cập và thay đổi vùng nhớ, tập tin hay tài nguyên chung.
- Tính Loại trừ lẫn nhau hay Loại trừ tương hỗ (Mutual Exclusion) về phương diện thời gian: Khi có 1 tiến trình đang ở trong ĐTT của nó thì không có tiến trình nào khác trong nhóm cũng tại đoạn như vậy, nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được phép truy cập và/hoặc thay đổi tài nguyên chung.
- Các tiến trình tương tranh có cấu trúc mã bao gồm Entry Section (Đoạn Đăng nhập), Critical Section (Đoạn Tương tranh), Exit Section (Đoạn Đăng xuất) và các Remainder Section (Đoạn Còn lại).


Ví dụ về vùng tương tranh.
Vùng tương tranh là cái bảng trong lớp. Ở 1 thời điểm chỉ có 1 sinh viên lên thao tác trên đó. Sau khi sinh viên đó xong thì sinh viện khác với được lên bảng thao tác trên bảng tiếp. Cùng một lúc không thể có hai sinh viên cùng thao tác trên bảng...
Vùng hay Đoạn tương tranh Đoạn Găng là đoạn mã của tiến trình, còn cái bảng nói tới ở trên là Vùng tranh chấp !

Admin
Đã giảng trên lớp: "Cái bảng" không phải là Vùng (hay Đoạn) Tương tranh, mà là "Vùng Tranh chấp" !



hoanggiangI12C

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

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Re: Thảo luận Bài 7

Bài gửi  nguyenxuankieu(i12a) 11/4/2012, 21:48

hoanggiangI12C đã viết:Giả sử có n tiến trình { P0 , P1 , ... , Pn-1 }. Mỗi tiến trình có đoạn mã gọi là Đoạn tương tranh ( ĐTT ) trong đó tiến trình có thể truy cập và thay đổi vùng nhớ, tập tin hay tài nguyên chung.
- Tính Loại trừ lẫn nhau hay Loại trừ tương hỗ (Mutual Exclusion) về phương diện thời gian: Khi có 1 tiến trình đang ở trong ĐTT của nó thì không có tiến trình nào khác trong nhóm cũng tại đoạn như vậy, nghĩa là: Mỗi thời điểm chỉ có 1 tiến trình được phép truy cập và/hoặc thay đổi tài nguyên chung.
- Các tiến trình tương tranh có cấu trúc mã bao gồm Entry Section (Đoạn Đăng nhập), Critical Section (Đoạn Tương tranh), Exit Section (Đoạn Đăng xuất) và các Remainder Section (Đoạn Còn lại).


Ví dụ về vùng tương tranh.
Vùng tương tranh là cái bảng trong lớp. Ở 1 thời điểm chỉ có 1 sinh viên lên thao tác trên đó. Sau khi sinh viên đó xong thì sinh viện khác với được lên bảng thao tác trên bảng tiếp. Cùng một lúc không thể có hai sinh viên cùng thao tác trên bảng...
Vùng hay Đoạn tương tranh Đoạn Găng là đoạn mã của tiến trình, còn cái bảng nói tới ở trên là Vùng tranh chấp !



Mình xin bổ sung một vd:

ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty x
Tôi tên là: Lê Văn Ba
..........(nội dung đơn).............
TP Hồ Chí Minh, ngày 5 tháng 5 năm 2011
Người làm đơn
....(chữ ký)....
Lê Văn Ba
- Nội dung đơn này phải được đảm bảo tính toàn vẹn (Integrity), ví dụ: Phía trên là Lê Văn Ba thì phía dưới cũng phải là Lê Văn Ba.
- Nếu vài tiến trình (hơn 1) cùng sửa đơn trên một lúc (không đảm bảo được tính Loại trừ lẫn nhau) thì nội dung của nó có thể không đúng. Ví dụ, giả sử tiến trình P1 (nhà sản xuất) sửa Lê Văn Ba phía trên thành Lê Văn Tám, trong khi P2 (nhà sản xuất khác) sửa Lê Văn Ba phía dưới thành Lê Văn Bá, mà có tiến trình P3 (nhà tiêu thụ) nào đó "lấy" đơn về dùng (để in ra) thì kết quả sẽ không nhất quán như sau:

ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty x
Tôi tên là: Lê Văn Tám
..........(nội dung đơn).............
TP Hồ Chí Minh, ngày 5 tháng 5 năm 2011
Người làm đơn
....(chữ ký)....
Lê Văn Bá
nguyenxuankieu(i12a)
nguyenxuankieu(i12a)

Tổng số bài gửi : 17
Join date : 18/02/2012
Age : 33
Đến từ : HCM

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Re: Thảo luận Bài 7

Bài gửi  trinhvanminh_11h1010077 11/4/2012, 22:08

Edsger Wybe Dijkstra (người Hà Lan) phát minh ra khái niệm semaphore trong khoa học máy tính vào năm 1972
Semaphore được sử dụng lần đầu tiên trong cuốn sách “The operating system” của ông Edsger Wybe Dijkstra (1930-2002)
Thảo luận Bài 7 67226440


trinhvanminh_11h1010077
trinhvanminh_11h1010077

Tổng số bài gửi : 90
Join date : 15/02/2012
Age : 38
Đến từ : tphcm

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Trình bày khái niệm đèn hiệu như một phương tiện đồng bộ hóa công việc các tiến trình.

Bài gửi  TrinhThiPhuongThaoI12C 11/4/2012, 22:11

Khái niệm đèn hiệu
- Đèn hiệu là phương tiện đồng bộ hoá được E.W. Dijkstra đề xuất năm 1965.
- Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ) và Signal (Báo hiệu):

typedef int semaphore; // Định nghĩa kiểu Đèn hiệu
wait (semaphore S)
{
while ( S <= 0 ); // Chờ bận nếu S<=0
S --; // Giảm S đi 1
}

signal (semaphore S)
{
S ++; // Tăng S lên 1
}

-Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal) phải được thực hiện trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do đó Wait và Signal được gọi là các tác nguyên (Atomic Operations)


Được sửa bởi TrinhThiPhuongThaoI12C ngày 11/4/2012, 22:14; sửa lần 3.

TrinhThiPhuongThaoI12C

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

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Đôi nét về người đã đề xuất phương tiện về đồng bộ hóa (Semaphores)

Bài gửi  maidangvu_I12A 11/4/2012, 22:12

Thảo luận Bài 7 Edsgerwybedijkstra
Edsger Wybe Dijkstra (sinh ngày 11/5/1930 tại Rotterdam – mất ngày 6/8/2002 tại Nuenen):
Ông là nhà khoa học máy tính Hà Lan. Ông được nhận giải thưởng Turing cho các đóng góp có tính chất nền tảng trong lĩnh vực ngôn ngữ lập trình Không lâu trước khi chết, ông đã được nhận giải Bài báo ảnh hưởng lớn trong lĩnh vực tính toán phân tán của ACM dành cho bài báo đã khởi đầu cho ngành con Tự ổn định. Sau khi ông qua đời, giải thưởng thường niên này đã được đổi tên thành giải thưởng ACM Edsger W. Dijkstra.
Dijkstra học vật lý lý thuyết tại Đại học Leiden, nhưng ông đã nhanh chóng nhận ra rằng ông quan tâm đến lập trình hơn.

Thời kỳ đầu, ông làm việc tại Trung tâm toán học, Viện nghiên cứu quốc gia về toán học và khoa học máy tính tại Amsterdam, ông còn giữ chức vị giáo sư tại Đại học Kỹ thuật Eindhoven, Hà Lan. Đầu thập kỷ 1970, ông làm cộng tác nghiên cứu tại Burroughs Corporation, sau đó giữ vị trí Schlumberger Centennial Chair ngành Khoa học máy tính tại Đại học Texas tại Austin, Mỹ. Ông nghỉ hưu năm 2000.

Trong các đóng góp của ông cho ngành khoa học máy tính có thuật toán đường đi ngắn nhất, còn được biết với tên Thuật toán Dijkstra, hệ điều hành THE và cấu trúc semaphore để phối hợp hoạt động của nhiều bộ vi xử lý và nhiều chương trình. Một khái niệm khác trong lĩnh vực tính toán phân tán đã được khởi đầu nhờ Dijkstra là self-stabilization - một cách khác để đảm bảo tính đáng tin cậy của hệ thống. Thuật toán Dijkstra được sử dụng trong SPF, Shortest Path First, dùng trong giao thức định tuyến OSPF, Open Shortest Path First.

Ông còn nổi tiếng với đánh giá thấp về lệnh GOTO trong lập trình máy tính. Bài báo năm 1968 "A Case against the GO TO Statement" (EWD215) được xem là một bước quan trọng tiến tới việc lệnh GOTO bị thay thế dần trên quy mô lớn bởi các cấu trúc lập trình chẳng hạn như vòng lặp while. Phương pháp này còn được gọi là Lập trình có cấu trúc. Dijkstra đã rất hâm mộ ngôn ngữ lập trình ALGOL 60, và đã làm việc trong nhóm cài đặt trình biên dịch đầu tiên cho ngôn ngữ này.

Từ những năm 1970, mối quan tâm chính của Dijkstra là kiểm định hình thức (formal verification). Quan niệm phổ biến thời đó là người ta nên đưa ra một chứng minh toán học về tính đúng đắn của chương trình sau khi đã viết chương trình đó. Dijkstra đã phản đối rằng các chứng minh thu được rất dài và nặng nề, và rằng chứng minh đó không đem lại hiểu biết về việc chương trình đã được phát triển như thế nào. Một phương pháp khác là dẫn xuất chương trình (program derivation), để "phát triển chứng minh và chương trình một cách đồng thời". Người ta bắt đầu bằng một đặc tả toán học về những gì mà một chương trình cần phải thực hiện, sau đó áp dụng các biến đổi toán học đối với đặc tả đó cho đến khi nó được chuyển thành một chương trình chạy được. Chương trình thu được khi đó được gọi là "đúng đắn theo cách xây dựng" (correct by construction).

Dijkstra còn nổi tiếng với các bài luận của ông về lập trình; ông là người đầu tiên tuyên bố rằng việc lập trình có đặc điểm cố hữu là khó khăn và phức tạp đến mức các lập trình viên cần phải khai thác mọi kỹ thuật và các phương pháp trừu tượng hóa có thể để hy vọng có thể quản lý được độ phức tạp của nó một cách thành công. Ông còn nổi tiếng với thói quen viết tay cẩn thận các bản thảo bằng bút máy. Các bản thảo này được gọi là EWD, do Dijkstra đánh số chúng bằng tiết đầu tố EWD. Ông thường phân phát các bản phô-tô của bản EWD mới cho các đồng nghiệp của mình; những người nhận được lại phô-tô và tiếp tục phân phát các bản sao, bằng cách đó các bản EWD được phát tán khắp cộng đồng khoa học máy tính quốc tế. Các chủ đề chính là về khoa học máy tính và toán học, ngoài ra còn có các báo cáo công tác, thư và các bài phát biểu. Hơn 1300 bài EWD đã được quét thành ảnh, số lượng được chuyển thành dạng điện tử để phục vụ nghiên cứu ngày càng tăng, chúng được lưu trữ và cung cấp trực tuyến tại Đại học Texas.

Dijkstra đã là một trong những người tiên phong trong nghiên cứu về tính toán phân tán. Có người còn cho là một số bài báo của ông đã thiết lập ngành nghiên cứu này. Cụ thể, bài báo "Self-stabilizing Systems in Spite of Distributed Control" của ông đã khởi đầu ngành con Self-stabilization.

Dijkstra còn được ghi nhận là cả đời chỉ sở hữu duy nhất một chiếc máy tính (vào cuối đời) và họa hoằn mới thực sự sử dụng nó, để đi đôi với quan niệm của ông rằng khoa học máy tính trừu tượng hơn chứ không chỉ là lập trình, quan niệm này được thể hiện trong nhiều câu nói nổi tiếng chẳng hạn như "Khoa học máy tính đối với máy tính cũng như thiên văn học đối với kính thiên văn" (Computer Science is no more about computers than astronomy is about telescopes.)

maidangvu_I12A

Tổng số bài gửi : 28
Join date : 28/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty VẤN ĐỀ TƯƠNG TRANH

Bài gửi  trinhvanminh_11h1010077 11/4/2012, 22:18

Giả sử có n tiến trình . Mỗi tiến trình có đoạn mã gọi là Đoạn tương tranh trong đó tiến trình có thể truy cập và thay đổi vùng nhớ ,tập tin hay tài nguyên chung.
- Tính loại trừ lẫn nhau hay loại trừ tương hỗ về phương diện thời gian : khi có 1 tiến trình đang ở trong đoạn tương tranh của nó thì không có tiến trình nào khác trong nhóm cũng tại đoạn như vậy , nghĩa là : Mỗi thời điểm chỉ có 1 tiến trình được phép truy cập và thay đổi tài nguyên chung.
- Các tiến trình có cấu trúc mã bao gồm :

Đoạn đăng nhập
Đoạn tương tranh
Đoạn đăng xuất
Đoạn còn lại

Vậy để giải quyết vấn đề này thì phải thỏa các ĐK sau :

Loại trừ lẫn nhau : Mỗi thời điểm chỉ có 1 tiến trình vận hành trong đoạn tương tranh
Tiến triển : Không có tiến trình nào phải chờ vô hạn tại Đoạn đăng nhập
trinhvanminh_11h1010077
trinhvanminh_11h1010077

Tổng số bài gửi : 90
Join date : 15/02/2012
Age : 38
Đến từ : tphcm

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Trình bày khái niệm đoạn tương tranh và tính loại trừ tương hổ

Bài gửi  TrinhVinhThanh (I12A) 11/4/2012, 22:24

Giới thiệu ứng dụng thứ nhất của đèn hiệu để đảm bảo tính loại trừ tương hổ trong công việc của các tiến trình đồng hành song song.
Đoạn tương tranh là một đoạn mã của tiến trình mà khi thực hiện nó truy cập và tác động đến tài nguyên dùng chung

TrinhVinhThanh (I12A)

Tổng số bài gửi : 10
Join date : 18/02/2012

Về Đầu Trang Go down

Thảo luận Bài 7 Empty Re: Thảo luận Bài 7

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 1 trong tổng số 8 trang 1, 2, 3, 4, 5, 6, 7, 8  Next

Về Đầu Trang

- Similar topics

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