Luận văn Tính cận trên bộ nhớ log của chương trình sử dụng giao dịch

ĐẠI HC QUC GIA HÀ NI  
TRƢỜNG ĐẠI HC CÔNG NGHỆ  
NGUYN PHAN TÌNH  
TÍNH CN TRÊN BNHLOG CỦA CHƢƠNG  
TRÌNH SDNG GIAO DCH  
LUN VĂN THC SCÔNG NGHTHÔNG TIN  
Hà Ni - 2016  
ĐẠI HC QUC GIA HÀ NI  
TRƢỜNG ĐẠI HC CÔNG NGHỆ  
NGUYN PHAN TÌNH  
TÍNH CN TRÊN BNHLOG CỦA CHƢƠNG  
TRÌNH SDNG GIAO DCH  
Ngành:  
Chuyên ngành: Kthut Phn Mm  
Mã s: 60480103  
Công NghThông Tin  
LUN VĂN THC SCÔNG NGHTHÔNG TIN  
NGƢỜI HƢỚNG DN KHOA HC: PGS.TS. Trƣơng Anh Hoàng  
Hà Ni - 2016  
LỜI CAM ĐOAN  
Tôi xin cam đoan luận văn này là do tôi thc hin, đƣợc hoàn thành dƣới sự  
hƣớng dn trc tiếp từ PGS.TS.Trƣơng Anh Hoàng. Các trích dn có ngun gc rõ  
ràng, tuân thtôn trng quyn tác gi. Luận văn này không sao chép nguyên bản tbt  
kì mt ngun tài liu nào khác.  
Nếu có gì sai sót, tôi xin chu mi trách nhim.  
Hc viên  
Nguyn Phan Tình  
1
LI CẢM ƠN  
Để hoàn thành đề tài luận văn này  bên c nh sự chủ động cố gắng của bản th n  
tôi đ  nhận đƣợc sự ủng hộ và gi p đ  nhiệt t nh từ c c tập thể  c  nh n trong và ngoài  
trƣờng.  
Qua đ y  cho phép tôi đƣợc bày t  l ng cảm ơn s u sắc tới thầy PGS.TS.Trƣơng  
Anh Hoàng  giảng viên trƣờng Đ i học công nghệ – Đ i học Quốc gia Hà Nội  ngƣời  
đ  trực tiếp động viên  định hƣớng và hƣớng dẫn tận t nh trong qu  tr nh học tập và  
hoàn thành đề tài luận văn này.  
Đồng k nh g i lời cảm ơn đến tập thể c c thầy  cô gi o trong trƣờng Đ i học  
Công Nghệ – Đ i học Quốc gia Hà Nội đ  trau dồi kiến thức cho tôi  điều đ  là nền  
tảng qu  b u g p phần to lớn trong qu  tr nh vận dụng vào hoàn thiện luận văn.  
Cuối c ng  tôi xin đƣợc g i l ng biết ơn s u sắc đến gia đ nh  b n b   đồng  
nghiệp đ  t o điều kiện về vật chất c ng nhƣ tinh thần  luôn s t c nh bên tôi  động  
viên gi p tôi yên t m học tập và kết th c kh a học.  
Tôi xin ch n thành cảm ơn  
2
 
MC LC  
DANH MC CÁC KÝ HIU, THUT NG, CHVIT TT  
CHVIT TT, THUT  
GIẢI NGHĨA  
STT  
NG, KÝ HIU  
CHVIT TT  
TM  
Transactional Ngôn ngữ để viết chƣơng tr nh giao dịch  
1
2
Memory  
STM  
-
Software Bnhgiao dch phn mm, mt gii pháp viết  
Transactional Memory  
c c chƣơng tr nh song song  
THUT NGỮ  
1
Type System  
Transaction  
Hthng kiu  
2
Giao dch  
3
illegal memory reference  
Data corruption  
Thread  
Tham chiếu bnhkhông hp lệ  
Hƣ h ng dliu  
4
5
Lung  
6
Type checker  
Type checking  
Well-behaved  
Well-formed  
Ill-behaved  
Bkim tra kiu  
7
Trình kim tra kiu  
8
Tính cht hành x  đ ng của chƣơng tr nh.  
Tính chất thiết lập đ ng của chƣơng tr nh.  
Tính cht hành x  yếu của chƣơng tr nh.  
Định kiểu tốt.  
9
10  
11  
12  
13  
14  
19  
20  
21  
22  
23  
24  
25  
26  
27  
Well-typed  
Ill-typed  
Định kiểu yếu.  
ADT-Abstract Data Type  
Illegal instruction  
Atomicity  
Kiu dliu trừu tƣợng  
Lnh không hp lệ  
Tính nguyên t  
Consistency  
Isolation  
Tính nht quán  
T nh độc lp  
Durability  
Tính bn vng  
Onacid  
Tr ng thái mmt giao dch  
Tr ng thái kết thúc mt giao dch  
Các giao dch lng  
Commit  
Nested transactions  
Multi-threaded  
Spawn  
Đa luồng  
Sinh lung  
Joint commits  
Các commit ca các luồng song song đồng thi  
thc hin kết thúc mt giao tác chung.  
Ngữ nghĩa cục bộ  
28  
29  
30  
31  
32  
Local semantics  
Global semantics  
Local enviroments  
Global enviroments  
Ngữ nghĩa toàn cc  
Môi trƣờng cc bộ  
Môi trƣờng toàn cc  
5
 
33  
Syntax  
+n  
Cú pháp  
KÝ HIU  
Mô tthành phn + trong hthng kiu da trên  
chui scó du, mgiao dịch c  k ch thƣớc là n  
đơn vị bnhớ  
1
2
3
4
-
n
Mô tthành phn trong hthng kiu da trên  
chui scó du, m thao tác commit liên tiếp.  
Mô tthành phn # trong hthng kiu,chra số  
đơn vị bnhln nhất đƣợc s  dng bi thành  
phn là n.  
#n  
¬n  
Mô tthành phn ¬ thhin sluồng c ng đồng  
bt i mt thời điểm joint commits  
6
DANH MC CÁC BNG  
DANH MC CÁC HÌNH VẼ  
H nh 1.1 Đo n mã cho mô hình giao dch lồng và đa luồng ................................11  
Hình 1.2 Mô hình giao dch lồng và đa luồng......................................................12  
Hình 2.1 Hthng kiu trong trinh biên dch.......................................................17  
Hình 2.2 Các tr ng thái ca giao dch...................................................................18  
Hình 4.1 Các lung song song Joincommit..........................................................28  
Hình 5.1 Hình mô tả c c giai đo n tính cn trên tài nguyên bnhlog..............40  
Hình 5.2 Mô hình giao dch lồng và đa luồng cho ví d5.1 ................................41  
Hình 5.3 Mô tả giai đo n 1 ca thut toán tính tài nguyên...................................41  
Hình 5.4 Mô hình giao dch lồng và đa lung cho thc nghim 1 .......................45  
Hình 5.5 Màn hình kết quthc nghim 1 ...........................................................45  
Hình 5.6 Mô hình giao dch lồng và đa luồng cho thc nghim 2 .......................46  
Hình 5.7 Màn hình kết quthc nghim 2 ...........................................................46  
Hình 5.8 Mô hình giao dch lồng và đa luồng cho thc nghim 3 .......................47  
Hình 5.9 Màn hình kết quch y thc nghim 3...................................................47  
Hình 5.10 Mô hình giao dch cho thc nghim 4.................................................48  
Hình 5.11 Màn hình kết quthc nghim 4 .........................................................48  
Hình 5.12 Mô hình giao dch lồng và đa luồng cho thc nghim 5 .....................49  
Hình 5.13 Màn hình kết quthc nghim 5 .........................................................49  
7
   
MỞ ĐẦU  
Tính cp thiết của đề tài  
Cùng vi sphát trin nhƣ v  b o của khoa hc công ngh, các vi x  lý hiện đ i  
ngày càng thhin sc m nh qua nhiu nhân (core) vi tốc độ x  lý ngày càng cao. Có  
đƣợc nhƣ vậy là do bên trong các vi x  lý này đƣợc thiết kế các lung (thread) có khả  
năng ch y và x  lý song song. Trƣớc đ y để lp trình đa luồng, ngƣời ta s  dụng cơ  
chế đồng b(synchronization) dựa trên kh a (lock) để  p đặt gii h n vquyn truy  
cp tài nguyên trong một môi trƣờng khi có nhiu lung thc thi.Tuy nhiên, khi áp  
dng phƣơng ph p này thƣờng ny sinh các vấn đề nhƣ khóa chết (deadlock) hoc các  
li tim tàng…  
Software Transactional Memory (STM- bnhgiao dch phn mm) [8] là mt  
giải ph p đơn giản hơn  nhƣng vô c ng m nh mmà có thgii quyết đƣợc hu hết  
các vấn đề trên. N  đ  thay thế hoàn toàn giải ph p c  trong việc truy cp bnhdùng  
chung. STM giao tiếp vi bnhthông qua các giao dch. Các giao dch này cho phép  
tdo đọc  ghi để chia scác biến và mt vùng nhgi là log sẽ đƣợc s  dụng để ghi  
l i các ho t động này cho ti khi kết thúc giao dch.  
Mt trong nhng mô hình giao dch phc t p s  dng STM là mô hình giao dch  
lồng và đa luồng (nested and multi-threaded transaction) [5]. Trong quá trình thc thi  
của c c chƣơng tr nh giao dịch lồng và đa luồng, khi các lung mới đƣợc sinh ra hoc  
mt giao dịch đƣợc bắt đầu, các vùng bnhgi là log sẽ đƣợc cp phát. Các log này  
d ng để lƣu l i bn sao ca các biến dùng chung, nhvy mà các lung trên có ths  
dng các biến này một c ch độc lp.  
Vấn đề đặt ra ở đ y là t i thời điểm chƣơng tr nh ch y liệu lƣợng bnhcn cp  
ph t cho c c log c  vƣợt quá tài nguyên bnhca máy, hay chƣơng tr nh c  thể ch y  
một c ch trơn tru mà không gặp phi bt klỗi nào nhƣ hết bnh. Chính vì vy, vic  
x c định cn trên ca bnhớ ở thời điểm ch y chƣơng tr nhcủa chƣơng tr nh giao dịch  
là mt vấn đề then chốt  c  ý nghĩa hết sc quan trng.  
Chính v  l  do đ   trong luận văn thực hin ở đ y  mt nghiên cu s  dng  
phƣơng ph p ph n t ch tĩnh để gii quyết bài toán tính cn trên bnhlog của chƣơng  
trình có giao dch sẽ đƣợc trình bày, da trên bài báo đ  đƣợc các tác gicông bố  
trong [1].  
Mc tiêu nghiên cu  
Luận văn đƣợc thc hin da trên nghiên cu trong bài báo [1]. Do vậy để có thể  
hiểu đƣợc gii pháp các tác giả đ  đề xut trong [1], trong luận văn này tp trung  
nghiên cu các lý thuyết vhthng kiu; Các khái niệm cơ bản c ng nhƣ t nh cht  
ca giao dch; Nghiên cu cú pháp và ngữ nghĩa của ngôn ngTM (Transactional  
Memory) Mt ngôn ngữ để viết các chƣơng tr nh giao dịch. Tvic nắm đƣợc gii  
pháp xây dng hthng kiểu đề cp trong bài báo, mt công csẽ đƣợc cài đặt da  
trên ngôn ngC#.  
8
     
Phƣơng pháp nghiên cứu  
Để thc hiện đƣợc mục tiêu đ  đề ra trong luận văn  c c phƣơng ph p nghiên cứu  
sau đ y đ  đƣợc kết hp:  
- Phƣơng ph p nghiên cứu lý thuyết: bao gm phân tích, tng hp các tài liu, bài  
báo có liên quan vlý thuyết hthng kiểu đặc bit là hthng kiểu cho c c chƣơng  
trình TM, tài liu vcác thut toán da trên hthng kiu..  
- Phƣơng ph p thực nghim: Cài đặt thuật to n đ  đề xut, ch y th  để kim tra  
t nh đ ng đắn của chƣơng tr nh.  
Cu trúc ca luận văn  
Luận văn đƣợc trình bày trong các phn, vi ni dung chính ca mi phần nhƣ  
sau:  
Mở đầu: Nêu ra tính cp thiết của đề tài, nêu ra các mc tiêu cn nghiên cu, các  
phƣơng ph p đƣợc s  dng khi nghiên cu và cu trúc các phn ca lun văn.  
Chƣơng 1: Gii thiu bài toán  
Trình bày ni dung cthca bài toán tính cn trên bnhlog của chƣơng tr nh  
có s  dng giao dch, các vấn đề cn gii quyết trong bài to n này và hƣớng tiếp cn  
để gii quyết bài toán. Trong phn này, c c điểm ci tiến ca phƣơng ph p giải quyết  
bài toán ở đ y so với c c phƣơng ph p trƣớc kia c ng đƣợc nêu ra. Ví dụ đƣợc trình  
bày trong mc 1.3 sminh họa rõ ràng cho bài to n và hƣng tiếp cận đ  đƣa ra.  
Chƣơng 2: Mt skiến thức cơ sở  
Trình bày các lý thuyết cơ bản đƣợc s  dụng làm cơ sở để gii quyết bài toán,  
bao gm: Lý thuyết vhthng kiu nhƣ kh i niệm, các thuc tính hay ng dng ca  
hthng kiu trong thc tế; Lý thuyết vgiao dch, bnhgiao dch phn mm gm  
các khái nim, tính cht, ng dụng…  
Chƣơng 3: Ngôn nggiao dch  
Gii thiu ngôn nggiao dch TM (Transactional memory)- Mt ngôn ngữ đƣợc  
d ng để viết c c chƣơng tr nh giao dịch. Trong chƣơng này  cú pháp và ngữ nghĩa của  
ngôn ngTM sẽ đƣợc trình bày cth.  
Chƣơng 4: Hthng kiu cho chƣơng trình giao dịch  
Nghiên cu hthng kiu để gii quyết bài toán tính cn trên bnhlog cho  
chƣơng tr nh c  giao dịch đ  đƣợc trình bày trong bài báo [1]. Lý thuyết hthng kiu  
đƣợc phát trin ở đ y bao gm các kiu và các quy tc kiu.  
Chƣơng 5: Xây dng công cvà thc nghim  
Cài đặt các thut toán kiu da trên hthng kiểu đ  đƣợc trình bày ở chƣơng 4.  
Tcác thuật to n đ   xây dng công cụ để gii quyết bài toán tính cn trên bnhlog  
và thc nghim để kiểm tra t nh đ ng đn ca công c.  
Kết lun:  
Đ nh gi  c c kết quả đ  đ t đƣợc, nêu ra tn t i và hƣớng phát trin.  
9
   
CHƢƠNG 1. GII THIU BÀI TOÁN  
1.1. Gii thiu  
Nhƣ ch ng ta đ  đề cp phn mở đầu, STM là giải ph p đƣợc s  dng trong  
vic chia sbnhdùng chung và mt trong nhng mô hình giao dch phc t p s  
dng STM là mô hình giao dch lồng và đa luồng (nested and multi-threaded  
transaction)  
Ở đ y  một giao dịch đƣợc gi là lng khi nó cha mt sgiao dch khác. Chúng  
ta gi giao dịch c  là giao dịch cha và gi các giao dch mà sinh ra trong giao dch cha  
là giao dch con. Các giao dch con này phải đƣợc đ ng trƣớc giao dch cha. Hơn nữa,  
giao dịch đƣợc gọi là đa luồng (multi-threaded) khi các lung con sinh ra đƣợc ch y  
bên trong giao dịch đồng thi ch y song song vi luồng cha đang thc thi giao dch.  
Khi mt giao dịch đƣợc bắt đầu mt vùng bnhgọi là log đƣợc cp phát d ng để lƣu  
l i bn sao ca các biến dùng chung. Mt lung mi hay luồng con  khi đƣợc sinh ra  
c ng sẽ t o mt bn sao các log giao dch ca lung cha. Khi lung cha thc hiện đ ng  
(commit) giao dch, tt ccác luồng con đƣợc t o bên trong lung cha phải c ng đ ng  
vi lung cha. Chúng ta gi kiểu đ ng này là join commit, và thời điểm khi nhng  
commit này xy ra đƣợc gi là thời điểm joint commit. thời điểm join commit bộ  
nhớ đƣợc cấp ph t cho c c log c ng đƣợc gii phóng. Join commit đ ng vai tr  nhƣ sự  
đồng bngm ca các lung song song. Chính vì hình thức đồng bnày mà các lung  
song song bên trong mt giao dch không hoàn toàn ch y độc lp.  
Và vấn đề cn trli ở đ y là liệu thời điểm ch y chƣơng tr nh, liệu lƣợng bộ  
nhcn cấp ph t cho c c log c  vƣợt quá tài nguyên bnhca máy  hay chƣơng  
trình có thch y một c ch trơn tru mà không gặp phi bt klỗi nào nhƣ hết bnh.  
Để trli cho câu h i này, chúng ta cn phải x c định đƣợc biên bnhcủa chƣơng  
trình giao dch hay chính là cn trên bnhớ đƣợc cp phát cho các log thời điểm  
biên dch.  
các nghiên cứu trƣớc đ y [2, 11], mt hthng kiểu đƣợc phát triển để đếm số  
lƣợng log ln nht mà cùng tn t i mt thời điểm khi chƣơng tr nh đang ch y. Con  
snày chcho thông tin thô vbnhớ đƣợc s  dng bi các log giao dịch. Để quyết  
định thêm ch nh x c lƣợng bnhln nht mà các log giao dch có ths  dng, trong  
nghiên cu [1] các tác giả đ  đề xuất phƣơng ph p giải quyết vấn đề vi vic t nh đến  
k ch thƣớc ca mi log. Đ y c ng là điểm ci tiến của hƣớng tiếp cn mi này so vi  
c c hƣớng tiếp cận trƣớc đ .  
Nhƣ vậy, bài toán cn gii quyết ở đ y c  thể phát biểu nhƣ sau: T nh to n lƣợng  
bnhyêu cu ln nht cho toàn bộ chƣơng tr nh giao dịch khi biết k ch thƣớc ca  
các log.  
10  
   
1.2. Hƣớng tiếp cn  
Để gii quyết bài to n đặt ra  trƣớc hết chúng ta sviết c c chƣơng tr nh giao  
dch bng mt ngôn ngdành riêng cho nó, cthlà ngôn ngTM sẽ đƣợc trình bày  
trong chƣơng 3.  
Để thêm thông tin về k ch thƣớc ca mi log, chúng ta smrng lnh bắt đầu  
giao dch trong các nghiên cứu trƣớc để cha thông tin này. Sau đ  chúng ta phát trin  
mt hthng kiểu để đ nh gi  tài nguyên bộ nhlog mà các giao dch có thyêu cu.  
So vi các nghiên cứu trƣớc [2,11] th  ý tƣởng vcác cu trúc kiu trong nghiên  
cu [1] không có g  thay đổi. Tuy nhiên, các ngữ nghĩa kiểu và các quy tc kiu là mi  
và khác so vi các nghiên cứu trƣớc đ y.  
1.3. Ví dminh ha  
Để gii thích cho vấn đề hƣớng tiếp cn đ  tr nh bày trên  ch ng ta sxem xét  
mt ví d, đƣợc mƣợn t[1]. Trong ví dnày chúng ta chtp trung vào lõi ca ngôn  
ngmà không quan tâm ti các cu trúc khác một chƣơng tr nh thật sự nhƣ c c thủ  
tc, c c phƣơng thức gi, truyền thông điệp, các biến và c c t nh to n cơ bản…  
Hình 1.1 Đoạn mã cho mô hình giao dch lồng và đa luồng  
Trong đo n mã trên, lnh onacid commit là các lnh bắt đầu và đ ng một  
giao dch [8]. Lnh spawn là lnh t o ra mt lung mi với m  đƣợc thhin bi các  
tham sca lnh. Lnh onacid trong các nghiên cứu trƣớc đ y không c  tham số,  
nhƣng trong nghiên cứu này nó liên kết vi mt số để ký hiệu k ch thƣớc ca bnhớ  
cần đƣợc cp phát cho log ca giao dch thời điểm thc thi.  
Các hành vi của chƣơng tr nh này đƣợc miêu ttrong hình 1.2  
11  
   
Hình 2.2 Mô hình giao dch lồng và đa luồng  
Trong đ :  
onacid : Lnh bắt đầu giao dch, ký hiêu bi [  
commit: Lnh kết thúc giao dch, bi du ].  
Lnh spawn t o ra mt lung mi ch y song song vi lung cha của n  và đƣợc  
mô tbằng đƣờng kngang. Lung mi sao chép các log ca lung cha cho việc lƣu  
mt bn sao giá trcác biến ca luồng cha để nó có thdùng các biến này mt cách  
độc lp.  
Trong hình vtrên các joint commit thhin thời điểm các lung cha, con cùng  
đồng bộ đƣợc thhin bng hình chnhật nét đứt  c c điểm đồng bộ này đƣợc đ nh  
du bng c nh bên phi ca hình chnht.  
Sau đ y ch ng ta sẽ thc hin tính tài nguyên bnhớ cho chƣơng tr nh trong  
hình 1.2 t i 3 thời điểm kh c nhau đƣợc chia ra theo các phân vùng độc lp 1, 2 và 3  
nhƣ h nh vẽ.  
Ta thy t i phân vùng 1, thì bnhlog dành cho luồng 0 là1+2+3= 6 đơn vị bộ  
nh; Bnhlog dành cho lung 1 là (1+2)+4 = 7 đơn vbnh, và Bnhlog dành  
cho lung 2 là (1+2)+3+5= 11 đơn vị bnhớ. Nhƣ vậy thời điểm này, tng tài  
nguyên bnhớ đƣợc s  dng là 6+7+11=24 đơn vị bnh.  
T i phân vùng 2, bnhlog dành cho luồng 0 là 1+2+6=9 đơn vị bnh, bộ  
nhlog dành cho lung 1 là (1+2)= 3 đơn vị bnh; Và bnhlog dành cho lung 2  
là (1+2) = 3 đơn vị bnh. Do đ  tổng tài nguyên bnhớ ở thời đim 2: 9+3+3= 15;  
T i ph n v ng 3  ta t nh đƣợc bnhlog dành cho lung 0 là 1+7= 8 đơn vị bộ  
nh, lung 1 là 1 và luồng 2 là 1 đơn vị bnhớ. Do đ  tổng tài nguyên bnhcho  
phân vùng 3 là 8+1+1=10 đơn vị bnh.  
Nhƣ vậy tng tài nguyên tng hp cho cmô hình này phi là giá trln nht  
ca tài nguyên t i các phân vùng, và giá trị thu đƣợc ở đ y là 24.  
Chúng ta thy rng trong các nghiên cu [2,10,11]  tài nguyên đƣợc ƣớc tính bi  
sgiao dch mnhiu nht hay slog ln nht mà cùng tn t i thời điểm chƣơng  
tr nh đang ch y.  
12  
Nhƣ ch ng ta thấy trong ví dụ này  th  lƣợng bnhyêu cu cho các log đ t ti  
có thkhác so vi kết qukhi tính số lƣợng log ln nhất đ t đƣợc trong các nghiên  
cứu nhƣ [2 11] (c ng v  dụ trên nhƣng trong nghiên cứu [11] thì kết qulà 11).  
13  
CHƢƠNG 2. MỘT SKIN THỨC CƠ SỞ  
2.1. Hthng kiu  
2.1.1. Gii thiu vhthng kiu  
Về định nghĩa hệ thống kiểu  c  rất nhiều quan điểm đƣợc đƣa ra. Trong c c  
ngôn ngữ lập tr nh  hệ thống kiểu đƣợc định nghĩa là tập c c quy tắc để g n thuộc t nh  
đƣợc gi là kiu cho các cu trúc ca một chƣơng tr nh m y t nh bao gồm các biến,  
biu thc, các hàm, hoc module...Theo lý thuyết ngôn ng, mt hthng kiu là mt  
tp các quy tắc quy định cu trúc và lp lun cho ngôn ng. Trong lp trình, hệ thống  
kiểu đƣợc định nghĩa là một cơ chế c  ph p ràng buộc cấu tr c của chƣơng tr nh bng  
việc kết hợp c c thông tin ngữ nghĩa với c c thành phần trong chƣơng tr nh và giới h n  
ph m vi của c c thành phần đ .  
Mục đ ch cơ bản ca hệ thống kiểu là ngăn chặn c c sự cố do c c lỗi thực thi  
trong qu  tr nh chƣơng tr nh ch y [3, 6]. N  đƣợc thực hiện bằng c ch định nghĩa c c  
giao din gia các phn khác nhau ca một chƣơng tr nh m y t nh  và sau đ  kiểm tra  
xem các thành phần đ  đƣợc ghép ni nhất qu n hay chƣa. Việc kim tra này có thể  
xảy ra tĩnh (t i thi gian biên dch), hoc động (t i thi gian ch y), hoc kết hp cả  
kiểm tra tĩnh và động. Ngoài ra hthng kiu c n đƣợc s  dng vi nhiu mục đ ch  
khác, chng h n nhƣ cho phép tối ƣu h a tr nh biên dch nhất định, cung cp mt hình  
thc tài liệu…  
Mt hthng kiu liên kết mt kiu vi mi giá trtính toán, bng cách kim  
tra lung (flow) ca các giá tr, nlực để đảm bo hoc chng minh rng không có li  
kiu có thxy ra.  
Một trong những dấu hiệu của lỗi thực thi là lỗi phần mềm. Chẳng h n lỗi c  
thể là lệnh sai (illegal instruction), tham chiếu bộ nhớ sai luật (illegal memory  
reference) hoặc hƣ h ng dữ liệu (data corruption).  
Một biến c  thể c  một miền gi  trị trong suốt thời gian ch y chƣơng tr nh. Kiểu  
của biến là cận trên của miền đ . V  dụ  nếu một biến x kiểu Integer, gi  trị của n  chỉ  
đƣợc phép là c c gi  trị nguyên trong bất kỳ lần thực thi nào của chƣơng tr nh. Giả s  
x và y c  kiểu Interger  th  biểu thức x/y hợp lệ trong mọi l c thực thi của chƣơng  
tr nh. Ngƣợc l i  nếu những biến này c  kiểu String  th  x/y sẽ là nguyên nh n cho c c  
lỗi ph t sinh kh c. C c ngôn ngữ đƣa ra c c kiểu không tầm thƣờng (non- trivial) cho  
các biến đƣợc gọi là c c ngôn ngữ định kiểu.  
Các ngôn ngữ không định kiểu không giới h n ph m vi gi  trị của c c biến.  
Tất cả c c gi  trị đƣợc chứa trong một kiểu phổ qu t. V  dụ về ngôn ngữ nhƣ vậy là  
assembly  ngôn ngữ này cho phép bất kỳ thao t c (phép tính) nào đƣợc thực hiện trên  
bất kỳ dữ liệu. Dữ liệu trong c c ngôn ngữ đ  đƣợc coi nhƣ khối c c bit.  
Một hệ thống kiểu trong một ngôn ngữ định kiểu theo dõi c c kiểu của c c biến  
và biểu thức trong một chƣơng tr nh. N  x c định liệu một tiến tr nh  một chƣơng trình  
là hành x  đ ng (well behaved) hay không. C c chƣơng tr nh nguồn đƣợc kiểm chứng  
14  
     
bởi hệ thống kiểu để x c định rằng ch ng cần đƣợc xem xét khi c c chƣơng tr nh hợp  
lệ hoặc cần bị lo i b  khi c c chƣơng tr nh không an toàn. Một chƣơng tr nh đƣợc cho  
là an toàn nếu n  không g y ra c c lỗi mà không đƣợc ch  ý trong một thời gian. Nhƣ  
c c lỗi sẽ g y ra hành vi t y ý (arbitrary behaviour). V  dụ cho c c lỗi đ  là truy cập  
địa chi tr i luật (illegal address accessing) (v  dụ : truy cập dữ liệu của bất kỳ mảng  
nào với chỉ số nằm ngoài c c biên của mảng)  nhảy tới địa chỉ sai ( v  dụ bộ nhớ c  
hoặc không thể biểu diễn một luồng lệnh). Ngôn ngữ định kiểu t o ra t nh an toàn bằng  
c ch s  dụng cả kiểm tra tĩnh hoặc cả kiểm tra động lẫn tĩnh cho tất cả chƣơng trình.  
Bằng c ch s  dụng kiểm tra tĩnh  ngôn ngữ định kiểu kiểm tra c c chƣơng tr nh trƣớc  
khi ch y ch ng (v  dụ ở thời điểm compile).Mặt kh c  kiểm tra động đƣợc thực hiện  
khi chƣơng tr nh đang ch y. Một ngôn ngữ c  thể x c định nhƣ tập c c lỗi chẳng h n  
c lỗi cấm. Sau đ   ngôn ngữ kiểm chứng mỗi chƣơng tr nh c  là hành x  đ ng (well  
behaved ) hay không nếu ch ng không g y ra bất kỳ lỗi nào mà không đƣợc phép xảy  
ra. Nói chung, một chƣơng tr nh hành x  đ ng phải là một chƣơng tr nh an toàn . Điều  
đ  c  nghĩa là c c lỗi không đƣợc phép phải bao gồm tất cả c c lỗi không đƣợc lƣu ý  
đ  đƣợc mô tả trong phần trên. Tr i ngƣợc với hành x  tốt là hành x  yếu (ill  
behaved).  
Các ngôn ngkiu có ththc hin kiểm tra tĩnh để đảm bo hành vi tốt và ngăn  
chn tính không an toàn và c c chƣơng tr nh hành x  yếu đƣợc ch y. Quá trình kim  
tra đƣợc gi là trình kim tra kiu (typechecking), và các thuật to n đƣợc s  dng  
đƣợc gi là bkim tra kiểu (typechecker). Chƣơng tr nh đƣợc cho là định kiu tt  
(well typed) nếu nó có thể vƣợt qua bkim tra kiu; Ngƣợc l i nếu không vƣợt qua,  
gọi là định kiu yếu. Java hay Pascal là các ví dvngôn ngs  dng kiểm tra tĩnh .  
Kiểm tra đng là các kim tra trong thi gian thực thi để tìm ra tt ccác li cm.  
ngôn ngữ không định kiu s  dng kiểm tra động để thc thi hành vi tt. Nhng ngôn  
ngnày có thkim tra các phép toán chia, gii h n ca mảng…khi li xy ra.  
Để đ t đƣợc an toàn, các ngôn ngữ định kiu có thcn phi thc hin các kim  
tra trong thi gian ch y. Ví d, gii h n ca mảng thƣờng đƣợc kiểm tra động. Đ  là  
trƣờng hp khi kiểm tra động s  dng bi mt ngôn ngữ định kiu. Vì vy, mt ngôn  
ngữ đ  đƣợc kiểm tra tĩnh không c  nghĩa là chƣơng tr nh đƣợc thc hin hoàn toàn  
mù quáng.  
Theo định nghĩa  một chƣơng trình hành x  tốt th  c ng an toàn. Mục tiêu cơ bản  
ca hthng kiểu là để thc thi an toàn bng cách lo i trtt ccác lỗi không đƣợc  
chú ý trong tt cả c c chƣơng tr nh. Tuy nhiên  hầu hết các hthng lo i này đƣợc  
thiết kế m nh hơn. Ch ng đƣợc s  dng để đảm bo thuc tính hành x  tt, và hoàn  
toàn an toàn. Hthng kiu phân lo i một chƣơng tr nh nhƣ định kiu yếu hoặc định  
kiu tt.  
Mt hthng kiểu đƣa ra c c quy tắc kiu cho mt ngôn nglp trình. Trong hệ  
thng kiu thut toán ca trình kim tra kiểu (typechecking) mà tƣơng ứng vi các  
15  
định nghĩa ngôn ngữ là độc lp vi trình biên dch. Vi hthng kiu cùng lo i, trình  
biên dch khác nhau có ths  dng các thut toán kim tra kiu khác nhau.  
2.1.2. Các thuc tính ca hthng kiu  
Mt hthng kiu có mt sthuc tính sau:  
Khả năng kiểm chứng: Hthng kiu phi có thut toán kim tra kiểu để phân  
lo i c c chƣơng tr nh. Một hthng kiu phi chủ động nm bt li thực thi trƣớc khi  
chúng xy ra.  
Tƣờng minh: Các lp trình viên có thdự đo n nếu một chƣơng tr nh vƣợt qua  
bkim tra kiu. Nếu nó li khi kim tra, nên t m đƣợc lí do mt cách ddàng.  
Khả năng thực thi: C c biến, biu thức nên đƣợc kiểm tra tĩnh càng nhiều càng  
tt. Mặt kh c  ch ng c ng cần đƣợc kim tra động. Snht quán cn đƣợc kim chng  
một c ch thƣờng xuyên.  
2.1.3. Các ng dng ca hthng kiu  
Hthng kiu đ ng vai tr  quan trọng trong công nghphn mm và trong lĩnh  
vc bo mt m ng.  
Đối vi công nghphn mềm  n  đƣợc s  dng trong trình biên dch ca các  
ngôn nglp trình, tối ƣu h a  trong cơ sở dliu và thm chí là mô hình các ngôn  
ngtnhiên… Trong ngôn nglp trình, hthng kiu có các chức năng ch nh sau :  
a. Phát hiện   i  
Khi chƣơng tr nh ch y có thxy ra nhiu lo i li khác nhau. Có li có thtác  
động tức th  đến kết quả chƣơng tr nh nhƣng c  những li tim n mà chỉ làm thay đổi  
dliệu nhƣng không thấy ngay kết qu.  
Ví d: Khi khai báo biến trong C#, nếu ta viết khai b o nhƣ sau:  
bool x;  
Trình biên dch sbáo li không hp lvì không đƣợc phép biến khai báo mà  
không khi t o giá tr. Li này sdng chƣơng tr nh ngay lp tc. Để không bbáo li,  
ta có ths a khai báo trên là : bool x= true;  
Hthng kiu có nhim vụ ngăn chặn các li thc thi, li mà có thxy ra khi  
ch y chƣơng tr nh. Nhƣng khi nhng li này d ng tim tàng, hthng kiu không  
thnhn ra đƣợc. Vì vy độ ch nh x c của hệ thống kiểu phụ thuộc vào nguyên nh n  
g y ra lỗi thực thi. theo dõi kiểu của c c đối số c  thể tìm ra các phần m  lệnh  
không hợp lệ. Hệ thống kiểu c  thể theo dõi sự vắng mặt của lớp nào đ  do lỗi lp  
trình nhvào khả năng ph t hiện lỗi luồng dữ liệu logic.  
Mt sli khi lập tr nh là do s  dng dữ liệu sai ở c c vị tr  chƣa đ ng. Hệ  
thống kiểu  t y theo chƣơng tr nh mà phân vùng gi  trị hợp lệ và kiểm tra ở thời điểm  
ch y chƣơng tr nhxem ph n v ng này đ  th a m n chƣa. Nhvy, lập tr nh viên c  
thể ph t hiện lỗi khi ch y chƣơng tr nh.  
b. Tr u tƣ ng h a  
C c c c thành phần trong một chƣơng tr nh đƣợc trừu tƣợng hóa bi mt số  
kiu dliu. C c kiểu dữ liệu trừu tƣợng (ADT- Abstract Data Type), là cơ sở để định  
16  
   
nghĩa c c kiểu dliu mới  giu đi cấu tr c bên trong của n  vi các thành phn khác  
trong chƣơng tr nh. Nó có thể c  c c giao diện cơ bản  để ẩn đi thông tin và h n chế sự  
phụ thuộc vào c c module kh c. C c ngôn ngữ hƣớng đối tƣợng thƣờng s  dụng c c  
kiểu dữ liệu trừu tƣợng.  
c. Làm tài  iệu  
Trong nhiều ngôn ngữ kiểu tĩnh ví dC, mt sthành phn của chƣơng tr nh  
đ i h i ngƣời lập tr nh phải ch  th ch kiểu thông tin. V  dụ trong C biến phải đƣợc b o  
kiểu gi  trị, mng phải đƣợc khai báo kiu mảng và k ch thƣớc tối đa  c c định nghĩa  
hàm phải đƣợc khai b o kiểu trả về và kiểu của c c đối số.  
d. Tăng hiu quả  
Một chƣơng tr nh đƣợc cho là định kiểu tốt (well-typed) sẽ cung cấp thông tin  
cho tr nh biên dịch, giúp trình biên dch cải thiện qu  tr nh dịch chƣơng tr nh. Đối vi  
c c biến c  kiểu tĩnh  vị tr  thể hiện trong m  m y của c c biến này c  thể đƣợc quyết  
định bởi trình biên dch. Vic này rt có giá trị khi một biến chỉ c  thể một kiểu gi  
trị cố định.  
Trong lĩnh vực bo mt m ng, hthng kiểu đƣợc s  dụng để xác minh các giao  
thc, cu trúc thông tin trên web  đặc bit trong nhân ca mt smô hình bo mật nhƣ  
Java hay JINI.  
Ví dvhthng kiu trong mt trình biên dch  
Hình 2.1 Hthng kiu trong trinh biên dch  
Mt trình biên dịch thƣờng có 3 tr ng thái chính: scanning, syntatic analysis và  
type analysis tƣơng ứng vi 3 chc năng : scanner  parser và type checker. Trong đ   
hthng kiu snm trong bSemantic subroutine, mà type checker là mt thành  
phần trong đ . Với đầu vào là một chƣơng tr nh đƣợc viết bng mt ngôn nglp trình  
cth, scanner ss  dng hu h n các tr ng thái và ánh x  chui kí tự thu đƣợc từ  
đầu vào bng TOKEN. Tiếp theo bng TOKEN này sẽ đƣợc ánh x  sang mt cu trúc  
trừu tƣợng nhcó bparser. Bkim tra kiu typechecker skiểm tra xem chƣơng  
tr nh c  là đnh kiu tt hay không.  
17  
2.2. Giao dch và bnhgiao dch phn mm ( Software Transactional Memory-  
STM)  
2.2.1. Giao dch (Transaction)  
Mt giao dch là mt luồng điều khin mà áp dng mt chui hu h n các thao  
tác nguyên thy (primitive) vào bnh[8]. Hay nói cách khác mt giao dch là mt  
thc thi ca một chƣơng tr nh ngƣời dùng.  
Các hqun trị cơ sở dliu là mt thhin điển hình cho các giao dch trong  
các hthng phn mm ln.  
Giao dch có 4 tính chất  và đƣợc viết tắt ACID nhƣ sau :  
a. Tính nguyên t  (Atomicity): Mt giao dch là mt tp c c thao t c  đƣợc thc  
hin hoc toàn b, hoc không thc hin gì c.  
b. Tính nht quán (Consistency): Mi giao dịch đƣợc thực thi không đƣợc tranh  
chp vi các giao dch khác.  
c. T nh độc lp (Isolation): Ngƣời dùng có thhiểu đƣợc mt giao dch mà không  
cn phi xem xét ảnh hƣởng ca các giao dịch tƣơng tranh kh c đang ch y.  
d. Tính bn vng (Durability): Sau khi giao dịch đ  hoàn toàn thành công  c c  
tr ng thái của n  đƣợc duy trì ngay ckhi hthng gp sc.  
Các tr ng thái ca mt giao dch bao gm:  
Ho t động (Active): Giao dch gitr ng th i này trong khi n  đang thực  
hin.  
Đ ng bộ phn (Partially Committed): Sau khi lnh cuối c ng đƣợc thc  
hin.  
Tht b i (Failed) : Khi giao dch không thtiếp tc thc hiện đƣợc  
Hy b  (Aborted): Nếu giao dch gp tr ng thái tht b i th  sau đ  giao  
dch cn phi khôi phc l i tr ng thái của n  trƣớc khi khởi động giao  
dch. Hy b  là kết qucui của qu  tr nh đ .  
Committed: Sau khi giao dch hoàn toàn thành công, nó sẽ đi vào tr ng  
thái này.  
Hình 2.2 Các trng thái ca giao dch  
18  
   
Tải về để xem bản đầy đủ
pdf 53 trang yennguyen 29/03/2022 6120
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn Tính cận trên bộ nhớ log của chương trình sử dụng giao dịch", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfluan_van_tinh_can_tren_bo_nho_log_cua_chuong_trinh_su_dung_g.pdf