• গ্রন্থাগার (গণনা) Library (computing)

    Library (computing)

    'সফ্টওয়্যার লাইব্রেরি' এখানে পুনঃনির্দেশ করে। এটি লাইব্রেরি সফ্টওয়্যার নিয়ে বিভ্রান্ত হওয়ার দরকার নেই।


    কম্পিউটার বিজ্ঞান, একটি গ্রন্থাগার হ'ল প্রায়শই সফ্টওয়্যার বিকাশের জন্য কম্পিউটার প্রোগ্রামগুলির দ্বারা ব্যবহৃত অ-উদ্বায়ী সংস্থার সংগ্রহ। 

    এর মধ্যে include configuration data, documentation, help data, message templates, pre-written code and subroutines , classes , values or type specifications  বিশদ উল্লেখ অন্তর্ভুক্ত থাকতে পারে।  আইবিএম এর অপারেটিং সিস্টেম / 360 এবং তার উত্তরাধিকারী  এগুলিকে পার্টিশনযুক্ত ডেটা সেট হিসাবে উল্লেখ করা হয়।
    লাইব্রেরি হ'ল আচরণের বাস্তবায়নগুলির একটি সংগ্রহও, কোনও ভাষার ক্ষেত্রে রচিত, এটির একটি সুস্পষ্ট সংজ্ঞা দেওয়া ইন্টারফেস রয়েছে যার মাধ্যমে আচরণটি চালিত হয়। উদাহরণস্বরূপ, যে সমস্ত লোক উচ্চ স্তরের প্রোগ্রাম লিখতে চান তারা সেই সিস্টেম কলগুলি বারবার প্রয়োগের পরিবর্তে সিস্টেম কল করার জন্য একটি লাইব্রেরি ব্যবহার করতে পারেন। এছাড়াও, একাধিক স্বতন্ত্র প্রোগ্রামগুলির দ্বারা পুনঃব্যবহারের জন্য আচরণ সরবরাহ করা হয়।

    একটি প্রোগ্রাম ভাষার ব্যবস্থার মাধ্যমে গ্রন্থাগার-সরবরাহিত আচরণের আহ্বান জানায়। উদাহরণস্বরূপ, সি হিসাবে একটি সাধারণ আবশ্যক ভাষায়, লাইব্রেরির আচরণ সি এর সাধারণ ফাংশন-কল ব্যবহার করে আহ্বান জানানো হয়। কলটি একটি লাইব্রেরির ফাংশন হিসাবে চিহ্নিত করা, একই প্রোগ্রামের অন্য কোনও ক্রিয়াকলাপ হিসাবে বনামকে কীভাবে সিস্টেমের মধ্যে কোডটি সংগঠিত করা হয় তা বোঝায়।

    লাইব্রেরি কোডটি এমনভাবে সংগঠিত করা হয় যে এটি একাধিক প্রোগ্রামগুলির দ্বারা একে অপরের সাথে সংযোগ না করে ব্যবহার করা যেতে পারে, যখন কোনও প্রোগ্রামের অংশবিশেষ কোডটি কেবলমাত্র সেই প্রোগ্রামের মধ্যেই ব্যবহার করার জন্য সংগঠিত হয়। যখন কোনও প্রোগ্রামটি বড় হয়, যেমন একটি বহু মিলিয়ন-লাইনের প্রোগ্রাম হিসাবে এই পার্থক্যটি একটি শ্রেণিবদ্ধ ধারণা অর্জন করতে পারে। সেক্ষেত্রে অভ্যন্তরীণ পাঠাগারগুলি থাকতে পারে যা বৃহত প্রোগ্রামের স্বতন্ত্র উপ-অংশ দ্বারা পুনরায় ব্যবহৃত হয়। স্বতন্ত্র বৈশিষ্ট্যটি হ'ল একটি গ্রন্থাগারটি স্বাধীন প্রোগ্রাম বা উপ-প্রোগ্রামগুলি দ্বারা পুনরায় ব্যবহারের উদ্দেশ্যে সংগঠিত হয় এবং ব্যবহারকারীর কেবল ইন্টারফেসটি জানতে হবে, গ্রন্থাগারের অভ্যন্তরীণ বিবরণগুলি নয়।একটি লাইব্রেরির মান আচরণের পুনরায় ব্যবহারের মধ্যে রয়েছে। যখন কোনও প্রোগ্রাম একটি লাইব্রেরিকে ডাকে, তখন সেই লাইব্রেরির ভিতরে প্রয়োগ করা আচরণটি সেই আচরণটি নিজেই প্রয়োগ না করেই লাভ করে। গ্রন্থাগারগুলি একটি মডুলার ফ্যাশনে কোড ভাগ করে নেওয়ার জন্য উত্সাহ দেয় এবং কোড বিতরণকে সহজ করে দেয়।একটি লাইব্রেরির দ্বারা বাস্তবায়িত আচরণটি বিভিন্ন প্রোগ্রামের জীবনচক্র পর্যায়গুলিতে নিমন্ত্রিত প্রোগ্রামের সাথে সংযুক্ত হতে পারে। আমন্ত্রণমূলক প্রোগ্রামটি তৈরির সময় যদি গ্রন্থাগারের কোড অ্যাক্সেস করা হয় তবে লাইব্রেরিকে স্ট্যাটিক লাইব্রেরি বলা হয়। [1] একটি বিকল্প হ'ল আমন্ত্রণমূলক প্রোগ্রামটির এক্সিকিউটেবল তৈরি করা এবং এটি বিতরণ করা হয়, গ্রন্থাগার বাস্তবায়নের স্বাধীনভাবে। এক্সিকিউটেবলকে মৃত্যুদন্ড কার্যকর করার জন্য আহ্বান করার পরে লাইব্রেরির আচরণটি সংযুক্ত করা হয়, তা কার্যকরভাবে শুরু করার প্রক্রিয়ার অংশ হিসাবে, বা সম্পাদনের মধ্যবর্তী অংশে। এই ক্ষেত্রে গ্রন্থাগারটিকে ডায়নামিক লাইব্রেরি বলা হয় (রান সময়ে লোড করা)। একটি ডায়নামিক লাইব্রেরি লিংক দ্বারা কার্যকরকরণের জন্য একটি প্রোগ্রাম প্রস্তুত করার সময় লোড এবং সংযুক্ত করা যেতে পারে। বিকল্পভাবে, মৃত্যুদন্ড কার্যকর করার মাঝখানে, একটি অ্যাপ্লিকেশন স্পষ্টভাবে মডিউলটি লোড করার জন্য অনুরোধ করতে পারে।বেশিরভাগ সংকলিত ভাষার একটি মানক গ্রন্থাগার রয়েছে যদিও প্রোগ্রামাররা তাদের নিজস্ব কাস্টম লাইব্রেরি তৈরি করতে পারে। বেশিরভাগ আধুনিক সফ্টওয়্যার সিস্টেমগুলি লাইব্রেরি সরবরাহ করে যা বেশিরভাগ সিস্টেম পরিষেবাদি প্রয়োগ করে। এই জাতীয় গ্রন্থাগারগুলি পরিষেবাগুলিকে বাণিজ্যিকভাবে সংযুক্ত করেছে যা একটি আধুনিক অ্যাপ্লিকেশন প্রয়োজন। এই হিসাবে, আধুনিক অ্যাপ্লিকেশন দ্বারা ব্যবহৃত বেশিরভাগ কোডগুলি এই সিস্টেম লাইব্রেরিতে সরবরাহ করা হয়।

    "কমপুলের উদ্দেশ্য ছিল কেন্দ্রীয়ভাবে ডেটা বিবরণ সরবরাহ করে অনেক প্রোগ্রামের মধ্যে সিস্টেম ডেটা ভাগ করার অনুমতি দেওয়া"



    Relocationস্থানান্তরের

    একটি প্রোগ্রাম বা গ্রন্থাগার মডিউলে কিছু রেফারেন্স একটি আপেক্ষিক বা প্রতীকী আকারে সংরক্ষণ করা হয় যা সমস্ত কোড এবং লাইব্রেরিগুলিকে চূড়ান্ত স্থির ঠিকানাগুলি বরাদ্দ না করা পর্যন্ত সমাধান করা যায় না। রিলোকেশন হ'ল এই রেফারেন্সগুলি সামঞ্জস্য করার প্রক্রিয়া এবং এটি লিঙ্কার বা লোডার দ্বারা সম্পন্ন হয়। সাধারণভাবে, পৃথক পাঠাগারগুলিতে নিজের স্থান পরিবর্তন করা যায় না কারণ মেমরির ঠিকানাগুলি তাদের এবং অন্যান্য লাইব্রেরির সাথে একত্রিত হওয়া প্রোগ্রামের উপর নির্ভর করে পরিবর্তিত হতে পারে। অবস্থান-স্বতন্ত্র কোড নিখুঁত ঠিকানাগুলির রেফারেন্সগুলি এড়িয়ে যায় এবং তাই স্থানান্তরের প্রয়োজন হয় না।


    স্ট্যাটিক লাইব্রেরি



    এক্সিকিউটেবল বা অন্য কোনও অবজেক্ট ফাইল তৈরির সময় লিঙ্কিং সঞ্চালিত হয়, এটি স্ট্যাটিক লিঙ্কিং বা প্রারম্ভিক বাইন্ডিং হিসাবে পরিচিত । এই ক্ষেত্রে, লিঙ্কিংটি সাধারণত কোনও লিঙ্কার দ্বারা করা হয় তবে এটি সংকলক দ্বারাও করা যেতে পারে । একটি স্ট্যাটিক লাইব্রেরি , একটি সংরক্ষণাগার হিসাবেও পরিচিত , এটি স্ট্যাটিকালি লিঙ্ক করার উদ্দেশ্যে তৈরি হয়। মূলত, কেবল স্থির গ্রন্থাগারগুলির অস্তিত্ব ছিল। যখন কোনও মডিউল পুনরায় সংযুক্ত করা হয় তখন স্ট্যাটিক লিঙ্কিং সম্পাদন করতে হবে।
    একটি প্রোগ্রাম দ্বারা প্রয়োজনীয় সমস্ত মডিউলগুলি কখনও কখনও স্থিতিশীলভাবে সংযুক্ত করা হয় এবং সম্পাদনযোগ্য ফাইলে অনুলিপি করা হয়। এই প্রক্রিয়াটি এবং ফলস্বরূপ একা থাকা ফাইলটি প্রোগ্রামটির একটি স্ট্যাটিক বিল্ড হিসাবে পরিচিত । ভার্চুয়াল মেমরি ব্যবহার করা হয় এবং কোনও ঠিকানা স্থান বিন্যাসের র্যান্ডমাইজেশন পছন্দ না হলে স্থিতিশীল বিল্ডটির আর কোনও স্থানান্তর প্রয়োজন হবে না 


    Shared libraries ভাগ করা লাইব্রেরি

    একটি ভাগ করা লাইব্রেরি বা ভাগ করা অবজেক্ট হ'ল এমন একটি ফাইল যা এক্সিকিউটেবল ফাইল এবং আরও ভাগ করে নেওয়া অবজেক্ট ফাইলগুলি দ্বারা ভাগ করা যায়। প্রোগ্রাম দ্বারা ব্যবহৃত মডিউলগুলি পৃথক ভাগ করা বস্তুগুলি লোড সময় বা রান সময় মেমরিতে লোড করা হয় , যখন কোনও লিঙ্কার যখন এটি প্রোগ্রামের জন্য একক একাধিক এক্সিকিউটেবল ফাইল তৈরি করে তখন এটি অনুলিপি করা হয় না।
    ভাগ করা লাইব্রেরিগুলি স্থিতিশীলভাবে সংযুক্ত করা যেতে পারে যার অর্থ লাইব্রেরি মডিউলগুলির উল্লেখগুলি সমাধান করা হয় এবং এক্সিকিউটেবল ফাইল তৈরি হওয়ার সময় মডিউলগুলি মেমরি বরাদ্দ করা হয়। তবে প্রায়শই ভাগ করা লাইব্রেরিগুলির সংযোগগুলি লোড না হওয়া পর্যন্ত স্থগিত করা হয়। 
    বেশিরভাগ আধুনিক অপারেটিং সিস্টেমগুলি  এক্সিকিউটেবল ফাইলগুলির মতো একই ফর্ম্যাটের লাইব্রেরি ফাইলগুলি থাকতে পারে। এটি দুটি প্রধান সুবিধা দেয়: প্রথমত, এটির জন্য দুটিয়ের পরিবর্তে উভয়ের জন্য কেবল একটি লোডার তৈরি করা প্রয়োজন (একক লোডারকে এটির অতিরিক্ত জটিলতার পক্ষে ভাল বিবেচনা করা হয়)। দ্বিতীয়ত, এটি এক্সিকিউটেবলগুলিকে ভাগ করে নেওয়া লাইব্রেরি হিসাবে ব্যবহার করতে দেয়, যদি তাদের একটি চিহ্ন সারণী থাকে । সাধারণ সম্মিলিত এক্সিকিউটেবল এবং শেয়ার্ড লাইব্রেরি ফর্ম্যাটগুলি হ'ল ইএলএফ এবং মাচ-ও (ইউনিক্স উভয়) এবং পিই (উইন্ডোজ)।
    যেমন কিছু পুরাতন পরিবেশের মধ্যে উইন্ডোজ 16 বিট বা MPE জন্য এইচপি 3000 শুধুমাত্র স্ট্যাকের-ভিত্তিক ডেটা (স্থানীয়) কে ভাগ-গ্রন্থাগার কোড, বা অন্যান্য গুরুত্বপূর্ণ বিধিনিষেধ মধ্যে অনুমতি দেওয়া হয়েছিল ভাগ-গ্রন্থাগার কোডের উপর ন্যস্ত করা হয়।

    মেমরি ভাগ করে নেওয়া 

    তিনটি প্রসেসরের একটি ভাগ করা মেমরি সিস্টেমের একটি চিত্রণ।
    এইচএসএ মেমোরি শেয়ারিংয়ের একটি বিশেষ কেস সংজ্ঞায়িত করে, যেখানে সিপিইউয়ের এমএমইউ এবং জিপিইউয়ের আইওএমএমইউ একটি অভিন্ন পৃষ্ঠাযুক্ত ভার্চুয়াল ঠিকানার স্থান রয়েছে।

    লাইব্রেরি কোড একাধিক প্রক্রিয়া , পাশাপাশি ডিস্কে মেমরির ভাগ করা যেতে পারে । যদি ভার্চুয়াল মেমরি ব্যবহার করা হয়, তবে প্রক্রিয়াগুলি র‌্যামের একই শারীরিক পৃষ্ঠাটি কার্যকর করতে পারে যা প্রক্রিয়াগুলির বিভিন্ন ঠিকানা স্পেসে ম্যাপ করা হয়। এর সুবিধা রয়েছে has উদাহরণস্বরূপ, ওপেনস্টেপ সিস্টেমে অ্যাপ্লিকেশনগুলি প্রায় কয়েকশ কিলোবাইট আকারের ছিল এবং দ্রুত লোড হয়; তাদের কোডের বেশিরভাগটি লাইব্রেরিতে ছিল যা অপারেটিং সিস্টেম দ্বারা ইতিমধ্যে অন্যান্য উদ্দেশ্যে লোড করা হয়েছিল।
    প্রোগ্রামগুলি ইউনিক্সের মতো অবস্থান-স্বতন্ত্র কোড ব্যবহার করে র‌্যাম ভাগ করে নেওয়া সম্পন্ন করতে পারে যা একটি জটিল তবে নমনীয় আর্কিটেকচার বা উইন্ডো এবং ওএস / ২ এর মতো সাধারণ ভার্চুয়াল ঠিকানা ব্যবহার করে । এই সিস্টেমগুলি নিশ্চিত করে তোলে যে ঠিকানার জায়গার প্রাক ম্যাপিং এবং প্রতিটি ভাগ করা লাইব্রেরির জন্য স্লট সংরক্ষণের মতো বিভিন্ন কৌশল দ্বারা, সেই কোডটি ভাগ করে নেওয়ার দুর্দান্ত সম্ভাবনা রয়েছে। তৃতীয় বিকল্প হ'ল একক স্তরের স্টোর , যা আইবিএম সিস্টেম / 38 এবং এর উত্তরসূরীরা ব্যবহার করে। এটি অবস্থান-নির্ভর কোডটি মঞ্জুরি দেয়, তবে কোডটি কোথায় স্থাপন করা যায় বা কীভাবে এটি ভাগ করা যায় তার কোনও উল্লেখযোগ্য বাধা নেই।
    কিছু ক্ষেত্রে ভাগ করা লাইব্রেরিগুলির বিভিন্ন সংস্করণ সমস্যার কারণ হতে পারে, বিশেষত যখন বিভিন্ন সংস্করণের লাইব্রেরিতে একই ফাইলের নাম থাকে এবং একটি সিস্টেমে ইনস্টল করা বিভিন্ন অ্যাপ্লিকেশনগুলির প্রত্যেকটির একটি নির্দিষ্ট সংস্করণ প্রয়োজন। উইন্ডোজ এবং ওএস / 2 ডিএলএল ফাইলের নাম অনুসারে এই জাতীয় দৃশ্যটি ডিএলএল হেল্ক নামে পরিচিত । 2001 এর পরে বেশিরভাগ আধুনিক অপারেটিং সিস্টেমে এ জাতীয় পরিস্থিতি নির্মূল করতে বা অ্যাপ্লিকেশন-নির্দিষ্ট "ব্যক্তিগত" লাইব্রেরি ব্যবহার করার জন্য ক্লিন আপ পদ্ধতি রয়েছে। 

    গতিশীল লিঙ্কিং 

    ডায়ামিক লিঙ্কিং বা লেট বাইন্ডিং সম্পাদনযোগ্য ফাইলটি তৈরি হওয়ার পরিবর্তে কোনও প্রোগ্রাম লোড ( লোড টাইম ) বা এক্সিকিউটেড ( রান টাইম ) চলাকালীন সম্পাদিত লিঙ্কটি সম্পাদন করে । ডায়নামিকভাবে সংযুক্ত একটি গ্রন্থাগার ( ডায়নামিক-লিঙ্ক গ্রন্থাগার , বা ডিএলএল, উইন্ডোজ এবং ওএস / 2 ; ডায়নামিক শেয়ার্ড অবজেক্ট, বা ডিএসও, ইউনিক্সের মতো সিস্টেমের অধীনে ) ডায়নামিক লিঙ্কিংয়ের উদ্দেশ্যে তৈরি একটি লাইব্রেরি। লিঙ্কার দ্বারা কেবল সর্বনিম্ন কাজ করা হয়যখন এক্সিকিউটেবল ফাইল তৈরি হয়; এটি কেবল প্রোগ্রামটির প্রয়োজনীয় লাইব্রেরি এবং গ্রন্থাগারের সূচির নাম বা রুটিনগুলির সংখ্যা রেকর্ড করে। লিঙ্কিংয়ের বেশিরভাগ কাজ অ্যাপ্লিকেশনটি লোড হওয়ার সময় (লোড সময়) বা সম্পাদনের সময় (রান সময়) করা হয়। সাধারণত, "ডায়নামিক লিঙ্কার" বা "লিঙ্কিং লোডার" নামে পরিচিত প্রয়োজনীয় লিঙ্কিং প্রোগ্রামটি আসলে অন্তর্নিহিত অপারেটিং সিস্টেমেরই একটি অংশ । (তবে, ডায়নামিক লিঙ্কিং ব্যবহার করে এমন একটি প্রোগ্রাম লিখতে এবং অত্যধিক কঠিন নয়, এমনকি নিজস্ব গতিশীল লিঙ্কার অন্তর্ভুক্ত এমনকি এমন একটি অপারেটিং সিস্টেমের জন্যও যা গতিশীল সংযোগের জন্য কোনও সমর্থন দেয় না))
    প্রোগ্রামাররা মূলত ১৯৪64 সালে শুরু হওয়া মাল্টিক্স অপারেটিং সিস্টেমে গতিশীল সংযোগ তৈরি করে এবং ১৯60০ এর দশকের শেষদিকে নির্মিত এমটিএস ( মিশিগান টার্মিনাল সিস্টেম )। 

    অপ্টিমাইজেশন 

    যেহেতু বেশিরভাগ সিস্টেমে ভাগ করা লাইব্রেরিগুলি প্রায়শই পরিবর্তিত হয় না, সিস্টেমগুলি প্রয়োজনীয়তার আগে সিস্টেমের প্রতিটি ভাগ করা লাইব্রেরির জন্য সম্ভাব্য লোড ঠিকানা গণনা করতে পারে এবং তথ্যটি গ্রন্থাগারগুলিতে এবং এক্সিকিউটেবলের মধ্যে সঞ্চয় করতে পারে। লোড হওয়া প্রতিটি ভাগ করা লাইব্রেরি যদি এই প্রক্রিয়াটি সম্পন্ন করে থাকে তবে প্রতিটি তার পূর্বনির্ধারিত ঠিকানায় লোড হবে যা গতিশীল সংযোগের প্রক্রিয়াটিকে গতিবেগ করে। এই অপ্টিমাইজেশান হিসাবে পরিচিত হয় prebinding MacOS এবং prelinking লিনাক্স হবে। এই কৌশলটির অসুবিধাগুলির মধ্যে অন্তর্ভুক্ত প্রতিটি সময় ভাগ করা লাইব্রেরিগুলি পরিবর্তনের সময় ঠিকানাগুলি পূর্ববর্তী করার প্রয়োজনীয় সময়, ঠিকানা জায়গার বিন্যাসটি এলোমেলোভাবে ব্যবহারের অক্ষমতা এবং ব্যবহারের জন্য পর্যাপ্ত ভার্চুয়াল ঠিকানার জায়গার প্রয়োজনীয়তা (একটি সমস্যা যা দত্তক গ্রহণের দ্বারা হ্রাস পাবে)কমপক্ষে আপাতত 64৪-বিট আর্কিটেকচার)।

    রান সময় লাইব্রেরি সনাক্তকরণ 

    ভাগ করা লাইব্রেরিগুলির জন্য লোডারগুলি কার্যকারিতার ক্ষেত্রে বিভিন্নভাবে পরিবর্তিত হয়। কিছু গ্রন্থাগারগুলিতে এক্সিকিউটেবল স্টোরিং স্পষ্ট পাথের উপর নির্ভর করে। ফাইল সিস্টেমের লাইব্রেরির নামকরণ বা বিন্যাসে যে কোনও পরিবর্তন এই সিস্টেমগুলিকে ব্যর্থ করে দেবে। আরও সাধারণভাবে, কেবলমাত্র অ্যালগরিদমের উপর ভিত্তি করে অপারেটিং সিস্টেমটি ডিস্কে লাইব্রেরিটি সন্ধানের জন্য একটি পদ্ধতি সরবরাহকারী অপারেটিং সিস্টেমের সাহায্যে কেবল গ্রন্থাগারের নাম (এবং পথ নয়) নির্বাহযোগ্য স্থানে সংরক্ষণ করা হয়।
    যদি একটি ভাগ করা লাইব্রেরি যা কার্যকর করা যায় তার উপর নির্ভর করে যদি মুছে ফেলা হয়, সরিয়ে নেওয়া হয় বা পুনরায় নামকরণ করা হয়, বা যদি লাইব্রেরির কোনও বেমানান সংস্করণ সন্ধানে পূর্ববর্তী কোনও জায়গায় অনুলিপি করা হয় তবে এক্সিকিউটেবল লোড করতে ব্যর্থ হবে। এটিকে অনেক প্ল্যাটফর্মে বিদ্যমান নির্ভরতা নরক বলা হয়। (কুখ্যাত) উইন্ডোজ রূপটি সাধারণত ডিএলএল হেল্ক হিসাবে পরিচিত। প্রতিটি লাইব্রেরির প্রতিটি সংস্করণ স্বতন্ত্রভাবে চিহ্নিত করা হয় এবং প্রতিটি প্রোগ্রাম কেবল তাদের সম্পূর্ণ অনন্য শনাক্তকারীদের দ্বারা লাইব্রেরিগুলিকে উল্লেখ করে তবে এই সমস্যা দেখা দিতে পারে না। পূর্ববর্তী উইন্ডোজ সংস্করণগুলির সাথে "ডিএলএল হেল্ক" সমস্যাগুলি কেবলমাত্র লাইব্রেরির নামগুলি ব্যবহার করেই উদ্ভূত হয়েছিল যা প্রোগ্রামগুলিতে গতিশীল লিঙ্কগুলি সমাধান করার জন্য অনন্যতার গ্যারান্টিযুক্ত ছিল না। ("ডিএলএল হেল" এড়াতে, উইন্ডোজের পরবর্তী সংস্করণগুলি প্রাইভেট ডিএলএল ইনস্টল করার প্রোগ্রামগুলির মূলত বিকল্পগুলির উপর নির্ভর করে shared মূলত শেয়ার্ড লাইব্রেরিগুলির ব্যবহার থেকে একটি আংশিক পশ্চাদপসরণ — সেগুলির পূর্ববর্তী সংস্করণগুলির সাথে ভাগ করে নেওয়া সিস্টেম ডিএলএলগুলির প্রতিস্থাপন রোধ করার প্রক্রিয়া সহ)। )

    মাইক্রোসফ্ট উইন্ডোজ 

    মাইক্রোসফ্ট উইন্ডোজ সিওএম অবজেক্ট প্রয়োগ করে এমন ডিএলএল লোড করার উপযুক্ত স্থান নির্ধারণের জন্য রেজিস্ট্রি পরীক্ষা করে , তবে অন্যান্য ডিএলএলগুলির জন্য এটি একটি নির্ধারিত ক্রমে ডিরেক্টরিগুলি পরীক্ষা করে দেখবে। প্রথমে, উইন্ডোজ সেই ডিরেক্টরিটি পরীক্ষা করে যেখানে এটি প্রোগ্রামটি লোড করে ( ব্যক্তিগত ডিএলএল ); ফাংশন কল করে কোনও ডিরেক্টরি সেট সিস্টেম 32, সিস্টেম এবং উইন্ডোজ ডিরেক্টরিসমূহ; তারপরে বর্তমান ওয়ার্কিং ডিরেক্টরি; এবং পরিশেষে PATH এনভায়রনমেন্ট ভেরিয়েবল দ্বারা নির্দিষ্ট ডিরেক্টরিগুলি  .NET ফ্রেমওয়ার্ক ফ্রেমওয়ার্কের জন্য রচিত অ্যাপ্লিকেশনগুলি (২০০২ সাল থেকে) গ্লোবাল অ্যাসেম্বলি ক্যাশেও পরীক্ষা করেSetDllDirectory()ডিএলএল হেলকের সমস্যাটি সরাতে ভাগ করা ডিএলএল ফাইলগুলির প্রাথমিক স্টোর হিসাবে 

    ওপেনস্টেপ 

    ওপেনস্টেপ আরও নমনীয় সিস্টেম ব্যবহার করেছে, সিস্টেমটি প্রথম শুরু হওয়ার সাথে সাথে প্রচুর পরিচিত স্থান (PATH ধারণার অনুরূপ) থেকে গ্রন্থাগারের তালিকা সংগ্রহ করে। চারপাশে লাইব্রেরিগুলি সরানো কোনও সমস্যার কারণ নয়, যদিও ব্যবহারকারীরা প্রথমে সিস্টেমটি শুরু করার সময় একটি সময় ব্যয় করে।

    ইউনিক্স-মতো সিস্টেম 

    বেশিরভাগ ইউনিক্সের মতো সিস্টেমে একটি "অনুসন্ধানের পথ" রয়েছে যা ফাইল-সিস্টেম ডিরেক্টরি নির্দিষ্ট করে যেখানে ডায়নামিক লাইব্রেরিগুলি অনুসন্ধান করা উচিত। কিছু সিস্টেম একটি কনফিগারেশন ফাইলে ডিফল্ট পাথ নির্দিষ্ট করে দেয় , অন্যরা এটি গতিশীল লোডারে হার্ড-কোড করে। কিছু এক্সিকিউটেবল ফাইল ফর্ম্যাট অতিরিক্ত ডিরেক্টরি নির্দিষ্ট করতে পারে যাতে নির্দিষ্ট প্রোগ্রামের জন্য লাইব্রেরি অনুসন্ধান করতে হয়। এটি সাধারণত পরিবেশের পরিবর্তনশীল দিয়ে ওভাররাইড করা যায় যদিও এটি সেটুইডের জন্য অক্ষম থাকেএবং সেটগিড প্রোগ্রামগুলি, যাতে কোনও ব্যবহারকারী এই জাতীয় প্রোগ্রামকে রুট অনুমতি নিয়ে স্বেচ্ছাসেবক কোড চালাতে বাধ্য করতে না পারে। গ্রন্থাগারগুলির বিকাশকারীরা তাদের গতিশীল লাইব্রেরিগুলিকে ডিফল্ট অনুসন্ধানের জায়গাগুলিতে স্থাপন করতে উত্সাহিত করা হয়। খারাপ দিক থেকে, এটি নতুন লাইব্রেরিগুলির ইনস্টলেশন সমস্যাযুক্ত করে তুলতে পারে এবং এই "জ্ঞাত" অবস্থানগুলি দ্রুত বর্ধিত সংখ্যক গ্রন্থাগারের ফাইলের বাড়িতে পরিণত হয়, যার ফলে পরিচালন আরও জটিল হয়।

    গতিশীল লোডিং 

    ডায়নামিক লোডিং, ডায়নামিক লিঙ্কিংয়ের একটি উপসেট, অনুরোধের সময় চালিত সময়ে গতিশীলভাবে সংযুক্ত লাইব্রেরি লোডিং এবং আনলোড জড়িত । এই ধরনের অনুরোধ সংকলন সময় বা স্পষ্টভাবে রান সময় করা যেতে পারে। সংকলনের সময় অন্তর্নিহিত অনুরোধগুলি করা হয় যখন কোনও লিঙ্কার লাইব্রেরি রেফারেন্স যুক্ত করে যা ফাইল পাথ বা কেবল ফাইলের নাম অন্তর্ভুক্ত করে। অ্যাপ্লিকেশনগুলি রান করার সময় কোনও অপারেটিং সিস্টেমের API এ সরাসরি কল করলে স্পষ্ট অনুরোধগুলি করা হয়।
    বেশিরভাগ অপারেটিং সিস্টেমগুলি যা গতিশীলভাবে সংযুক্ত লাইব্রেরিগুলিকে সমর্থন করে সেগুলি রান-টাইম লিঙ্কার API এর মাধ্যমে এ জাতীয় লাইব্রেরিগুলি গতিশীলভাবে সমর্থন করে । উদাহরণস্বরূপ, মাইক্রোসফ্ট উইন্ডোজ মাইক্রোসফ্ট ডায়নামিক লিংক গ্রন্থাগারগুলির সাথে এপিআই ফাংশন লোডলিবারি , লোডলিবারিয়ানেক্স , ফ্রিলিবারি এবং গেটপ্রোক অ্যাড্রেস ব্যবহার করে POSIX ভিত্তিক সবচেয়ে ইউনিক্স এবং ইউনিক্স-সদৃশ সিস্টেম, ব্যবহার সমেত সিস্টেম, dlopen , dlclose এবং dlsym । কিছু উন্নয়ন ব্যবস্থা এই প্রক্রিয়াটি স্বয়ংক্রিয় করে।

    অবজেক্ট এবং ক্লাসের লাইব্রেরি 

    যদিও প্রাথমিকভাবে 1960 এর দশকে অগ্রণী হওয়া সত্ত্বেও, গতিশীল সংযোগ 1980 এর দশক নাগাদ গ্রাহকদের দ্বারা ব্যবহৃত অপারেটিং সিস্টেমে পৌঁছায় না । এটি 1990 এর দশকের গোড়ার দিকে বেশিরভাগ অপারেটিং সিস্টেমে সাধারণত কোনও আকারে উপলব্ধ ছিল। এই একই সময়কালে, অবজেক্ট ভিত্তিক প্রোগ্রামিং(ওওপি) প্রোগ্রামিং ল্যান্ডস্কেপের একটি উল্লেখযোগ্য অংশ হয়ে উঠছিল। রানটাইম বাইন্ডিং সহ ওওপি-র অতিরিক্ত তথ্য প্রয়োজন যা প্রথাগত গ্রন্থাগারগুলি সরবরাহ করে না। এর মধ্যে অবস্থিত কোডটির নাম এবং প্রবেশের পয়েন্টগুলি ছাড়াও, তারা নির্ভর করে এমন অবজেক্টগুলির একটি তালিকাও প্রয়োজন। এটি ওওপির অন্যতম প্রধান সুবিধা, উত্তরাধিকারের একটি পার্শ্ব-প্রতিক্রিয়া, যার অর্থ কোনও পদ্ধতির সম্পূর্ণ সংজ্ঞার অংশগুলি বিভিন্ন জায়গায় থাকতে পারে। এটি কেবলমাত্র একটি লাইব্রেরির জন্য অন্যের পরিষেবাগুলির প্রয়োজনের তালিকা তৈরির চেয়ে আরও বেশি: সত্য ওওপি সিস্টেমে লাইব্রেরিগুলি সংকলনের সময় নিজেই নাও জানা থাকতে পারে এবং সিস্টেম থেকে সিস্টেমে পরিবর্তিত হয়।
    একই সময়ে অনেক বিকাশকারী বহু-স্তরীয় প্রোগ্রামগুলির ধারণার উপরে কাজ করেছিলেন, যার মধ্যে একটি ডেস্কটপ কম্পিউটারে চলমান "ডিসপ্লে" ডেটা স্টোরেজ বা প্রসেসিংয়ের জন্য একটি মেইনফ্রেম বা মিনিকম্পিউটারের পরিষেবা ব্যবহার করবে । উদাহরণস্বরূপ, একটি জিইউআই-ভিত্তিক কম্পিউটারে একটি প্রোগ্রাম একটি মিনি ডেস্কটপকে একটি বিশাল ডেটাসেটের ছোট ছোট নমুনাগুলি প্রদর্শনের জন্য ফেরত পাঠাতে বার্তা পাঠাত। রিমোট পদ্ধতি কল (আরপিসি) ইতিমধ্যে এই কাজগুলি পরিচালনা করেছে, তবে কোনও স্ট্যান্ডার্ড আরপিসি সিস্টেম ছিল না।
    শীঘ্রই মিনিকম্পিউটার এবং মেইনফ্রেম বিক্রেতারা দু'টিকে একত্রিত করার জন্য প্রকল্পগুলিকে প্ররোচিত করেছিল, যে কোনও কোথাও ব্যবহার করা যেতে পারে এমন একটি ওওপি লাইব্রেরি ফর্ম্যাট তৈরি করে। যদি তারা দূরবর্তী অ্যাক্সেসকে সমর্থন করে (সমস্ত কিছু করেনি) তবে এই জাতীয় সিস্টেমগুলি অবজেক্ট লাইব্রেরি বা বিতরণযোগ্য বস্তু হিসাবে পরিচিত ছিল । মাইক্রোসফ্টের সিওএম স্থানীয় ব্যবহারের জন্য যেমন সিস্টেমের উদাহরণ, ডিসিওএম একটি পরিবর্তিত সংস্করণ যা দূরবর্তী অ্যাক্সেসকে সমর্থন করে।
    কিছু সময়ের জন্য অবজেক্ট লাইব্রেরি প্রোগ্রামিং জগতে "পরবর্তী বড় জিনিস" এর মর্যাদা ধরেছিল। প্ল্যাটফর্ম জুড়ে চলতে পারে এমন সিস্টেম তৈরির জন্য বেশ কয়েকটি প্রচেষ্টা ছিল এবং সংস্থাগুলি বিকাশকারীদের তাদের নিজস্ব সিস্টেমে লক করার চেষ্টা করার জন্য প্রতিযোগিতা করেছিল। উদাহরণ অন্তর্ভুক্ত আইবিএম এর সিস্টেম অবজেক্ট মডেল (জন্য SOM / DSOM), সান মাইক্রোসিস্টেম ' ডিস্ট্রিবিউটেড অবজেক্টস সব জায়গা (পরিবেশ অধিদপ্তর), নেক্সট ' র পোর্টেবল বন্টিত অবজেক্টস (PDO), ডিজিটাল এর ObjectBroker , Microsoft এর কম্পোনেন্ট অবজেক্ট মডেল (com / DCOM), এবং CORBA ভিত্তিক সিস্টেমের যে কোনও সংখ্যা 
    বিপণন হাইপগুলির অনিবার্য শীতল হওয়ার পরে, অবজেক্ট লাইব্রেরিগুলি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এবং বিতরণকৃত তথ্য সিস্টেমে উভয়ই ব্যবহৃত হতে থাকে। ক্লাস লাইব্রেরিগুলি পুরানো প্রকারের কোড লাইব্রেরির মোটামুটি OOP সমতুল্য। এগুলিতে ক্লাস রয়েছে , যা বৈশিষ্ট্য বর্ণনা করে এবং পদক্ষেপগুলিকে জড়িত ক্রিয়া ( পদ্ধতি ) সংজ্ঞায়িত করে। শ্রেণিকালীন গ্রন্থাগারগুলি নির্দিষ্ট মানগুলিতে তাদের বৈশিষ্ট্যযুক্ত দৃষ্টান্ত তৈরি করতে বা বস্তু তৈরি করতে ব্যবহৃত হয় । কিছু ওওপি ভাষায়, জাভার মতো , পার্থক্যটি পরিষ্কার হয়, প্রায়শই লাইব্রেরি ফাইলগুলিতে থাকা ক্লাসগুলির সাথে (জাভার জেআর ফাইল ফর্ম্যাটের মতো ) এবং ইনস্ট্যান্টেটেড অবজেক্টগুলি কেবল মেমরিতে থাকে (যদিও সম্ভাব্যভাবে তৈরি হতে সক্ষম)ক্রমাগত পৃথক ফাইলে)। অন্যদের মধ্যে, স্মল্টালকের মতো , শ্রেণি পাঠাগারগুলি কেবলমাত্র এমন একটি সিস্টেম চিত্রের সূচনা পয়েন্ট যা পরিবেশ, শ্রেণি এবং সমস্ত তাত্ক্ষণিকৃত সামগ্রীর পুরো রাজ্যকে অন্তর্ভুক্ত করে।

    রিমোট লাইব্রেরি 

    লাইব্রেরি ইস্যুটির আরও একটি সমাধান আসে সম্পূর্ণ পৃথক এক্সিকিউটেবল (প্রায়শই কিছু হালকা ওজনের আকারে) ব্যবহার করে এবং অন্য কম্পিউটারে নেটওয়ার্কের মাধ্যমে দূরবর্তী প্রক্রিয়া কল (আরপিসি) ব্যবহার করে তাদের কল করা । এই পদ্ধতির অপারেটিং সিস্টেমটি পুনরায় ব্যবহার সর্বাধিক করে তোলে: লাইব্রেরিকে সমর্থন করার জন্য প্রয়োজনীয় কোডটি অন্য কোডের প্রতিটি অ্যাপ্লিকেশনের জন্য অ্যাপ্লিকেশন সমর্থন এবং সুরক্ষা সরবরাহ করতে ব্যবহৃত কোড একই কোড। অতিরিক্তভাবে, এই ধরনের সিস্টেমগুলির জন্য একই মেশিনে লাইব্রেরি উপস্থিত থাকার প্রয়োজন হয় না, তবে অনুরোধগুলি নেটওয়ার্কের মাধ্যমে ফরোয়ার্ড করতে পারে।
    যাইহোক, এই জাতীয় পদ্ধতির অর্থ প্রতিটি গ্রন্থাগার কলের জন্য যথেষ্ট পরিমাণে ওভারহেড প্রয়োজন। ইতিমধ্যে একই মেশিনে লোড করা একটি ভাগ করা লাইব্রেরি কল করার চেয়ে আরপিসি কলগুলি অনেক বেশি ব্যয়বহুল। এই পদ্ধতিটি সাধারণত একটি বিতরণ করা আর্কিটেকচারে ব্যবহৃত হয় যা এই জাতীয় দূরবর্তী কলগুলির উল্লেখযোগ্যভাবে ক্লায়েন্ট-সার্ভার সিস্টেম এবং অ্যাপ্লিকেশন সার্ভার যেমন এন্টারপ্রাইজ জাভাবিয়ানগুলির ভারী ব্যবহার করে ।

    কোড জেনারেশন লাইব্রেরি 

    কোড জেনারেশন লাইব্রেরি হ'ল উচ্চ-স্তরের এপিআই যা জাভার জন্য বাইট কোড উত্পন্ন বা রূপান্তর করতে পারে । এগুলি দিক-ভিত্তিক প্রোগ্রামিং , কিছু ডেটা অ্যাক্সেস ফ্রেমওয়ার্ক এবং গতিশীল প্রক্সি অবজেক্ট তৈরি করার জন্য পরীক্ষার জন্য ব্যবহৃত হয়। এগুলি ক্ষেত্রের অ্যাক্সেস বাধা দেওয়ার জন্যও ব্যবহৃত হয়। [12]

    ফাইল নামকরণ 

    সর্বাধিক আধুনিক ইউনিক্স-মতো সিস্টেম 

    সিস্টেম দোকান libfoo.aএবং libfoo.soযেমন ডিরেক্টরিগুলি থেকে ফাইলগুলিকে /lib/usr/libবা /usr/local/lib। ফাইলের নামগুলি সর্বদা শুরু হয় libএবং শেষ হয় .aসংরক্ষণাগার , স্ট্যাটিক লাইব্রেরি) বা .so(ভাগ করা বস্তু, গতিযুক্ত সংযুক্ত লাইব্রেরি) এর প্রত্যয় দিয়ে । কিছু সিস্টেমে ডায়নামিকালি লিঙ্কড লাইব্রেরির জন্য একাধিক নাম থাকতে পারে, বেশিরভাগ নামই বাকী নামের প্রতীকী লিঙ্কের নাম হয়; এই নামগুলিতে গ্রন্থাগারের প্রধান সংস্করণ বা পুরো সংস্করণ নম্বর অন্তর্ভুক্ত থাকতে পারে; উদাহরণস্বরূপ, কিছু সিস্টেমে libfoo.so.2গতিযুক্ত লিঙ্কযুক্ত লাইব্রেরির দ্বিতীয় প্রধান ইন্টারফেস পুনর্বিবেচনার ফাইল নাম হবে libfoo। .laফাইল কখনো কখনো গ্রন্থাগার ডিরেক্টরি পাওয়া যায় libtool সংরক্ষণাগারগুলি, যেমন সিস্টেমের দ্বারা ব্যবহারযোগ্য নয়।

    ম্যাকোস 

    সিস্টেমটি বিএসডি থেকে স্ট্যাটিক লাইব্রেরি কনভেনশনগুলির উত্তরাধিকার সূত্রে প্রাপ্ত হয় যা কোনও .aফাইলে সঞ্চিত গ্রন্থাগার সহ থাকে এবং .soস্টাইল গতিযুক্ত যুক্ত লাইব্রেরি ( .dylibপরিবর্তে প্রত্যয় সহ ব্যবহার করতে পারে । ম্যাকোসের বেশিরভাগ লাইব্রেরিতে "ফ্রেমওয়ার্ক " থাকে যা বান্ডিল " নামে একটি বিশেষ ডিরেক্টরিতে অন্তর্ভুক্ত থাকে যা গ্রন্থাগারের প্রয়োজনীয় ফাইল এবং মেটাডেটা মোড়ানো থাকে। উদাহরণস্বরূপ, ডাকা হয় MyFrameworkএমন একটি বান্ডেলে কল করা একটি কাঠামো কার্যকর করা হয় MyFramework.frameworkMyFramework.framework/MyFrameworkযা হয় গতিশীলভাবে সংযুক্ত লাইব্রেরি ফাইল হিসাবে বা গতিশীলভাবে সংযুক্ত লাইব্রেরি ফাইলটিতে একটি সিমিলিংক হিসাবে MyFramework.framework/Versions/Current/MyFramework

    মাইক্রোসফ্ট উইন্ডোজ 

    ডাইনামিক-লিঙ্ক লাইব্রেরী সাধারণত প্রত্যয় আছে *.DLL[13] যদিও অন্যান্য ফাইলের নাম এক্সটেনশন নির্দিষ্ট উদ্দেশ্য পরিবর্তনশীল লিঙ্ক লাইব্রেরি, যেমন শনাক্ত করতে পারে *.OCXজন্য , OLE লাইব্রেরি। ইন্টারফেস রিভিশনগুলি হয় ফাইলের নামগুলিতে এনকোড করা হয়, বা COM- অবজেক্ট ইন্টারফেস ব্যবহার করে বিমূর্ত হয়ে যায় । সেগুলি কীভাবে সংকলিত হয় তার উপর নির্ভর করে *.LIBফাইলগুলি স্থির লাইব্রেরি হতে পারে বা কেবল সংকলনের সময় প্রয়োজন গতিশীল লিঙ্কযোগ্য লাইব্রেরির উপস্থাপনা হতে পারে, " আমদানি গ্রন্থাগার " নামে পরিচিত । উইন্ডোজ ফাইলের সাথে সংযোগ স্থাপনের সময় ইউএনআইএক্স বিশ্বের তুলনায় , যা বিভিন্ন ফাইল এক্সটেনশন ব্যবহার করে.LIBএটি প্রথমে জানতে হবে এটি নিয়মিত স্ট্যাটিক লাইব্রেরি বা আমদানি গ্রন্থাগার কিনা। পরবর্তী ক্ষেত্রে কোনও .DLLফাইল অবশ্যই রান সময়ে উপস্থিত থাকতে হবে।

    আরও দেখুন 















  • 0 comments:

    Post a Comment

    New Research

    Attention Mechanism Based Multi Feature Fusion Forest for Hyperspectral Image Classification.

    CBS-GAN: A Band Selection Based Generative Adversarial Net for Hyperspectral Sample Generation.

    Multi-feature Fusion based Deep Forest for Hyperspectral Image Classification.

    ADDRESS

    388 Lumo Rd, Hongshan, Wuhan, Hubei, China

    EMAIL

    contact-m.zamanb@yahoo.com
    mostofa.zaman@cug.edu.cn

    TELEPHONE

    #
    #

    MOBILE

    +8615527370302,
    +8807171546477