पर्यवेक्षक कॉल निर्देश

From Vigyanwiki
Revision as of 06:49, 15 December 2022 by alpha>Indicwiki (Created page with "{{short description|Hardware instruction in the System/360 family of IBM mainframe}} : इस लेख में IBM System/360 और उत्तराधिकारी ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
इस लेख में IBM System/360 और उत्तराधिकारी मेनफ़्रेम कंप्यूटर, और संगत मशीनों पर विशिष्ट निर्देश शामिल हैं। एक ऑपरेटिंग सिस्टम को कॉल जारी करने के निर्देश की सामान्य अवधारणा के लिए, सिस्टम कॉल देखें।

एक 'पर्यवेक्षक कॉल निर्देश' ('एसवीसी') एक हार्डवेयर निर्देश (कंप्यूटर विज्ञान) है जो आईबीएम मेनफ्रेम कंप्यूटर के सिस्टम/360 परिवार द्वारा समकालीन zSeries, Amdahl Corporation 470V/5, 470V/6, 470V/7, तक उपयोग किया जाता है। 470V/8, 580, 5880, 5990M, और 5990A, और अन्य; यूनीवैक यूनीवैक सीरीज 90|90/60, 90/70 और 90/80, और संभवतः अन्य; फुजित्सु M180 (यूपी)[1] और एम200 (एमपी), और अन्य; और इसका उपयोग हरक्यूलिस (एमुलेशन) ओपन सोर्स मेनफ्रेम कंप्यूटर एमुलेशन सॉफ्टवेयर में भी किया जाता है। यह ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने में बाधा उत्पन्न करता है। सेवा प्रदान करने वाले सिस्टम रूटीन को SVC रूटीन कहा जाता है। एसवीसी एक सिस्टम कॉल है।

तर्क

सिस्टम/360 में आईबीएम मेनफ्रेम और उत्तराधिकारी परिवार दो राज्यों में से एक में काम करते हैं: समस्या स्थिति या पर्यवेक्षक स्थिति और सोलह स्टोरेज एक्सेस कुंजी (0 से 15) में से एक में। समस्या की स्थिति में, उपयोगकर्ता प्रोग्राम के लिए सामान्य प्रयोजन के गैर-विशेषाधिकार प्राप्त निर्देशों का एक बड़ा सेट उपलब्ध होता है। पर्यवेक्षक स्थिति में, सिस्टम प्रोग्राम अतिरिक्त रूप से विशेषाधिकार प्राप्त निर्देशों के एक छोटे सेट का उपयोग करने में सक्षम होते हैं जो आमतौर पर पर्यवेक्षी कार्यों के लिए होते हैं। ये कार्य अन्य उपयोगकर्ताओं, अन्य प्रोसेसर या संपूर्ण कंप्यूटर सिस्टम को प्रभावित कर सकते हैं। स्टोरेज की 0 में एक प्रोग्राम सभी एड्रेसेबल को एक्सेस करने में सक्षम है[lower-alpha 1] भंडारण, अन्यथा यह एक मिलान कुंजी के साथ भंडारण क्षेत्रों तक सीमित है। ऑपरेटिंग सिस्टम द्वारा पूरी तरह से प्राधिकरण जाँच के बाद ही एक प्रोग्राम को विशिष्ट पर्यवेक्षी कार्यों तक पहुँचने की अनुमति दी जाती है: DEBCHK (SVC 117), TESTAUTH (SVC 119), और संभवतः अतिरिक्त परीक्षण। ऐसे प्रोग्राम जो इनमें से किसी भी परीक्षण में विफल होते हैं, ABENDed होते हैं, जो असामान्य रूप से समाप्त हो जाते हैं और तुरंत प्रसंस्करण बंद कर देते हैं। इनमें से कुछ परीक्षण OS/360 में उपलब्ध नहीं थे, लेकिन OS/VS1, OS/VS2 (SVS) या MVS/370 में जोड़े गए थे, लेकिन सभी MVS/370 या बाद के रिलीज में उपलब्ध थे, और आज भी उपलब्ध हैं .

OS/VS1, OS/VS2 (SVS), MVS/370 और OS के बाद के संस्करणों में, MODESET फ़ंक्शन (SVC 107) ने कई उपयोगकर्ता-लिखित SVC की आवश्यकता को समाप्त कर दिया क्योंकि यह सिस्टम SVC मोड में दोनों परिवर्तनों को समायोजित करता है (समस्या स्थिति) पर्यवेक्षक राज्य के लिए) और कुंजी (8-15 [उपयोगकर्ता] से 0-7 [सिस्टम]) एक ही ऑपरेशन में, और कई उपयोगकर्ता-लिखित एसवीसी मूल रूप से सरल मोड और मुख्य परिवर्तनों के लिए अभिप्रेत थे, वैसे भी, और बाद में केवल विशेष आवश्यकता यह था कि जॉबस्टेप एपीएफ अधिकृत हो[lower-alpha 2][lower-alpha 3] और यह कि मोडसेट-आह्वान कार्यक्रम पुस्तकालयों के एक संघ में निवास करता है, जिनमें से सभी को अधिकृत के रूप में पहचाना गया था, और यह सुरक्षित दृष्टिकोण पूरी तरह से स्थापना के नियंत्रण में था। यह दृष्टिकोण आम तौर पर प्राधिकरण पर उपयोगकर्ता नियंत्रण को सरल करता है, हालांकि इसके लिए आवेदन में कुछ सरल परिवर्तन आवश्यक थे। सामान्य तौर पर, उपयोगकर्ता स्थापनाओं ने इस दृष्टिकोण का समर्थन किया, और सिस्टम की समग्र विश्वसनीयता में काफी सुधार हुआ।

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

पर्यवेक्षक कॉल निर्देश#OS/360 SVCs|OS/360 SVCs नीचे दी गई तालिका उन शर्तों को इंगित करती है जिनके तहत इन सिंक्रनाइज़िंग सुविधाओं को नियोजित किया जा सकता है।

कार्यान्वयन

एसवीसी हेक्साडेसिमल ओपकोड के साथ एक दो बाइट निर्देश है 0A; निर्देश का दूसरा बाइट, एसवीसी नंबर, विशिष्ट अनुरोध को इंगित करता है।[2] SVC नंबर 0 से 255 तक कोई भी मान हो सकता है, विशेष SVC नंबर ऑपरेटिंग सिस्टम के कार्यान्वयनकर्ता तक हो सकता है, उदा। IBM के MVS पर, SVC 3 का उपयोग एक प्रोग्राम को समाप्त करने के लिए किया जाता है, जबकि UNIVAC VS/9 और Fujitsu BS2000 ऑपरेटिंग सिस्टम पर, SVC 9 का उपयोग उसी उद्देश्य के लिए किया गया था।

जब कोई प्रोग्राम एसवीसी जारी करता है, तो एक व्यवधान उत्पन्न होता है। PSW, एक 8-बाइट (सिस्टम 360 और S/370 पर) या 16 बाइट (z/सिस्टम पर), विशेषाधिकार प्राप्त रजिस्टर जिसमें अन्य बातों के अलावा, निष्पादित किए जाने वाले निर्देश का वर्तमान पता, विशेषाधिकार बिट ( 1 विशेषाधिकार प्राप्त होने पर), और भंडारण कुंजी, वास्तविक में सहेजी जाती है[lower-alpha 4] पता। यह 360 और 370 पर 32-39 स्थान है; जेड/सिस्टम पर 320-335। PSW को फिर एक अलग वास्तविक से लोड किया जाता है[lower-alpha 4] पता ; यह 360 और 370 पर 96-103, z/सिस्टम पर 448-463 है। PSW में लोड किए गए पते पर निष्पादन फिर से शुरू होता है। सहेजे गए PSW के 24-31 बिट्स (वास्तविक[lower-alpha 4] एड्रेस 35 ऑन द 360 और 370, 323 ऑन द जेड/सिस्टम) में सुपरवाइजर कॉल नंबर होता है।

एसवीसी एक पर्यवेक्षी कार्य को आमंत्रित करता है - आमतौर पर सिस्टम के एसवीसी इंटरप्ट हैंडलर के बंद सबरूटीन के रूप में लागू किया जाता है। एसवीसी रूटीन से और पास की गई जानकारी को प्रोसेसर रजिस्टर या मेमोरी में पास किया जाता है।

OS/360 और उत्तराधिकारियों के तहत, SVC रूटीन से रिटर्न, टाइप 2, 3 और 4 SVC रूटीन के लिए, SVC 3 (EXIT) इनवोकेशन के माध्यम से, और अन्य SVC प्रकारों के लिए प्रिविलेज्ड लोड PSW (LPSW) इंस्ट्रक्शन द्वारा होता है, और जो नियंत्रण कार्यक्रम के निर्धारण (कंप्यूटिंग) # डिस्पैचर द्वारा एसवीसी रूटीन की ओर से निष्पादित किया जाता है या एसवीसी इंटरप्ट हैंडलर।

आईबीएम मेनफ्रेम के लिए मॉन्ट्रियल, कनाडा में मैकगिल विश्वविद्यालय द्वारा विकसित संगीत/एसपी जैसे गैर-आईबीएम विकसित ऑपरेटिंग सिस्टम पर, और गैर-आईबीएम मेनफ्रेम के लिए, वीएस/9, यूनीवैक द्वारा विकसित (आरसीए के लिए टाइम शेयरिंग ऑपरेटिंग सिस्टम ऑपरेटिंग सिस्टम से) UNIVAC सीरीज 90 मेनफ्रेम लाइन के आरसीए स्पेक्ट्रा 70 सीरीज कंप्यूटर) और Fujitsu के मेनफ्रेम के लिए B800 ऑपरेटिंग सिस्टम (TSOS ऑपरेटिंग सिस्टम से भी विकसित), सभी पर्यवेक्षक कॉल से बाहर निकलने के लिए LPSW निर्देश का उपयोग करते हैं।

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

OS/360 और OS के बाद के अवतारों में, शाखा और लिंक प्रविष्टि बिंदु कुछ पर्यवेक्षक मोड रूटीन के लिए SVC आह्वान के विकल्प हैं। MVS/SP V1R3 और OS के बाद के अवतारों में, प्रोग्राम कॉल (PC) प्रविष्टियों ने प्राधिकृत और अनधिकृत दोनों प्रोग्रामों द्वारा कई पर्यवेक्षी कार्यों के आह्वान के लिए SVCs को संवर्धित किया है; और कुछ कार्यों को केवल शाखा या पीसी प्रविष्टियों द्वारा ही लागू किया जा सकता है, उदा। इनपुट/आउटपुट प्रारंभ करें। (यह आईबीएम ऑपरेटिंग सिस्टम को गैर-आईबीएम हार्डवेयर पर चलने से रोकने का भी लाभ है।)

अलग-अलग आईबीएम ऑपरेटिंग सिस्टम में उपयोग किए जाने वाले विशिष्ट कोड या पर्यवेक्षक सेवाओं में थोड़ी अनुकूलता होती है, जिसे लागू किया जा सकता है। VM (ऑपरेटिंग सिस्टम) | VM/370 और z/VM सिस्टम समान तरीके से DIAG निर्देश का उपयोग करते हैं, और SVC को वर्चुअल मशीन में चल रहे ऑपरेटिंग सिस्टम द्वारा उपयोग के लिए छोड़ देते हैं। अधिकांश OS/360 SVC को पुराने कार्यक्रमों के लिए बनाए रखा गया है, लेकिन कुछ SVC को समय बीतने के साथ बढ़ाया गया है।

OS/360 और उत्तराधिकारी सिस्टम SVCs

ओएस/360 और उत्तराधिकारी प्रणालियों में एसवीसी संख्या 0 से लेकर लगभग 127 तक आईबीएम द्वारा परिभाषित हैं, और 255 नीचे की ओर संस्थापन के सिस्टम प्रोग्रामिंग स्टाफ द्वारा उपयोग के लिए उपलब्ध हैं। z/OS ने इसे IBM के लिए लगभग 200 से लेकर लगभग 200 तक SVC संख्या में बदल दिया, और संस्थापन के लिए 255 नीचे की ओर, अतिरिक्त सिस्टम सेवाओं के रूप में, मुख्य रूप से एन्क्रिप्शन/डिक्रिप्शन के समर्थन में, IBM द्वारा SVC का उपयोग करके कार्यान्वित किया जा रहा था। SVC रूटीन में IGC से शुरू होने वाले एक विशिष्ट प्रारूप में मॉड्यूल नाम होने चाहिए।

सिस्टम डिज़ाइन के अनुसार, अक्षम शब्द का अर्थ प्री-एमवीएस/370 सिस्टम में मशीन चेक रुकावटों को छोड़कर सभी रुकावटों के लिए अक्षम है, और स्थानीय लॉक के साथ, लेकिन एमवीएस/370 और बाद के सभी सिस्टम में किसी भी रुकावट के लिए अक्षम नहीं है। पूर्व भौतिक अक्षमता है, बाद वाला तार्किक अक्षमता है, क्योंकि पता स्थान के स्थानीय लॉक का भौतिक अक्षमता के रूप में इसके पता स्थान के भीतर समान प्रभाव पड़ता है, लेकिन इसका अन्य पता स्थानों पर कोई प्रभाव नहीं पड़ता है।

OS/360 ने चार प्रकार के SVC रूटीन परिभाषित किए, जिन्हें टाइप 1 से टाइप 4 कहा जाता है; MVS/370 ने एक अतिरिक्त टाइप 6 जोड़ा, जो टाइप 1 के समान है सिवाय इसके कि SVC रूटीन शारीरिक रूप से अक्षम है। टाइप 5 को न तो परिभाषित किया गया और न ही लागू किया गया। निम्नलिखित जानकारी, OS/360 के लिए एक तालिका का हिस्सा, MVS/370 और उत्तराधिकारी प्रणालियों के लिए संवर्धित, एक SVC रूटीन लिखने में शामिल विचारों का एक विचार देती है।

Conventions Type 1/Type 6 Type 2 Type 3 Type 4
Part of resident control program Yes Yes No No
Size of routine (OS/360) Any Any Single load module
≤ 1024 bytes
Each load module
≤ 1024 bytes
Size of routine (OS/VS1) Any Any Single load module
≤ 2048 bytes
Each load module
≤ 2048 bytes
Size of routine (SVS, MVS) Any Any Any Any
Refreshable No No Yes[lower-alpha 5] Yes[lower-alpha 5]
Reenterable routine Optional, but must be serially reusable Yes Yes Yes
May allow interruptions No[lower-alpha 6] Yes Yes Yes
Register contents at entry Registers[lower-alpha 7] 3, 4, 5, 6, 7 and 14 contain communication pointers; registers 0, 1 and 15 are parameter registers.
May contain relocatable data Yes Yes No No
May pass control to what other types of SVC routines None Any
May issue WAIT No Yes, using "WAIT" (SVC 1)
May issue POST Yes, but must use "Post" disabled branch entry Yes, using "POST" (SVC 2)
May schedule synchronous exits Yes, but must use "Exit Effector" disabled branch entry Yes, using "SYNCH" (SVC 12)
May schedule abnormal termination Yes, using "Abterm" disabled branch entry[3] Yes, using "ABEND" (SVC 13)
Table condensed from IBM System/360 Operating System System Programmer's Guide C28-6550-2[4]: p.33 

प्रकार 3 और 4 एसवीसी रूटीन पर आकार प्रतिबंध आवश्यक हैं क्योंकि जब वे लागू होते हैं तो उन्हें नामित क्षणिक क्षेत्रों (एमवीटी के बाद पीएलपीए) में लोड किया जाता है।

  • टाइप 1 का एक उदाहरण एसवीसी 10 है, जिसका उपयोग गेटमेन और फ्रीमेन दोनों के लिए किया जाता है, जो किसी कार्य के लिए मुख्य भंडारण का एक क्षेत्र आवंटित करता है और बाद में इसे क्रमशः जारी करता है। SVC 10 को अनौपचारिक रूप से REGMAIN के रूप में जाना जाता है क्योंकि यह केवल सामान्य प्रयोजन रजिस्टरों के माध्यम से मापदंडों का आदान-प्रदान करता है, और दोनों प्राप्त और मुफ़्त भंडारण कर सकता है। एसवीसी 4 और एसवीसी 5 क्रमशः समान जीईटी और मुफ़्त कार्य कर सकते हैं, लेकिन इन-स्टोरेज पैरामीटर सूचियों के माध्यम से एक्सचेंज पैरामीटर।
  • टाइप 2 का एक उदाहरण SVC 42, ATTACH है, जो एक नया कार्य बनाता है।
  • टाइप 3 का एक उदाहरण SVC 33, IOHALT है, जो गैर-डीएएसडी डिवाइस पर I/O संचालन को समाप्त करता है। इस SVC को OS/VS में टाइप 2 में बदल दिया गया था क्योंकि IOHALT का उपयोग कई टेलीप्रोसेसिंग-आधारित प्रणालियों में किया जाता है।
  • टाइप 4 का एक उदाहरण एसवीसी 19, ओपेन है, जिसका उपयोग उपयोगकर्ता प्रोग्राम द्वारा उपयोग के लिए डेटासेट उपलब्ध कराने के लिए किया जाता है, जिसमें सभी एक्सेस विधियों के लिए सामान्य मॉड्यूल शामिल होते हैं और प्रत्येक एक्सेस विधि के लिए विशिष्ट अतिरिक्त मॉड्यूल कॉल करते हैं। ओपन उन डेटासेट्स का भी समर्थन करता है, जिन्हें आपकी अपनी एक्सेस विधि द्वारा संचालित किया जाना है, जैसे कि वे जो चैनल प्रोग्राम निष्पादित करें का उपयोग करके एक्सेस किए जाते हैं।
  • टाइप 6 का एक उदाहरण SVC 107, MODESET है, जो कोई लॉक प्राप्त नहीं करता है, लेकिन पास किए गए मापदंडों के अनुसार सिस्टम मोड और सिस्टम कुंजी को बदलने में सक्षम है।

सुरक्षा

OS/360, सामान्य तौर पर, SVC के उपयोग को प्रतिबंधित करने का कोई तरीका नहीं रखता था। नतीजतन, काफी संख्या में गैर-इरादतन प्रणाली- और डेटा-अखंडता जोखिम थे जो एसवीसी और अन्य निर्देशों के कुछ अनुक्रमों को नियोजित करके संभव थे। जिज्ञासु उपयोगकर्ताओं के लिए इन जोखिमों को खोजने का प्रयास करना आम बात हो गई, लेकिन कुछ सिस्टम प्रोग्रामरों ने अपने स्वयं के उपयोगकर्ता-लिखित SVC विकसित करने के बजाय इन जोखिमों का उपयोग किया।

MVS/370 के साथ शुरुआत करते हुए, IBM ने इसे एक उत्पाद दोष माना, यदि सिस्टम डिज़ाइन त्रुटि किसी एप्लिकेशन प्रोग्राम को प्राधिकरण के बिना पर्यवेक्षक स्थिति में प्रवेश करने की अनुमति देती है। उन्होंने अनिवार्य किया कि सभी आईबीएम एसवीसी को सभी सिस्टम- और डेटा-अखंडता जोखिमों को बंद करने के लिए संरक्षित किया जाए। उन्होंने इस तरह के एक्सपोजर को बंद करने की गारंटी दी क्योंकि ये खोजे गए थे। 1977 में MVS/370 के रिलीज 3.7 द्वारा लगभग 100,000 प्राधिकृत कार्यक्रम विश्लेषण रिपोर्ट (APARs) और संबंधित IBM प्रोग्राम अस्थायी सुधार (PTFs) की कीमत पर ऐसे लगभग हर जोखिम की वास्तव में पहचान की गई और उसे बंद कर दिया गया। यह एक उल्लेखनीय उपलब्धि थी, क्योंकि इसके बाद सिस्टम अप टाइम को दिनों या घंटों के बजाय वर्षों में मापा गया।

टिप्पणियाँ

  1. I.e, all of the storage in address spacess accessible by the current dispatching unit.
  2. Initially this meant that the jobstep program was linked with AC(1) and came from an authorized concatenation of libraries. TSO/E later added a facility for authorized TSO commands.
  3. several system libraries were always implicitly part of the concatenation
  4. 4.0 4.1 4.2 That is, an address that is subject to prefixing but not to Dynamic Address Translation. IBM only uses the term absolute address for an address that is not subject to either DAT or prefixing.
  5. 5.0 5.1 Resident SVC routines in OS/360, OS/VS1 and SVS need not be refreshable
    SVC routines in FLPA need not be refreshable.
  6. In MVS a Type 1 SVC holds the Local lock and may take interrupts.
  7. SVC register usage in OS/360 and MVS is
    • R3 CVT address
    • R4 TCB address
    • R5 RB address
    • R6 entry point address (MVS only)
    • R7 ASCB address (MVS only)
    • R14 return address CVTEXIR or SVC SLIH


संदर्भ

  1. Assembler Instructions V1.3 User Guide, Fujitsu Solutions GmBH, https://bs2manuals.ts.fujitsu.com/download/manual/959.1 (PDF) June 2010, Page 167 (Retrieved November 9, 2020)
  2. IBM Corporation. आईबीएम सिस्टम/360 संचालन के सिद्धांत (PDF). p. 72.
  3. ABEND may be employed, but this is not considered best practice.
  4. IBM Corporation (1967). IBM System/360 Operating System System Programmer's Guide (PDF).


इस पेज में लापता आंतरिक लिंक की सूची

  • हरक्यूलिस (अनुकरण)
  • यूनीवैक सीरीज 90
  • पहुँच विधि
  • आईबीएम कार्यक्रम अस्थायी सुधार

अग्रिम पठन