এমএমইউ ব্যতীত প্রসেসরের জন্য একটি মাল্টিটাস্কিং অপারেটিং সিস্টেম লেখা


9

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

যেহেতু আমি সবসময় i386 + প্রসেসরের সাথে কাজ করে চলেছি এবং অন্য কিছুই কখনও ছিল না (কিছু মাইক্রোচিপ পিআইসি ছাড়া) আমি এখন বিভ্রান্ত হয়েছি এবং নিশ্চিত নই যে ওএসের সাথে লিখিত ওএসের সাথে তুলনা করার সময় যার কার্যকারিতা সীমাবদ্ধ থাকবে না এমন একটি ওয়ার্কিং অপারেটিং সিস্টেম লিখতে পারেন কিনা? এমএমইউ সহ এমপিইউগুলির জন্য।

আমি "প্রতিস্থাপন" বা "সিমুলেটিং" এমএমইউয়ের কয়েকটি সমাধান সম্পর্কে ভাবতে পারি এবং আমার কয়েকটি প্রশ্ন পেয়েছে:

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

এমএমইউবিহীন সিস্টেমে কাজ পরিচালনা করার কোনও "সাধারণ" উপায় আছে কি?

উত্তর:


16

এটি এমন কোনও অপারেটিং সিস্টেম ডিজাইন করা খুব কঠিন নয় যেটির কোনও এমএমইউ প্রয়োজন হয় না। এখানে কয়েকটি সুবিধামত আপনাকে ছাড়া করতে হবে তবে অদম্য কিছুই নয়।

  • যেহেতু বিভিন্ন টাস্কগুলিকে বিভিন্ন ঠিকানায় লোড করতে হবে, আপনার সমস্ত কোড (কার্নেল, স্ট্যান্ডার্ড লাইব্রেরি এবং আপনার বেস রানটাইম পরিবেশের অংশ হিসাবে অন্য কোনও কোড বাদে) অবস্থান-স্বতন্ত্র হিসাবে সংকলন করতে হবে। এর অর্থ একটি রেজিস্টারে সঞ্চিত হিপ অ্যাক্সেসের জন্য আপেক্ষিক জাম্প এবং একটি বেস ঠিকানা means একটি বেস ঠিকানা হিসাবে একটি রেজিস্টার ব্যয় করা ব্যয়বহুল মনে হতে পারে আপনি x86-32 এর চারটি সাধারণ রেজিস্টার ব্যবহার করে থাকলেও বেশিরভাগ আধুনিক আর্কিটেকচারে আরও বেশি থাকে এবং এমনকি ৮০৮৮ এর জন্য সেগমেন্টটি নিখুঁতভাবে রেজিস্টার করে।
  • ইউনিক্সের মতো আর্কিটেকচারটি সংশোধন করতে হবে, কারণ আপনি বাস্তবায়ন করতে পারবেন না fork। এটি ঠিক আছে, বেশিরভাগ অপারেটিং সিস্টেমে নেই fork। (আপনি থাকতে পারেন vfork।)
  • আপনি সংশ্লিষ্ট মেমরিটি বরাদ্দ না করে বৃহত স্থানগুলি ছড়িয়ে দিতে পারবেন না। এর অর্থ একবারে আরও একটি পৃষ্ঠা বরাদ্দ করে ফ্লাইতে স্ট্যাক বা গাদা বাড়ছে না।

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

ইউক্লিনাক্স লিনাক্স কার্নেলের উপর ভিত্তি করে এমন একটি প্রকল্প যা এমএমইউ ছাড়াই প্রসেসরের (এআরএম কর্টেক্স-এম সহ) চালিত হয়। মাল্টিটাস্কিংয়ের উপর এর বিধিনিষেধগুলি মূলত আমি উপরে বর্ণিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.