दिलचस्प पोस्ट
सूची से एक मूल्य के सभी घटनाओं को निकालें? एंड्रॉइड में किसी सेवा से सूचना भेजना एक आरजीबी मूल्य को देखते हुए, मैं एक टिंट (या छाया) कैसे बनाऊं? स्ट्रिंग को "" का उपयोग करके कैसे प्रारंभ किया जा सकता है? आप jQuery में एक तत्व "फ्लैश" कैसे बनाते हैं अंकों की सरणी को पूर्णांक कनवर्ट करें वस्तुओं के जावास्क्रिप्ट फ़िल्टर सरणी अजैक्स पोस्ट अनुरोध के साथ असफल रहने के लिए Django CSRF की जांच Matplotlib में एक colormap के मध्य बिंदु को परिभाषित ठीक से ओस्ट्रीम के लिए << ऑपरेटर को अधिभार कैसे लाया जाए? क्या मेरे iPhone आवेदन को रिवर्स-इंजिनियर करना संभव है? कार्य निष्पादन के लिए विफल ': app: dexDebug' com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException माउसओवर टूलटिप वाला मल्टीर्सरीज़ लाइन चार्ट पी के साथ डेटाबेस से गतिशील छवि प्रदर्शित करें: ग्राफिक इमेज और स्ट्रीमेड कंटेंट जावास्क्रिप्ट से उद्देश्य-सी को कैसे कॉल करें?

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

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

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

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

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

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

वेब के समाधान से एकत्रित समाधान "लिनक्स कर्नेल में फ्लोटिंग पॉइंट का इस्तेमाल"

इसलिये…

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

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

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

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

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

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

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


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

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

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

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