Dn án đưoc đe xuat thnc hi¾n trong thòi gian 3 vói các giai đoan như sau: Sú dnng Gnash làm máy Flash trên “Beagle Board”2 môi trưòng Linux ho tro đo hoa OpenGLES.. 1.3 Cách tiep c¾nTrư
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
XÂY DỰNG ĐỒ HỌA 3D DỰA TRÊN CÔNG NGHỆ
FLASH DÀNH CHO THIẾT BỊ NHÚNG
PHƯƠNG PHÁP XỬ LÝ 3D CỦA PAPERVISION3D
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công Nghệ Thông Tin
i
Trang 2Lời cám ơn
Trưóc tiên, em muon gúi lòi cám ơn sâu sac nhat đen hai thay giáo Các thay đã tận tình hưóng dan chúng em trong hoc tập, đong thòi tao đieu kiện trong công việc nghiên cúu tai phòng thí nghi¾m Toshia- Coltech suot hai năm qua
Chúng em xin bày tó lòng cám ơn đen nhung thay cô giáo công tác, giáng day tai trưòng đai hoc Công Ngh¾ - Đai hoc Quoc Gia Hà N®i Nhung kien thúc, phương pháp qúy báu thay cô truyen đat se là hành trang giúp chúng em vung bưóc trong tương lai
Tôi xin cám ơn các thành viên phòng thí nghi¾m Toshiba-Coltech, các ban đã cho tôi nhieu ý kien qúy báu khi thnc hi¾n khóa lu¾n
Cuoi cùng con xin gúi tói bo me và toàn the gia đình lòng biet ơn và tình cám yêu thương sâu sac nhat
i
Trang 3Tóm tat n®i dung
Ngày nay, thiet b% di đ®ng tró nên pho bien và mang lai nhieu ti¾n ích trong cu®c song Vói sn phát trien cúa đo hoa máy tính, giao di¾n các úng dnng ngày càng đep mat
và thân thi¾n vói ngưòi dùng Đo hoa ba chieu đưoc sú dnng r®ng rãi trên máy tính cá nhân hay nhung thiet b% có cau hình manh và mang lai hi¾u quá to lón Tuy nhiên, thiet b% nhúng có cau hình thap hơn bói v¾y chúng ta can phái xây dnng h¾ thong phù hop đe đáp úng đưoc nhu cau ve toc đ® xú lý và hien th%
Khóa lu¾n t¾p trung tìm hieu phương pháp xú lý đo hoa 3D cho thiet b% di đ®ng
i
Trang 4Mnc lnc
1 Đ¾t van đe 1
1.1 Thnc trang 1
1.2 Pham vi nghiên cúu 2
1.3 h tiepCác c¾n 3
1.4 t r úcCau khoá lu¾n 3
2 Cơ sé lý thuyet 4 2.1 Công ngh¾ Flash 4
2.1.1 Giói thi¾u 4
2.1.2 Ngôn ngu ActionScr ipt 5
2.1.3 T ¾p tin SWF 5
2.1.4 Flash Pla yer 6
2.2 Gnash 7
2.2.1 Giói thi¾u 7
2.2.2 Mô hình x ây dnng 8
2.2.3 Cơ c he hoat đ®ng 8
2.3 T ama r in - A VM2 9
2.3.1 Giói thi¾u 9
2.3.2 Kien trúc, nguyên lý hoat đ®ng 9
2.3.3 B® biên d%c h JIT 11
2.3.4 B® thông d%c 12
2.3.5 Quán lý b® nhó 12
i
Trang 52.4 Papervision3D 15
i
Trang 6M UC LUC
2.4.1 Giói thi¾u 15
2.4.2 Kien trúc, thành phan 16
2.4.3 M®t so ket lu¾n 22
2.5 trưòngMôi đo hoa OpenGLES trên Po w erVR 23
3 Ky thu¾t xN lý đo hoa 3D Flash 25 3.1 Mô tá bài toán 25
3.2 hìnhMô đe xuat 25
3.2.1 Ý tưóng 25
3.2.2 Giái pháp 26
4 ThNc nghi¾m 27 4.1 quáKet thnc thi 28
4.1.1 Cau tao cúa ABC 28
4.1.2 Cau hình phan cúng can thiet 28
4.2 Minh hoa thnc nghi¾m 28
5 Ket lu¾n và hưéng phát trien 30 5.1 lu¾nKet 30
5.2 Hưóng phát trien .30
A Kieu v à t ¾p l¾nh t r ong A VM2 31 A.1 M®t so kieu du li¾u trong A VM2 31
A.2 T óm tat t¾p l¾nh A VM2 31
C Mã nguon c hương trình Papervision3D 35
iv
Trang 7Danh sách hình ve
1.1 đoBieu hien th% tr nc q uan 3D 1
1.2 T ong q uan dn án 2
2.1 t r úcCau t¾p Flash 5
2.2 Minh hoa thé trong t¾p SWF 6
2.3 Hoat đ®ng cúa A dobe Flash Pla yer phiên bán 9 7
2.4 hình FlashMô player thnc thi Papervision3D 8
2.5 c heCơ hoat đ®ng cúa Gnash 9
2.6 Kien t r úc A VM 10
2.7 Minh hoa đoan mã đưoc thnc thi bói A VM2 11
2.8 Hoat đ®ng cúa N anojit trong tamarin 12
2.9 Minh hoa thu¾t toán mark/sw eep 13
2.10 tham Loi c hieu vòng 14
2.11 dnngSú thu¾t toán ba màu 15
2.12 K y thu¾t đo hoa 3D trong đo hoa máy tính 16
2.13 hìnhMô x ây dnng thư vi¾n Papervision3D 17
2.14 Thành phan 3D trong đo hoa máy tính 17
2.15 Quan h¾ giua các g ói trong Papervision3D 19
2.16 Scene3D 19
2.17 Camera trong Papervision3D 21
2.18 wportVie trong Papervision3D 21
2.19 y dnngXâ R ender 22
3.1 Mô hình ket hop tamarin và Gnash 26
v
Trang 8D ANH SÁCH HÌNH VE
4.1 hìnhMô xú l ý 3D 284.2 Thnc thi 3D cúa Papervision3D trên Flash Pla yer 29
vi
Trang 9Báng tN viet tat
v
Trang 10Hình 1.1: Bieu đo hien th% trnc quan 3D
1 Personal Digital Assitants
1
Trang 111.2 Pham vi nghiên cNu
Khóa lu¾n này đưoc trình bày trong khuôn kho dn án xây dnng h¾ thong xú lý
đo hoa 3D và framework sú dnng các thu¾t toán xú lý, sap xep du li¾u Mnc tiêu khóa lu¾n là chúng minh đưoc tính khá thi cũng như tính công ngh¾ áp dnng trong dn án
Dn án đưoc đe xuat thnc hi¾n trong thòi gian 3 vói các giai đoan như sau:
Sú dnng Gnash làm máy Flash trên “Beagle Board”2 môi trưòng Linux ho tro đo hoa
OpenGLES
• Giai đoan hai: xây dnng các thu¾t toán, mau xú lý du li¾u 3D
• Giai đoan ba: làm m%n các ket quá ó giai đoan hai
Output
3D data visualization 3D visualization algorithm Data analysis Screen resolution
OpenGL/ES 2.0 Environment
LINUX OS
Beagle Board
Hình 1.2: Tong quan dn ánTrong giai đoan đau tiên, chúng tôi hưóng đen phương pháp xú lý đo hoa 2D, 3D Flash dna vào OpenGLES trên h¾ thong nhúng
2 http://beagleboard.org/
C HƯƠNG 1: Đ ¾T VAN
1
Trang 121.3 Cách tiep c¾n
Trưóc het, đe hieu đưoc ve công ngh¾ Flash, chúng tôi3 t¾p trung vào thành phan liên quan bao gom: ngôn ngu AS, trình chơi Flash4, máy áo, t¾p tin Tuy nhiên, công ngh¾ Flash cúa Adobe khép kín và mang tính thương mai nên gây cán tró cho vi¾c tìm hieu Nguon tài li¾u tham kháo rat han che Do v¾y, lna chon cúa chúng tôi là tiep c¾n nhung phan mem nguon mó, dna vào đó đe phát trien cho dn án
1.4 Cau trúc khoá lu¾n
Các phan còn lai cúa khóa lu¾n có cau trúc như sau:
• Chương 2 là cơ só lý thuyet công ngh¾ Flash, mô hình và nguyên tac hoat đ®ng cúa các dn án nguon mó chúng tôi quan tâm: Gnash, Tamarin, Papervision3D
• Chương 3 mô tá bài toán xú lý 3D Flash trên thiet b% di đ®ng, đong thòi đe xuat ý tưóng, giái pháp và mô hình cho bài toán đó
giái pháp đã nêu trong chương 3
• Chương 5 tong ket nhung gì đã đat đưoc trong quá trình nghiên cúu, đong thòi đưa ra hưóng phát trien trong giai đoan tiep theo
3 Nhóm sinh viên nghiên cúu tai phòng thí nghi¾m Toshiba-Coltech
Trang 134 Flash Player
Trang 14CHƯƠNG 2
Cơ sé lý thuyet
Đe giái quyet bài toán trong khóa lu¾n này, chúng tôi tìm hieu m®t so van đe ve
lý thuyet: công ngh¾ Flash, trình chơi Flash nguon mó - Gnash[1], máy áo
OpenGLES trên h¾ thong nhúng
Các phan mem, dn án nguon mó trong pham vi dn án có rat ít tài li¾u kèm theo
Do v¾y, vi¾c tìm hieu các van đe lý thuyet liên quan tói các mã nguon mó cũng là công vi¾c chúng tôi tn khám phá, và xây dnng lai các mô hình dna trên nhung nghiên cúu đó
Các t¾p Flash thnc thi đưoc trên Flash Player ó nhieu nen táng h¾ đieu hành
1 Công ty lón chuyên ve phan mem xú lý đo hoa
4
Trang 152.1.2 Ngôn ngÑ ActionScript
AS là ngôn ngu theo k%ch bán dna vào ECMAScript, đưoc thiet ke bói công
ty Macromedia2 Hi¾n tai, AS đưoc só huu bói Adobe Tù năm 1998 đen nay, ngôn ngu
AS đã có ba phiên bán Phiên bán mói nhat ActionScript 3.0 có nhieu cái tien và khác bi¾t hoàn toàn so vói hai phiên bán trưóc đó
L¾p trình ngôn ngu AS tao ra đưoc chương trình là các t¾p SWF ve giái trí, đo hoa
thông qua các công cn phát trien l¾p trình và b® biên d%ch asc 3
2.1.3 T¾p tin SWF
phim hình và âm thanh lên Internet Flash Player là phan mem ho tro chơi t¾p SWF, Gnash cũng là phan mem nguon mó chúc năng tương tn
Đ%nh dang t¾p SWF đưoc thiet ke ti¾n dnng cho vi¾c truyen du li¾u qua mang Internet, không phái cho chuyen đoi đo hoa giua các trình chính súa Phiên bán hi¾n tai cúa SWF là 10 tương úng vói Flash Player 10 cúa hãng Adobe T¾p Flash có the đưoc tao ra tù nhung công cn l¾p trình cúa Adobe như: Flash, Flex Builder (sú
và trình chơi chò xú lý khung hình tiep theo
Header File Attribute
Trang 16Hình 2.2 minh hoa các thé trong t¾p SWF sau khi đưoc phân tích dưói dang XML
và tách ra dang ABC Chúng ta có the nh¾n thay cau trúc này bao gom tuan tn các thé
2 Công ty sán xuat phan mem xú lý đo hoa
3 ActionScript Compiler
C HƯƠNG 2: C Ơ S6 LÝ
1
Trang 17liên tiep và giá tr% Ví dn như thé tiêu đe (header) có các thu®c tính chính cho t¾p Flash là so lưong khung hình, tí l¾ khung Thé thu®c tính t¾p (file attribute tag) chí có
ó SWF phiên bán 8 tró đi 6 hình 2.2 thay thé DoABC, thé này chúa thông tin ve các hang, thé DoABC chí có ó AS 3
Hình 2.2: Minh hoa thé trong t¾p SWF
2.1.4 Flash Player
Flash Player [6] là phan mem chơi các t¾p SWF, đưoc sú dnng trong trình duy¾n Web ho¾c cài đ¾t trnc tiep trên h¾ đieu hành Flash Player dùng ky thu¾t hien th% đo hoa véc tơ đe giám thieu toi đa dung lưong t¾p, sú dnng ít băng thông mang và giám thòi gian tái t¾p Nhieu trình duy¾t hi¾n nay ho tro vi¾c cài đ¾t Flash Player làm trình chơi t¾p SWF như: Mozilla Firefox, Safari, IE, Opera Flash Player có nhieu phiên bán tương thích vói các nen táng, kien trúc khác nhau trên máy tính hay thiet b% di đ®ng
Nguyên tac hoat đ®ng chung
Tù năm 2006, tương úng vói ngôn ngu AS 3.0 là Flash Player phiên bán 9 Quá trình thnc thi t¾p Flash bói Flash Player 9 dưói hình 2.3 như sau:
Trang 18• Đau tiên t¾p SWF đưoc phân tích ra làm 2 thành phan ABC và Control Tags (các tag đieu khien).
và AVM2), vi¾c xác đ%nh phiên bán cúa ngôn ngu AS tưng úng vói ABC se quyet đ%nh giao quyen xú lý cho máy áo nào
• Sau đó, các thé đieu khien đưoc đưa vào Display List 4
ve đau ra cho chương trình
Hình 2.3: Hoat đ®ng cúa Adobe Flash Player phiên bán
9
Hoat đ®ng cúa Flash Player véi Papervision3D
Flash Player ho tro thnc thi Papervision3D vì nó có hai máy áo hoat đ®ng bên trong Máy áo thnc thi 3D Flash là AVM2 Hình 2.4 minh hoa cơ chet hoat đ®ng cúa Flash Player thnc thi 3D Flash - Papervision3D
2.2 Gnash
2.2.1 Giéi thi¾u
Gnash là m®t úng dnng nguon mó đưoc phát trien bói dn án GPLFlash Phan mem này thnc thi các t¾p tin Flash đ®c l¾p ho¾c là plug-in5 đe thnc thi Flash đưoc
Trang 19nhúng vào Web Chúc năng cúa Gnash cũng như Adobe Flash Player đã giói thi¾u ó trên.
4 Thành phan trong xú lý Flash
5 Phan mem cài thêm vào trình duy¾n
Trang 20Flex Builder (Flex SDK) Papervsion3D AVM1
AS1,2
SWF
Displaying
Tamarin-AVM2 AS3
Hình 2.4: Mô hình Flash player thnc thi Papervision3D
Gnash đưoc giói thi¾u lan đau tiên vào năm 2005 bói John Gilmore[1] và đúng đau nhóm phát trien là Rob Savoye[1]
2.2.2 Mô hình xây dNng
Mô hình xây dnng đưoc đe c¾p chi tiet trong khóa lu¾n cúa ban Đinh Anh
Thái, ngưòi cùng tôi tham gia nghiên cúu trong dn án này Nhò nhung ket quá tìm
hieu ve Gnash cúa ban, tôi mô hình cách xú lý Flash cúa Gnash ó phan tiep theo.
2.2.3 Cơ che hoat đ®ng
Gnash xây dnng hai máy áo đe thnc thi ABC Máy áo AVM1 ho tro xú lý AS 1.0, 2.0, máy áo AVM2 chưa ho tro het cho AS 3.0 Do đó, vói 2D Flash hien th% đưoc đưoc trên Gnash còn Papervision3D và đa so chương trình AS 3.0 là không
Gnash nh¾n đau vào là t¾p SWF, sau khi đi qua b® swfparser, tách đưoc thành
phan cúa ABC Sau đó, các thành phan ABC se đưoc xú lý bói máy áo AVM6 Cuoi cùng, đau ra cúa máy áo ket hop vói phan hien th% cúa Gnash là ket quá cúa chương trình Hình 2.5 mô tá hoat đ®ng cúa Gnash
6 Se đưoc nêu rõ trong phan tiep theo
Trang 21Hình 2.5: Cơ che hoat đ®ng cúa Gnash
2.3.1 Giéi thi¾u
Tamarin là 1 dn án nguon mó cúa Mozilla7 Mnc đích cúa dn án là xây dnng máy
áo AVM2[7] thnc thi ngôn ngu AS 3.0 vói hi¾u suat cao Máy áo Tamarin đưoc sú dnng bên trong phan mem Adobe Flash Player đã đe c¾p ó trên, và còn có the đưoc
sú dnng vói các dn án khác ngoài Adobe Mnc đích cúa Mozilla là xây dnng tamarin đe
đưa vào bên trong Mozilla TraceMonkey - máy JavaScript dùng cho trình duy¾t Web Mozilla Firefox 8
Ngoài ra, mnc đích dn án Tamarin là ho tro đa nen táng phan cúng, bao gom cá ARM9 Cho b® vi xú lý x64 và h¾ đi¾n toán 64 bit vói 2 mnc tiêu: cái tien hi¾u năng thòi điem thnc thi (run-time) và phát trien b® biên d%ch ó thòi điem thnc thi (run-time compiler)
2.3.2 Kien trúc, nguyên lý hoat đ®ng
Máy áo Tamarin - AVM2 nh¾n đau vào là t¾p ABC10 thu đưoc sau khi phân
tích t¾p Flash B® abc parser phân tích tiep t¾p ABC đe lay ra nhung mã bytecode đe chyen cho quá trình xác thnc tiep theo Bytecode Verifier Tai đây, nhung mã
Bytecode chúa l¾nh đơn gián se đưoc b® thông d%ch -Interpreter xú lý và nhung mã
chúa l¾nh phúc tap se chuyen sang cho b® biên d%ch JIT - JIT Compiler Ket thúc quá
trình này, máy áo se chuyen sang thnc thi đoi tưong trên h¾ thong th¾t, chuyen toàn b® các l¾nh trên máy áo sang cho b® xú lý cúa máy th¾t và đưoc quán lý b® nhó -
Memory Manager /Garbage Collector Các bưóc thnc hi¾n trên đưoc minh hoa ó hình
2.6
Trang 227 http://www mozilla.or g/
8 Trình duy¾n Web pho bien hi¾n nay
9 B® xú lý cho thiet b% nhúng
10 có dang *.abc
Trang 23SWF ABC
.abc parser
JIT Compiler
Runtime System (Type System, Object Model)
Memory Manager / Garbage Collector
Hình 2.6: Kien trúc AVMThnc thi t¾p Flash qua nhieu giai đoan, chi tiet như sau Đau tiên, tù mã nguon
AS đưoc tao ra bói ngưòi l¾p trình, tiep theo trình biên d%ch asc cúa FlexSDK sú dnng
và tao ra mã trung gian có trong t¾p ABC và MIR Các mã trung gian vói mnc đích tao
ra tính di đ®ng cho chương trình Flash mà không phn thu®c vào nen táng h¾ đieu hành khác nhau Tù các mã trung gian này, b® biên d%ch JIT sinh ra mã th¾t tùy thu®c vào nen táng b® xú lý cúa phan cúng sú dnng Ví dn 2.7 minh hoa quá trình chuyen đoi, sinh mã trung gian và mã máy cho hai b® xú lý khác nhau
Đe hieu thêm ve t¾p l¾nh và kieu du li¾u, có the xem ó phn lnc A
MIR là mã trung gian dùng trong AVM, mã này đ®c l¾p vói mã máy th¾t Ưu điem cúa MIR là đơn gián, gan vói mã máy v¾t lý, là thành phan trung gian giua
bytecode MIR đưoc thiet ke đe toi ưu quá trình biên d%ch giua mã chương trình vói mã
máy, do đó vi¾c l¾p trình trên nen táng h¾ đieu hành không b% ràng bu®c bói môi trưòng
T¾p ABC đưoc xú lý AVM2 qua bon bưóc chính gom nap, liên ket, xác thnc
và thnc thi như sau:
• Quá trình nap, t¾p ABC đưoc đoc vào b® nhó, giái mã và phân tích;
Trang 24• Trong quá trình liên ket, m®t so tên đưoc tham chieu tù vùng riêng cúa cau trúc t¾p ABC đe xú lý và sau đó trá lai ket quá là m®t cau trúc du li¾u phúc tap hơn rat nhieu
Trang 25AS3.0 function (x:int) : int { return x+10 }
.abc getlocal 1 pushint 10 add returnvalue
#(eap+8) mov r1, #r0 add r2, r0, r1 retHình 2.7: Minh hoa đoan mã đưoc thnc thi bói AVM2liên ket các đoi tưong cùng nhau;
• Quá trình xác thnc là tương tác giua đoi tưong, đoi tưong phái đưoc goi tưòng minh;
tính toán Vi¾c xác thnc vói các luong l¾nh xáy ra liên tnc: l¾nh này không đưoc nam ngoài máng bytecode;
• Quá trình xác thnc đưoc thnc hi¾n ó tat cá các bưóc trên Tai moi bưóc, neu
xuat hi¾n loi, AVM đưa ra thông đi¾p Verify Error đe có the bat loi chương trình;
Trong phan tiep theo se đi sâu vào cơ che hoat đ®ng cúa các thành phan chính
mà chúng liên quan đen hi¾u suat cúa máy áo Tamarin-AVM2.
2.3.3 B® biên d%ch JIT
Giéi thi¾u
M®t h¾ thong can chuyen mã b¾c cao ho¾c mã bytecode sang mã máy ó thòi điem thnc thi, chí ngay trưóc khi goi đoan mã đó Biên d%ch JIT[8] là ky thu¾t chính đưoc cài đ¾t ó hau het các máy áo cúa Microsoft NET 11 và Java12 B® biên d%ch
này đưoc sú dnng nhieu trong các dn án cúa Mozilla và có tên Naojit[9]
Nanojit là thư vi¾n C++ thnc thi đa nen táng, nhi¾m vn cúa nó là sinh ra mã máy
Trang 2611 Framework cúa Microsoft
12 Công ngh¾ cúa Sun Micro System
Trang 27Đau vào cúa Nanojit là (Low-level Intermediate Representation) luong l¾nh mã trung gian b¾c thap nanojit.
Cơ che hoat đ®ng
Máy áo tamarin sú dnng Nanojit tao ra đoi tưong nanojit::LirBuffer đe lưu l¾nh LIR Ngoài ra đoi tưong nanojit cũng đưoc sinh ra đe ghi các l¾nh lưu ó nano::LirBuffer vào b® đ¾m Sau đó, b® đ¾m có the gói các LibBufWriter vào 0 ho¾c nhieu đoi tưong Lir- Writer Chuoi l¾nh sap xep trong đoi tưong LirWriter có dang đưòng ong Moi LirWriter có the toi ưu ho¾c thnc thi nhi¾m vn trong chương trình cho h¾ thong và cho LirBuffer
Moi lan vói các l¾nh trong LirBuffer, AVM2 goi hàm nanojit::compile() đe tao
ra mã máy Mã máy này đưoc lưu trong nanojit::Fragment Cơ che hoat đ®ng cúa
naonojit::
LirWriter Instruction LirWriter Instruction LirWriter
nanojit::
Fragment Machine code Machine code Machine code Machine code
Instruction
Hình 2.8: Hoat đ®ng cúa Nanojit trong tamarin
2.3.4 B® thông d%ch
B® thông d%ch cúa h¾ thong đong thòi giái mã l¾nh và thnc thi nó bang các hàm đưoc viet bang các ngôn ngu l¾p trình b¾c cao Trong ngôn ngu AS, phương thúc đưoc khai báo tĩnh vói toi đa so lưong ngăn xep và du li¾u cnc b® can thiet Do đó b® thông d%ch cap phát cho moi phương thúc m®t máng con tró tói đoi tưong cúa ngăn xep
2.3.5 Quán lý b® nhé
Quán lý, don dep b® nhó (Memory management/Garbage Collection) Cơ che hoat đ®ng cúa MMgc[10]:
Trang 28MMgc sú dnng thu¾t toán pho bien là mark/sweep đưoc minh hoa ó hình 2.9 Moi đoi tưong trong h¾ thong đưoc ket hop vói nhau bói bit đánh dau don dep b® nhó thnc
Trang 29hi¾n gom 2 bưóc: đánh dau và quét Trong bưóc đánh dau, tat cá các bit đánh dau đưoc xóa là chưa mark Khoi don dep đưoc xem như là con tró "root"- điem bat đau tai
du li¾u cúa các úng dnng Nó bat đau xét tat cá các đoi tưong, bat đa tù "root" và mó r®ng ra ngoài Vói moi đoi tưong nó g¾p, bit đánh dau đưoc gán
root
Nhưoc điem: thu¾t toán đưoc tách nhó ra gom ClearMarks/Mark/Finalize/Sweep Cài đ¾t thnc te ClearMarks/Finalize/Sweep đoi vói GC thnc hi¾n cho tat cá đoi tưong Ta thay, mark không can thnc hi¾n đau tiên do nó can phái đoi Sweep, tương tn bưóc hoàn thành vi¾c don dep không can phái thnc hi¾n trong 1 chu kỳ Vì thòi gian sú dnng ó bưóc Mark nên hi¾u năng cao không tăng
Conservation Collection (Thu don báo toàn): MMgc là b® don dep kieu mark/sweep báo toàn, có nghĩa là nó không thu hoi tat cá b® nhó khi có the làm Quyet đ%nh "báo toàn" và không thu hoi b® nhó có the không đưoc sú dnng thính
marked=false
Trang 30thoáng thnc hi¾n theo cài đ¾t cúa thu¾t toán Đe có sn báo toàn này, MMgc xem như moi vùng b® nhó có chúa con tró GC Trưòng hop xau xáy ra, khi vùng b® nhó chúa con tró GC nhưng thnc sn nó
Trang 31không có du li¾u, như v¾y xáy ra "memory leak" "Memory leak" se tăng theo thòi gian, chương trình cúa chúng ta se tiêu ton hàng trăm Mega Bytes Nhưng vói b® thu hoi báo toàn (conservation GC) thnc hi¾n ngau nhiên, van đe b® nhó b% lãng phí tăng nhanh theo thòi gian không dien ra.
Deferred Reference Counting (DRC) MMgc sú dnng DRC DRC là chien thu¾t đe lay đoi tưong trung gian thu hoi lai trong khi MMgc van thnc hi¾n vói hi¾u năng cao Đây là 1 kieu quán lý b® nhó tn đ®ng Tuy nhiên khi g¾p phái hai đoi tưong A và
B như ó hình 2.10 có bien đem và tham chieu đen nhau se gây ra loi, bien đem cúa chúng se khác 0 khi mà không có đoi tưong nào trong h¾ thong tró đen nó Các đoi tưong này se không bao giò b% húy Vi¾c này se làm b® nhó lãng phí tăng lên nhanh chóng, hi¾u năng chương trình giám
next
A
prev
Hình 2.10: Loi tham chieu vòng
Zero Count Table (Báng đem không): Khi tham chieu cúa đoi tưong đưoc đem là
0, neu nó b% húy ngay l¾p túc có the gây ra con tró lac (dangling pointer) trên stack Đe giái quyet van đe này, sú dnng cơ che goi là ZCT Khi m®t đoi tưong có tham chieu đưoc đem 0 thì nó không b% húy ngay mà đưa vào ZCT Khi báng ZCT đay, nó bat đau húy m®t vài đoi tưong
Incremental Collection: Flash Player sú dnng hoat hoa và phim hình do đó mà nó phái duy trì tí l¾ các hình đơn phù hop Úng dnng thnc thi nó càng tró nên lón và tiêu ton nhieu b® nhó Đieu không may là Flash Player sú dnng thòi gian tam dùng là 60s
đe cho vi¾c thu hoi b® nhó, đieu này có the gây ra vi¾c tam dùng không giói han đưoc Dùng công vi¾c cúa GC là cách tránh tam dùng không xác đ%nh Có hai van đe
ó đây: Làm the nào đe đem đưoc đoi tưong chuyen trang thái ó heap giua vi¾c tăng đánh dau Thòi gian dành cho vi¾c đánh dau moi lan tăng
Mark consistency (đánh dau đong nhat): M®t b® tìm kiem đoi tưong tot (đoi tưong không sú dnng) không húy đoi tưong đang hoat đ®ng Đe làm đưoc đieu này, can giái thích cho b® tìm kiem hieu biet đoi tưong mói ho¾c chưa đưoc đánh dau
Trang 32đưoc lưu tru bên trong đoi tưong mà ta đã đánh dau Cài đ¾t cơ che này bang cách lưu đoi tưong mói hay chưa đánh dau vào m®t đoi tưong đã đưoc thu¾t toán đánh dau xú
lý và không ó trong
Trang 33hàng đoi Như v¾y se không húy đoi tưong conf sú dnng và không làm cho con tró tói nó b% lac Thu¾t toán ba màu, mô tá ba trang thái ó hình 2.11, dna vào thu¾t toán ba màu có chan ó m®t so nghiên cúu.
Hình 2.11: Sú dnng thu¾t toán ba màuHoat đ®ng cúa thu¾t toán ba màu như sau: trong lan đau tiên, “root” b% đưa vào hàng đoi, do đó sau bưóc này “roots” có màu xám và tat cá đoi tưong còn lai là màu trang Tiep theo, hàng đoi se đưoc xú lý đoi tưong trong hai bưóc, tù màu xám sang đen và tù trang sang xám Khi nào con tró tói đoi tưong màu trang đưoc chuyen thành đoi tưong màu đen thì chúng ta tách ra hai vi¾c, ve màu trang sang đen và đưa đoi tưong trang vào hàng đoi Vói cài đ¾t như v¾y, nhung trưòng hop sau đeu giái quyet đưoc:
• Màu xám đưoc chuyen sang đen, xám trang - đoi tưong có màu xám ó trong hàng đoi và nó se b% đánh dau trưóc khi quét;
• Màu trang sang xám - đoi tưong trang se đưoc đánh dau cho đen lúc đoi tưong xám đưoc đánh dau;
tat cá đoi tưong đã đánh dau;
• Màu đen chuyen sang đen, xám, trang - vói màu đen, nó đã b% đánh dau
2.4 Papervision3D
2.4.1 Giéi thi¾u