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 2 trong tổng số 8 trang
Trang 2 trong tổng số 8 trang • 1, 2, 3, 4, 5, 6, 7, 8
Đôi nét về giải thưởng Turing
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.
Danh sách những người nhận giải:
Những người nhận giải Turing
1966 Alan J. Perlis Cho những ảnh hưởng trong các kỹ thuật lập trình và xây dựng chương trình dịch
1967 Maurice V. Wilkes Giáo sư Wilkes được biết tới như là người thiết kế và xây dựng EDSAC, máy tính đầu tiên với hàm nội chứa (internally stored). Ông là đồng tác giả với Wheeler và Gill của tập sách "Preparation of Programs for Electronic Digital Computers" xuất bản 1951
1968 Richard Hamming Cho các đóng góp về các phương pháp số, các hệ thống tự mã hóa, phát hiện và sửa lỗi sai
1969 Marvin Minsky Trí tuệ nhân tạo
1970 James H. Wilkinson Cho những nghiên cứu về phân tích số cho việc sử dung các máy tính số tốc độ cao, những đóng góp về Đại số tuyến tính và phân tích lỗi ngược
1971 John McCarthy Cho những đóng góp về Trí tuệ nhân tạo "The Present State of Research on Artificial Intelligence"
1972 Edsger W. Dijkstra Là người đóng góp chủ yếu cho ngôn ngữ lập trình ALGOL. Ông cũng nổi tiếng với thuật toán Dijkstra
1973 Charles W. Bachman Cho những đóng góp đáng chú ý của ông về công nghệ database
1974 Donald E. Knuth Với những cống hiến cho việc phân tích giải thuật và thiết kế ngôn ngữ lập trình, và đặc biệt với tác phẩm kinh điển Nghệ thuật lập trình "The Art of Computer Programming"
1975 Allen Newell và Herbert A. Simon Với những đóng góp quan trọng cho chuyên ngành trí tuệ nhân tạo , tâm lý học về nhận thức chủ quan (psychology of human cognition), và xử lý chuỗi
1976 Michael O. Rabin và
Dana S. Scott Với bài báo "Finite Automata and Their Decision Problem" (Automat hữu hạn và bài toán quyết định) đã giới thiệu các ý tưởng về máy phi bất định nondeterministic machines, đã làm sáng tỏ rất nhiều khái niệm có giá trị.
1977 John Backus John Backus đã đóng góp nhiều công sức cho việc thiết kế các hệ thống ngôn ngữ lập trình bậc cao, tiêu biểu là FORTRAN, và các bài báo phôi thai cho các thủ tục hình thức của đặc tả các ngôn ngữ lập trình
1978 Robert W. Floyd Có ảnh hưởng sâu sắc đến các phương pháp luận của việc xây dựng hiệu quả các phần mềm tin cậy, đặt nền móng cho nhiều chuyên ngành hẹp của khoa học máy tính: lý thuyết phân tích ngữ pháp, ngữ nghĩa của các ngôn ngữ lập trình, tự động kiểm tra chương trình program verification, tự động tổng hợp chương trình, và phân tích giải thuật
1979 Kenneth E. Iverson Với những nỗ lực tiên phong trong ngôn ngữ lập trình và các ký pháp toán học tạo nên một lĩnh vực chuyên ngành máy tính mớilaf APL, cho những đóng góp của ông về thực hiện hệ tương tác, đào tạo sự dụng APL, và lý thuyết và ứng dụng ngôn ngữ lập trình
1980 C. Antony R. Hoare Cho những đóng góp cơ bản về thiết kế và định nghĩa ngôn ngữ lập trình. Ông cũng là tác giả của giải thuật sắp xếp nổi tiếng Quick sortvà ngôn ngữ CSP
1981 Edgar F. Codd Với những đóng góp nền tảng cho lý thuyết và vận dụng các hệ thống quản trị cơ sở dữ liệu, đặc biệt là cơ sở dữ liệu quan hệ
1982 Stephen A. Cook Góp phần thúc đẩy và mở rộng việc nhận thức về độ phức tạp tính toán
1983 Ken Thompson và Dennis M. Ritchie Với việc phát triển lý thuyết hệ điều hành và đặc biệt là hệ điều hành UNIX
1984 Niklaus Wirth Cho việc phát triển các ngôn ngữ lập trình mới EULER, ALGOL-W, MODULA và PASCAL
1985 Richard M. Karp Với những đóng góp liên tục về lý thuyết lập trình bao gồm việc phát triển các giải thuật hiệu quả cho luồng mạng và các bài toán tối ưu tổ hợp, định ra khả năng tính toán thời gian đa thức và các khái niệm về hiệu quả giải thuật, và đóng góp nổi bật về lý thuyết NP-đầy đủ NP-completeness
1986 John Hopcroft và Robert Tarjan Cho những đóng góp căn bản về phân tích thiết kế cấu trúc dữ liệu và giải thuật
1987 John Cocke Cho những đóng góp quan trọng trong việc thiết kế và lý thuyết hóa chương trình dịch, kiến trúc các hệ thống lớn và phát triển các tập lệnh đơn giản trong máy tính (RISC)
1988 Ivan Sutherland Cho việc tiên phong trong lĩnh vực đồ họa computer graphics, khởi đầu với chương trình Sketchpad
1989 William (Velvel) Kahan Cho những đóng góp cơ bản về phân tích sốnumerical analysis. Một trong những chuyên gia đầu ngành về tính toán dấu phẩy động floating-point.
1990 Fernando J. Corbató Đi đầu trong việc tổ chức và dẫn dắt sự phát triển của các hệ thống máy tính mục đích chung, large-scale, chia sẻ thời gian và nguồn lực, CTSS vàMultics.
1991 Robin Milner Cho ba thành tựu quan trọng: 1) LCF, cơ chế hóa Logic Scott's of của hàm khả tính (Computable Functions), 2) ML, ngôn ngữ đầu tiên có tính đa hình type inference cùng với kiểu "an toàn" type-safe và cơ chế bắt ngoại lệ exception-handling ; 3) Các hệ thống truyền thông giải tíchCCS, lý thuyết tông quát về tương tranh concurrency. Ông cũng đồng thời khái quát hóa full abstraction, nghiên cứu các mối quan hệ ngữ nghĩa thao tác. operational.
1992 Butler W. Lampson Cho những đóng góp cho việc phát triển môi trường tính toán cá nhân và phân tán.
1993 Juris Hartmanis và Richard E. Stearns Thiết lập nền tảng cho lý thuyết độ phức tạp tính toán.
1994 Edward Feigenbaum và Raj Reddy Tiên phong trong việc xây dựng các hệ thống lớn về trí tuệ nhân tạo, chứng minh tầm quan trọng thực tiễn và khả năng thương mại của trí tuệ nhân tạo.
1995 Manuel Blum Ghi nhận cho những đóng góp cơ bản về lý thuyết độ phức tạp tính toán và các ứng dụng trong cryptography và program checking.
1996 Amir Pnueli Giới thiệu temporal logic vào khoa học máy tính và các hệ thống verification.
1997 Douglas Engelbart Đóng góp về tính toán tương tác
1998 Jim Gray Đóng góp về cơ sở dữ liệu và xử lý giao dịch
1999 Frederick P. Brooks, Jr. Những đóng góp về kiến trúc máy tính, hệ điều hành và kỹ nghệ phần mềm.
2000 Andrew Chi-Chih Yao Đóng góp về lý thuyết tính toán, pseudorandom number generation, cryptography, và communication complexity.
2001 Ole-Johan Dahl và Kristen Nygaard Những ý tưởng cơ bản về lập trình hướng đối tượng.
2002 Ronald L. Rivest, Adi Shamir và Leonard M. Adleman Những đóng góp về mã hóa khóa công khai public-key cryptography, RSA (mã hóa).
2003 Alan Kay Với các ý tưởng cội nguồn về các ngôn ngữ lập trình hướng đối tượng vàSmalltalk.
2004 Vinton G. Cerf và Robert E. Kahn Đóng góp cho internetworking, bao gồm thiết kế và triển khai các giao thức Internet' TCP/IP.
2005 Peter Naur Với những đóng góp về thiết kế ngôn ngữ lập trình.
2006 Frances E. Allen Những đóng góp về lý thuyết và thực nghiệm tối ưu hóa các kỹ thuật chương trình dịch.
2007 Edmund M. Clarke,E. Allen Emerson và Joseph Sifakis Phát triển kiểm tra mô hình Model-Checking.
2008 Barbara Liskov Những đóng góp cho cơ sở lý thuyết và thực tiễn của ngôn ngữ lập trình và thiết kế hệ thống, đặc biệt về trừu tượng hóa dữ liệu, khả năng chịu lỗi và tính toán phân tán
2009 Charles P. Thacker Tiên phong trong thiết kế và hiện thực Alto, mô hình máy tính cá nhân đầu tiên, và những đóng góp của ông với Ethernet và máy tính bảng cá nhân.
(Theo wikipedia)
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.
Danh sách những người nhận giải:
Những người nhận giải Turing
1966 Alan J. Perlis Cho những ảnh hưởng trong các kỹ thuật lập trình và xây dựng chương trình dịch
1967 Maurice V. Wilkes Giáo sư Wilkes được biết tới như là người thiết kế và xây dựng EDSAC, máy tính đầu tiên với hàm nội chứa (internally stored). Ông là đồng tác giả với Wheeler và Gill của tập sách "Preparation of Programs for Electronic Digital Computers" xuất bản 1951
1968 Richard Hamming Cho các đóng góp về các phương pháp số, các hệ thống tự mã hóa, phát hiện và sửa lỗi sai
1969 Marvin Minsky Trí tuệ nhân tạo
1970 James H. Wilkinson Cho những nghiên cứu về phân tích số cho việc sử dung các máy tính số tốc độ cao, những đóng góp về Đại số tuyến tính và phân tích lỗi ngược
1971 John McCarthy Cho những đóng góp về Trí tuệ nhân tạo "The Present State of Research on Artificial Intelligence"
1972 Edsger W. Dijkstra Là người đóng góp chủ yếu cho ngôn ngữ lập trình ALGOL. Ông cũng nổi tiếng với thuật toán Dijkstra
1973 Charles W. Bachman Cho những đóng góp đáng chú ý của ông về công nghệ database
1974 Donald E. Knuth Với những cống hiến cho việc phân tích giải thuật và thiết kế ngôn ngữ lập trình, và đặc biệt với tác phẩm kinh điển Nghệ thuật lập trình "The Art of Computer Programming"
1975 Allen Newell và Herbert A. Simon Với những đóng góp quan trọng cho chuyên ngành trí tuệ nhân tạo , tâm lý học về nhận thức chủ quan (psychology of human cognition), và xử lý chuỗi
1976 Michael O. Rabin và
Dana S. Scott Với bài báo "Finite Automata and Their Decision Problem" (Automat hữu hạn và bài toán quyết định) đã giới thiệu các ý tưởng về máy phi bất định nondeterministic machines, đã làm sáng tỏ rất nhiều khái niệm có giá trị.
1977 John Backus John Backus đã đóng góp nhiều công sức cho việc thiết kế các hệ thống ngôn ngữ lập trình bậc cao, tiêu biểu là FORTRAN, và các bài báo phôi thai cho các thủ tục hình thức của đặc tả các ngôn ngữ lập trình
1978 Robert W. Floyd Có ảnh hưởng sâu sắc đến các phương pháp luận của việc xây dựng hiệu quả các phần mềm tin cậy, đặt nền móng cho nhiều chuyên ngành hẹp của khoa học máy tính: lý thuyết phân tích ngữ pháp, ngữ nghĩa của các ngôn ngữ lập trình, tự động kiểm tra chương trình program verification, tự động tổng hợp chương trình, và phân tích giải thuật
1979 Kenneth E. Iverson Với những nỗ lực tiên phong trong ngôn ngữ lập trình và các ký pháp toán học tạo nên một lĩnh vực chuyên ngành máy tính mớilaf APL, cho những đóng góp của ông về thực hiện hệ tương tác, đào tạo sự dụng APL, và lý thuyết và ứng dụng ngôn ngữ lập trình
1980 C. Antony R. Hoare Cho những đóng góp cơ bản về thiết kế và định nghĩa ngôn ngữ lập trình. Ông cũng là tác giả của giải thuật sắp xếp nổi tiếng Quick sortvà ngôn ngữ CSP
1981 Edgar F. Codd Với những đóng góp nền tảng cho lý thuyết và vận dụng các hệ thống quản trị cơ sở dữ liệu, đặc biệt là cơ sở dữ liệu quan hệ
1982 Stephen A. Cook Góp phần thúc đẩy và mở rộng việc nhận thức về độ phức tạp tính toán
1983 Ken Thompson và Dennis M. Ritchie Với việc phát triển lý thuyết hệ điều hành và đặc biệt là hệ điều hành UNIX
1984 Niklaus Wirth Cho việc phát triển các ngôn ngữ lập trình mới EULER, ALGOL-W, MODULA và PASCAL
1985 Richard M. Karp Với những đóng góp liên tục về lý thuyết lập trình bao gồm việc phát triển các giải thuật hiệu quả cho luồng mạng và các bài toán tối ưu tổ hợp, định ra khả năng tính toán thời gian đa thức và các khái niệm về hiệu quả giải thuật, và đóng góp nổi bật về lý thuyết NP-đầy đủ NP-completeness
1986 John Hopcroft và Robert Tarjan Cho những đóng góp căn bản về phân tích thiết kế cấu trúc dữ liệu và giải thuật
1987 John Cocke Cho những đóng góp quan trọng trong việc thiết kế và lý thuyết hóa chương trình dịch, kiến trúc các hệ thống lớn và phát triển các tập lệnh đơn giản trong máy tính (RISC)
1988 Ivan Sutherland Cho việc tiên phong trong lĩnh vực đồ họa computer graphics, khởi đầu với chương trình Sketchpad
1989 William (Velvel) Kahan Cho những đóng góp cơ bản về phân tích sốnumerical analysis. Một trong những chuyên gia đầu ngành về tính toán dấu phẩy động floating-point.
1990 Fernando J. Corbató Đi đầu trong việc tổ chức và dẫn dắt sự phát triển của các hệ thống máy tính mục đích chung, large-scale, chia sẻ thời gian và nguồn lực, CTSS vàMultics.
1991 Robin Milner Cho ba thành tựu quan trọng: 1) LCF, cơ chế hóa Logic Scott's of của hàm khả tính (Computable Functions), 2) ML, ngôn ngữ đầu tiên có tính đa hình type inference cùng với kiểu "an toàn" type-safe và cơ chế bắt ngoại lệ exception-handling ; 3) Các hệ thống truyền thông giải tíchCCS, lý thuyết tông quát về tương tranh concurrency. Ông cũng đồng thời khái quát hóa full abstraction, nghiên cứu các mối quan hệ ngữ nghĩa thao tác. operational.
1992 Butler W. Lampson Cho những đóng góp cho việc phát triển môi trường tính toán cá nhân và phân tán.
1993 Juris Hartmanis và Richard E. Stearns Thiết lập nền tảng cho lý thuyết độ phức tạp tính toán.
1994 Edward Feigenbaum và Raj Reddy Tiên phong trong việc xây dựng các hệ thống lớn về trí tuệ nhân tạo, chứng minh tầm quan trọng thực tiễn và khả năng thương mại của trí tuệ nhân tạo.
1995 Manuel Blum Ghi nhận cho những đóng góp cơ bản về lý thuyết độ phức tạp tính toán và các ứng dụng trong cryptography và program checking.
1996 Amir Pnueli Giới thiệu temporal logic vào khoa học máy tính và các hệ thống verification.
1997 Douglas Engelbart Đóng góp về tính toán tương tác
1998 Jim Gray Đóng góp về cơ sở dữ liệu và xử lý giao dịch
1999 Frederick P. Brooks, Jr. Những đóng góp về kiến trúc máy tính, hệ điều hành và kỹ nghệ phần mềm.
2000 Andrew Chi-Chih Yao Đóng góp về lý thuyết tính toán, pseudorandom number generation, cryptography, và communication complexity.
2001 Ole-Johan Dahl và Kristen Nygaard Những ý tưởng cơ bản về lập trình hướng đối tượng.
2002 Ronald L. Rivest, Adi Shamir và Leonard M. Adleman Những đóng góp về mã hóa khóa công khai public-key cryptography, RSA (mã hóa).
2003 Alan Kay Với các ý tưởng cội nguồn về các ngôn ngữ lập trình hướng đối tượng vàSmalltalk.
2004 Vinton G. Cerf và Robert E. Kahn Đóng góp cho internetworking, bao gồm thiết kế và triển khai các giao thức Internet' TCP/IP.
2005 Peter Naur Với những đóng góp về thiết kế ngôn ngữ lập trình.
2006 Frances E. Allen Những đóng góp về lý thuyết và thực nghiệm tối ưu hóa các kỹ thuật chương trình dịch.
2007 Edmund M. Clarke,E. Allen Emerson và Joseph Sifakis Phát triển kiểm tra mô hình Model-Checking.
2008 Barbara Liskov Những đóng góp cho cơ sở lý thuyết và thực tiễn của ngôn ngữ lập trình và thiết kế hệ thống, đặc biệt về trừu tượng hóa dữ liệu, khả năng chịu lỗi và tính toán phân tán
2009 Charles P. Thacker Tiên phong trong thiết kế và hiện thực Alto, mô hình máy tính cá nhân đầu tiên, và những đóng góp của ông với Ethernet và máy tính bảng cá nhân.
(Theo wikipedia)
Được sửa bởi TrinhVinhThanh (I12A) ngày 11/4/2012, 22:33; sửa lần 1.
TrinhVinhThanh (I12A)- Tổng số bài gửi : 10
Join date : 18/02/2012
Re: Thảo luận Bài 7
BT1 : Đồng bộ tiến tiến trình P1 , P2 , P3 sao cho : P1 -> P2 -> P3
tiến trình P1
thread P1 ()
{
down (s1);
P1();
up (s);
}
tiến trình P2
thread P2()
{
down (s);
P2 ();
up (s2);
}
tiến trình P3
thread P3()
{
down (s2);
P3();
up (s1);
}
kết quả :
s=0;
s1=1;
s2=0;
theo mình nghĩa là vậy ,thầy & các ban thấy sai cứ góp ý nha.
tiến trình P1
thread P1 ()
{
down (s1);
P1();
up (s);
}
tiến trình P2
thread P2()
{
down (s);
P2 ();
up (s2);
}
tiến trình P3
thread P3()
{
down (s2);
P3();
up (s1);
}
kết quả :
s=0;
s1=1;
s2=0;
theo mình nghĩa là vậy ,thầy & các ban thấy sai cứ góp ý nha.
nguyenthanhnghi_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Một số lưu ý:
  - Đồng bộ hóa công việc tiến trình: là đồng bộ hóa các luồng bên trong tiến trình đó.
  - Đồng bộ hóa công việc các tiến trình: là đồng bộ hóa các tiến trình nặng, làm cho các tiến trình này hoạt động một cách đúng đắn, hợp lý, có hiệu quả và không xảy ra xung đột, tranh chấp lẫn nhau.
  - Đồng bộ tức là có chờ, tuy nhiên không phải là tất cả các tiến trình đều chờ lẫn nhau mà là trong khi một tiến trình đang hoạt động thì những tiến trình còn lại chờ tiến trình đang hoạt động đó cho đến khi tiến trình này kết thúc công việc thì lại tiếp tục đến tiến trình tiếp theo.
  - Đồng bộ hóa công việc các tiến trình: là đồng bộ hóa các tiến trình nặng, làm cho các tiến trình này hoạt động một cách đúng đắn, hợp lý, có hiệu quả và không xảy ra xung đột, tranh chấp lẫn nhau.
  - Đồng bộ tức là có chờ, tuy nhiên không phải là tất cả các tiến trình đều chờ lẫn nhau mà là trong khi một tiến trình đang hoạt động thì những tiến trình còn lại chờ tiến trình đang hoạt động đó cho đến khi tiến trình này kết thúc công việc thì lại tiếp tục đến tiến trình tiếp theo.
VuNguyenQuynhLam_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Age : 36
Đến từ : Bình Thuận
Giải bài tập đồng bộ hóa công việc của P1, P2, P3
câu 4: đồng bộ hóa công việc của P1, P2, P3. sao cho:
a) P1 trước P2, P2 trước P3?
b) P1 trước P2 và P3?
c) P1 và P2 trước P3?
Giải:
Giả sửa có 3 tiến trình P1, P2 và P3 có mã tương ứng là S1, S2 và S3
a) P1 trước P2, P2 trước P3
Semaphore synch1 = 0, synch2 = 0;
Khi P1 dc thực hiện, thì P2 ngủ tại hàm wait(synch1) do synch1=0; P3 ngủ tại hàm wait(synch2) do synch2=0. Sau khi S1 dc thi hành thì synch1 sẽ tăng lên 1 do signal(synch1).
Lúc này P2 sẽ dc thực hiện(synch1 =1), nhưng P3 vẫn ngủ do synch2 =0, sau khi S2 thi hành xong thì synch2 =1(signal(synch2)) lúc này P3 mới dc thực hiện.
=> P1 trước P2, P2 trước P3.
b) P1 trước P2 và P3
Semaphore synch = 0;
Tại thời điểm ban đầu: synch=0,
Khi tiến trình P2 được thực hiện, thì P2 sẽ ngủ tại hàm wait(synch) do synch=0 cho đến khi synch>0.
Khi tiến trình P3 được thực hiện, thì P3 sẽ ngủ tại hàm wait(synch) do synch=0 cho đến khi synch>0.
Khi P1 thực hiện ,S1 được thi hành xong thì lệnh signal(synch, 2); dc thực thi, tức là tăng synch = 2.
Khi đó synch>0 ,tiến trình P2 được thực hiện và hàm wait(synch) sẽ giảm giá trị synch xuống 1 đơn vị (synch=1).
Đồng thời P3 được thực hiện và hàm wait(synch) sẽ giảm giá trị synch xuống 1 đơn vị (synch=0).
->P2 và P3 cùng thực hện.
=>P1 đi trước P2 và P3.
c) P1 và P2 trước P3
Semaphore synch = -1;
Tại thời điểm ban đầu: P1 và P2 đang thực hiện lệnh S1, S2, lúc này synch=-1.
Lúc này P3 đang ngủ tại hàm wait(synch) đợi khi synch >0.
Khi P1 thực hiện, S1 dc thi hành xong thì hàm signal(synch) sẽ tăng synch lên 1 và synch= 0. P3 lúc này vẫn ngủ do synch=0.
Khi P2 thực hiện, S2 dc thi hành xong thì hàm signal(synch) sẽ tăng synch lên 1 và synch= 1.
Lúc này P3 mới dc thực hiện.
=>P1 và P2 trước P3.
Mong thầy và các bạn cho ý kiến
a) P1 trước P2, P2 trước P3?
b) P1 trước P2 và P3?
c) P1 và P2 trước P3?
Giải:
Giả sửa có 3 tiến trình P1, P2 và P3 có mã tương ứng là S1, S2 và S3
a) P1 trước P2, P2 trước P3
Semaphore synch1 = 0, synch2 = 0;
P1 | P2 | P3 |
S1 | wait(synch1); | wait(synch2); |
signal(synch1); | S2 signal(synch2); | S3 |
Khi P1 dc thực hiện, thì P2 ngủ tại hàm wait(synch1) do synch1=0; P3 ngủ tại hàm wait(synch2) do synch2=0. Sau khi S1 dc thi hành thì synch1 sẽ tăng lên 1 do signal(synch1).
Lúc này P2 sẽ dc thực hiện(synch1 =1), nhưng P3 vẫn ngủ do synch2 =0, sau khi S2 thi hành xong thì synch2 =1(signal(synch2)) lúc này P3 mới dc thực hiện.
=> P1 trước P2, P2 trước P3.
b) P1 trước P2 và P3
Semaphore synch = 0;
P1 | P2 | P3 |
S1 | wait(synch); | wait(synch); |
signal(synch, 2); | S2 | S3 |
Tại thời điểm ban đầu: synch=0,
Khi tiến trình P2 được thực hiện, thì P2 sẽ ngủ tại hàm wait(synch) do synch=0 cho đến khi synch>0.
Khi tiến trình P3 được thực hiện, thì P3 sẽ ngủ tại hàm wait(synch) do synch=0 cho đến khi synch>0.
Khi P1 thực hiện ,S1 được thi hành xong thì lệnh signal(synch, 2); dc thực thi, tức là tăng synch = 2.
Khi đó synch>0 ,tiến trình P2 được thực hiện và hàm wait(synch) sẽ giảm giá trị synch xuống 1 đơn vị (synch=1).
Đồng thời P3 được thực hiện và hàm wait(synch) sẽ giảm giá trị synch xuống 1 đơn vị (synch=0).
->P2 và P3 cùng thực hện.
=>P1 đi trước P2 và P3.
c) P1 và P2 trước P3
Semaphore synch = -1;
P1 | P2 | P3 |
S1 | S2 | wait(synch); |
signal(synch); | signal(synch); | S3 |
Tại thời điểm ban đầu: P1 và P2 đang thực hiện lệnh S1, S2, lúc này synch=-1.
Lúc này P3 đang ngủ tại hàm wait(synch) đợi khi synch >0.
Khi P1 thực hiện, S1 dc thi hành xong thì hàm signal(synch) sẽ tăng synch lên 1 và synch= 0. P3 lúc này vẫn ngủ do synch=0.
Khi P2 thực hiện, S2 dc thi hành xong thì hàm signal(synch) sẽ tăng synch lên 1 và synch= 1.
Lúc này P3 mới dc thực hiện.
=>P1 và P2 trước P3.
Mong thầy và các bạn cho ý kiến
lethanhsang_I12A- Tổng số bài gửi : 22
Join date : 15/02/2012
Age : 34
Đến từ : Đồng Nai
Re: Thảo luận Bài 7
Câu 2: Khái niện đoạn tương tranh và loại trừ lẫn nhau. Cho ví dụ minh họa.
- Đoạn tương tranh :Xét một hệ có n tiến trình P0,P1, ...,Pn, mỗi tiến trình có một đoạn mã lệnh, nếu như trong đoạn mã này các tiến trình thao tác trên các biến chung,đọc ghi file... (tổng quát: thao tác trên dữ liệu chung) thì đoạn mã lệnh đó là đoạn tương tranh.
- 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ụ:
. 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 Hai thì phía dưới cũng phải là Lê Văn Hai.
. 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 Hai phía trên thành Nguyễn thi Cóc, trong khi P2 (nhà sản xuất khác) sửa Lê Văn Hai phía dưới thành nguyễn thị Ngô, 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:
- Đoạn tương tranh :Xét một hệ có n tiến trình P0,P1, ...,Pn, mỗi tiến trình có một đoạn mã lệnh, nếu như trong đoạn mã này các tiến trình thao tác trên các biến chung,đọc ghi file... (tổng quát: thao tác trên dữ liệu chung) thì đoạn mã lệnh đó là đoạn tương tranh.
- 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ụ:
ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty x
Tôi tên là: Lê Văn Hai
..........(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 Hai
Kính gửi: Giám đốc công ty x
Tôi tên là: Lê Văn Hai
..........(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 Hai
. 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 Hai thì phía dưới cũng phải là Lê Văn Hai.
. 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 Hai phía trên thành Nguyễn thi Cóc, trong khi P2 (nhà sản xuất khác) sửa Lê Văn Hai phía dưới thành nguyễn thị Ngô, 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à: Nguyễn thị Cóc
..........(nội dung đơn).............
TP Hồ Chí Minh, ngày 5 tháng 5 năm 2011
Người làm đơn
....(chữ ký)....
Nguyễn thị Ngô
Kính gửi: Giám đốc công ty x
Tôi tên là: Nguyễn thị Cóc
..........(nội dung đơn).............
TP Hồ Chí Minh, ngày 5 tháng 5 năm 2011
Người làm đơn
....(chữ ký)....
Nguyễn thị Ngô
nguyenthanhnghi_I12C- Tổng số bài gửi : 14
Join date : 15/02/2012
Câu 1:Trình bày mục đích đồng bộ hóa công việc tiến trình
- Mục đích của đồng bộ hóa công việc của các tiến trình nhằm đảm bảo tính nhất quán tính toàn vẹn của tài nguyên dùng chung và tránh được hiện tượng ket(dealdock)
ví dụ:
-Ban lớp trưởng lên bảng(Tài nguyên dùng chung) viết tên email số điện thoại của mình cho lớp, nếu bạn chưa viết xong mà bạn khác chụp ảnh trên bảng để đưa về xử lý sẽ dẫn đến thông tin bị sai, do vậy việc đồng bộ có tác dụng rất lớn nghĩa là chờ bạn lớp trưởng viết xong(nghĩa là có chờ) sau đó mới chụp ảnh lấy về thì đảm bảo thông tin chính xác.
ví dụ:
-Ban lớp trưởng lên bảng(Tài nguyên dùng chung) viết tên email số điện thoại của mình cho lớp, nếu bạn chưa viết xong mà bạn khác chụp ảnh trên bảng để đưa về xử lý sẽ dẫn đến thông tin bị sai, do vậy việc đồng bộ có tác dụng rất lớn nghĩa là chờ bạn lớp trưởng viết xong(nghĩa là có chờ) sau đó mới chụp ảnh lấy về thì đảm bảo thông tin chính xác.
PhamQuangHien_I12A- Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi
Re: Thảo luận Bài 7
nguyenxuankieu(i12a) đã viết: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- 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.
Người làm đơn
....(chữ ký)....
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á
Mình xin nêu thêm ví dụ như sau về tính nhất quán của tài nguyên:
Cụ thể nhất là khi thầy gọi lên để nộp bài thi giữa kì.Thầy gọi một lần 5 bạn, nếu 5 bạn nộp bài cùng một lúc thì thầy không biết nhận bài của bạn nào hết. Khi đó có thể thầy sẽ đánh dấu nhầm hoặc không nhận bài của ai.Như vậy nó không đảm bảo được tính nhất quán của tài nguyên dùng chung. Nếu bạn thứ nhất lên ký tên xong rồi tới bạn thứ 2 thì sẽ không có việc gì sai sót hết….
Mong các bạn và thầy góp ý thêm!
luthioanh-I12A- Tổng số bài gửi : 29
Join date : 17/02/2012
Age : 39
Thế nào là loại trừ lẫn nhau? Cho ví dụ minh họa.
.- 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ụ Minh họa:
trong giờ kiểm tra môn hệ điều hành khi làm bài xong thầy gọi từng bạn lên nộp bài trong cùng lúc đó thì cũng có nhiều bạn lên nộp bài vì vậy các bạn đó phải chờ khi nào thầy gọi đèn lượt thỉ mới được nộp bài.
- 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ụ Minh họa:
trong giờ kiểm tra môn hệ điều hành khi làm bài xong thầy gọi từng bạn lên nộp bài trong cùng lúc đó thì cũng có nhiều bạn lên nộp bài vì vậy các bạn đó phải chờ khi nào thầy gọi đèn lượt thỉ mới được nộp bài.
PhamQuangHien_I12A- Tổng số bài gửi : 62
Join date : 22/02/2012
Age : 35
Đến từ : Quãng Ngãi
Thực thi bài toán sản xuất, tiêu thụ được đồng bộ bằng 2 đèn hiệu:
HANDLE semEmpty, semFull; //hai đèn hiệu
CRITICAL_SECTION critSec;//Biến kiểu Mutex
void Producer(void * p)
{
while (1)
{
// ... Sản xuất (nextProduced)
// Chờ đến khi có chỗ trống
WaitForSingleObject(semEmpty, INFINITE);
EnterCriticalSection(&critSec);
//…Sắp sản phẩm vào Buffer
// Tăng (semFull) lên 1
ReleaseSemaphore(semFull, 1, NULL);
LeaveCriticalSection(&critSec);
SuspendThread(GetCurrentThread());
}
}
void Consumer()
{
int nextConsumed;
while (1)
{
// Chờ đến khi có sản phẩm
WaitForSingleObject(semFull, INFINITE);
EnterCriticalSection(&critSec);
nextConsumed=buffer[out];
out=(out+1)%BUFFER_SIZE;
// Tăng (semEmpty) lên 1
ReleaseSemaphore (semEmpty, 1, NULL);
LeaveCriticalSection(&critSec);
// ... Tiêu thụ (nextConsumed)
SuspendThread(GetCurrentThread());
}
}
- Biến semEmpty dùng để chứa mục quản của đèn hiệu quản lý số vùng trống trong bộ đệm.
- Biến semFull dùng để chứa mục quản của đèn hiệu quản lý số sản phẩm trong bộ đệm.
- CritSec là đối tượng đèn hiệu kiểu mutex dùng để bảo vệ đoạn tương tranh nhằm đảm bảo tính loại trừ lẫn nhau trong công việc của các tiến trình với tài nguyên dùng chung.
CRITICAL_SECTION critSec;//Biến kiểu Mutex
void Producer(void * p)
{
while (1)
{
// ... Sản xuất (nextProduced)
// Chờ đến khi có chỗ trống
WaitForSingleObject(semEmpty, INFINITE);
EnterCriticalSection(&critSec);
//…Sắp sản phẩm vào Buffer
// Tăng (semFull) lên 1
ReleaseSemaphore(semFull, 1, NULL);
LeaveCriticalSection(&critSec);
SuspendThread(GetCurrentThread());
}
}
void Consumer()
{
int nextConsumed;
while (1)
{
// Chờ đến khi có sản phẩm
WaitForSingleObject(semFull, INFINITE);
EnterCriticalSection(&critSec);
nextConsumed=buffer[out];
out=(out+1)%BUFFER_SIZE;
// Tăng (semEmpty) lên 1
ReleaseSemaphore (semEmpty, 1, NULL);
LeaveCriticalSection(&critSec);
// ... Tiêu thụ (nextConsumed)
SuspendThread(GetCurrentThread());
}
}
- Biến semEmpty dùng để chứa mục quản của đèn hiệu quản lý số vùng trống trong bộ đệm.
- Biến semFull dùng để chứa mục quản của đèn hiệu quản lý số sản phẩm trong bộ đệm.
- CritSec là đối tượng đèn hiệu kiểu mutex dùng để bảo vệ đoạn tương tranh nhằm đảm bảo tính loại trừ lẫn nhau trong công việc của các tiến trình với tài nguyên dùng chung.
tranvanthien27(I12C)- Tổng số bài gửi : 62
Join date : 15/02/2012
Age : 34
Đến từ : Tuy Hòa - Phú Yên
Khái niệm đèn hiệu
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).
- Đè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).
NguyenHongHaiI12C- Tổng số bài gửi : 48
Join date : 18/02/2012
Khái niệm về đồng bộ hóa tiến trình
Đồ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.
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.
NguyenHongHaiI12C- Tổng số bài gửi : 48
Join date : 18/02/2012
ví dụ về bài toán Đồng bộ hóa
Giả sử có hai tiến trình P1 và P2 thực hiện công việc của các kế toán, và cùng chia sẻ một vùng nhớ chung lưu trữ biến taikhoan phản ánh thông tin về tài khoản. Mỗi tiến trình muốn rút một khoản tiền tienrut từ tài khoản:
if (taikhoan - tienrut >=0)
taikhoan = taikhoan - tienrut;
else
error(� khong the rut tien ! �);
Giả sử trong tài khoản hiện còn 800, P1 muốn rút 500 và P2 muốn rút 400. Nếu xảy ra tình huống như sau :
Sau khi đã kiểm tra điều kiện (taikhoan - tienrut >=0) và nhận kết quả là 300, P1 hết thời gian xử lý mà hệ thống cho phép, hệ điều hành cấp phát CPU cho P2.
P2 kiểm tra cùng điều kiện trên, nhận được kết quả là 400 (do P1 vẫn chưa rút tiền) và rút 400. Giá trị của taikhoan được cập nhật lại là 400.
Khi P1 được tái kích hoạt và tiếp tục xử lý, nó sẽ không kiểm tra lại điều kiện (taikhoan - tienrut >=0)-vì đã kiểm tra trong lượt xử lý trước- mà thực hiện rút tiền. Giá trị của taikhoan sẽ lại được cập nhật thành -100. Tình huống lỗi xảy ra !
Các tình huống tương tự như thế - có thể xảy ra khi có nhiều hơn hai tiến trình đọc và ghi dữ liệu trên cùng một vùng nhớ chung, và kết quả phụ thuộc vào sự điều phối tiến trình của hệ thống.
tranvanthien27(I12C)- Tổng số bài gửi : 62
Join date : 15/02/2012
Age : 34
Đến từ : Tuy Hòa - Phú Yên
Trình bày mục đích của đồng bộ hóa công việc các tiến trình
- 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).
- Tính nhất quán của tài nguyên dùng chung là đảm bảo được tính đúng đắn, tính hơp lý,tính toàn vẹn của tài nguyên dùng chung
-Đồng bộ đảm bảo cho các tiến trình làm việc đồng bộ, ăn khớp với nhau vì thế nên sẽ nhanh hơn và dễ dàng hơn.đồng bộ thường là có chờ.
- vd: Thầy gọi 5 bạn lên nộp bài, thì bạn được thầy gọi đầu tiên sẽ lên nộp bài trước và 4 bạn còn lại sẽ đứng chờ để nộp bài tiếp theo.
- vd về tính toàn vẹn: 1 bạn lên bảng sữa bài và bạn thứ 2 ở dưới muốn chụp lại bài sữa của bạn đó thì bạn thứ 2 phải đợi cho đến khi nào bạn thứ 1 sữa xong thì mới chụp được chứ không thể chụp trong khi bạn thứ 1 vẫn còn đang đứng sữa bài được.
- Tính nhất quán của tài nguyên dùng chung là đảm bảo được tính đúng đắn, tính hơp lý,tính toàn vẹn của tài nguyên dùng chung
-Đồng bộ đảm bảo cho các tiến trình làm việc đồng bộ, ăn khớp với nhau vì thế nên sẽ nhanh hơn và dễ dàng hơn.đồng bộ thường là có chờ.
- vd: Thầy gọi 5 bạn lên nộp bài, thì bạn được thầy gọi đầu tiên sẽ lên nộp bài trước và 4 bạn còn lại sẽ đứng chờ để nộp bài tiếp theo.
- vd về tính toàn vẹn: 1 bạn lên bảng sữa bài và bạn thứ 2 ở dưới muốn chụp lại bài sữa của bạn đó thì bạn thứ 2 phải đợi cho đến khi nào bạn thứ 1 sữa xong thì mới chụp được chứ không thể chụp trong khi bạn thứ 1 vẫn còn đang đứng sữa bài được.
NguyenVanBenI12C- Tổng số bài gửi : 24
Join date : 16/02/2012
Ví dụ tính loại trừ tương hỗ: Xe qua cầu yếu
Mã của tiến trình Xei có cấu trúc như sau:
Do chiếc cầu yếu nên mỗi thời điểm chỉ có 1 xe được phép qua cầu. Những xe khác khi đi đến đầu cầu sẽ ngủ tại lệnh wait(mutex) vì đèn đỏ. Sau khi một xe đã lên cầu và qua cầu xong thì lệnh signal(mutex) được thực hiện, tăng đèn mutex lên 1, đèn chuyển sang màu xanh. Một xe sau sẽ được đánh thức và lên cầu. Trong trường hợp này vùng tranh chấp là cây cầu.
Admin
Rất tốt !
- Code:
Typedef int semaphore;
Semaphore mutex = 1; //đèn hiệu nhị phân, có hai trạng thái
//0: đèn màu đỏ
//1: đèn màu xanh
While(1)
{
Đi đến cầu;
Wait(mutex); //chờ đèn xanh
Lên cầu; //đoạn tương tranh, đèn màu đỏ
Qua cầu; //đoạn tương tranh, đèn màu đỏ
Signal(mutex); //đèn chuyển sang màu xanh
Đi tiếp;
Quay về theo cầu khác;
}
Do chiếc cầu yếu nên mỗi thời điểm chỉ có 1 xe được phép qua cầu. Những xe khác khi đi đến đầu cầu sẽ ngủ tại lệnh wait(mutex) vì đèn đỏ. Sau khi một xe đã lên cầu và qua cầu xong thì lệnh signal(mutex) được thực hiện, tăng đèn mutex lên 1, đèn chuyển sang màu xanh. Một xe sau sẽ được đánh thức và lên cầu. Trong trường hợp này vùng tranh chấp là cây cầu.
Admin
Rất tốt !
TranThiNgocQuynh(I12C)- Tổng số bài gửi : 14
Join date : 16/02/2012
Mục đích của việc đồng bộ hóa tiến trình
Đồng bộ hóa tiến trình là điều khiển công việc của luồng và tiến trình sao cho đáp ứng yêu cầu đặt ra của logic nghiệp vụ.
Mục đích của đồng bộ hóa tiến trình.
- Đảm bảo tính nhất quán của tài nguyên dùng chung.
ví dụ: bài toán sản xuất tiêu thụ.
một bạn trong lớp lên bảng (tài nguyên dùng chung của lớp) ghi thông tin cá nhân nhưng chưa ghi xong thì bạn khác dưới lớp chụp lại thông tin trên sẽ không đúng. muốn lấy thông tin chính xác thì bạn dưới lớp cần lấy thông tin của bạn trên bảng ghi phải chờ bạn ấy ghi hết thông tin rồi mới chụp ảnh.
- Tránh Deadlock ( hiện tượng kẹt tiến trình).
ví dụ: hiện tượng kẹt xe khi có cảnh sát giao thông điều tiết phân luồng thì sẽ không còn kẹt xe nữa.
Mục đích của đồng bộ hóa tiến trình.
- Đảm bảo tính nhất quán của tài nguyên dùng chung.
ví dụ: bài toán sản xuất tiêu thụ.
một bạn trong lớp lên bảng (tài nguyên dùng chung của lớp) ghi thông tin cá nhân nhưng chưa ghi xong thì bạn khác dưới lớp chụp lại thông tin trên sẽ không đúng. muốn lấy thông tin chính xác thì bạn dưới lớp cần lấy thông tin của bạn trên bảng ghi phải chờ bạn ấy ghi hết thông tin rồi mới chụp ảnh.
- Tránh Deadlock ( hiện tượng kẹt tiến trình).
ví dụ: hiện tượng kẹt xe khi có cảnh sát giao thông điều tiết phân luồng thì sẽ không còn kẹt xe nữa.
letanthanh18(I12A)- Tổng số bài gửi : 14
Join date : 22/02/2012
Trình bày khái niêm đoạn tương tranh và tính loại trừ lẫn nhau
- 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).
- Xác định đoạn tương tranh là 1 đoạn mã của tiến trình mà khi thực hiện nó truy cập, tác động và thay đổi tài nguyên dùng chung.
- vd:
+ thầy kêu 5 bạn lên nộp bài thì sẽ chỉ có 1 bạn được kêu đầu tiên nộp bài trước và 4 bạn kia phải chờ,không thể 2 bạn cùng nhau lên nộp bài cùng lúc được nếu không thì sẽ không đảm bảo được tín loại trừ lẫn nhâu và đảm bảo được tín đồng bộ.
+ 2 bạn lên bảng sữa bài tập thì chỉ có 1 bạn được lên sữa trước và bạn kia phải chờ cho đến khi nào bạn này sữa xong thì mới được lên.
- 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).
- Xác định đoạn tương tranh là 1 đoạn mã của tiến trình mà khi thực hiện nó truy cập, tác động và thay đổi tài nguyên dùng chung.
- vd:
+ thầy kêu 5 bạn lên nộp bài thì sẽ chỉ có 1 bạn được kêu đầu tiên nộp bài trước và 4 bạn kia phải chờ,không thể 2 bạn cùng nhau lên nộp bài cùng lúc được nếu không thì sẽ không đảm bảo được tín loại trừ lẫn nhâu và đảm bảo được tín đồng bộ.
+ 2 bạn lên bảng sữa bài tập thì chỉ có 1 bạn được lên sữa trước và bạn kia phải chờ cho đến khi nào bạn này sữa xong thì mới được lên.
NguyenVanBenI12C- Tổng số bài gửi : 24
Join date : 16/02/2012
:(
Bạn này nhanh quá , tính copy paste qua mà có rồi, buồn ghê ..NguyenHongHaiI12C đã viết: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).
Sơ lượt về giải thưởng Turing
Giới Thiệu Về Giải Thưởng Turing:
-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.
Alan Turing
Alan Mathison Turing (23 tháng 6, 1912 – 7 tháng 6, 1954) 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.
Những đóng góp lơn của Turing
Trong Đệ nhị thế chiến, Turing là một người tham gia đóng góp quan trọng tại Bletchley Park, trong việc phá mật mã của Đức. Ông đóng góp những hiểu biết sâu sắc về việc giải mã cả hai máy Enigma và máy Lorenz SZ 40/42
(một máy điện báo đánh chữ dùng làm bộ mã hoá ghép thêm, được quân đội
Anh đặt tên là "Tunny"), và ông đã từng một thời là trưởng phòng Hut 8, bộ phận chịu trách nhiệm thu và đọc tín hiệu của hải quân Đức.
Từ tháng 9 năm 1938, Turing làm thêm giờ tại Trường mật mã của chính phủ (Government Code and Cypher School). Turing có mặt và báo cáo tại Bletchley Park vào ngày 4 tháng 9 năm 1939, ngay sau ngày Anh tuyên bố chiến tranh với Đức
Chỉ trong vài tuần sau khi đến Bletchley Park[2], Turing đã sáng chế ra một cái máy cơ-điện tử (electromechanical machine) giúp vào việc giải mã máy Enigma, đặt tên là máy bombe, lấy tên theo cái máy "bomba" được sáng chế tại Ba Lan. Máy bombe, với một nâng cấp được đề bạt bởi nhà toán học Gordon Welchman, trở thành dụng cụ chủ yếu dùng để đọc nguồn tin truyền qua lại từ máy Enigma.
Máy bombe của Turing và Welchman
Máy bombe dò tìm công thức cài đặt của khối quay trong máy Enigma, và nó cần phải có một bộ mã (crib),
tức là một dòng chữ chưa mã hóa và một dòng mật mã tương ứng. Với mỗi
dự kiến cài đặt của khối quay, máy bombe hoàn thiện một chuỗi các tiến
trình suy luận lôgic, dựa vào bộ mã, dùng các cấu kết mạch điện tử đã
được lắp ráp. Máy bombe lùng tìm và phát hiện mâu thuẫn khi nó xảy ra,
loại bỏ công thức cài đặt gây nên sự mâu thuẫn ấy, rồi tiếp tục lùng tìm
một công thức khác, hợp lý hơn. Đa số các công thức cài đặt khả quan
đều gây nên sự mâu thuẫn, và bị loại bỏ, chỉ để lại một số ít các công
thức khả dĩ để được nghiên cứu chi tiết hơn. Máy bombe của Turing lần
đầu tiên được lắp ráp vào ngày 18 tháng 3 năm 1940[cần dẫn nguồn]. Có đến trên 200 cái máy bombe như vậy vẫn đang hoạt động khi chiến tranh kết thúc
Những máy tính đầu tiên và kiểm nghiệm của Turing
Từ năm 1945 đến năm 1947, Turing đã làm việc tại Phòng thí nghiệm Vật lý Quốc gia (National Physical Laboratory). Tại đây, ông thiết kế máy tính ACE (Automatic Computing Engine - Máy tính tự động). Ngày 19 tháng 2 năm 1946, ông đệ trình một bản thiết kế hoàn chỉnh đầu tiên của Anh về máy tính với khả năng lưu trữ lập trình (xem kiến trúc Von Neumann).
Tuy ông đã thành công trong việc thiết kế máy ACE, song do những trì
hoãn trong việc khởi công đề án, ông trở nên thất vọng và chán nản. Cuối
năm 1947, ông quay trở lại Cambridge, bắt đầu một năm nghỉ ngơi của
mình (sabbatical year). Trong khi ông đang nghỉ ngơi tại
Cambridge, công việc xây dựng máy ACE đã bị huỷ bỏ hoàn toàn, trước khi
nó được khởi công xây dựng. Năm 1949, ông trở thành phó giám đốc phòng thí nghiệm máy tính (computing laboratory) của Đại học Manchester, và viết phần mềm cho một trong những máy tính đầu tiên — máy Manchester Mark I. Trong thời gian này, ông tiếp tục làm thềm những công việc trừu tượng, và trong bài viết "Vi tính máy móc và trí thông minh" (Computing machinery and intelligence) - tờ Mind, tháng 10 năm 1950 - ông nói đến vấn đề về "trí tuệ nhân tạo" (artificial intelligence) và đề đạt một phương thức kiểm nghiệm, mà hiện giờ được gọi là kiểm nghiệm Turing (Turing test), một cố gắng định nghĩa tiêu chuẩn cho một cái máy được gọi là "có tri giác" (sentient).
Năm 1948, Turing, hiện đang làm việc với một người bạn học cũ, D.G. Champernowne, bắt đầu viết một chương trình đánh cờ vua cho một máy tính chưa từng tồn tại. Năm 1952,
tuy thiếu một máy tính đủ sức để thi hành phần mềm, Turing đã chơi một
ván cờ. Trong ván cờ này, ông bắt trước cái máy tính, đợi nửa tiếng đồng
hồ trước khi đi một quân cờ. Ván cờ đã được ghi chép lại; phần mềm thua người bạn đồng hành của Turing, Alick Glennie, song lại thắng người vợ của ông Champernowne.
-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.
Alan Turing
Alan Mathison Turing (23 tháng 6, 1912 – 7 tháng 6, 1954) 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.
Những đóng góp lơn của Turing
Trong Đệ nhị thế chiến, Turing là một người tham gia đóng góp quan trọng tại Bletchley Park, trong việc phá mật mã của Đức. Ông đóng góp những hiểu biết sâu sắc về việc giải mã cả hai máy Enigma và máy Lorenz SZ 40/42
(một máy điện báo đánh chữ dùng làm bộ mã hoá ghép thêm, được quân đội
Anh đặt tên là "Tunny"), và ông đã từng một thời là trưởng phòng Hut 8, bộ phận chịu trách nhiệm thu và đọc tín hiệu của hải quân Đức.
Từ tháng 9 năm 1938, Turing làm thêm giờ tại Trường mật mã của chính phủ (Government Code and Cypher School). Turing có mặt và báo cáo tại Bletchley Park vào ngày 4 tháng 9 năm 1939, ngay sau ngày Anh tuyên bố chiến tranh với Đức
Chỉ trong vài tuần sau khi đến Bletchley Park[2], Turing đã sáng chế ra một cái máy cơ-điện tử (electromechanical machine) giúp vào việc giải mã máy Enigma, đặt tên là máy bombe, lấy tên theo cái máy "bomba" được sáng chế tại Ba Lan. Máy bombe, với một nâng cấp được đề bạt bởi nhà toán học Gordon Welchman, trở thành dụng cụ chủ yếu dùng để đọc nguồn tin truyền qua lại từ máy Enigma.
Máy bombe của Turing và Welchman
Máy bombe dò tìm công thức cài đặt của khối quay trong máy Enigma, và nó cần phải có một bộ mã (crib),
tức là một dòng chữ chưa mã hóa và một dòng mật mã tương ứng. Với mỗi
dự kiến cài đặt của khối quay, máy bombe hoàn thiện một chuỗi các tiến
trình suy luận lôgic, dựa vào bộ mã, dùng các cấu kết mạch điện tử đã
được lắp ráp. Máy bombe lùng tìm và phát hiện mâu thuẫn khi nó xảy ra,
loại bỏ công thức cài đặt gây nên sự mâu thuẫn ấy, rồi tiếp tục lùng tìm
một công thức khác, hợp lý hơn. Đa số các công thức cài đặt khả quan
đều gây nên sự mâu thuẫn, và bị loại bỏ, chỉ để lại một số ít các công
thức khả dĩ để được nghiên cứu chi tiết hơn. Máy bombe của Turing lần
đầu tiên được lắp ráp vào ngày 18 tháng 3 năm 1940[cần dẫn nguồn]. Có đến trên 200 cái máy bombe như vậy vẫn đang hoạt động khi chiến tranh kết thúc
Những máy tính đầu tiên và kiểm nghiệm của Turing
Từ năm 1945 đến năm 1947, Turing đã làm việc tại Phòng thí nghiệm Vật lý Quốc gia (National Physical Laboratory). Tại đây, ông thiết kế máy tính ACE (Automatic Computing Engine - Máy tính tự động). Ngày 19 tháng 2 năm 1946, ông đệ trình một bản thiết kế hoàn chỉnh đầu tiên của Anh về máy tính với khả năng lưu trữ lập trình (xem kiến trúc Von Neumann).
Tuy ông đã thành công trong việc thiết kế máy ACE, song do những trì
hoãn trong việc khởi công đề án, ông trở nên thất vọng và chán nản. Cuối
năm 1947, ông quay trở lại Cambridge, bắt đầu một năm nghỉ ngơi của
mình (sabbatical year). Trong khi ông đang nghỉ ngơi tại
Cambridge, công việc xây dựng máy ACE đã bị huỷ bỏ hoàn toàn, trước khi
nó được khởi công xây dựng. Năm 1949, ông trở thành phó giám đốc phòng thí nghiệm máy tính (computing laboratory) của Đại học Manchester, và viết phần mềm cho một trong những máy tính đầu tiên — máy Manchester Mark I. Trong thời gian này, ông tiếp tục làm thềm những công việc trừu tượng, và trong bài viết "Vi tính máy móc và trí thông minh" (Computing machinery and intelligence) - tờ Mind, tháng 10 năm 1950 - ông nói đến vấn đề về "trí tuệ nhân tạo" (artificial intelligence) và đề đạt một phương thức kiểm nghiệm, mà hiện giờ được gọi là kiểm nghiệm Turing (Turing test), một cố gắng định nghĩa tiêu chuẩn cho một cái máy được gọi là "có tri giác" (sentient).
Năm 1948, Turing, hiện đang làm việc với một người bạn học cũ, D.G. Champernowne, bắt đầu viết một chương trình đánh cờ vua cho một máy tính chưa từng tồn tại. Năm 1952,
tuy thiếu một máy tính đủ sức để thi hành phần mềm, Turing đã chơi một
ván cờ. Trong ván cờ này, ông bắt trước cái máy tính, đợi nửa tiếng đồng
hồ trước khi đi một quân cờ. Ván cờ đã được ghi chép lại; phần mềm thua người bạn đồng hành của Turing, Alick Glennie, song lại thắng người vợ của ông Champernowne.
hoxuanvu_I12A- Tổng số bài gửi : 34
Join date : 18/02/2012
Semaphore
* Định nghĩa
- Semaphore là một biến nguyên, nếu không tính đến toán tử khởi tạo, chỉ có thể truy cập thông qua hai toán tử nguyên tố là wait (hoặc P) và signal (hoặc V).
- P: proberen – kiểm tra (tiếng Hà Lan)
- V: verhogen – tăng lên (tiếng Hà Lan)
- Các tiến trình có thể sử dụng chung semaphore
- Các toán tử là nguyên tố để đảm bảo không xảy ra trường hợp như ví dụ đồng bộ hóa đã nêu
* Toán tử wait và signal
wait(S) // hoặc P(S)
{
while (S<=0);
S--;
}
- Toán tử wait: Chờ khi semaphore S âm và giảm S đi 1 nếu S>0
signal(S) // hoặc V(S)
{
S++;
}
- Toán tử signal: Tăng S lên 1
* Sử dụng semaphore (1)
- Với bài toán đoạn mã găng:
do {
wait(mutex); // mutex là semaphore khởi tạo 1
CSi;
signal(mutex);
REMAINi;
} while (1);
* Sử dụng semaphore (2)
- Semaphore là một biến nguyên, nếu không tính đến toán tử khởi tạo, chỉ có thể truy cập thông qua hai toán tử nguyên tố là wait (hoặc P) và signal (hoặc V).
- P: proberen – kiểm tra (tiếng Hà Lan)
- V: verhogen – tăng lên (tiếng Hà Lan)
- Các tiến trình có thể sử dụng chung semaphore
- Các toán tử là nguyên tố để đảm bảo không xảy ra trường hợp như ví dụ đồng bộ hóa đã nêu
* Toán tử wait và signal
wait(S) // hoặc P(S)
{
while (S<=0);
S--;
}
- Toán tử wait: Chờ khi semaphore S âm và giảm S đi 1 nếu S>0
signal(S) // hoặc V(S)
{
S++;
}
- Toán tử signal: Tăng S lên 1
* Sử dụng semaphore (1)
- Với bài toán đoạn mã găng:
do {
wait(mutex); // mutex là semaphore khởi tạo 1
CSi;
signal(mutex);
REMAINi;
} while (1);
* Sử dụng semaphore (2)
Được sửa bởi lethianhnhat_I12A ngày 12/4/2012, 00:26; sửa lần 2.
lethianhnhat_I12A- Tổng số bài gửi : 14
Join date : 18/02/2012
Age : 36
Đến từ : Kbang - Kbang - Gia lai
Đoạn tương tranh và Loại trừ lẫn nhau
- 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ênchung.
- 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ụ:
- 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ênchung.
- 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ụ:
ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty x
Tôi tên là: Nguyễn Văn A
.......................
TP Hồ Chí Minh, ngày 12 tháng 4 năm 2012
Người làm đơn
....(chữ ký)....
Nguyễn Văn A
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à Nguyễn Văn A thì phía dưới cũng phải là Nguyễn Văn A.. 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 Nguyễn Văn A phía trên thành Nguyễn Văn B, trong khi P2 (nhà sản xuất khác) sửa Nguyễn Văn A phía dưới thành Nguyễn Văn A, 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:Kính gửi: Giám đốc công ty x
Tôi tên là: Nguyễn Văn A
.......................
TP Hồ Chí Minh, ngày 12 tháng 4 năm 2012
Người làm đơn
....(chữ ký)....
Nguyễn Văn A
ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty x
Tôi tên là: Nguyễn Văn B
nội dung đơn .......................
TP Hồ Chí Minh, ngày 12 tháng 4 năm 2012
Người làm đơn
....(chữ ký)....
Nguyễn Văn A
Kính gửi: Giám đốc công ty x
Tôi tên là: Nguyễn Văn B
nội dung đơn .......................
TP Hồ Chí Minh, ngày 12 tháng 4 năm 2012
Người làm đơn
....(chữ ký)....
Nguyễn Văn A
hoxuanvu_I12A- Tổng số bài gửi : 34
Join date : 18/02/2012
Re: Thảo luận Bài 7
Mình ví dụ thêm về loại trừ tương hỗ:
Khi nộp bài thi, chỉ có 1 bạn được nộp trong cùng một thời điểm, không thể có 2 người cùng nộp một thời điểm được => chỉ có duy nhất 1 người được nộp bài cùng thời điểm đó.
Khi nộp bài thi, chỉ có 1 bạn được nộp trong cùng một thời điểm, không thể có 2 người cùng nộp một thời điểm được => chỉ có duy nhất 1 người được nộp bài cùng thời điểm đó.
NguyenHoangThangI12A- Tổng số bài gửi : 34
Join date : 15/02/2012
Hiểu đơn giản về đồng bộ hóa các tiến trình
Đồng bộ hóa giữa các tiến trình được thầy tóm gọn nom na cho dễ hiểu, tức là :
Đồng bộ là có chờ (Có 1 thời gian chờ giữa các tiến trình). Và chờ 1 cách có logic,có lợi.
Ví dụ: Thầy gọi tên 1 nhóm bạn 5 người nộp bài, từng 1 bạn lên nộp xong,mới đến bạn thứ 2,vậy thời gian chờ có diễn ra ở trường hợp này vậy nên tức là có việc đồng bộ. Cùng ví dụ trên nếu 5 bạn cùng chen lấn nhau để nộp bài tức không có chờ vậy việc đồng bộ ko xảy ra, dẫn đến tính trạng không thể nộp bài (có thể hiểu đây là nguyên nhân gây ra deadlock,khi không có việc đồng bộ hóa các tiến trình).
Đồng bộ là có chờ (Có 1 thời gian chờ giữa các tiến trình). Và chờ 1 cách có logic,có lợi.
Ví dụ: Thầy gọi tên 1 nhóm bạn 5 người nộp bài, từng 1 bạn lên nộp xong,mới đến bạn thứ 2,vậy thời gian chờ có diễn ra ở trường hợp này vậy nên tức là có việc đồng bộ. Cùng ví dụ trên nếu 5 bạn cùng chen lấn nhau để nộp bài tức không có chờ vậy việc đồng bộ ko xảy ra, dẫn đến tính trạng không thể nộp bài (có thể hiểu đây là nguyên nhân gây ra deadlock,khi không có việc đồng bộ hóa các tiến trình).
NguyenQuocThang(I12C)- Tổng số bài gửi : 20
Join date : 16/02/2012
Ví dụ về Đoạn tương tranh và Loại trừ lẫn nhau
ĐƠN XIN VIỆC
Kính gửi: Giám đốc công ty X
Tôi tên là: Nguyễn Văn A
.........(nội dung đơn).........
TP.HCM, ngày 10 tháng 04 năm 2012
Người làm đơn
............(chữ ký).............
Nguyễn Văn A
Nội dung đơn này phải đảm bảo tính toàn vẹn( Integrity), ví dụ: Phía trên là Nguyễn Văn A thì phía dưới cũng phải là Nguyễn Văn A.
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 Nguyễn Văn A phía trên thành Nguyễn Văn An, trong khi P2(nhà sản xuất khác) sửa Nguyễn Văn A phía dưới thành Nguyễn Văn Ân, 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.[left]
Kính gửi: Giám đốc công ty X
Tôi tên là: Nguyễn Văn A
.........(nội dung đơn).........
TP.HCM, ngày 10 tháng 04 năm 2012
Người làm đơn
............(chữ ký).............
Nguyễn Văn A
Nội dung đơn này phải đảm bảo tính toàn vẹn( Integrity), ví dụ: Phía trên là Nguyễn Văn A thì phía dưới cũng phải là Nguyễn Văn A.
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 Nguyễn Văn A phía trên thành Nguyễn Văn An, trong khi P2(nhà sản xuất khác) sửa Nguyễn Văn A phía dưới thành Nguyễn Văn Ân, 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.[left]
phuongnguyen- Tổng số bài gửi : 27
Join date : 17/02/2012
Tiếu sử của AlanMathison Turing
Alan Mathison Turing (23/6/1912 – 7/6/1954) 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. Thử thách 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.
Năm 1952, Turing bị kết án với tội đã có những hành vi khiếm nhã nặng nề, sau khi ông tự thú đã có quan hệ đồng tính luyến ái với một người đàn ông ở Manchester. Ông bị tù treo và phải dùng liệu pháp hoóc môn.
Turing qua đời năm 1954; cuộc điều tra cái chết của ông cho thấy ông đã tự tử bằng cách ăn một quả táo có tẩm thuốc độc xyanua.
Thời thơ ấu và thiếu niên
Mẹ của Alan mang thai ông vào năm 1911, tại Chatrapur, Ấn Độ. Cha ông, Julius Mathison Turing, lúc đó là một công chức trong ngành Dân chính Ấn Độ (Indian Civil Service), lúc đó vẫn dưới sự cai quản của chính phủ Anh. Julius và vợ mình, bà Ethel (nguyên họ là Stoney) muốn con mình lớn lên tại Anh, nên họ đã trở về Paddington, Luân Đôn, nơi Alan Turing được sinh ra vào ngày 23 tháng 6 năm 1912. Vì nhiệm vụ với ngành dân chính của cha ông vẫn còn, trong lúc Alan còn nhỏ, cha mẹ của ông thường phải di chuyển giữa Guildford (Anh) và Ấn Độ, để hai đứa con trai của họ cho các người bạn tại Anh giữ hộ, vì tình trạng y tế ở Ấn Độ còn thấp kém. Ngay từ lúc còn nhỏ, ông đã thể hiện các dấu hiệu thiên tài. Ông tự tập đọc trong vòng ba tuần, và có biểu lộ ham thích toán học, cùng với giải đáp các câu đố.
Lúc Alan 6 tuổi, cha mẹ cho ông học tại trường St. Michael\'s. Bà hiệu trưởng của trường đã nhận thấy thiên tài của Alan từ lúc ban đầu, cũng như các giáo viên của ông sau này. Năm 1926, khi ông 14 tuổi, ông đến học tại trường nội trú Sherborne ở Dorset. Ngày khai giảng của khóa đầu xảy ra cùng ngày với một cuộc tổng đình công tại Anh, nhưng vì ông quyết trí muốn đến lớp, ông đã chạy xe đạp trên 60 dặm (100 km) từ Southampton đến trường, không có người dẫn, chỉ dừng lại và trọ qua đêm tại một quán trọ trên đường. Sự kiện này đã được báo chí địa phương tường trình.
Tuy có năng khiếu toán và khoa học, Turing không được các thầy cô coi trọng tại Sherborne, một trường công nổi tiếng và đắt đỏ (thật sự đây là một trường tư ở Anh nổi tiếng với tính từ thiện) vì trường này đánh giá các môn kinh điển cao hơn. Hiệu trưởng của ông đã viết thư cho cha mẹ ông nói "Tôi hy vọng rằng anh ta không rơi vào tình trạng lơ lửng, giữa trường nọ với trường kia. Nếu anh ta muốn ở lại Trường Công, thì anh ta nhất định phải đặt mục tiêu để trở thành một người có giáo dục. Còn nếu anh ta chỉ muốn trở thành một Nhà khoa học chuyên ngành thì tôi e rằng anh ta đang phung phí thời gian của mình tại Trường Công" .
Mặc dầu vậy, Turing vẫn biểu hiện năng khiếu trong các môn ông ưa thích. Ông đã giải được nhiều bài toán bậc cao trong năm 1927 trước khi học đến giải tích cơ bản. Khi ông 16 tuổi (1928), ông đã hiểu được các tác phẩm của Albert Einstein, không những nắm được nội dung, ông còn suy luận được về những thắc mắc của Einstein đối với các định luật của Newton về chuyển động trong một bài viết mà Einstein không nói thẳng ra.
Trong lúc học tại Sherborne, Turing đã ngầm yêu Christopher Morcom, một người bạn, nhưng mối tình không được đáp lại. Morcom qua đời một vài tuần trước khi ra trường vì bệnh lao đã mắc phải sau khi uống sữa bò có vi khuẩn lao lúc còn nhỏ. Turing rất đau lòng vì sự việc này.
Đại học và các nghiên cứu trong toán học
Vì Turing không chịu học các môn ngoài toán và khoa học, ông không nhận được học bổng để học tại Học viện Trinity của Đại học Cambridge, mà phải học tại Học viện King\'s của Đại học Cambridge từ năm 1931 đến 1934 và tốt nghiệp đại học với bằng danh dự. Năm 1935 ông được chọn làm nghiên cứu sinh tại trường King\'s, do sức thuyết phục của mình trong luận văn về hàm số độ sai của Gauss.
Trong bài viết nổi tiếng của ông, tựa đề "Các số khả tính, với áp dụng trong Vấn đề về lựa chọn" (On Computable Numbers, with an Application to the Entscheidungsproblem) - thuật toán lôgic - (đệ trình ngày 28 tháng 5 năm 1936), Turing tái dựng lại kết quả của Kurt Gödel hồi năm 1931 về những hạn chế trong chứng minh và tính toán, thay đổi thuật ngữ tường trình số học chính quy của Gödel, bằng cái mà ngày này người ta gọi là máy Turing, một dụng cụ chính quy và đơn giản. Ông đã chứng minh rằng một cái máy như vậy sẽ có khả năng tính toán bất cứ một vấn đề toán học nào, nếu vấn đề ấy có thể được biểu thị bằng một biểu trình thuật toán, ngay cả khi một cái máy Turing cụ thể như vậy không có mấy công dụng thực tiễn vì sự chậm chạp của nó so với những cơ chế khác.
Máy Turing, cho đến nay, vẫn là một vấn đề nghiên cứu trung tâm trong lý thuyết về máy tính. Ông còn tiếp tục chứng mình rằng vấn đề về lựa chọn (Entscheidungsproblem) là một vấn đề không có giải đáp, bằng cách đầu tiên chứng minh rằng nan đề ngưng hoạt động trong máy của Turing là một nan đề bất khả định; khó mà có thể quyết định được rằng một cái máy Turing nào đó sẽ ngưng hoạt động tại một điểm nào đó. Tuy chứng minh của ông được đăng công khai sau chứng minh tương tự của Alonzo Church đối với giải tích lambda (lambda calculus), chứng minh của Turing được coi là dễ hiểu và trực giác hơn. Chứng minh của ông còn nổi tiếng về đề bạt một cái "máy Turing vạn năng" (Universal (Turing) Machine), một ý tưởng rằng một cái máy như vậy có thể làm bất cứ việc gì mà các máy khác phải làm. Bài viết còn giới thiệu quan niệm về số khả định (definable number).
Hầu hết thời gian giữa năm 1937 và 1938, ông cư trú tại Đại học Princeton, nghiên cứu dưới sự chỉ đạo của Alonzo Church. Năm 1938, ông đạt được bằng Tiến sĩ tại trường này. Luận văn của ông giới thiệu quan niệm tính toán tương đối (relative computing). Trong quan niệm này, nhiều máy Turing được ghép lại, trở thành một cái máy tiên tri (oracle machine), cho phép nghiên cứu những phương trình không thể giải được nếu chỉ sử dụng một cái máy Turing mà thôi.
Sau khi quay trở lại Cambridge vào năm 1939, ông thính dự giảng đường của Ludwig Wittgenstein về nền tảng của toán học (foundations of mathematics). Hai người tranh cãi và bất đồng ý kiến một cách kịch liệt. Trong khi Turing bảo vệ lập trường của chủ nghĩa hình thức (formalism), thì Wittgenstein lại tranh cãi rằng toán học được đánh giá quá mức, và bản thân nó không thể tìm ra bất cứ một chân lý cuối cùng nào (absolute truth) (Wittgenstein 1932/1976).
Giải mật mã
Hầu hết thời gian giữa năm 1937 và 1938, ông cư trú tại Đại học Princeton, nghiên cứu dưới sự chỉ đạo của Alonzo Church. Năm 1938, ông đạt được bằng Tiến sĩ tại trường này. Luận văn của ông giới thiệu quan niệm tính toán tương đối (relative computing). Trong quan niệm này, nhiều máy Turing được ghép lại, trở thành một cái máy tiên tri (oracle machine), cho phép nghiên cứu những phương trình không thể giải được nếu chỉ sử dụng một cái máy Turing mà thôi.
Sau khi quay trở lại Cambridge vào năm 1939, ông thính dự giảng đường của Ludwig Wittgenstein về nền tảng của toán học (foundations of mathematics). Hai người tranh cãi và bất đồng ý kiến một cách kịch liệt. Trong khi Turing bảo vệ lập trường của chủ nghĩa hình thức (formalism), thì Wittgenstein lại tranh cãi rằng toán học được đánh giá quá mức, và bản thân nó không thể tìm ra bất cứ một chân lý cuối cùng nào (absolute truth) (Wittgenstein 1932/1976).
Máy bombe của Turing và Welchman
Chỉ trong vài tuần sau khi đến Bletchley Park[2], Turing đã sáng chế ra một cái máy cơ-điện tử (electromechanical machine) giúp vào việc giải mã máy Enigma, đặt tên là máy bombe, lấy tên theo cái máy "bomba" được sáng chế tại Ba Lan. Máy bombe, với một nâng cấp được đề bạt bởi nhà toán học Gordon Welchman, trở thành dụng cụ chủ yếu dùng để đọc nguồn tin truyền qua lại từ máy Enigma.
Máy bombe dò tìm công thức cài đặt của khối quay trong máy Enigma, và nó cần phải có một bộ mã (crib), tức là một dòng chữ chưa mã hóa và một dòng mật mã tương ứng. Với mỗi dự kiến cài đặt của khối quay, máy bombe hoàn thiện một chuỗi các tiến trình suy luận lôgic, dựa vào bộ mã, dùng các cấu kết mạch điện tử đã được lắp ráp. Máy bombe lùng tìm và phát hiện mâu thuẫn khi nó xảy ra, loại bỏ công thức cài đặt gây nên sự mâu thuẫn ấy, rồi tiếp tục lùng tìm một công thức khác, hợp lý hơn. Đa số các công thức cài đặt khả quan đều gây nên sự mâu thuẫn, và bị loại bỏ, chỉ để lại một số ít các công thức khả dĩ để được nghiên cứu chi tiết hơn. Máy bombe của Turing lần đầu tiên được lắp ráp vào ngày 18 tháng 3 năm 1940. Có đến trên 200 cái máy bombe như vậy vẫn đang hoạt động khi chiến tranh kết thúc
Hut 8 và máy Enigma của hải quân Đức
Hai gian nhà trong sân trước chuồng ngựa tại Bletchley Park. Turing đã từng làm việc tại đây trong những năm 1939–1940 cho đến khi ông chuyển sang Hut 8
Vào tháng 12 năm 1940, Turing khám phá ra hệ thống chỉ thị của máy Enigma của hải quân Đức, một hệ thống chỉ thị phức tạp hơn tất cả các hệ thống chỉ thị khác đang được dùng bởi các chi nhánh trong quân đội. Turing cũng sáng chế ra công thức xác suất Bayes (Bayesian), một kỹ thuật trong thống kê được đặt tên là "Banburismus", để giúp vào việc giải mã Enigma của hải quân Đức. Banburismus cho phép loại bỏ một số công thức cài đặt của khối quay của máy Enigma, giảm lượng thời gian kiểm nghiệm các công thức cài đặt cần thiết trên các máy bombe.
Vào mùa xuân năm 1941, Turing đính hôn với một nhân viên cùng làm việc tại Hut 8, tên là Joan Clarke, nhưng chỉ đến mùa hè, cả hai đã thoả thuận hủy bỏ cuộc hôn nhân.
Tháng 7 năm 1942, Turing sáng chế ra một kỹ sảo, đặt tên là Turingismus hoặc Turingery, dùng vào việc chống lại máy mật mã Lorenz. Rất nhiều người lầm tưởng rằng Turing là một nhân vật quan trọng trong việc thiết kế máy tính Colossus, song điều này không phải là một sự thật [3].
Tháng 11 năm 1942, Turing du lịch sang Mỹ và bắt liên lạc với những nhân viên phân tích mật mã của hải quân Mỹ tại Washington, D.C., thông báo cho họ biết về máy Enigma của hải quân Đức, cùng với sự việc lắp ráp máy bombe. Ông đồng thời trợ lý việc kiến tạo các công cụ truyền ngôn bảo mật (secure speech) tại Bell Labs. Tháng 3 năm 1948, ông quay trở lại Bletchley Park. Trong khi ông vắng mặt, Hugh Alexander thay thế ông làm trưởng phòng Hut 8, tuy trên thực tế Hugh Alexander đã nắm quyền trưởng phòng trong một thời gian khá lâu. Turing rất ít quan tâm đến việc quản lý công việc hằng ngày của bộ phận. Turing trở thành cố vấn chung về phân tích mật mã tại Bletchley Park.
Trong những ngày sau rốt của chiến tranh, ông tự trau dồi về công nghệ điện tử, trong khi chịu trách nhiệm (được sự hỗ trợ của kỹ sư Donald Bayley) thiết kế một cái máy di động - mật hiệu là Delilah - cho phép thông tin truyền âm bảo mật (secure voice). Với xu hướng ứng dụng trong các công dụng khác, máy Delilah thiếu khả năng truyền sóng radio trường tuyến (long-distance radio transmission), và không được sử dụng trong chiến tranh vì sự hoàn thành của nó quá muộn. Tuy Turing đã thao diễn chức năng của máy cho các quan chức cấp trên, bằng cách mật mã hóa và giải mã một bản ghi âm lời nói của Winston Churchill, máy Delilah vẫn không được chọn và sử dụng.
Trong năm 1945, Turing đã được tặng huy chương OBE (Order of the British Empire) vì thành tích phục vụ trong cuộc chiến tranh.
Những máy tính đầu tiên và kiểm nghiệm của Turing
Từ năm 1945 đến năm 1947, Turing đã làm việc tại Phòng thí nghiệm Vật lý Quốc gia (National Physical Laboratory). Tại đây, ông thiết kế máy tính ACE (Automatic Computing Engine - Máy tính tự động). Ngày 19 tháng 2 năm 1946, ông đệ trình một bản thiết kế hoàn chỉnh đầu tiên của Anh về máy tính với khả năng lưu trữ lập trình (xem kiến trúc Von Neumann). Tuy ông đã thành công trong việc thiết kế máy ACE, song do những trì hoãn trong việc khởi công đề án, ông trở nên thất vọng và chán nản. Cuối năm 1947, ông quay trở lại Cambridge, bắt đầu một năm nghỉ ngơi của mình (sabbatical year). Trong khi ông đang nghỉ ngơi tại Cambridge, công việc xây dựng máy ACE đã bị huỷ bỏ hoàn toàn, trước khi nó được khởi công xây dựng. Năm 1949, ông trở thành phó giám đốc phòng thí nghiệm máy tính (computing laboratory) của Đại học Manchester, và viết phần mềm cho một trong những máy tính đầu tiên — máy Manchester Mark I. Trong thời gian này, ông tiếp tục làm thềm những công việc trừu tượng, và trong bài viết "Vi tính máy móc và trí thông minh" (Computing machinery and intelligence) - tờ Mind, tháng 10 năm 1950 - ông nói đến vấn đề về "trí tuệ nhân tạo" (artificial intelligence) và đề đạt một phương thức kiểm nghiệm, mà hiện giờ được gọi là kiểm nghiệm Turing (Turing test), một cố gắng định nghĩa tiêu chuẩn cho một cái máy được gọi là "có tri giác" (sentient).
Năm 1948, Turing, hiện đang làm việc với một người bạn học cũ, D.G. Champernowne, bắt đầu viết một chương trình đánh cờ vua cho một máy tính chưa từng tồn tại. Năm 1952, tuy thiếu một máy tính đủ sức để thi hành phần mềm, Turing đã chơi một ván cờ. Trong ván cờ này, ông bắt trước cái máy tính, đợi nửa tiếng đồng hồ trước khi đi một quân cờ. Ván cờ đã được ghi chép lại; phần mềm thua người bạn đồng hành của Turing, Alick Glennie, song lại thắng người vợ của ông Champernowne.
Tạo mẫu hình và sinh toán học
Turing nghiên cứu vấn đề sinh toán học (mathematical biology) từ năm 1952 cho đến khi qua đời năm 1954, đặc biệt về hình thái học (morphogenesis). Năm 1952, ông đã cho xuất bản một bài viết về vấn đến này, dưới cái tên "Cơ sở hoá học của hình thái học" (The Chemical Basis of Morphogenesis). Điểm trọng tâm thu hút sự chú ý của ông là việc tìm hiểu sự sắp xếp lá theo chu trình của dãy số Fibonacci, sự tồn tại của dãy số Fibonacci trong cấu trúc của thực vật. Ông dùng phương trình phản ứng phân tán, cái mà hiện nay là trung tâm của nghành Tạo mẫu hình (pattern formation). Những bài viết sau này của ông không được xuất bản, cho mãi đến năm 1992, khi loạt các cuốn "Những nghiên cứu và sáng chế của A.M. Turing" (Collected Works of A.M. Turing) được xuất bản.
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.
Năm 1952, Turing bị kết án với tội đã có những hành vi khiếm nhã nặng nề, sau khi ông tự thú đã có quan hệ đồng tính luyến ái với một người đàn ông ở Manchester. Ông bị tù treo và phải dùng liệu pháp hoóc môn.
Turing qua đời năm 1954; cuộc điều tra cái chết của ông cho thấy ông đã tự tử bằng cách ăn một quả táo có tẩm thuốc độc xyanua.
Thời thơ ấu và thiếu niên
Mẹ của Alan mang thai ông vào năm 1911, tại Chatrapur, Ấn Độ. Cha ông, Julius Mathison Turing, lúc đó là một công chức trong ngành Dân chính Ấn Độ (Indian Civil Service), lúc đó vẫn dưới sự cai quản của chính phủ Anh. Julius và vợ mình, bà Ethel (nguyên họ là Stoney) muốn con mình lớn lên tại Anh, nên họ đã trở về Paddington, Luân Đôn, nơi Alan Turing được sinh ra vào ngày 23 tháng 6 năm 1912. Vì nhiệm vụ với ngành dân chính của cha ông vẫn còn, trong lúc Alan còn nhỏ, cha mẹ của ông thường phải di chuyển giữa Guildford (Anh) và Ấn Độ, để hai đứa con trai của họ cho các người bạn tại Anh giữ hộ, vì tình trạng y tế ở Ấn Độ còn thấp kém. Ngay từ lúc còn nhỏ, ông đã thể hiện các dấu hiệu thiên tài. Ông tự tập đọc trong vòng ba tuần, và có biểu lộ ham thích toán học, cùng với giải đáp các câu đố.
Lúc Alan 6 tuổi, cha mẹ cho ông học tại trường St. Michael\'s. Bà hiệu trưởng của trường đã nhận thấy thiên tài của Alan từ lúc ban đầu, cũng như các giáo viên của ông sau này. Năm 1926, khi ông 14 tuổi, ông đến học tại trường nội trú Sherborne ở Dorset. Ngày khai giảng của khóa đầu xảy ra cùng ngày với một cuộc tổng đình công tại Anh, nhưng vì ông quyết trí muốn đến lớp, ông đã chạy xe đạp trên 60 dặm (100 km) từ Southampton đến trường, không có người dẫn, chỉ dừng lại và trọ qua đêm tại một quán trọ trên đường. Sự kiện này đã được báo chí địa phương tường trình.
Tuy có năng khiếu toán và khoa học, Turing không được các thầy cô coi trọng tại Sherborne, một trường công nổi tiếng và đắt đỏ (thật sự đây là một trường tư ở Anh nổi tiếng với tính từ thiện) vì trường này đánh giá các môn kinh điển cao hơn. Hiệu trưởng của ông đã viết thư cho cha mẹ ông nói "Tôi hy vọng rằng anh ta không rơi vào tình trạng lơ lửng, giữa trường nọ với trường kia. Nếu anh ta muốn ở lại Trường Công, thì anh ta nhất định phải đặt mục tiêu để trở thành một người có giáo dục. Còn nếu anh ta chỉ muốn trở thành một Nhà khoa học chuyên ngành thì tôi e rằng anh ta đang phung phí thời gian của mình tại Trường Công" .
Mặc dầu vậy, Turing vẫn biểu hiện năng khiếu trong các môn ông ưa thích. Ông đã giải được nhiều bài toán bậc cao trong năm 1927 trước khi học đến giải tích cơ bản. Khi ông 16 tuổi (1928), ông đã hiểu được các tác phẩm của Albert Einstein, không những nắm được nội dung, ông còn suy luận được về những thắc mắc của Einstein đối với các định luật của Newton về chuyển động trong một bài viết mà Einstein không nói thẳng ra.
Trong lúc học tại Sherborne, Turing đã ngầm yêu Christopher Morcom, một người bạn, nhưng mối tình không được đáp lại. Morcom qua đời một vài tuần trước khi ra trường vì bệnh lao đã mắc phải sau khi uống sữa bò có vi khuẩn lao lúc còn nhỏ. Turing rất đau lòng vì sự việc này.
Đại học và các nghiên cứu trong toán học
Vì Turing không chịu học các môn ngoài toán và khoa học, ông không nhận được học bổng để học tại Học viện Trinity của Đại học Cambridge, mà phải học tại Học viện King\'s của Đại học Cambridge từ năm 1931 đến 1934 và tốt nghiệp đại học với bằng danh dự. Năm 1935 ông được chọn làm nghiên cứu sinh tại trường King\'s, do sức thuyết phục của mình trong luận văn về hàm số độ sai của Gauss.
Trong bài viết nổi tiếng của ông, tựa đề "Các số khả tính, với áp dụng trong Vấn đề về lựa chọn" (On Computable Numbers, with an Application to the Entscheidungsproblem) - thuật toán lôgic - (đệ trình ngày 28 tháng 5 năm 1936), Turing tái dựng lại kết quả của Kurt Gödel hồi năm 1931 về những hạn chế trong chứng minh và tính toán, thay đổi thuật ngữ tường trình số học chính quy của Gödel, bằng cái mà ngày này người ta gọi là máy Turing, một dụng cụ chính quy và đơn giản. Ông đã chứng minh rằng một cái máy như vậy sẽ có khả năng tính toán bất cứ một vấn đề toán học nào, nếu vấn đề ấy có thể được biểu thị bằng một biểu trình thuật toán, ngay cả khi một cái máy Turing cụ thể như vậy không có mấy công dụng thực tiễn vì sự chậm chạp của nó so với những cơ chế khác.
Máy Turing, cho đến nay, vẫn là một vấn đề nghiên cứu trung tâm trong lý thuyết về máy tính. Ông còn tiếp tục chứng mình rằng vấn đề về lựa chọn (Entscheidungsproblem) là một vấn đề không có giải đáp, bằng cách đầu tiên chứng minh rằng nan đề ngưng hoạt động trong máy của Turing là một nan đề bất khả định; khó mà có thể quyết định được rằng một cái máy Turing nào đó sẽ ngưng hoạt động tại một điểm nào đó. Tuy chứng minh của ông được đăng công khai sau chứng minh tương tự của Alonzo Church đối với giải tích lambda (lambda calculus), chứng minh của Turing được coi là dễ hiểu và trực giác hơn. Chứng minh của ông còn nổi tiếng về đề bạt một cái "máy Turing vạn năng" (Universal (Turing) Machine), một ý tưởng rằng một cái máy như vậy có thể làm bất cứ việc gì mà các máy khác phải làm. Bài viết còn giới thiệu quan niệm về số khả định (definable number).
Hầu hết thời gian giữa năm 1937 và 1938, ông cư trú tại Đại học Princeton, nghiên cứu dưới sự chỉ đạo của Alonzo Church. Năm 1938, ông đạt được bằng Tiến sĩ tại trường này. Luận văn của ông giới thiệu quan niệm tính toán tương đối (relative computing). Trong quan niệm này, nhiều máy Turing được ghép lại, trở thành một cái máy tiên tri (oracle machine), cho phép nghiên cứu những phương trình không thể giải được nếu chỉ sử dụng một cái máy Turing mà thôi.
Sau khi quay trở lại Cambridge vào năm 1939, ông thính dự giảng đường của Ludwig Wittgenstein về nền tảng của toán học (foundations of mathematics). Hai người tranh cãi và bất đồng ý kiến một cách kịch liệt. Trong khi Turing bảo vệ lập trường của chủ nghĩa hình thức (formalism), thì Wittgenstein lại tranh cãi rằng toán học được đánh giá quá mức, và bản thân nó không thể tìm ra bất cứ một chân lý cuối cùng nào (absolute truth) (Wittgenstein 1932/1976).
Giải mật mã
Hầu hết thời gian giữa năm 1937 và 1938, ông cư trú tại Đại học Princeton, nghiên cứu dưới sự chỉ đạo của Alonzo Church. Năm 1938, ông đạt được bằng Tiến sĩ tại trường này. Luận văn của ông giới thiệu quan niệm tính toán tương đối (relative computing). Trong quan niệm này, nhiều máy Turing được ghép lại, trở thành một cái máy tiên tri (oracle machine), cho phép nghiên cứu những phương trình không thể giải được nếu chỉ sử dụng một cái máy Turing mà thôi.
Sau khi quay trở lại Cambridge vào năm 1939, ông thính dự giảng đường của Ludwig Wittgenstein về nền tảng của toán học (foundations of mathematics). Hai người tranh cãi và bất đồng ý kiến một cách kịch liệt. Trong khi Turing bảo vệ lập trường của chủ nghĩa hình thức (formalism), thì Wittgenstein lại tranh cãi rằng toán học được đánh giá quá mức, và bản thân nó không thể tìm ra bất cứ một chân lý cuối cùng nào (absolute truth) (Wittgenstein 1932/1976).
Máy bombe của Turing và Welchman
Chỉ trong vài tuần sau khi đến Bletchley Park[2], Turing đã sáng chế ra một cái máy cơ-điện tử (electromechanical machine) giúp vào việc giải mã máy Enigma, đặt tên là máy bombe, lấy tên theo cái máy "bomba" được sáng chế tại Ba Lan. Máy bombe, với một nâng cấp được đề bạt bởi nhà toán học Gordon Welchman, trở thành dụng cụ chủ yếu dùng để đọc nguồn tin truyền qua lại từ máy Enigma.
Máy bombe dò tìm công thức cài đặt của khối quay trong máy Enigma, và nó cần phải có một bộ mã (crib), tức là một dòng chữ chưa mã hóa và một dòng mật mã tương ứng. Với mỗi dự kiến cài đặt của khối quay, máy bombe hoàn thiện một chuỗi các tiến trình suy luận lôgic, dựa vào bộ mã, dùng các cấu kết mạch điện tử đã được lắp ráp. Máy bombe lùng tìm và phát hiện mâu thuẫn khi nó xảy ra, loại bỏ công thức cài đặt gây nên sự mâu thuẫn ấy, rồi tiếp tục lùng tìm một công thức khác, hợp lý hơn. Đa số các công thức cài đặt khả quan đều gây nên sự mâu thuẫn, và bị loại bỏ, chỉ để lại một số ít các công thức khả dĩ để được nghiên cứu chi tiết hơn. Máy bombe của Turing lần đầu tiên được lắp ráp vào ngày 18 tháng 3 năm 1940. Có đến trên 200 cái máy bombe như vậy vẫn đang hoạt động khi chiến tranh kết thúc
Hut 8 và máy Enigma của hải quân Đức
Hai gian nhà trong sân trước chuồng ngựa tại Bletchley Park. Turing đã từng làm việc tại đây trong những năm 1939–1940 cho đến khi ông chuyển sang Hut 8
Vào tháng 12 năm 1940, Turing khám phá ra hệ thống chỉ thị của máy Enigma của hải quân Đức, một hệ thống chỉ thị phức tạp hơn tất cả các hệ thống chỉ thị khác đang được dùng bởi các chi nhánh trong quân đội. Turing cũng sáng chế ra công thức xác suất Bayes (Bayesian), một kỹ thuật trong thống kê được đặt tên là "Banburismus", để giúp vào việc giải mã Enigma của hải quân Đức. Banburismus cho phép loại bỏ một số công thức cài đặt của khối quay của máy Enigma, giảm lượng thời gian kiểm nghiệm các công thức cài đặt cần thiết trên các máy bombe.
Vào mùa xuân năm 1941, Turing đính hôn với một nhân viên cùng làm việc tại Hut 8, tên là Joan Clarke, nhưng chỉ đến mùa hè, cả hai đã thoả thuận hủy bỏ cuộc hôn nhân.
Tháng 7 năm 1942, Turing sáng chế ra một kỹ sảo, đặt tên là Turingismus hoặc Turingery, dùng vào việc chống lại máy mật mã Lorenz. Rất nhiều người lầm tưởng rằng Turing là một nhân vật quan trọng trong việc thiết kế máy tính Colossus, song điều này không phải là một sự thật [3].
Tháng 11 năm 1942, Turing du lịch sang Mỹ và bắt liên lạc với những nhân viên phân tích mật mã của hải quân Mỹ tại Washington, D.C., thông báo cho họ biết về máy Enigma của hải quân Đức, cùng với sự việc lắp ráp máy bombe. Ông đồng thời trợ lý việc kiến tạo các công cụ truyền ngôn bảo mật (secure speech) tại Bell Labs. Tháng 3 năm 1948, ông quay trở lại Bletchley Park. Trong khi ông vắng mặt, Hugh Alexander thay thế ông làm trưởng phòng Hut 8, tuy trên thực tế Hugh Alexander đã nắm quyền trưởng phòng trong một thời gian khá lâu. Turing rất ít quan tâm đến việc quản lý công việc hằng ngày của bộ phận. Turing trở thành cố vấn chung về phân tích mật mã tại Bletchley Park.
Trong những ngày sau rốt của chiến tranh, ông tự trau dồi về công nghệ điện tử, trong khi chịu trách nhiệm (được sự hỗ trợ của kỹ sư Donald Bayley) thiết kế một cái máy di động - mật hiệu là Delilah - cho phép thông tin truyền âm bảo mật (secure voice). Với xu hướng ứng dụng trong các công dụng khác, máy Delilah thiếu khả năng truyền sóng radio trường tuyến (long-distance radio transmission), và không được sử dụng trong chiến tranh vì sự hoàn thành của nó quá muộn. Tuy Turing đã thao diễn chức năng của máy cho các quan chức cấp trên, bằng cách mật mã hóa và giải mã một bản ghi âm lời nói của Winston Churchill, máy Delilah vẫn không được chọn và sử dụng.
Trong năm 1945, Turing đã được tặng huy chương OBE (Order of the British Empire) vì thành tích phục vụ trong cuộc chiến tranh.
Những máy tính đầu tiên và kiểm nghiệm của Turing
Từ năm 1945 đến năm 1947, Turing đã làm việc tại Phòng thí nghiệm Vật lý Quốc gia (National Physical Laboratory). Tại đây, ông thiết kế máy tính ACE (Automatic Computing Engine - Máy tính tự động). Ngày 19 tháng 2 năm 1946, ông đệ trình một bản thiết kế hoàn chỉnh đầu tiên của Anh về máy tính với khả năng lưu trữ lập trình (xem kiến trúc Von Neumann). Tuy ông đã thành công trong việc thiết kế máy ACE, song do những trì hoãn trong việc khởi công đề án, ông trở nên thất vọng và chán nản. Cuối năm 1947, ông quay trở lại Cambridge, bắt đầu một năm nghỉ ngơi của mình (sabbatical year). Trong khi ông đang nghỉ ngơi tại Cambridge, công việc xây dựng máy ACE đã bị huỷ bỏ hoàn toàn, trước khi nó được khởi công xây dựng. Năm 1949, ông trở thành phó giám đốc phòng thí nghiệm máy tính (computing laboratory) của Đại học Manchester, và viết phần mềm cho một trong những máy tính đầu tiên — máy Manchester Mark I. Trong thời gian này, ông tiếp tục làm thềm những công việc trừu tượng, và trong bài viết "Vi tính máy móc và trí thông minh" (Computing machinery and intelligence) - tờ Mind, tháng 10 năm 1950 - ông nói đến vấn đề về "trí tuệ nhân tạo" (artificial intelligence) và đề đạt một phương thức kiểm nghiệm, mà hiện giờ được gọi là kiểm nghiệm Turing (Turing test), một cố gắng định nghĩa tiêu chuẩn cho một cái máy được gọi là "có tri giác" (sentient).
Năm 1948, Turing, hiện đang làm việc với một người bạn học cũ, D.G. Champernowne, bắt đầu viết một chương trình đánh cờ vua cho một máy tính chưa từng tồn tại. Năm 1952, tuy thiếu một máy tính đủ sức để thi hành phần mềm, Turing đã chơi một ván cờ. Trong ván cờ này, ông bắt trước cái máy tính, đợi nửa tiếng đồng hồ trước khi đi một quân cờ. Ván cờ đã được ghi chép lại; phần mềm thua người bạn đồng hành của Turing, Alick Glennie, song lại thắng người vợ của ông Champernowne.
Tạo mẫu hình và sinh toán học
Turing nghiên cứu vấn đề sinh toán học (mathematical biology) từ năm 1952 cho đến khi qua đời năm 1954, đặc biệt về hình thái học (morphogenesis). Năm 1952, ông đã cho xuất bản một bài viết về vấn đến này, dưới cái tên "Cơ sở hoá học của hình thái học" (The Chemical Basis of Morphogenesis). Điểm trọng tâm thu hút sự chú ý của ông là việc tìm hiểu sự sắp xếp lá theo chu trình của dãy số Fibonacci, sự tồn tại của dãy số Fibonacci trong cấu trúc của thực vật. Ông dùng phương trình phản ứng phân tán, cái mà hiện nay là trung tâm của nghành Tạo mẫu hình (pattern formation). Những bài viết sau này của ông không được xuất bản, cho mãi đến năm 1992, khi loạt các cuốn "Những nghiên cứu và sáng chế của A.M. Turing" (Collected Works of A.M. Turing) được xuất bản.
phuongnguyen- Tổng số bài gửi : 27
Join date : 17/02/2012
Trang 2 trong tổng số 8 trang • 1, 2, 3, 4, 5, 6, 7, 8
Trang 2 trong tổng số 8 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết