दिलचस्प पोस्ट
पायथन: सूची पर जाने के दौरान सूची तत्व को हटाने रेज़र: घोषणात्मक HTML सहायकों पायथन में सापेक्ष आयात कैसे करें? कैसे यूनिक्स खोल स्क्रिप्ट को जावा कोड से चलाने के लिए? एक MKMapView की सीमाएं प्राप्त करना अजगर ऑब्जेक्ट के विलोपन को कैसे बल देना है? जावा में अगले शब्द पढ़ें हमें एक वक्तव्य के बजाय तैयार किए गए स्टेटमेंट का उपयोग कब करना चाहिए? .NET के HttpWebRequest / Response के साथ एक स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग करना एक समूह का उपयोग करके प्रत्येक समूह को मॉंगओडीबी में सीमित करके क्रमबद्ध करें अलग-अलग फ़ोल्डर से स्वत: कक्षाएं विच्छेदन भंडार संख्या को कोड में प्राप्त करना FileSystemWatcher बनाम मतदान में परिवर्तन के लिए देखने के लिए क्या सॉर्टेड सूची <कश्मीर, वी> पर एक निचला बाउंड फ़ंक्शन है? समापन का उपयोग बंद करें एक खुला एसक्यूएल कनेक्शन

लिनक्स कर्नेल में फ्लोटिंग पॉइंट का इस्तेमाल

मैं रॉबर्ट लव के "लिनक्स कर्नेल विकास" पढ़ रहा हूं, और मैं निम्नलिखित पारितोषिक में आया हूं:

फ्लोटिंग प्वाइंट का उपयोग नहीं (आसान)

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

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

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

Solutions Collecting From Web of "लिनक्स कर्नेल में फ्लोटिंग पॉइंट का इस्तेमाल"

इसलिये…

  • कई कार्यक्रम फ्लोटिंग पॉइंट का उपयोग नहीं करते हैं या किसी भी समय स्लाइस पर इसका इस्तेमाल नहीं करते; तथा
  • एफपीयू रजिस्टरों की बचत और अन्य एफपीयू राज्य को समय लगता है; इसलिये

… एक ओएस कर्नेल बस एफपीयू बंद कर सकता है प्रेस्टो, बचाने और पुनर्स्थापित करने की कोई स्थिति नहीं है, और इसलिए तेज संदर्भ-स्विचिंग (यह वही साधन है , इसका मतलब यह है कि एफपीयू सक्षम था।)

अगर कोई प्रोग्राम एफपीयू सेशन का प्रयास करता है, तो प्रोग्राम कर्नेल में फंस जाएगा, कर्नेल एफपीयू को चालू करेगा, पहले से मौजूद हो सकता है किसी भी सहेजी गई स्थिति को पुनर्स्थापित करेगा, और फिर एफपीयू सेशन को फिर से लागू करने के लिए वापस लौटेंगे।

संदर्भ स्विच समय पर, यह वास्तव में राज्य को तर्क से बचाने के लिए जाना जाता है (और फिर यह फिर से एफपीयू बंद कर सकता है।)

वैसे, मेरा मानना ​​है कि इस कारण के कर्नेल (और सिर्फ लिनक्स नहीं) के लिए बुक की स्पष्टीकरण एफपीयू ऑप्स से बचते हैं … बिल्कुल सटीक नहीं है 1

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

यह नोट करना दिलचस्प है कि यदि एफआरपी का इस्तेमाल करना चाहता था तो एफपीयू स्थिति को कितनी बार सहेजना होगा प्रत्येक सिस्टम कॉल, प्रत्येक बीच में, कर्नेल थ्रेड के बीच हर स्विच। यहां तक ​​कि अगर कभी-कभी कर्नेल एफपी की ज़रूरत होती है, तो यह संभवतः सॉफ्टवेयर में करने के लिए तेजी से होगा


1. यह है, मृत गलत है
2. कुछ मामलों में मुझे पता है कि कर्नेल सॉफ़्टवेयर में फ़्लोटिंग पॉइंट अंकगणित कार्यान्वयन शामिल है। कुछ आर्किटेक्चर हार्डवेयर में पारंपरिक एफपीयू ऑप्स को लागू करते हैं लेकिन सॉफ़्टवेयर के लिए कुछ जटिल आईईईई एफपी ऑपरेशन छोड़ देते हैं। (सोचें: विकृत अंकगणित।) जब कुछ अजीब आईईईई कोने के मामले में वे सॉफ्टवेयर के लिए जाल करते हैं जिसमें ओप के पांडित्य से सही अनुकरण होता है जो जाल कर सकते हैं।

"कर्नेल" या "सिस्टम" कार्य कार्य-स्विच आउट होने पर कुछ कर्नेल के साथ फ़्लोटिंग-पॉइंट रजिस्टरों को सहेजा नहीं जाता है (इसका कारण यह है कि एफपी रजिस्टर्स बड़े हैं और सहेजने के लिए समय और स्थान दोनों लेते हैं।) तो अगर आप एफपी का उपयोग करने का प्रयास करते हैं तो मान "पीओओफ़" बेतरतीब ढंग से जाएंगे

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

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