Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
1,34 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN PHAN TÌNHTÍNHCẬNTRÊNBỘNHỚLOGCỦACHƯƠNGTRÌNHSỬDỤNGGIAODỊCH LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN Hà Nội - 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN PHAN TÌNHTÍNHCẬNTRÊNBỘNHỚLOGCỦACHƯƠNGTRÌNHSỬDỤNGGIAODỊCH Ngành: Cơng Nghệ Thơng Tin Chuyên ngành: Kỹ thuật Phần Mềm Mã số: 60480103 LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Trương Anh Hoàng Hà Nội - 2016 LỜI CAM ĐOAN Tôi xin cam đoan luận văn tơi thực hiện, hồn thành hướng dẫn trực tiếp từ PGS.TS.Trương Anh Hoàng Các trích dẫn có nguồn gốc rõ ràng, tn thủ tơn trọng quyền tác giả Luận văn không chép nguyên từ nguồn tài liệu khác Nếu có sai sót, tơi xin chịu trách nhiệm Học viên Nguyễn Phan Tình LỜI CẢM ƠN Để hoàn thành đề tài luận văn bên c nh chủ động cố gắng th n đ nhận ủng hộ gi p đ nhiệt t nh từ c c tập thể c nh n trường Qua đ y cho phép 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 hướng dẫn tận t nh qu tr nh học tập hoàn thành đề tài luận văn Đồng k nh g i lời cảm ơn đến tập thể c c thầy cô gi o 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 điều đ tảng qu b u g p phần to lớn qu tr nh vận dụng vào hồn thiện luận văn Cuối c ng tơi xin 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ật chất c ng tinh thần s t c nh bên động viên gi p yên t m học tập kết th c kh a học Tôi xin ch n thành cảm ơn MỤC LỤC LỜI CẢM ƠN DANH MỤC CÁC KÝ HIỆU, THUẬT NGỮ, CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG .7 DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU Tính cấp thiết đề tài Mục tiêu nghiên cứu Phương ph p nghiên cứu Cấu trúc luận văn CHƯƠNG GIỚI THIỆU BÀI TOÁN .10 1.1 Giới thiệu 10 1.2 Hướng tiếp cận 11 1.3 Ví dụ minh họa 11 CHƯƠNG MỘT SỐ KIẾN THỨC CƠ SỞ 14 2.1 Hệ thống kiểu .14 2.1.1 Giới thiệu hệ thống kiểu .14 2.1.2 Các thuộc tính hệ thống kiểu 16 2.1.3 Các ứng dụng hệ thống kiểu .16 2.2 Giaodịchnhớgiaodịch phần mềm ( Software Transactional Memory- STM) 18 2.2.1 Giaodịch (Transaction) 18 2.2.2 Bộnhớgiaodịch phần mềm (Software Transactional Memory- STM) .19 CHƯƠNG NGÔN NGỮ GIAODỊCH .21 3.1 Cú pháp TM [1] 21 3.2 Các ngữ nghĩa động 21 3.2.1 Ngữ nghĩa cục 21 3.2.2 Ngữ nghĩa toàn cục .22 CHƯƠNG HỆ THỐNG KIỂU CHO CHƯƠNGTRÌNHGIAODỊCH 24 4.1 Các kiểu .24 4.2 Các quy tắc kiểu .27 CHƯƠNG XÂY DỰNG CÔNG CỤ VÀ THỰC NGHIỆM 30 5.1 Giới thiệu ngôn ngữ lập trình/ tảng 30 5.2 Xây dựng công cụ thực nghiệm 30 5.2.1 Thuật toán rút gọn (chính tắc hóa) chuỗi 31 5.2.2 Thuật toán Cộng (Joint) 33 5.2.3 Thuật toán gộp (Merge) 34 5.2.4 Thuật toán JoinCommit 37 5.2.5 Thuật tốn tínhcận tài nguyên chương tr nh giaodịch 40 KẾT LUẬN 50 TÀI LIỆU THAM KHẢO 51 DANH MỤC CÁC KÝ HIỆU, THUẬT NGỮ, CHỮ VIẾT TẮT STT CHỮ VIẾT TẮT, THUẬT NGỮ, KÝ HIỆU GIẢI NGHĨA CHỮ VIẾT TẮT Transactional Ngôn ngữ để viết chương tr nh giaodịch TM – Memory STM Software Bộnhớgiaodịch phần mềm, giải pháp viết Transactional Memory c c chương tr nh song song THUẬT NGỮ 10 11 12 13 14 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Type System Transaction illegal memory reference Data corruption Thread Type checker Type checking Well-behaved Well-formed Ill-behaved Well-typed Ill-typed ADT-Abstract Data Type Illegal instruction Atomicity Consistency Isolation Durability Onacid Commit Nested transactions Multi-threaded Spawn Joint commits Local semantics Global semantics Local enviroments Global enviroments Hệ thống kiểu Giaodịch Tham chiếu nhớ không hợp lệ Hư h ng liệu Luồng Bộ kiểm tra kiểu Trình kiểm tra kiểu Tính chất hành x đ ng chương tr nh Tính chất thiết lập đ ng chương tr nh Tính chất hành x yếu chương tr nh Định kiểu tốt Định kiểu yếu Kiểu liệu trừu tượng Lệnh khơng hợp lệ Tính ngun t Tính qn T nh độc lập Tính bền vững Tr ng thái mở giaodịch Tr ng thái kết thúc giaodịch Các giaodịch lồng Đa luồng Sinh luồng Các commit luồng song song đồng thời thực kết thúc giao tác chung Ngữ nghĩa cục Ngữ nghĩa tồn cục Mơi trường cục Mơi trường toàn cục 33 Syntax + n - n # n ¬ n Cú pháp KÝ HIỆU Mô tả thành phần + hệ thống kiểu dựa chuỗi số có dấu, mở giaodịch c k ch thước n đơn vị nhớ Mô tả thành phần – hệ thống kiểu dựa chuỗi số có dấu, m thao tác commit liên tiếp Mô tả thành phần # hệ thống kiểu,chỉ số đơn vị nhớ lớn s dụng thành phần n Mơ tả thành phần ¬ thể số luồng c ng đồng t i thời điểm joint commits DANH MỤC CÁC BẢNG Bảng 3.1 Bảng cú pháp TM 21 Bảng 3.2 Bảng ngữ nghĩa động TM 23 Bảng 4.1 Các quy tắc kiểu 27 Bảng 5.1 Bảng kết kiểm th hàm rút gọn 33 Bảng 5.2 Bảng kết kiểm th hàm cộng 34 Bảng 5.3 Bảng kết kiểm th hàm gộp 37 Bảng 5.4 Bảng kiểm th hàm JoinCommit 40 DANH MỤC CÁC HÌNH VẼ H nh 1.1 Đo n mã cho mơ hình giaodịch lồng đa luồng 11 Hình 1.2 Mơ hình giaodịch lồng đa luồng 12 Hình 2.1 Hệ thống kiểu trinh biên dịch .17 Hình 2.2 Các tr ng thái giaodịch 18 Hình 4.1 Các luồng song song Joincommit 28 Hình 5.1 Hình mơ tả c c giai đo n tínhcận tài ngun nhớlog 40 Hình 5.2 Mơ hình giaodịch lồng đa luồng cho ví dụ 5.1 41 Hình 5.3 Mơ tả giai đo n thuật tốn tính tài ngun 41 Hình 5.4 Mơ hình giaodịch lồng đa luồng cho thực nghiệm .45 Hình 5.5 Màn hình kết thực nghiệm 45 Hình 5.6 Mơ hình giaodịch lồng đa luồng cho thực nghiệm .46 Hình 5.7 Màn hình kết thực nghiệm 46 Hình 5.8 Mơ hình giaodịch lồng đa luồng cho thực nghiệm .47 Hình 5.9 Màn hình kết ch y thực nghiệm 47 Hình 5.10 Mơ hình giaodịch cho thực nghiệm 48 Hình 5.11 Màn hình kết thực nghiệm 48 Hình 5.12 Mơ hình giaodịch lồng đa luồng cho thực nghiệm .49 Hình 5.13 Màn hình kết thực nghiệm 49 MỞ ĐẦU Tính cấp thiết đề tài Cùng với phát triển v b o khoa học công nghệ, vi x lý đ i ngày thể sức m nh qua nhiều nhân (core) với tốc độ x lý ngày cao Có bên vi x lý thiết kế luồng (thread) có khả ch y x lý song song Trước đ y để lập trình đa luồng, người ta s dụng chế đồng (synchronization) dựa kh a (lock) để p đặt giới h n quyền truy cập tài nguyên mơi trường có nhiều luồng thực thi.Tuy nhiên, áp dụng phương ph p thường nảy sinh vấn đề khóa chết (deadlock) lỗi tiềm tàng… Software Transactional Memory (STM- nhớgiaodịch phần mềm) [8] giải ph p đơn giản vơ c ng m nh mẽ mà giải hầu hết vấn đề N đ thay hoàn toàn giải ph p c việc truy cập nhớdùng chung STM giao tiếp với nhớ thông qua giaodịch Các giaodịch cho phép tự đọc ghi để chia sẻ biến vùng nhớ gọi log s dụng để ghi l i ho t động kết thúc giaodịch Một mơ hình giaodịch phức t p s dụng STM mơ hình giaodịch lồng đa luồng (nested and multi-threaded transaction) [5] Trong trình thực thi c c chương tr nh giaodịch lồng đa luồng, luồng sinh giaodịch bắt đầu, vùng nhớ gọi log cấp phát Các log d ng để lưu l i biến dùng chung, nhờ mà luồng s dụng biến c ch độc lập Vấn đề đặt đ y t i thời điểm chương tr nh ch y liệu lượng nhớcần cấp ph t cho c c log c vượt tài nguyên nhớ máy, hay chương tr nh c thể ch y c ch trơn tru mà không gặp phải lỗi hết nhớ Chính vậy, việc x c định cậnnhớ thời điểm ch y chương tr nhcủa chương tr nh giaodịch vấn đề then chốt c ý nghĩa quan trọng Chính v l đ luận văn thực đ y nghiên cứu s dụng phương ph p ph n t ch tĩnh để giải tốn tínhcậnnhớlogchươngtrình có giaodịchtrình bày, dựa báo đ tác giả công bố [1] Mục tiêu nghiên cứu Luận văn thực dựa nghiên cứu báo [1] Do để hiểu giải pháp tác giả đ đề xuất [1], luận văn tập trung nghiên cứu lý thuyết hệ thống kiểu; Các khái niệm c ng t nh chất giao dịch; Nghiên cứu cú pháp ngữ nghĩa ngôn ngữ TM (Transactional Memory) – Một ngôn ngữ để viết chương tr nh giaodịch Từ việc nắm giải pháp xây dựng hệ thống kiểu đề cập báo, công cụ cài đặt dựa ngôn ngữ C# # Gọi đệ quy joint commit với chuỗi S1= n1 S2 thu 5.2.4.2 Cài đặt kiểm chứng public static string JoinCommit(string s1, string s2) { string[] S1 = ConvertToArray(s1); List M1 = new List(S1); string[] S2 = ConvertToArray(s2); List M2 = new List(S2); string result = ""; int l1, l2, n1, n2; if ((M1[0] == "#") & (M2[0] == "#") & (M1.Count == 2)) 10 { 11 n2 = Int32.Parse(M1[1]); 12 l1 = Int32.Parse(M2[1]); 13 int max = n2 > l1 ? n2 : l1; 14 M2.RemoveRange(0, 2); 15 string t = string.Join("", M2.ToArray()); 16 result = Seq("#" + max.ToString() + t); 17 return result; 18 19 } 20 else 21 { 22 23 if ((M1.Count >= 4) && (M1[M1.Count - 4] == "+") && (M1[M1.Count - 2] == "#")) 24 { 25 if (M2[0] == "!") 26 { 27 l2 = Int32.Parse(M2[1]); 28 n1 = Int32.Parse(M1[M1.Count - 3]); 29 n2 = Int32.Parse(M1[M1.Count - 1]); 30 int x1 = l2 * n1; 31 int n = n1 + n2; 32 M2.RemoveRange(0, 2); 33 M1.RemoveRange(M1.Count - 4, 4); 34 35 string t11 = string.Join("", M1.ToArray()); 36 string t12 = string.Join("", M2.ToArray()); 37 string st1 = Seq(t11 + "#" + n.ToString()); 38 string st2 = Seq("#" + x1.ToString() + t12); 39 40 return JoinCommit(st1, st2); 41 } 42 else if ((M2[0] == "#") & (M2[8] == "!")) 43 { 44 l1 = Int32.Parse(M2[1]); 45 l2 = Int32.Parse(M2[5]); 46 n1 = Int32.Parse(M1[M1.Count - 3]); 47 n2 = Int32.Parse(M1[M1.Count - 1]); 48 int x2 = l1 + l2 * n1; 49 int m = n1 + n2; 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 M2.RemoveRange(0, 4); M1.RemoveRange(M1.Count - 4, 4); string t21 = string.Join("", M1.ToArray()); string t22 = string.Join("", M2.ToArray()); string st3 = Seq(t21 + "#" + m.ToString()); string st4 = Seq("#" + x2.ToString() + t22); return JoinCommit(st3, st4); } } else if (M1[M1.Count - 2] == "+") { if (M2[0] == "!") { l2 = Int32.Parse(M2[1]); n1 = Int32.Parse(M1[M1.Count - 1]); int k1 = l2 * n1; M2.RemoveRange(0, 2); M1.RemoveRange(M1.Count - 2, 2); string t32 = string.Join("", M2.ToArray()); string t31 = string.Join("", M1.ToArray()); string st5 = Seq(t31 + "#" + n1.ToString()); string st6 = Seq("#" + k1.ToString() + t32); return JoinCommit(st5, st6); } else if ((M2[0] == "#") & (M2[8] == "!")) { l1 = Int32.Parse(M2[1]); l2 = Int32.Parse(M2[5]); n1 = Int32.Parse(M1[M1.Count - 1]); int k2 = l1 + l2 * n1; M2.RemoveRange(0, 4); M1.RemoveRange(M1.Count - 2, 2); string t42 = string.Join("", M2.ToArray()); string t41 = string.Join("", M1.ToArray()); string st7 = Seq(t41 + "#" + n1.ToString()); string st8 = Seq("#" + k2.ToString() + t42); return JoinCommit(st7, st8); } else Console.WriteLine("Chuong trinh khong hop le"); } } return null; } Để kiểm tra t nh đ ng đắn thuật toán, ta kiểm tra với c c đầu vào khác thu kết cho bảng sau: Bảng 5.4 Bảng kiểm thử hàm JoinCommit Lư t Chu i +1 #1 +1#2 +2#3 Chu i !1 #1!1 #1 !1 #2!1 Kết #1 #2 #3 #5 5.2.5 Thuật tốn tínhcận tài ngun chươngtrìnhgiaodịch 5.2.5.1 Mơ tả thuật tốn Đầu vào: Chuỗi kết xuất từ chương tr nh Featherweight Java c s dụnggiaodịch Đầu ra: Giá trị cận tài nguyên nhớlogchương tr nh thông báo chương tr nh thành lập không hợp lệ Thuật tốn: Thuật tốn chia nh thành giai đo n sau: Giai đoạn 1: Chuyển chuỗi kết xuất từ m chương tr nh TFJ vào ngăn xếp, đ phần t d ng “(” “)” X, với X chuỗi Giai đoạn 2: Tính giá trị cận tài nguyên cho nhớlog Giai đo n Giai đo n Input String DataStack Gi trị cận tài ngun nhớlog Hình 5.1 Hình mơ tả giai đoạn tínhcận tài nguyên nhớlog Ví dụ 5.1 Tính giá trị cận tài nguyên nhớlogchương tr nh c s dụnggiaodịch với đo n m sau: onacid(1); spawn(onacid(1),commit,commit,commit); commit; Khi đ đ y: đo n mã mơ hình hóa d ng luồng lồng h nh vẽ Hình 5.2 Mơ hình giaodịch lồng đa luồng cho ví dụ 5.1 Với đo n m ta kết xuất x u đầu vào tương ứng: Input= +1(+1-1-1-1)-1 Giai đo n 1: Chuyển x u đầu vào Input thành ngăn xếp Hình 5.3 Mơ tả giai đoạn thuật tốn tính tài ngun Giai đo n 2: Tính giá trị cận tài nguyên với x u đầu vào đ chuyển thành ngăn xếp h nh 5.3 Sau thuật toán cụ thể cho t ng giai đoạn: Giai đoạn 1: Chuyển chuỗi kết xuất từ m chương tr nh TFJ vào ngăn xếp, đ phần t d ng “(” “)” X, với X chuỗi Thuật toán: Bước 1: Nhận giá trị đầu vào xâu Input; Khởi t o DataStack= null để lưu trữ xâu trả về; i=0, biến đếm lưu số cho ký tự; X u S lưu l i giá trị phần t ngăn xếp DataStack Bước 2: Kiểm tra i>= Input.Length trả ngăn xếp DataStack kết thúc Bước 3: Nếu Input[i] = „(‟ Input[i] = „)‟ th S= + Input[i], i=i+1 quay Bước Bước 4: Nếu Input[i] = „(‟ th Bước 4.1: Kiểm tra S.Length>0 đẩy S vào ngăn xếp Bước 4.2: Đẩy “(” vào ngăn xếp, quay Bước Bước 5: Nếu Input[i] = „)‟ th Bước 5.1: Kiểm tra S.Length >0 đẩy S vào ngăn xếp Bước 5.2: Đẩy “)” vào ngăn xếp, quay Bước Giai đoạn 2: Tính giá trị cận tài nguyên cho nhớlog Thuật toán: Bước 1: Đầu vào chuỗi Input đ chuyển ngăn xếp DStack qua giai đo n 1; Khởi t o result= “ ”, result x u lưu l i kết cậnnhớlog Bước 2: Thực ngăn xếp không rỗng Lấy phần t X ngăn xếp, Bước 3: Nếu X = “)” th thực Bước 3.1: Lấy phần t ngăn xếp Y Bước 3.2: Gọi hàm Join(Seq(Y)), kết trả hàm Join(Seq(Y)) chuỗi S12 Bước 3.3: Gán result = Merge(S12,result); Và quay trở l i bước Bước 4: Nếu X = “(” th thực Bước 4.1: Lấy phần t ngăn xếp Y2 Bước 4.2: Gọi hàm Join(Seq(Y2)), kết Join(Seq(Y2)) chuỗi S22 Bước 4.3: Gán result= JoinCommit(S22,result); Và quay trở l i bước Bước 5: Nếu X xâu Bước 5.1: Gọi hàm Join(Seq(X)), kết thu chuỗi S32 Bước 5.2: Nếu result= “ ” gán result= S32; Và quay trở l i bước Bước 5.3: Nếu result = “ ” gán result= JoinCommit(S32,result); Và quay trở l i bước 5.2.5.2 Cài đặt kiểm chứng Cài đặt cho giai đo n 1: public static Stack ConvertStringToStack(string Input) { Stack DataStack = new Stack(); String S = ""; for (int i = 0; i < Input.Length; i++) { if (Input[i] == '(') { 10 if (S.Length > 0) DataStack.Push(S); 11 DataStack.Push("("); 12 S = ""; 13 } 14 else if (Input[i] == ')') 15 { 16 if (S.Length > 0) DataStack.Push(S); 17 DataStack.Push(")"); 18 S = ""; 19 } 20 else S += Input[i]; 21 } 22 if (S != "") DataStack.Push(S); 23 24 return DataStack; 25 } Cài đặt cho giai đo n 2: public static string CalculResourses(string Input) { Stack DStack = ConvertStringToStack(Input); string result = ""; while (DStack.Count > 0) { string X = DStack.Pop(); 10 if (X == ")") 11 { 12 string Y = DStack.Pop(); 13 string S12 = Join(Seq(Y)); 14 result = Merge(S12, result); 15 } 16 else if (X == "(") 17 { 18 string Y2 = DStack.Pop(); 19 20 string S22 = Join(Seq(Y2)); 21 result = JoinCommit(S22, result); 22 23 } 24 else 25 { 26 27 string S32 = Join(Seq(X)); 28 if (result == "") result = S32; 29 else result = JoinCommit(S32, result); 30 31 } 32 33 34 } 35 return result; 36 } Để kiểm tra t nh đ ng đắn thuật toán, ta kiểm tra với c c đầu vào khác qua thực nghiệm sau: Thực nghiệm 1: Tínhcận tài nguyên nhớlogchươngtrình có giao dich, với chuỗi đầu vào: S=+1+1-1(-1)-1 Mơ hình giaodịch lồng đa luồng tương ứng với chuỗi trên: Hình 5.4 Mơ hình giaodịch lồng đa luồng cho thực nghiệm Ch y thực nghiệm chương tr nh ta kết quả: #2 Hình 5.5 Màn hình kết thực nghiệm Thực nghiệm 2: Tínhcận tài nguyên nhớlogchươngtrình có giao dich, với chuỗi đầu vào: S=+1(+1-1-1)-1 Mơ hình giaodịch lồng đa luồng tương ứng cho thực nghiệm sau: Hình 5.6 Mơ hình giaodịch lồng đa luồng cho thực nghiệm Ch y thực nghiệm chương tr nh ta nhận giá trị cậnnhớlog #3 Hình 5.7 Màn hình kết thực nghiệm Thực nghiệm 3: Tínhcận tài nguyên nhớlogchươngtrình có giao dich, với chuỗi đầu vào: S= +2(+2-1-1)-1 Chuỗi mơ h nh h a sau: Hình 5.8 Mơ hình giaodịch lồng đa luồng cho thực nghiệm Ch y thực nghiệm chương tr nh ta nhận giá trị cậnnhớlog #6 Hình 5.9 Màn hình kết chạy thực nghiệm Thực nghiệm 4: Tínhcận tài nguyên nhớlogchươngtrình có giao dich, với chuỗi đầu vào: S= +3+4(+1+2-1-1-1+3-1-1)+5-1-1+6+7+8-1-1-1-1 Chuỗi mơ h nh h a sau: Hình 5.10 Mơ hình giaodịch cho thực nghiệm Ch y thực nghiệm chương trình, ta nhận giá trị cậnnhớlog #30 Hình 5.11 Màn hình kết thực nghiệm Thực nghiệm 5: Tínhcận tài nguyên nhớlogchươngtrình có giao dich, với chuỗi đầu vào: S= +1+2(+4-1-1-1)+3(+5-1-1-1-1)-1+6-1-1+7-1-1 Mơ hình giaodịch lồng đa luồng tương ứng với chuỗi đầu vào là: Hình 5.12 Mơ hình giaodịch lồng đa luồng cho thực nghiệm Ch y thực nghiệm chương tr nh ta nhận giá trị cậnnhớlog #24 Hình 5.13 Màn hình kết thực nghiệm Đánh giá kết thực nghiệm: Qua ch y thực nghiệm công cụ với số trường hợp, kết nhận có giá trị kết mong đợi KẾT LUẬN Qua thời gian nghiên cứu tìm hiểu đề tài, luận văn đ hoàn thành đ t nội dung đề với mục tiêu giải tốn tínhcậnnhớlog cho c c chương tr nh s dụnggiaodịch Về lý thuyết, luận văn đ tr nh bày kiến thức sở hệ thống kiểu nói chung bao gồm định nghĩa hệ thống kiểu, thuộc t nh hệ thống kiểu ứng dụng hệ thống kiểu thực tế Ngoài ra, luận văn c n tr nh bày c c kh i niệm giaodịchnhớgiaodịch phần mềm Tiếp theo, cú pháp ngữ nghĩa ngôn ngữ giaodịch TM c ng giới thiệu luận văn Từ cú pháp ngữ nghĩa ngôn ngữ TM, luận văn đ tr nh bày phương ph p x y dựng hệ thống kiểu để x c định cậnnhớlogchương tr nh s dụnggiao dịch, dựa nghiên cứu tác giả thực báo [1] Một chương tr nh c giaodịch cấu thành từ thành phần bản, thành phần thể hành vi giaodịch định kiểu thông qua d ng chuỗi số đặc biệt, chuỗi số có dấu Hệ thống kiểu trình bày đ y bao gồm kiểu, quy tắc kiểu đ chứa định nghĩa c c phép to n s dụng để định kiểu cho thành phần chương tr nh s dụnggiaodịch Về thực nghiệm, công cụ viết ngôn ngữ C# đ cài đặt để tínhcậnnhớlogchương tr nh s dụnggiaodịchChương tr nh bao gồm c c phương thức xây dựng để thực c c phép to n r t gọn chuỗi số có dấu, gộp chuỗi số có dấu Joincommit…Và đặc biệt phương thức để tínhcậnnhớlogChương tr nh đ thực nghiệm với nhiều chuỗi kết xuất từ chương tr nh giaodịch khác cho kết tương đối xác Tuy nhiên, thời gian có h n tài liệu nghiên cứu liên quan chưa nhiều Hơn nữa, đ y đề tài khó, đ i h i đầu tư nhiều thời gian công sức nên luận văn không tr nh kh i h n chế Trong q trình nghiên cứu đề tài, chúng tơi c ng nhận thấy kết nghiên cứu dừng mức độ thực kiểm chứng mặt lý thuyết mà chưa kiểm chứng thực tế Do tương lai hi vọng đề tài nghiên cứu kiểm chứng thực tế Nếu thành công, kết đ t đ ng g p đ ng kể vào việc tối ưu c c chương tr nh phần mềm làm tăng hiệu s dụng tài nguyên nhớ TÀI LIỆU THAM KHẢO Tiếng Anh [1] Anh-Hoang Truong, Ngoc-Khai Nguyen, Dang Van Hung, and Dang Duc Hanh (2016) “Calculate statically maximum log memory used by multi-threaded transactional programs”, Theoretical Aspects of Computing – ICTAC 2016, pp 82-99 [2] Anh-Hoang Truong, Dang Van Hung, Duc-Hanh Dang, and Xuan-Tung Vu, “A type system for counting logs of multi-threaded nested transactional programs” In Nikolaj Bjørner, Sanjiva Prasad, and Laxmi Parida, editors, Distributed Computing and Internet Technology - 12th International Conference, ICDCIT 2016, Proceedings, volume 9581 of LNCS, pp 157-168 [3] Hoang Truong (2006), Type Systems for Guaranteeing Resource Bounds of Component Software, Dissertation for the degree Philosophiae Doctor (PhD) University of Bergen, Norway [4] Igarashi Atsushi Pierce Benjamin C Wadler Philip (2001) “Featherweight Java: a minimal core calculus for Java and GJ” Journal ACM Transactions on Programming Languages and Systems, Volume 23, pp 396- 450 [5] Jiang Hui,Lin Dong Zhang Xingyuan Xie Xiren(2001) “Type System in Programming Languages” Journal of Computer Science and Technology, Volume 16, pp 286-292 [6] Luca Cardelli (1996) “Type system”, ACM Computing Surveys (CSUR),Volume 28 Issuse1, pp 263-264 [7] Martin Steffen and Thi Mai Thuong Tran (2009) “Safe commits for Transactional Featherweight Java” Integrated Formal Methods, pp 290-304 [8] N.Shavit, and D.Touitou (1995) “Software Transational Memory” Proceeding PODC '95 Proceedings of the fourteenth annual ACM symposium on Principles distributed computing, pp 204-213 [9] Thi Mai Thuong Tran O.Owe and Martin Steffen (2010) “Safe typing for transactional vs lock-based concurrency in multi-threaded Java” KSE '10 Proceedings of the 2010 Second International Conference on Knowledge and Systems Engineering, pp.188-193 [10] Thi Mai Thuong Tran Martin Steffen and Hoang Truong (2011) “Estimating Resource Bounds for Software Transactions” SEFM 2013 Proceedings of the 11th International Conference on Software Engineering and Formal Methods, Volume 8137, pp 212-228 [11] Xuan-Tung Vu, Thi Mai Thuong Tran, Anh-Hoang Truong, and Martin Steffen “A type system for finding upper resource bounds of multi-threaded programs with nested transactions”, In Symposium on Information and Communication Technologys 2012, SoICT ‟12, Halong City, Quang Ninh, Viet Nam, August 23-24, 2012, pp 2130 ... giao dịch c giao dịch cha gọi giao dịch mà sinh giao dịch cha giao dịch Các giao dịch phải đ ng trước giao dịch cha Hơn nữa, giao dịch gọi đa luồng (multi-threaded) luồng sinh ch y bên giao dịch. .. tr nh giao dịch Trong chương cú pháp ngữ nghĩa ngôn ngữ TM trình bày cụ thể Chương 4: Hệ thống kiểu cho chương trình giao dịch Nghiên cứu hệ thống kiểu để giải tốn tính cận nhớ log cho chương. ..ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN PHAN TÌNH TÍNH CẬN TRÊN BỘ NHỚ LOG CỦA CHƯƠNG TRÌNH SỬ DỤNG GIAO DỊCH Ngành: Cơng Nghệ Thông Tin Chuyên ngành: Kỹ thuật Phần Mềm Mã số: