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