2009-12-06 19 views
5

आप कई कार्यक्रमों को जान सकते हैं, उदाहरण के लिए कुछ पासवर्ड क्रैकिंग प्रोग्राम, हम चलते समय उन्हें रोक सकते हैं, और जब हम प्रोग्राम को फिर से चलाते हैं (एक ही इनपुट में प्रवेश किए बिना), वे जारी रखने में सक्षम होंगे जहां उन्होंने छोड़ा है। मुझे आश्चर्य है कि तकनीक किस प्रकार का प्रोग्राम उपयोग कर रहे हैं?किसी प्रोग्राम की प्रगति को कैसे सहेजने के लिए, और बाद में फिर से शुरू करें?

[संपादित करें] मैं मुख्य रूप से रिकर्सन फ़ंक्शंस पर आधारित एक प्रोग्राम लिख रहा हूं। मेरे ज्ञान के भीतर, मुझे लगता है कि मेरे कार्यक्रम में ऐसे राज्यों को सहेजना बेहद मुश्किल है। क्या कोई तकनीक है, किसी भी तरह, मेरे प्रोग्राम में शामिल स्टैक सामग्री, फ़ंक्शन कॉल और डेटा सहेजती है, और फिर जब इसे पुनरारंभ किया जाता है, तो यह चलाया जा सकता है जैसे कि इसे रोक नहीं दिया गया है? यह मेरे दिमाग में कुछ अवधारणाएं हैं, इसलिए अगर मुझे समझ में नहीं आता है तो कृपया मुझे क्षमा करें ...

उत्तर

2

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

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

+0

वाह, यह बहुत जानकारीपूर्ण है। मैं इसके लिए एक सावधान सावधानी बरतूँगा। बहुत बहुत धन्यवाद। : डी – wakandan

1

इसे प्राप्त करने के लिए, आपको लगातार राज्य को बचाने की आवश्यकता है (यानी आप अपनी गणना में कहां हैं)। इस तरह, यदि आप प्रोब्राम को बाधित करते हैं, जब यह पुनरारंभ होता है, तो यह पता चलेगा कि यह गणना के बीच में है, और यह उस गणना में कहां था।

आप शायद अपने उपयोगकर्ता इंटरफ़ेस से अलग थ्रेड में अपनी मुख्य गणना करना चाहते हैं - इस तरह आप अपने उपयोगकर्ता इंटरफ़ेस से "करीबी/बाधा" अनुरोधों का जवाब दे सकते हैं और थ्रेड को रोक/रोककर उचित तरीके से संभाल सकते हैं।

+0

आपकी मदद के लिए धन्यवाद: डी – wakandan

2

दृढ़ता का उपयोग करें।

दृढ़ता एक तंत्र है जिसके माध्यम से किसी वस्तु का जीवन कार्यक्रम निष्पादन जीवनकाल से परे है।

क्रमशः का उपयोग कर स्थानीय हार्ड ड्राइव पर प्रक्रिया में शामिल वस्तुओं की स्थिति को स्टोर करें।

+0

मैं आपको यह कहने के लिए समय का एक गुच्छा लेगा कि आप यहां क्या कहते हैं: डी। बहुत बहुत धन्यवाद। मैं इसे अभी खोद दूंगा। – wakandan

+0

मैं प्रोग्रामिंग पकड़ा गया था और भूल गया कि मुझे एक लिंक संलग्न करना था। उसके लिए माफ़ करना। – Tebo

0

लिनक्स के लिए, सीआरआईयू नामक एक परियोजना है, जो प्रक्रिया-स्तर की बचत का समर्थन करती है और फिर से शुरू करें। यह ओएस की हाइबरनेशन और फिर से शुरू होने की तरह है, लेकिन ग्रैन्युलरिटी प्रक्रियाओं के लिए टूट गई है। यह कंटेनर प्रौद्योगिकियों, विशेष रूप से डॉकर का भी समर्थन करता है। अधिक जानकारी के लिए http://criu.org/ का संदर्भ लें।

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