2010-08-24 27 views

उत्तर

22

सबसे लोकप्रिय प्रोग्रामिंग सिस्टम प्रोग्राम प्रोग्राम (जैसे ऑब्जेक्ट्स या एप्लिकेशन डेटा के अन्य रूपों) से अलग प्रोग्राम कोड (कक्षा परिभाषाओं, कार्यों या प्रक्रियाओं के रूप में) अलग-अलग प्रोग्राम कोड। जब कोई एप्लिकेशन प्रारंभ होता है तो वे प्रोग्राम कोड लोड करते हैं, और किसी भी पिछले अनुप्रयोग स्थिति को कॉन्फ़िगरेशन फ़ाइलों या अन्य डेटा स्रोतों से स्पष्ट रूप से पुनर्निर्मित किया जाना चाहिए। एप्लिकेशन प्रोग्रामर स्पष्ट रूप से सहेजने वाली कोई भी सेटिंग नहीं है, जब भी आप पुनरारंभ करते हैं तो आपको बैक अप सेट करना होगा।

हालांकि, कई छोटे-छोटे सिस्टम अनुप्रयोग डेटा (ऑब्जेक्ट्स) और कोड (कक्षाओं) के बीच अंतर नहीं करते हैं। वास्तव में, कक्षाएं खुद वस्तुओं हैं। इसलिए अधिकांश स्मॉलटाक सिस्टम एक छवि फ़ाइल में संपूर्ण एप्लिकेशन स्थिति (कक्षा और गैर-कक्षा वस्तुओं दोनों सहित) को संग्रहीत करते हैं। तब छवि को स्मॉलटॉक वर्चुअल मशीन द्वारा लोड किया जा सकता है ताकि छोटे राज्य-जैसी प्रणाली को पिछले राज्य में पुनर्स्थापित किया जा सके।

http://en.wikipedia.org/wiki/Smalltalk#Image-based_persistence

+10

इसे देखने का एक और तरीका यह है कि यह वास्तव में वर्चुअलबॉक्स या वीएमवेयर जैसे ओएस वर्चुअलाइजेशन सॉफ़्टवेयर के साथ प्राप्त होने वाली सिस्टम छवियों की तरह है। छवि में ओएस को छोड़कर स्मॉलटाक सिस्टम है, और यह फाइल सिस्टम की तरह व्यवस्थित नहीं है, बल्कि वस्तुओं के रूप में। –

2

http://book.seaside.st/book/getting-started/pharo-squeak/what-is-image

सभी स्मालटाक वस्तुओं कुछ एक छवि कहा जाता है में रहते हैं। एक छवि मेमोरी का स्नैपशॉट है जिसमें सभी ऑब्जेक्ट्स दिए गए बिंदु पर ऑब्जेक्ट्स हैं।

Google पर दूसरा हिट।

5

जब छोटे-छोटे वीएम शुरू होते हैं, तो यह "छवि" से अपनी स्मृति में सहेजी गई स्थिति (हाँ: खुली फ़ाइल धाराओं, खिड़कियों, धागे और अधिक सहित) को लोड करता है और निष्पादन को फिर से शुरू करता है जहां छवि सहेजी गई थी । किसी भी समय आपके काम के दौरान, आप एक छवि फ़ाइल में "एक छवि को सहेज सकते हैं" (उर्फ: वर्तमान समग्र स्थिति का स्नैपशॉट)। आप अपनी डिस्क पर एकाधिक छवियां रख सकते हैं। उपयोगी अगर आप विभिन्न परियोजनाओं पर काम करते हैं। छवियां अक्सर आर्किटेक्चर में पोर्टेबल होते हैं (लेकिन सभी छोटी-छोटी प्रणालियों में नहीं); उदाहरण के लिए, एक स्क्वाक छवि को एक खिड़कियों और एक मैक (और यहां तक ​​कि एक एंड्रॉइड) स्क्वाक वीएम में लोड किया जा सकता है। छवियां बोलियों में पोर्टेबल नहीं हैं, और कभी-कभी बोली के भीतर संस्करणों में नहीं होती हैं।

छवियों में आमतौर पर सबकुछ होता है - यहां तक ​​कि डीबगर, कंपाइलर, संपादक, ब्राउज़र इत्यादि। हालांकि, तैनाती के लिए, कभी-कभी छवि को "स्ट्रिप" (यानी अप्रयुक्त सामग्री को हटाने) के लिए उपयोगी होता है - या तो रहस्य छिपाने के लिए (; -) या इसे छोटा करने के लिए (एम्बेडेड या मोबाइल डिवाइस के लिए)। अधिकांश स्मॉलटाक छोटे छवि/एक्स और (मुझे लगता है) एस # -स्मालटॉक के अपवाद के साथ छवि के बिना नहीं रह सकते हैं (लेकिन मैं यहां पतली बर्फ पर हूं ...)

स्रोत कोड को सहेजने और परिवहन करने के लिए, छवियां हैं उपयोगी नहीं - मानक प्रारूप में या एक्सएमएल में या किसी अन्य परिवहन प्रारूप में फ़ाइलआउट का उपयोग करें (कई हैं)। छवियां marshalling/unmarshalling के लिए भी उपयोगी नहीं हैं; इसके लिए एक्सएमएल, बाइनरीस्टोरेज, डेटाबेस, महिमा या किसी अन्य धारावाहिक विधि का उपयोग करें।

+1

एक छोटी परिशुद्धता: सहेजी गई छवि में फ़ाइल स्ट्रीम को नहीं रखा जाता है। जब कुछ छवि सहेजी जाती है या फिर से लोड की जाती है तो कुछ कक्षाएं सफाई/पुन: प्रारंभ करने के लिए पंजीकरण कर सकती हैं। फाइल डिस्क्रिप्टर, सॉकेट, स्क्रीन बिटमैप ... सभी राज्य को इंगित करते हैं कि छवि के बाहर है, इसलिए यदि छवि बंद हो जाती है, या छवि को किसी भिन्न होस्ट में स्थानांतरित किया जाता है तो फ़ाइल अमान्य हो जाती है। धागे पूरी तरह से छवि के अंदर लागू होते हैं (जावा के हरे धागे की तरह), इसलिए वे सिस्टम थ्रेड पर मैप नहीं करते हैं, और उन्हें डीबगर आदि के साथ सहेजा जा सकता है –

+1

आप सही हैं, लेकिन वास्तव में: स्मॉलटॉक/एक्स एक फ़ाइल को फिर से खोलने और इसे पुनर्स्थापित करने का प्रयास करता है, अगर यह एक नियमित फ़ाइल है। यह निश्चित रूप से - वीएम द्वारा नहीं किया जाता है, लेकिन कक्षाओं के वैकल्पिक पुनर्नवीनीकरण विधियों (वास्तव में: वापसी से स्नैपशॉट) द्वारा। इसके अलावा, st/x में, कोई स्क्रीन बिटमैप नहीं है, लेकिन इसके बजाय Win32 या x शीर्ष कई बार फिर से बनाने के लिए। काफी उचित है, यह वास्तव में इस तरह की वापसी जोड़ने के लिए प्रोग्रामर तक है। स्नैपशॉट विधि और निर्णय लेने के लिए, एक तथाकथित स्नैपिन के बाद पुनर्निर्माण कैसे किया जा सकता है। – blabla999

+1

(आप निश्चित रूप से भी सही हैं कि राज्य छवि के बाहर है; हालांकि, यदि आप राज्य (कुछ) की प्रतिलिपि रखते हैं, तो आप एक विंडो को फिर से बना सकते हैं, पुराने विंडो-हैंडल को प्रतिस्थापित कर सकते हैं, रीमेप कर सकते हैं और फिर से चला सकते हैं नई विंडो, उदाहरण के लिए। और यह है कि वापसी में किया गया हैप्रॉप स्नैपशॉट विधियों)। – blabla999

1

मैं सुझाव है कि आप http://pharobyexample.org/ प्रथम अध्याय को पढ़ने के लिए यह कहते हैं:

"वर्तमान प्रणाली छवि एक चल Pharo प्रणाली, समय में जमी का एक स्नैपशॉट है यह दो फ़ाइलों के होते हैं:। एक .image फ़ाइल, जिसमें सिस्टम में सभी ऑब्जेक्ट्स (कक्षाओं और विधियों, समेत) ऑब्जेक्ट्स शामिल हैं, और एक .changes फ़ाइल है, जिसमें सिस्टम के स्रोत कोड में परिवर्तनों के सभी का लॉग शामिल है चित्रा 1 में।1, इन फ़ाइलों pharo.image और pharo.changes Pharo कहा जाता है। "

HTH

16

स्मालटाक छवि एक बहुत ही दिलचस्प जानवर है। अमरता का एक प्रकार के रूप में यह को देखो। कई मौजूदा स्मालटाक प्रणाली,, स्क्वाक, उनके बीच विजुअलवर्क्स, एक सामान्य पूर्वजों को साझा करते हैं, यानी जेरोक्स पीआरसी से एक छोटी सी छवि है। यह आम पूर्वज हालांकि कुछ दूरस्थ चीज नहीं है, लेकिन वास्तव में उन आधुनिक प्रणालियों में अभी भी जिंदा है। आधुनिक रूपों को संदेश भेजकर उत्पादित किया गया था। उस छवि में वस्तुओं। कुछ संदेशों ने वास्तव में वर्तमान वस्तुओं को खराब कर दिया। कक्षाएं पूरी तरह से उड़ाई गई वस्तुएं हैं, और वर्ग वस्तुओं को संदेश भेजकर नई कक्षाएं बनाई जाती हैं। स्मॉलटॉक छवि में कुछ वस्तुएं 1 9 72 तक हो सकती हैं, जब पहला छोटा के छवि बूटस्ट्रैप! स्मॉलटॉक छवियों को कभी मर नहीं जाता है, वे बस कुछ मौलिक रूप से अलग हो जाते हैं। आपको अपनी एप्लिकेशन बिल्डिंग को एक नया स्मॉलटाक संस्करण बनाने से मौलिक रूप से अलग नहीं होना चाहिए।

0

बस रखो, एक स्मॉलटॉक छवि स्मॉलटॉक पर्यावरण की एक छवि है जिसे समय पर किसी दिए गए समय पर सहेजा गया है। जब यह छवि स्मॉलटाक रनटाइम सिस्टम में पुनः लोड की जाती है, तो सब कुछ तब होता है जब छवि सहेजी गई थी।

एक स्मॉलटॉक सिस्टम द्वारा सहेजी गई छवियां सामान्य रूप से एक अलग स्मॉलटाक सिस्टम द्वारा लोड नहीं की जा सकती हैं।

मुझे छवि-आधारित विकास अविश्वसनीय रूप से सशक्त बनाता है। अगर मैं बाधित हो जाता हूं तो मैं छवि को सहेज सकता हूं, और जब मैं इसे वापस ले जाता हूं तो मैं ठीक कहां हूं जहां मैं था। खुले खुले डिबगर्स अभी भी खुले हैं, जारी रखने की प्रतीक्षा कर रहे हैं। बहुत कम है "यह पता लगाने के लिए कि मैं कहाँ था वापस पाने के लिए" - यह और अधिक है "ठीक है, चलो जारी रखें ..."।

साझा करें और आनंद लें।

1

यह सभी विकास कार्यों और सभी उपयोगकर्ता डेटा समेत पूरे सिस्टम में सब कुछ क्रमबद्ध कर रहा है। रनटाइम पर्यावरण के कर्नेल से अलग सब कुछ

जावा की तरह स्मॉलटॉक, एक वर्चुअल मशीन पर प्रतीकात्मक बाइटकोड चल रहा है, और इसमें कचरा कलेक्टर जैसी निम्न-स्तरीय चीजें हैं। यह स्मॉलटाक को बहुत पोर्टेबल बनाता है, और यह भी लिखता है-कभी-कभी-कहीं भी।

अनजाने में, यह जावा के लिए प्रेरणा थी। तो स्मॉलटाक वीएम (एसटीवीएम) जावा रनटाइम पर्यावरण के बराबर है।

स्मॉलटॉक में, बाकी सब कुछ रैम में संग्रहीत है। कोडबेस, जो गतिशील रूप से StVM के लिए ऑन-द-फ्लाई संकलित है। आपके ऑब्जेक्ट डेटा जो आपने अपने लंबवत और क्षैतिज अंत-उपयोगकर्ता ऐप्स को चलाकर बनाया है। आपके द्वारा खिड़की के पर्यावरण और इसकी उपस्थिति के लिए किए गए सभी अनुकूलन। आपके द्वारा लिखे गए सभी नए कोड। संगीत गीत में खेलने के लिए वीएम पर एक गीत जिसे आपने लोड किया है। कोई अन्य डेटा, कोड या ऑब्जेक्ट जो आप उपयोग कर रहे हैं या लोड हो चुके हैं।

यह सब पीसी की स्मृति में लाइव है।

समय-समय पर, आप वर्तमान-राज्य-प्ले को डिस्क पर सहेजना चाह सकते हैं। जब आप ऐसा करते हैं, तो आप क्षणिक रूप से स्मॉलटाक वीएम को फ्रीज करते हैं, और यह सब कुछ को एक डिस्क-फ़ाइल में कॉपी करता है। उस डिस्क-फ़ाइल को छवि फ़ाइल कहा जाता है, और डिफ़ॉल्ट रूप से इसमें पीसी पर अधिकांश वितरण में एक .image प्रत्यय होगा (चाहे वे लिनक्स, मैकोज़, विंडोज या रिस्कोज चल रहे हों)।

यह एक ऐसा तरीका है जब आप एक वर्ड प्रोसेसर या एक विशिष्ट पीसी पर स्प्रेडशीट में अपनी कार्य-प्रगति को सहेजते हैं। सिवाय इसके कि इस सहेज में स्प्रेडशीट कोड का नवीनतम संस्करण शामिल है जो स्प्रेडशीट ऐप स्वयं से बना है।

स्मॉलटॉक सिस्टम में आपके डेटा को सुरक्षित करने के अन्य तरीके हैं। यदि आप कोई सॉफ़्टवेयर विकसित करते हैं, या किसी भी कोडबेस को बदलते हैं जिसे स्मॉलटाक सिस्टम लिखा गया है, तो यह वास्तविक समय में डिस्क में प्रत्येक परिवर्तन को लॉग करता है।

आपके पास कोड लिखने का विकल्प है, या एक ऐप लोड करने का विकल्प है, जो आपके स्रोत कोड और उसके संबंधित डेटा संरचनाओं को वितरित कर सकता है, वितरित स्रोत कोड भंडारों या आपके स्थानीय डिस्क पर रिपॉजिटरीज़ को सहेज सकता है। या डेटाबेस से संबंध बनाने के लिए। या डेटाबेस या नए फैशनेबल NoSQL डेटाबेस ऑब्जेक्ट करने के लिए।

अधिकतर पूर्व-लिखित ऐप्स डेटा को डिस्क (ओं) या डेटाबेस पर बैकअप करते हैं।

छवि एक पूरे स्मालटाक प्रणाली, (अलग वर्चुअल मशीन से की सेव। वर्चुअल मशीन जावा रनटाइम एनवायरनमेंट के बराबर है है। बाकी सब कुछ छवि में संग्रहित है।

एक नई फाइल सिस्टम लिखें अंतर्निहित ओएस की डिस्क तक पहुंचने के लिए? यह छवि में है। (और सभी बदलावों को स्मॉलटॉक सिस्टम द्वारा डिस्क पर स्वचालित रूप से लॉग में भी लॉग किया गया है)

अपने स्मॉलटॉक छवि-आधारित ऑब्जेक्ट डेटाबेस में डेटा का पूरा समूह दर्ज करें? छवि में

अपने स्मॉलटॉक sys पर फ़ैक्टरी-रीसेट करना चाहते हैं tem? जब आपने पहली बार स्मॉलटॉक स्थापित किया था तब प्राप्त छवि फ़ाइल का उपयोग करने के लिए बस वापस जाएं। प्रति घंटा छवि को हर घंटे सहेजना चाहते हैं, और फिर 4 घंटे पहले वापस बहाल करना चाहते हैं? बस चार घंटे पहले से छवि फ़ाइल लोड करें।

छवि सब कुछ की एक प्रति है जो स्मॉलटाक सिस्टम में स्मृति में है। सिस्टम के छोटे, अपरिवर्तनीय, महत्वपूर्ण अनुपात को छोड़कर जो वर्चुअल मशीन है।

संबंधित मुद्दे