এখানে দেখব সি প্রোগ্রাম সিস্টেমে কীভাবে এক্সিকিউট হয়। এটি মূলত সি প্রোগ্রামের কম্পাইলেশন প্রসেস।
নিচের ডায়াগ্রামটি দেখায় কীভাবে একটি সি সোর্স কোড এক্সিকিউট হয়।

উপরের ডায়াগ্রামে বিভিন্ন ধাপ রয়েছে:
- সি কোড (C Code): এটি আপনার লেখা কোড। এটি প্রিপ্রসেসর সেকশনে পাঠানো হয়।
- প্রিপ্রসেসিং (Preprocessing): এই সেকশনে প্রিপ্রসেসর ফাইলগুলো আপনার কোডের সাথে জড়ে দেওয়া হয়। আমরা stdio.h, math.h ইত্যাদি হেডার ফাইল ব্যবহার করি। এই ফাইলগুলো সি সোর্স কোডের সাথে আট্যাচ হয় এবং ফাইনাল সি সোর্স জেনারেট হয়। (#include, #define এইগুলো প্রিপ্রসেসর ডিরেক্টিভ)।
- কম্পাইলার (Compiler): প্রিপ্রসেসড সোর্স কোড জেনারেট হওয়ার পর এটি কম্পাইলারে যায় এবং কম্পাইলার পুরো প্রোগ্রাম কম্পাইল করে অ্যাসেম্বলি লেভেল কোড জেনারেট করে।
- অ্যাসেম্বলার (Assembler): এই পার্ট কম্পাইলার থেকে অ্যাসেম্বলি ল্যাঙ্গুয়েজ নিয়ে অবজেক্ট কোড জেনারেট করে, যা মেশিন কোডের (বাইনারি ডিজিটের সেট) সাথে খুব মিলত।
- লিংকার (Linker): লিংকার কম্পাইলেশন প্রসেসের আরেকটি গুরুত্বপূর্ণ অংশ। এটি অবজেক্ট কোড নেয় এবং অন্যান্য লাইব্রেরি ফাইলগুলো সাথে লিংক করে। এই লাইব্রেরি ফাইলগুলো আমাদের কোডের অংশ নয়, কিন্তু প্রোগ্রাম এক্সিকিউট করতে সাহায্য করে। লিংক করার পর লিংকার ফাইনাল মেশিন কোড জেনারেট করে যা এক্সিকিউট করার জন্য প্রস্তুত।
- লোডার (Loader): একটি প্রোগ্রাম এক্সিকিউট হবে না যতক্ষণ না এটি প্রাইমারি মেমোরিতে (RAM) লোড হয়। লোডার মেশিন কোডকে RAM-এ লোড করে এবং এক্সিকিউট করতে সাহায্য করে। এক্সিকিউশন সময় প্রোগ্রামকে প্রসেস বলা হয়। সুতরাং প্রসেস = (এক্সিকিউশনে প্রোগ্রাম)।