Process (computing)
কম্পিউটিং-এ, একটি প্রক্রিয়া হল একটি কম্পিউটার প্রোগ্রামের উদাহরণ যা এক বা একাধিক থ্রেড দ্বারা কার্যকর করা হচ্ছে। অনেকগুলি ভিন্ন প্রক্রিয়া মডেল রয়েছে, যার মধ্যে কয়েকটি হালকা ওজনের, তবে প্রায় সমস্ত প্রক্রিয়া (এমনকি পুরো ভার্চুয়াল মেশিন) একটি অপারেটিং সিস্টেম (ওএস) প্রক্রিয়ার মধ্যে নিহিত যা প্রোগ্রাম কোড, নির্ধারিত সিস্টেম সংস্থান, শারীরিক এবং যৌক্তিক অ্যাক্সেস অনুমতি এবং ডেটা কাঠামো নিয়ে গঠিত। ওএসের উপর নির্ভর করে, একটি প্রক্রিয়া সম্পাদনের একাধিক থ্রেড নিয়ে গঠিত হতে পারে যা একযোগে নির্দেশাবলী কার্যকর করে। যদিও একটি কম্পিউটার প্রোগ্রাম হল নির্দেশাবলীর একটি নিষ্ক্রিয় সংগ্রহ যা সাধারণত ডিস্কের একটি ফাইলে সংরক্ষিত থাকে, একটি প্রক্রিয়া হল ডিস্ক থেকে মেমরিতে লোড হওয়ার পরে সেই নির্দেশাবলী কার্যকর করা। বেশ কয়েকটি প্রক্রিয়া একই প্রোগ্রামের সাথে যুক্ত হতে পারে; উদাহরণস্বরূপ, একই প্রোগ্রামের বেশ কয়েকটি দৃষ্টান্ত খোলার ফলে প্রায়শই একাধিক প্রক্রিয়া কার্যকর হয়। মাল্টিটাস্কিং হল একাধিক প্রক্রিয়াকে প্রসেসর (সিপিইউ) এবং অন্যান্য সিস্টেম সম্পদ ভাগ করে নেওয়ার অনুমতি দেওয়ার একটি পদ্ধতি। প্রতিটি সিপিইউ (কোর) একবারে একটি করে প্রক্রিয়া সম্পাদন করে। যাইহোক, মাল্টিটাস্কিং প্রতিটি প্রসেসরকে প্রতিটি কাজ শেষ হওয়ার জন্য অপেক্ষা না করে কার্যকর করা কাজগুলির মধ্যে স্যুইচ করার অনুমতি দেয়। অপারেটিং সিস্টেম বাস্তবায়নের উপর নির্ভর করে, সুইচগুলি সম্পাদন করা যেতে পারে যখন কাজগুলি শুরু হয় এবং ইনপুট/আউটপুট ক্রিয়াকলাপ শেষ হওয়ার জন্য অপেক্ষা করে, যখন কোনও কাজ স্বেচ্ছায় সিপিইউ দেয়, হার্ডওয়্যার বিঘ্নিত হয় এবং যখন অপারেটিং সিস্টেম সিডিউলার সিদ্ধান্ত নেয় যে কোনও প্রক্রিয়া সিপিইউ সময়ের ন্যায্য অংশের মেয়াদ শেষ করেছে (যেমন, লিনাক্স কার্নেলের সম্পূর্ণ ন্যায্য সিডিউলার দ্বারা)। মাল্টিটাস্কিংয়ের একটি সাধারণ রূপ সিপিইউর সময়-ভাগাভাগি দ্বারা সরবরাহ করা হয় যা ব্যবহারকারীদের প্রক্রিয়া এবং থ্রেড এবং এমনকি স্বাধীন কার্নেল কাজগুলি কার্যকর করার জন্য একটি পদ্ধতি-যদিও পরবর্তী বৈশিষ্ট্যটি শুধুমাত্র লিনাক্সের মতো প্রিএম্পটিভ কার্নেলে সম্ভব। ইন্টারেক্টিভ প্রক্রিয়াগুলির জন্য প্রিএম্পশনের একটি গুরুত্বপূর্ণ পার্শ্ব প্রতিক্রিয়া রয়েছে যা সিপিইউ আবদ্ধ প্রক্রিয়াগুলির ক্ষেত্রে উচ্চতর অগ্রাধিকার দেওয়া হয়, তাই ব্যবহারকারীদের অবিলম্বে একটি কী টিপে বা মাউস সরানোর সময় কম্পিউটিং সংস্থানগুলি বরাদ্দ করা হয়। উপরন্তু, ভিডিও এবং সঙ্গীত পুনরুৎপাদন-এর মতো অ্যাপ্লিকেশনগুলিকে কিছু বাস্তব-সময়ের অগ্রাধিকার দেওয়া হয়, যা অন্য কোনও নিম্ন অগ্রাধিকার প্রক্রিয়াটিকে অগ্রাহ্য করে। টাইম-শেয়ারিং সিস্টেমে, প্রসঙ্গ সুইচগুলি দ্রুত সঞ্চালিত হয়, যার ফলে মনে হয় যে একই প্রসেসরে একযোগে একাধিক প্রক্রিয়া কার্যকর করা হচ্ছে। একাধিক প্রক্রিয়ার এই আপাতদৃষ্টিতে একযোগে সম্পাদনকে কনকারেন্সি বলা হয়। নিরাপত্তা এবং নির্ভরযোগ্যতার জন্য, বেশিরভাগ আধুনিক অপারেটিং সিস্টেম স্বাধীন প্রক্রিয়াগুলির মধ্যে সরাসরি যোগাযোগকে বাধা দেয়, কঠোরভাবে মধ্যস্থতা এবং নিয়ন্ত্রিত আন্তঃপ্রক্রিয়া যোগাযোগ প্রদান করে। সাধারণভাবে, একটি কম্পিউটার সিস্টেম প্রক্রিয়া নিম্নলিখিত সংস্থানগুলি নিয়ে গঠিত (বা নিজস্ব বলে মনে করা হয়): একটি প্রোগ্রামের সাথে যুক্ত এক্সিকিউটেবল মেশিন কোডের একটি চিত্র। মেমোরি (সাধারণত ভার্চুয়াল মেমরির কিছু অঞ্চল); যার মধ্যে রয়েছে এক্সিকিউটেবল কোড, প্রক্রিয়া-নির্দিষ্ট ডেটা (ইনপুট এবং আউটপুট), একটি কল স্ট্যাক (সক্রিয় সাবরুটিন এবং/অথবা অন্যান্য ইভেন্টগুলির উপর নজর রাখার জন্য), এবং রান টাইমে উত্পন্ন মধ্যবর্তী গণনার ডেটা ধরে রাখার জন্য একটি স্তূপ। প্রক্রিয়াতে বরাদ্দকৃত সম্পদগুলির অপারেটিং সিস্টেম বর্ণনাকারী, যেমন ফাইল বর্ণনাকারী (ইউনিক্স পরিভাষা) বা হ্যান্ডলগুলি (উইন্ডোজ), এবং তথ্য উৎস এবং সিঙ্ক। নিরাপত্তা বৈশিষ্ট্য, যেমন প্রক্রিয়ার মালিক এবং প্রক্রিয়ার অনুমতির সেট (অনুমোদিত ক্রিয়াকলাপ)। প্রসেসর অবস্থা (প্রসঙ্গ), যেমন রেজিস্টারের বিষয়বস্তু এবং শারীরিক মেমরি অ্যাড্রেসিং। প্রক্রিয়াটি কার্যকর করার সময় অবস্থাটি সাধারণত কম্পিউটার রেজিস্টারে এবং অন্যথায় স্মৃতিতে সংরক্ষণ করা হয়। অপারেটিং সিস্টেমে প্রক্রিয়া নিয়ন্ত্রণ ব্লক নামে পরিচিত তথ্য কাঠামোর সক্রিয় প্রক্রিয়া সম্পর্কে বেশিরভাগ তথ্য থাকে। সম্পদের যে কোনও উপসেট, সাধারণত কমপক্ষে প্রসেসরের অবস্থা, অপারেটিং সিস্টেমের প্রতিটি প্রক্রিয়ার থ্রেডের সাথে যুক্ত হতে পারে যা থ্রেড বা চাইল্ড প্রক্রিয়াগুলিকে সমর্থন করে। অপারেটিং সিস্টেম তার প্রক্রিয়াগুলি আলাদা রাখে এবং তাদের প্রয়োজনীয় সংস্থানগুলি বরাদ্দ করে, যাতে তারা একে অপরের সাথে হস্তক্ষেপ করার এবং সিস্টেমের ব্যর্থতার কারণ হওয়ার সম্ভাবনা কম থাকে (যেমন, অচলাবস্থা বা থ্রাশিং)। অপারেটিং সিস্টেমগুলি আন্তঃপ্রক্রিয়া যোগাযোগের জন্য প্রক্রিয়াগুলি নিরাপদ এবং অনুমানযোগ্য উপায়ে যোগাযোগ করতে সক্ষম করার জন্য প্রক্রিয়াও সরবরাহ করতে পারে। মাল্টিটাস্কিং এবং প্রসেস ম্যানেজমেন্ট একটি মাল্টিটাস্কিং অপারেটিং সিস্টেম শুধুমাত্র প্রসেসগুলির মধ্যে পরিবর্তন করতে পারে যাতে একই সাথে অনেকগুলি প্রসেস এক্সিকিউট করা যায় (অর্থাৎ, সমান্তরালে), যদিও প্রকৃতপক্ষে শুধুমাত্র একটি প্রসেস একক সিপিইউতে যে কোনও এক সময়ে এক্সিকিউট করা যেতে পারে (যদি না সিপিইউতে একাধিক কোর থাকে, তবে মাল্টিথ্রেডিং বা অন্যান্য অনুরূপ প্রযুক্তি ব্যবহার করা যেতে পারে)। একটি একক প্রক্রিয়াকে একটি প্রধান প্রোগ্রামের সাথে যুক্ত করা স্বাভাবিক, এবং চাইল্ড যে কোনও স্পিন-অফ, সমান্তরাল প্রক্রিয়াগুলির সাথে প্রক্রিয়া করে, যা অ্যাসিঙ্ক্রোনাস সাবরুটিনের মতো আচরণ করে। একটি প্রক্রিয়া সম্পদগুলির মালিক বলে মনে করা হয়, যার মধ্যে তার প্রোগ্রামের একটি চিত্র (স্মৃতিতে) এমনই একটি সম্পদ। যাইহোক, মাল্টিপ্রোসেসিং সিস্টেমে অনেক প্রক্রিয়া মেমরিতে একই স্থানে একই পুনঃপ্রবেশকারী প্রোগ্রামটি বন্ধ বা ভাগ করতে পারে, তবে বলা হয় যে প্রতিটি প্রক্রিয়া প্রোগ্রামের নিজস্ব চিত্রের মালিক। এমবেডেড অপারেটিং সিস্টেমে প্রক্রিয়াগুলিকে প্রায়শই "টাস্ক" বলা হয়। "প্রক্রিয়া" (বা কাজ)-এর অর্থ হল "এমন কিছু যা সময় নেয়", "স্মৃতি"-র বিপরীতে, যা হল "এমন কিছু যা স্থান নেয়"। উপরের বর্ণনাটি একটি অপারেটিং সিস্টেম দ্বারা পরিচালিত প্রক্রিয়া এবং প্রক্রিয়া গণনা দ্বারা সংজ্ঞায়িত প্রক্রিয়া উভয়ের ক্ষেত্রেই প্রযোজ্য। যদি কোনও প্রক্রিয়া এমন কিছু অনুরোধ করে যার জন্য তাকে অপেক্ষা করতে হবে, তবে এটি অবরুদ্ধ করা হবে। যখন প্রক্রিয়াটি অবরুদ্ধ অবস্থায় থাকে, তখন এটি ডিস্কে অদলবদল করার জন্য যোগ্য, তবে এটি একটি ভার্চুয়াল মেমরি সিস্টেমে স্বচ্ছ, যেখানে কোনও প্রক্রিয়াটির মেমরির অঞ্চলগুলি প্রকৃতপক্ষে ডিস্কে থাকতে পারে এবং কোনও সময়ে প্রধান মেমরিতে নয়। এমনকি সক্রিয় প্রক্রিয়া/কাজের (এক্সিকিউটিভ প্রোগ্রাম) অংশগুলিও ডিস্কে অদলবদল করার যোগ্য, যদি অংশগুলি সম্প্রতি ব্যবহার না করা হয়। একটি এক্সিকিউটিভ প্রোগ্রামের সমস্ত অংশ এবং এর ডেটা সংশ্লিষ্ট প্রক্রিয়াটি সক্রিয় হওয়ার জন্য শারীরিক স্মৃতিতে থাকতে হবে না। প্রসেস স্টেট একটি অপারেটিং সিস্টেম কার্নেল যা মাল্টিটাস্কিং প্রয়োজনীয় প্রক্রিয়াগুলিকে নির্দিষ্ট অবস্থার অনুমতি দেয়। এই রাজ্যগুলির নামগুলি মানসম্মত নয়, তবে তাদের কার্যকারিতা একই রকম। প্রথমত, প্রক্রিয়াটি একটি গৌণ স্টোরেজ ডিভাইস (হার্ড ডিস্ক ড্রাইভ, সিডি-রম ইত্যাদি) থেকে লোড করে "তৈরি" করা হয়। প্রধান স্মৃতিতে। এর পরে প্রসেস সিডিউলার এটিকে "ওয়েটিং" অবস্থা বরাদ্দ করে। প্রক্রিয়াটি "অপেক্ষা" করার সময়, এটি একটি তথাকথিত প্রসঙ্গ পরিবর্তন করার জন্য সময়সূচীকারের জন্য অপেক্ষা করে। প্রসঙ্গ সুইচ প্রসেসরের মধ্যে প্রক্রিয়াটি লোড করে এবং অবস্থাটিকে "চলমান"-এ পরিবর্তন করে যখন পূর্বে "চলমান" প্রক্রিয়াটি একটি "অপেক্ষমান" অবস্থায় সংরক্ষণ করা হয়। "চলমান" অবস্থায় কোনও প্রক্রিয়াকে যদি কোনও সংস্থানের জন্য অপেক্ষা করতে হয় (উদাহরণস্বরূপ, ব্যবহারকারীর ইনপুট বা ফাইল খোলার জন্য অপেক্ষা করুন), তবে এটিকে "অবরুদ্ধ" অবস্থা বরাদ্দ করা হয়। যখন প্রক্রিয়াটির আর অপেক্ষা করার প্রয়োজন হয় না (অবরুদ্ধ অবস্থায়) তখন প্রক্রিয়াটির অবস্থা আবার "অপেক্ষা"-তে পরিবর্তিত হয়। একবার প্রক্রিয়াটি শেষ হয়ে গেলে, বা অপারেটিং সিস্টেম দ্বারা শেষ হয়ে গেলে, এর আর প্রয়োজন হয় না। প্রক্রিয়াটি অবিলম্বে সরিয়ে ফেলা হয় বা "সমাপ্ত" অবস্থায় স্থানান্তরিত করা হয়। যখন অপসারণ করা হয়, এটি কেবল প্রধান মেমরি থেকে অপসারণের জন্য অপেক্ষা করে। আন্তঃপ্রক্রিয়া যোগাযোগ যখন প্রক্রিয়াগুলির একে অপরের সাথে যোগাযোগ করার প্রয়োজন হয় তখন তাদের অবশ্যই তাদের ঠিকানা স্থানের কিছু অংশ ভাগ করে নিতে হবে বা আন্তঃপ্রক্রিয়া যোগাযোগের (আইপিসি) অন্যান্য রূপ ব্যবহার করতে হবে। উদাহরণস্বরূপ, একটি শেল পাইপলাইনে, প্রথম প্রক্রিয়ার আউটপুট দ্বিতীয়টিতে যেতে হবে, এবং আরও অনেক কিছু; আরেকটি উদাহরণ হল এমন একটি কাজ যা সহযোগিতামূলক কিন্তু আংশিকভাবে স্বাধীন প্রক্রিয়াগুলিতে বিভক্ত করা যেতে পারে যা একবারে চলতে পারে (অর্থাৎ, সমান্তরালতা বা সত্য সমান্তরালতা ব্যবহার করে-পরের মডেলটি সমবর্তী সম্পাদনের একটি নির্দিষ্ট ক্ষেত্রে এবং যখনই চালানোর জন্য প্রস্তুত সমস্ত প্রক্রিয়াগুলির জন্য পর্যাপ্ত সিপিইউ কোর উপলব্ধ থাকে তখন তা সম্ভব হয়)। এমনকি দুই বা ততোধিক প্রক্রিয়া বিভিন্ন মেশিনে চলতে পারে যা বিভিন্ন অপারেটিং সিস্টেম (ওএস) চালাতে পারে, তাই যোগাযোগ এবং সিঙ্ক্রোনাইজেশনের জন্য কিছু প্রক্রিয়া (ডিস্ট্রিবিউটেড কম্পিউটিংয়ের জন্য যোগাযোগ প্রোটোকল বলা হয়) প্রয়োজন (যেমন, বার্তা পাসিং ইন্টারফেস, প্রায়শই কেবল এমপিআই বলা হয়)। 1960-এর দশকের গোড়ার দিকে, কম্পিউটার নিয়ন্ত্রণ সফ্টওয়্যার মনিটর নিয়ন্ত্রণ সফ্টওয়্যার থেকে বিবর্তিত হয়েছিল, উদাহরণস্বরূপ আইবিএসওয়াইএস, নির্বাহী নিয়ন্ত্রণ সফ্টওয়্যারে। সময়ের সাথে সাথে, কম্পিউটার দ্রুততর হয়ে ওঠে যখন কম্পিউটারের সময় এখনও সস্তা বা সম্পূর্ণরূপে ব্যবহার করা হত না; এই ধরনের পরিবেশ মাল্টিপ্রোগ্রামিংকে সম্ভব এবং প্রয়োজনীয় করে তোলে। মাল্টিপ্রোগ্রামিং মানে হল একাধিক প্রোগ্রাম একযোগে চলে। প্রথমে, অন্তর্নিহিত ইউনিপ্রসেসর কম্পিউটার স্থাপত্যের ফলস্বরূপ একাধিক প্রোগ্রাম একক প্রসেসরে চলেছিল এবং তারা দুর্লভ এবং সীমিত হার্ডওয়্যার সংস্থানগুলি ভাগ করে নিয়েছিল; ফলস্বরূপ, সমান্তরালতা একটি ক্রমিক প্রকৃতির ছিল। একাধিক প্রসেসর সহ পরবর্তী সিস্টেমে, একাধিক প্রোগ্রাম সমান্তরালভাবে চলতে পারে। প্রোগ্রামগুলি প্রসেসরের জন্য নির্দেশাবলীর ক্রম নিয়ে গঠিত। একটি একক প্রসেসর একবারে শুধুমাত্র একটি নির্দেশ চালাতে পারেঃ একই সময়ে আরও বেশি প্রোগ্রাম চালানো অসম্ভব। একটি প্রোগ্রামের কিছু সংস্থানের প্রয়োজন হতে পারে, যেমন একটি ইনপুট ডিভাইস, যার একটি বড় বিলম্ব রয়েছে, অথবা একটি প্রোগ্রাম কিছু ধীর অপারেশন শুরু করতে পারে, যেমন একটি প্রিন্টারের কাছে আউটপুট পাঠানো। এর ফলে প্রসেসর "নিষ্ক্রিয়" (অব্যবহৃত) হয়ে যাবে। প্রসেসরকে সব সময় ব্যস্ত রাখার জন্য, এই ধরনের প্রোগ্রামের কার্যকারিতা বন্ধ করে দেওয়া হয় এবং অপারেটিং সিস্টেম প্রসেসরকে অন্য প্রোগ্রাম চালানোর জন্য পরিবর্তন করে। ব্যবহারকারীর কাছে, এটি প্রদর্শিত হবে যে প্রোগ্রামগুলি একই সময়ে চলে (তাই "সমান্তরাল" শব্দটি)। এর অল্প সময়ের মধ্যেই, একটি "প্রোগ্রাম" ধারণাটি একটি "এক্সিকিউটিভ প্রোগ্রাম এবং এর প্রেক্ষাপটে" ধারণায় প্রসারিত হয়েছিল। একটি প্রক্রিয়ার ধারণার জন্ম হয়েছিল, যা পুনঃপ্রবেশ কোড উদ্ভাবনের সাথে সাথে প্রয়োজনীয় হয়ে ওঠে। থ্রেডগুলি কিছুটা পরে এসেছিল। যাইহোক, সময়-ভাগাভাগি, কম্পিউটার নেটওয়ার্ক এবং একাধিক-সিপিইউ ভাগ করা মেমরি কম্পিউটারের মতো ধারণার আবির্ভাবের সাথে সাথে পুরানো "মাল্টিপ্রোগ্রামিং" সত্যিকারের মাল্টিটাস্কিং, মাল্টিপ্রসেসিং এবং পরে মাল্টিথ্রেডিংয়ের পথ তৈরি করে। আরও দেখুন পটভূমি প্রক্রিয়া শিশু প্রক্রিয়া প্রস্থান কাঁটাচামচ হালকা ওজনের প্রক্রিয়া অনাথ প্রক্রিয়া প্রক্রিয়া গোষ্ঠী অপেক্ষা ওয়ার্কিং ডিরেক্টরি জম্বি প্রক্রিয়া বিবরণ আরও পড়ুন রেমজি এইচ. আর্পাসি-ডুসো এবং আন্দ্রেয়া সি. আর্পাসি-ডুসো (2014)। "অপারেটিং সিস্টেমঃ থ্রি ইজি পিস"। আর্পাসি-দুশো বই। প্রাসঙ্গিক অধ্যায়ঃ বিমূর্ততাঃ প্রক্রিয়া প্রক্রিয়া এপিআই গ্যারি ডি নট (1974) নির্দিষ্ট প্রক্রিয়া পরিচালনা এবং আন্তঃসংযোগ আদিম এসিএম সিগপস অপারেটিং সিস্টেম পর্যালোচনার জন্য একটি প্রস্তাব। খণ্ড 8, সংখ্যা 4 (অক্টোবর 1974)। পিপি। 7-44 বাহ্যিক লিঙ্ক প্রক্রিয়া তথ্যের জন্য অনলাইন সম্পদ কম্পিউটার প্রক্রিয়া তথ্য ডাটাবেস এবং ফোরাম প্রক্রিয়া মডেলগুলি প্রক্রিয়া সৃষ্টি ও সমাপ্তি পদ্ধতির সাথে সমবর্তী কম্পিউটিং অপারেটিং সিস্টেম প্রযুক্তি