পরিচালিত কোড চালায় এমন ন্যূনতম কার্নেল থাকার সম্ভাব্য সমস্যাগুলি কী কী?


14

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

খাঁটি-নেটিভ সমাধানের বিপরীতে এই ধরণের অবকাঠামো নিয়ে কোনও ওএস লেখার জন্য কী কী সমস্যা এবং বিকাশের চ্যালেঞ্জ রয়েছে?

উত্তর:


8

ভাষার উপর নির্ভর করে, অনেকগুলি উন্নয়ন চ্যালেঞ্জ হতে পারে:

  1. পয়েন্টারস: যদি কোনও ভাষার পয়েন্টার না থাকে তবে তুলনামূলক সহজ কাজগুলি করা একটি চ্যালেঞ্জ হবে। উদাহরণস্বরূপ, আপনি স্ক্রিনে মুদ্রণের জন্য ভিজিএ মেমরিতে লিখতে পয়েন্টার ব্যবহার করতে পারেন। তবে, পরিচালিত ভাষায় আপনার এটির জন্য কিছু ধরণের "প্লাগ" প্রয়োজন (সি / সি ++ থেকে)।

  2. সমাবেশ: একটি ওএসের সর্বদা কিছু সমাবেশ প্রয়োজন। সি #, জাভা ইত্যাদির মতো ভাষা সি / সি ++ এর বিপরীতে এর সাথে এতটা ভাল কাজ করে না। সি বা সি ++ এ আপনার ইনলাইন সমাবেশও থাকতে পারে যা অনেক কাজের জন্য খুব দরকারী tasks অনেকগুলি ক্ষেত্রেই এটির প্রয়োজন রয়েছে (x86-র উদাহরণ): একটি জিডিটি লোড করা, আইডিটি লোড করা, পেজিং সক্ষম করা, আইআরকিউ স্থাপন করা ইত্যাদি

  3. নিয়ন্ত্রণ: আপনি যদি কসমোসের মতো কিছু ব্যবহার করে থাকেন তবে আপনার সম্পূর্ণ নিয়ন্ত্রণ নেই। কসমস হ'ল একটি মাইক্রো কার্নেল এবং মূলত আপনার "কার্নেল" "বুটস্ট্র্যাপ"। আপনি যদি সত্যিই চাইতেন তবে আপনি স্ক্র্যাচ থেকে কসমোসের মতো কিছু বাস্তবায়ন করতে পারেন, তবে এটি দীর্ঘ, দীর্ঘ সময় নিতে পারে।

  4. ওভারহেড: পরিচালিত ভাষাগুলির সাথে, সি বা এমনকি সি ++ এর তুলনায় প্রচুর ওভারহেড থাকে। C # হ্যালো ওয়ার্ল্ড কার্নেল চালানোর আগেও কসমোসের মতো বিষয়গুলিকে প্রচুর পরিমাণে প্রয়োগ করা দরকার। সি তে, আপনি যেতে প্রস্তুত, কোনও বাস্তব সেটআপের প্রয়োজন নেই। সি ++ এ সি ++ এর কয়েকটি বৈশিষ্ট্য ব্যবহারের জন্য প্রয়োগ করা দরকার কেবলমাত্র কয়েকটি জিনিস।

  5. কাঠামো: সি / সি ++ তে এমন স্ট্রাইক রয়েছে যা অনেকগুলি পরিচালিত ভাষাগুলির নেই এবং তাই, আপনার স্ট্রাক্টের মতো কিছু থাকার কিছু উপায় বাস্তবায়ন করতে হবে। উদাহরণস্বরূপ, আপনি যদি সি / সি ++ তে কোনও আইডিটি (ইন্টারপট বর্ণনাকারী টেবিল) লোড করতে চান তবে আপনি একটি কাঠামো তৈরি করতে পারেন (একটি প্যাকযুক্ত বৈশিষ্ট্যযুক্ত), এবং এটি x86 এএসএম নির্দেশ লিড্ট ব্যবহার করে লোড করতে পারেন । পরিচালিত ভাষায় এটি করা খুব কঠিন ...

পরিচালিত ভাষা, বাক্য গঠন-অনুসারে, সহজ, তবে অনেকগুলি ওএস সম্পর্কিত জিনিসগুলি অনেক সময় খুব ভাল-উপযোগী হয় না। এর অর্থ এই নয় যে সেগুলি ব্যবহার করা যাবে না, তবে সি / সি ++ এর মতো কিছু প্রায়শই সুপারিশ করা হয়।


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

১. কোনও পরিচালিত ভাষা ভিজিএ মেমরির অ্যাক্সেস করার দক্ষতা না দেওয়ার কোনও কারণ নেই, এটি কেবলমাত্র ম্যাপিং / আনম্যাপিং যা আদিম (একটি মেমরি পরিচালনা আদিম) হিসাবে সরবরাহ করতে হবে। ২. কিছু টাস্ক স্যুইচিং (যেমন রেজিস্টার সংরক্ষণ) সাধারণত সমাবেশ কোড হিসাবে সম্পন্ন করতে হয়, তবে এটি খুব স্থানীয়করণযোগ্য, এটি কোনও পরিচালিত ভাষায় 99% ওএস থাকার বিরুদ্ধে কোনও যুক্তি নয়। এমএমইউ পরিচালনা করা একটি মেমরি পরিচালনার আদিম। ৪. সি সেটআপও খুব দরকার (স্ট্যাক এবং হিপ সেটআপ); পরিচালিত ভাষাগুলির জন্য আরও কিছুটা সেটআপ দরকার তবে গুণগত পার্থক্য নেই।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস, প্রশ্নটি হ'ল পরিচালিত ভাষা ব্যবহারের ক্ষেত্রে উন্নয়নমূলক চ্যালেঞ্জগুলি কী। এগুলি বিকাশমূলক চ্যালেঞ্জ, তবে আপনি এখনও এই জাতীয় চ্যালেঞ্জগুলি সফলভাবে কাটিয়ে উঠতে পারেন ...
মিমক

5

শুনেছি শুনেছি (দাবি করেছেন প্রতিযোগী মাইক্রোকার্নেল টেকনিক নিয়ে কাজ করা এক গবেষক ) যে ব্যবস্থাপনার কোডের মাধ্যমে এক্সটেনসেবল সিস্টেমগুলির সুরক্ষা কীভাবে মূল্যায়ন করতে হয় সে সম্পর্কে খুব কমই জানা যায়।

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

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

আমি জানি না যে traditionalতিহ্যবাহী মাইক্রো কার্নেল বিচ্ছিন্নতা কৌশলগুলি বা পরিচালিত কোড ভিত্তিক বিচ্ছিন্নতা কৌশলগুলি সত্যই কম বেশি নির্ভরযোগ্য। এখানে একটি বুটস্ট্র্যাপিং সমস্যা রয়েছে: যতক্ষণ না পরিচালিত কোড বিচ্ছিন্নকরণের কৌশলগুলি ব্যাপকভাবে ব্যবহৃত হয়, ততক্ষণে আমরা সেগুলি কতটা সুরক্ষিত তা জানব না। তবে তারা কতটা সুরক্ষিত তা না জেনে নিরাপত্তা সংকটজনক পরিস্থিতিতে তাদের স্থাপন করা কঠিন difficult


এটি একটি দুর্দান্ত পয়েন্ট।
অ্যাডাম মারাস

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

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

ব্যবহারিক দিক থেকে, বিচ্ছিন্নতা সরবরাহকারী বেশ কয়েকটি ভার্চুয়াল মেশিনগুলি EAL5 এবং তারপরে শংসাপত্রিত হয়েছে। আপনি যদি ইউরোপীয় হন তবে আপনার মানিব্যাগের মধ্যে দুটি উদাহরণ থাকতে পারে কারণ সেগুলি ক্রেডিট কার্ডের মতো স্মার্টকার্ডে ব্যবহৃত হয়: মাল্টস , জাভা কার্ড ওপেন প্ল্যাটফর্ম । সুরক্ষা মূল্যায়ন সম্প্রদায়ের মধ্যে, আমি অনেক সন্দেহ শুনেছি যে এমএমইউ বিচ্ছিন্নতা EAL2 ছাড়িয়ে যেতে পারে।
গিলস 'অশুভ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.