Friday 12 April 2013

लिनक्स मराठीतून :भाग ३: लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.


नमस्कार,या भागात आपण  लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर यांची ओळख करून घेणार आहोत, याचा आपणास डिव्हाईस ड्रायव्हर प्रोग्रॅम तयार करताना फार फायदा होईल.

कर्नेल हा लिनक्स ऑपरेटिंग सिस्टीमचा गाभा आहे. लिनक्स कम्युनिटी सतत या कर्नेल ला सुधारत असतात व कर्नेल ची नवनवीन व्हर्जन रिलीज करत असतात.

लिनक्सचा कर्नेल हा c आणि assembly या दोन भाषेत लिहिला आहे. कर्नेल हा कर्नेल स्पेस मध्ये रन होत असतो.

कर्नेल हा सिस्टिम चे हार्डवेअर आणि युजर ची अप्लिकेशन्स यांच्यातील मिडलवेअर चे काम करतो. कर्नेलचा असेम्ब्ली कोड हा हार्डवेअर वर अवलंबून असतो बाकी सी कोड हा फार मोठा आहे तो हार्डवेअर वर अवलंबून नसतो.

कर्नेल हा युजर कडून डाटा घेऊन तो प्रोसेसर, मेमरी इतर डिव्हाईस यांच्याशी कम्युनिकेशन करत असतो.

लिनक्स कर्नेल

लिनक्स कर्नेल

लिनक्स शिकण्याची खरी मजा येते जेंव्हा आपण सिस्टीम इंटरनल्स शिकतो.लिनक्सच्या जसेजसे आत घुसत जातो तसतशी कॉम्प्लेक्सिटी वाढते आणि तितकेच ते शिकणे रोमांचकारी होते.

आपण या अंकात लिनक्सच्या गाभ्यात नक्की काय दडलेले आहे ते पाहूया.

लिनक्स कर्नेल :

युनिक्स सिस्टीम हि अनेक प्रोसेस एकच वेळी हाताळत असते त्याचा बेस म्हणजे ऑपरेटिंग सिस्टीम चे कर्नेल ,कर्नेल हा ऑपरेटिंग सिस्टीमची पॉवर, मेमरी, प्रोसेस या महत्वाच्या गोष्टी सांभाळणारा मोठा बेस कोड असतो.कर्नेल ऑपरेटिंग सिस्टीम मध्ये खालील प्रमाणे वेगवेगळ्या भूमिका बजावतो.

प्रोसेस मेनेजमेंट:

अनेक प्रेसेस तयार करणे,त्या प्रोसेसरला पाठवून शेड्यूल नुसार चालवणे आणि नंतर प्रोसेस बंद करणे हे कर्नेलचे प्रोसेस मेनेजमेंटचे काम.

मेमरी मेनेजमेंट :

प्रोसेस ला मेमरी मिळवून देणे काम झाल्यवर ती मोकळी करणे आणि उपलब्द मेमरीचे व्हर्चुअल अँड्रेसवापरून नियोजन करणे.

फाईल सिस्टीम:

लिनक्स चा बेस म्हणजे त्याची फाईल सिस्टीम.लिनक्स मध्ये सगळे काही फाईल असेच मानले जाते ,म्हणजे अगदी फोल्डर म्हणजे पण फाईल चा असतो  आणि सिस्टीम ला जोडलेला कोणताहि डिव्हाईस हा हि ऑपरेटिंग सिस्टीम साठी फाईलच असतो…..हि आहे ना मस्त गोष्ट..लिनक्स कर्नेल या फाईल सिस्टीमचा स्ट्रक्चरल लेयर हार्डवेअरच्यावर तयार करते. [अशा अनेक फाईल सिस्टीम आहेत लिनक्स मध्ये,उदा :FATफाईल सिस्टीम]

डिव्हाईस कंट्रोल:

सिस्टीम ला लावलेल्या  प्रत्येक डिव्हाईस काम करून घेयासाठी काही ठराविक कोड रन केला जातो.त्याला डिव्हाईस ड्रायव्हर म्हणतात कर्नेल मध्ये सिस्टीम चे बेसिक डिव्हाईस ड्रायव्हर इनबिल्ट असतात .

उदा:कि-बोर्ड चा डिव्हाईस ड्रायव्हर.

नेटवर्किंग:

नेटवर्किंग चे पँकेट्स तयार करणे पाठवणे आलेले पँकेट्स ओळखणे आणि त्याचा वापर करणे या सारख्या नेटवर्किंगच्या गोष्टी कर्नेल हाताळतो.

[Ref:Linux device driver : orelly: Hartman]

कर्नेल स्पेस आणि युजर स्पेस:

युजर स्पेस:

युजरचा प्रोग्राम ,shell किंवा इतर अप्लिकेशन्स हे युजर स्पेस चा भाग आहेत.या अप्लिकेशन्स ना सुद्धा हार्डवेअर बरोबर माहितीची देवाणघेवाण कार्याची असते पण ते डायरेक्ट करू शकत नाहीत त्यासाठी त्यांना कर्नेल ची मदत घावी लागते.

कर्नेल स्पेस:

कर्नेल हे हार्डवेअर बरोबर डायरेक्ट संभाषण करीत असतात.यात डिव्हाईस ड्रायव्हर आणि त्यांचे फंक्शन्स,सिस्टीम कॉल्स हे युजरला हार्डवेअर शी संबंधित काम करण्यास मदत करतात.ज्यांद्वारे रीड, राईट ऑपरेशन्स करता येतात.या मोड मध्ये युजर ला पूर्ण अधिकार असतात.

डिव्हाईस ड्रायव्हरहा अप्लिकेशन्स आणि हार्डवेअर यांच्यातील दुवा म्हणून काम करतो.

कर्नेल स्पेस ,युजर स्पेस आणि डिव्हाईस ड्रायव्हर

कर्नेल स्पेस ,युजर स्पेस आणि डिव्हाईस ड्रायव्हर

डिव्हाईस ड्रायव्हर म्हणजे काय ?

आपल्या सिस्टिमला डिव्हाईस जोडल्यावर तो डिव्हाईस कसा काम करावा यासाठी सिस्टिममध्ये त्या डिव्हाईससाठीचा तो डिव्हाईस कसा काम करावा हे ठरवण्यासाठी काही कोड लिहिलेला असतो यास डिव्हाईस ड्रायव्हर म्हणतात.जसे आपण आपल्या सिस्टिमला काही नवीन डिव्हाईस जोडला कि आपल्याला त्या डिव्हाईस चा ड्रायव्हर इन्स्टॉल करावा लागतो त्या नंतरच तो डिव्हाईस काम करायला सुरवात करतो.

काही ड्रायव्हर सिस्टिम मध्येच असतात आपण डिव्हाईस जोडल्यावर ते लोड होऊन काम करू लागतात. जसे आपण पेन ड्राईव्ह आपल्या कॉम्प्युटर ला जोडला कि आपला कॉम्प्युटर त्यासाठीचा ड्रायव्हर आपोआप इन्स्टॉल करतो मग आपला पेन ड्राईव्ह चालू लागतो.

लिनक्सचे एक मस्त फिचर म्हणजे ऑपरेटिंग सिस्टीम चालू असताना आपण डिव्हाईस ड्रायव्हर लोड किंवा अन लोड करू शकतो त्यासाठी सिस्टीम री स्टार्ट करायची गरज नाही.याच लिनक्सच्या सुविधेमुळे लिनक्स सर्व्हर्समध्ये वापरतात.डिव्हाईस ड्रायव्हर च्या प्रोग्रेमला कर्नेल च्या भाषेत ‘मोड्यूल्स’ असेही म्हणतात.प्रत्येक मोड्युल हा त्याला दिलेल्या डिव्हाईस संबंधित कामकाज पाहतो.

डिव्हाईस ड्रायव्हरचे कँरेक्टर ड्रायव्हर [बाईट डाटा ट्रान्सफर],ब्लोँक ड्रायव्हर[स्टोरेज डिव्हाईस] ,नेटवर्क ड्रायव्हर[पेकेट्स डाटा ट्रान्सफर] असे प्रकार पडतात.

आपल्या टर्मिनल विंडो मध्ये जाऊन “ls /usr/src/linux/drivers/” हि कमांड दिल्यास आपणास आपल्या लिनक्स सिस्टीम मधील डिव्हाईस ड्रायव्हर पाहायला मिळतील.

माँड्यूल्स कमांड्स:

मोड्यूल्स हे .ko [कर्नेल ऑब्जेक्ट ]फाईल च्या  रुपात असतात .खालील कमांड्स टर्मिनलवर वापरून आपण आपणास हवे ते मोड्युल कर्नेल मध्ये घालू किंवा कर्नेल मधून काढू शकतो.

lsmod :हि कमांड आपल्या संगणकातील मोड्यूल्स म्हणजेच डिव्हाईस ड्रायव्हर ची लिस्ट दाखवते.

[नोंद :पुढील  कमांड मध्ये आपणास कमांड बरोबर फाईल चे नाव  द्यावे लागते].

insmod मोड्युल फाईल :हि कमांड वापरून आपण आपणस हवे ते मोड्युल कर्नेल मध्ये घालू शकतो.

modprobe मोड्युल फाईल : हि कमांड वापरल्यास ,आपणस हवे ते मोड्युल व त्या मोड्युलशी निगडीत असे मोड्यूल्स आपोआप कर्नेल मध्ये जातात.

rmmod मोड्युल फाईल :हि कमांड वापरून आपण आपणस हवे ते मोड्युल कर्नेल मधून बाहेर काढू शकतो.

अशा तऱ्हेने आपण या भागात कर्नेल आणि डिव्हाईस ड्रायव्हर यांची ओळख करून घेतली आहे.आपणस डिव्हाईस ड्रायव्हर प्रोग्रॅम लिहणे चालू करण्याआधी हि बेसिक माहिती समजणे फार महत्वाचे आहे.

No comments:

Post a Comment