1. কিভাবে মেমরি সংগঠিত হয়
প্রতিটি কম্পিউটারের অভ্যন্তরীণ মেমরি রয়েছে । এটা কি? এটা কি বৈশিষ্ট্য আছে? এবং, সবচেয়ে গুরুত্বপূর্ণভাবে, এটি কীভাবে আমাদের উপকার করে?
প্রতিটি প্রোগ্রাম ( জাভাতে লেখা প্রোগ্রাম সহ) কার্যকর করার আগে প্রধান মেমরিতে লোড করা হয়। প্রধান মেমরিতে প্রোগ্রাম কোড (যা প্রসেসর দ্বারা নির্বাহ করা হয়) পাশাপাশি প্রোগ্রাম ডেটা (অর্থাৎ প্রোগ্রাম নিজেই মেমরিতে রাখে এমন ডেটা) থাকে।
মেমরি কি এবং এটা কি মত?
একটি এক্সেল স্প্রেডশীট কোষ নিয়ে গঠিত । প্রতিটি কক্ষের নিজস্ব অনন্য শনাক্তকারী রয়েছে ( A1
, A2
, ... B1
, B2
)। আপনি যদি একটি ঘরের শনাক্তকারী জানেন , তাহলে আপনি সর্বদা এটিতে কিছু মান লিখতে পারেন বা সেখানে যে মান সংরক্ষণ করা হয় তা পেতে পারেন। কম্পিউটার মেমরি একটি খুব অনুরূপ ভাবে সংগঠিত হয়.
প্রোগ্রামটি চলাকালীন প্রোগ্রাম এবং প্রোগ্রাম ডেটা মেমরিতে সংরক্ষণ করা হয় । সমস্ত কম্পিউটার মেমরি বাইট নামক ছোট কোষ নিয়ে গঠিত । প্রতিটি কক্ষের একটি অনন্য শনাক্তকারী, বা নম্বর রয়েছে, এটির সাথে যুক্ত: 0
, 1
, 2
, 3
, ...; (সংখ্যা শূন্য থেকে শুরু হয়)। যদি আমরা একটি ঘরের নম্বর জানি , আমরা এতে ডেটা সংরক্ষণ করতে পারি। অথবা এটি থেকে ডেটা পান। কিছু সেল প্রোগ্রামের কোড সংরক্ষণ করে, অর্থাৎ প্রসেসরের জন্য কমান্ডের সেট। অন্যরা প্রোগ্রাম দ্বারা ব্যবহৃত ডেটা সংরক্ষণ করে। সেলের নম্বরকে সেল অ্যাড্রেসও বলা হয় ।
প্রসেসর মেমরিতে লোড করা কমান্ডগুলি কীভাবে কার্যকর করতে হয় তা জানে। প্রায় সব প্রসেসর কমান্ড কিছু কোষ থেকে তথ্য গ্রহণ , তাদের সাথে কিছু , তারপর ফলাফল অন্যান্য কোষ পাঠাতে মত কিছু হয় .
জটিল এবং দরকারী কমান্ড পেতে আমরা শত শত সাধারণ কমান্ড একত্রিত করি।
যখন একটি ভেরিয়েবল কোডে ঘোষণা করা হয়, তখন মেমরির একটি অংশ যা ইতিমধ্যে ব্যবহার করা হচ্ছে না তার জন্য বরাদ্দ করা হয়। এটি সাধারণত কয়েক বাইট হয়। একটি ভেরিয়েবল ঘোষণা করার জন্য আপনাকে প্রোগ্রামটি যে ধরনের তথ্য সংরক্ষণ করবে তা নির্দেশ করতে হবে: সংখ্যা, পাঠ্য বা অন্যান্য ডেটা। সর্বোপরি, আপনি যদি তথ্যের ধরণ সংরক্ষণ করতে না জানেন, তাহলে ভেরিয়েবলের জন্য কত বড় মেমরির ব্লক বরাদ্দ করা দরকার তা পরিষ্কার নয়।
কম্পিউটার যুগের শুরুতে, প্রোগ্রামগুলি মেমরি ঠিকানাগুলির সাথে সরাসরি কাজ করেছিল, কিন্তু তারপরে, প্রোগ্রামারদের সুবিধার জন্য, কোষগুলির নাম দেওয়া শুরু হয়েছিল। প্রোগ্রামারদের সুবিধার জন্য একটি অনন্য পরিবর্তনশীল নাম সর্বোপরি, যেহেতু প্রোগ্রামটি প্লেইন মেমরি অ্যাড্রেসগুলি ঠিকঠাক পরিচালনা করে।
2. মেমরির ভেরিয়েবল
সব মিলিয়ে, পূর্ণসংখ্যা সংরক্ষণের জন্য জাভাতে 4টি ডেটা প্রকার রয়েছে। এগুলো হল byte
, short
, int
এবং long
.
টাইপ | বাইটে আকার | প্রকারের নামের উৎপত্তি |
---|---|---|
byte |
1 |
বাইট হল বিটের সাথে বিভ্রান্তি এড়াতে কামড়ের একটি ইচ্ছাকৃত রিস্পেলিং |
short |
2 |
সংক্ষিপ্ত পূর্ণসংখ্যার জন্য সংক্ষিপ্ত |
int |
4 |
পূর্ণসংখ্যার জন্য সংক্ষিপ্ত |
long |
8 |
দীর্ঘ পূর্ণসংখ্যার জন্য সংক্ষিপ্ত |
অতিরিক্তভাবে, জাভাতে বাস্তব সংখ্যার জন্য 2 প্রকার রয়েছে: ফ্লোট এবং ডবল:
টাইপ | বাইটে আকার | প্রকারের নামের উৎপত্তি |
---|---|---|
float |
4 |
ফ্লোটিং পয়েন্ট নম্বরের জন্য সংক্ষিপ্ত |
double |
8 |
ডাবল ফ্লোটের জন্য সংক্ষিপ্ত |
প্রতিবার যখন প্রোগ্রাম এক্সিকিউশন একটি ভেরিয়েবল তৈরি করার জন্য একটি কমান্ডে পৌঁছায়, তখন এটির জন্য মেমরির একটি ছোট ব্লক বরাদ্দ করা হয় (আকারটি ভেরিয়েবলের ধরনের উপর নির্ভর করে)।
জাভা প্রোগ্রাম সরাসরি মেমরি অ্যাক্সেস করার অনুমতি দেওয়া হয় না. মেমরির সাথে যেকোন এবং সমস্ত কাজ শুধুমাত্র জাভা ভার্চুয়াল মেশিনের মাধ্যমে ঘটে।
3. String
মেমরির ধরন
টাইপটি String
প্রচুর পরিমাণে ডেটা সঞ্চয় করতে পারে, যা বোঝায় যে এটি কেবল একটি ডেটা টাইপ নয়, একটি পূর্ণাঙ্গ শ্রেণী।
বস্তুটি String
মেমরির একটি বরাদ্দকৃত ব্লকে স্থাপন করা হয় যা মেমরির অন্য ব্লকের ঠিকানা সংরক্ষণ করে যেখানে পাঠ্যটি সংরক্ষণ করা হয়।
ভেরিয়েবল বাইট int
a
দখল করে 4
এবং মান সংরক্ষণ করে 1
।
ভেরিয়েবল বাইট int
b
দখল করে 4
এবং মান সংরক্ষণ করে 10,555
। আমরা হাজার বিভাজক হিসাবে একটি কমা ব্যবহার করি। এবং আমরা দশমিক বিভাজক হিসাবে একটি সময়কাল ব্যবহার করি।
ভেরিয়েবল বাইট double
d
দখল করে 8
এবং মান সংরক্ষণ করে 13.001
।
ভেরিয়েবলটি বাইট String
str
দখল করে 4
এবং মান সংরক্ষণ করে G13
, যা মেমরি ব্লকের প্রথম কক্ষের ঠিকানা যেখানে পাঠ্য রয়েছে।
এর একটি পাঠ্য String
object
মেমরির একটি পৃথক ব্লকে সংরক্ষণ করা হয়। এর প্রথম ঘরের ঠিকানা ভেরিয়েবলে সংরক্ষিত থাকে str
।
4. প্রোগ্রামিং-এ কেন সংখ্যা শূন্য দিয়ে শুরু হয়
লোকেরা প্রায়শই অবাক হয় কেন প্রোগ্রামাররা প্রায়শই শূন্য থেকে গণনা শুরু করে। ঠিক আছে, আসলে এমন অনেক পরিস্থিতি রয়েছে যখন শূন্য থেকে গণনা করা আরও সুবিধাজনক (অবশ্যই, এমন পরিস্থিতিও রয়েছে যখন এটি থেকে গণনা করা আরও সুবিধাজনক 1
)।
এর সহজ উদাহরণ হল মেমরি অ্যাড্রেসিং। 4
যদি আপনার ভেরিয়েবলে মেমরির বাইট বরাদ্দ করা হয় এবং আপনি জানেন যে X
এটি প্রথম বাইটের ঠিকানা, তাহলে প্রতিটি বাইটের ঠিকানা কী? , , , . যতটা সহজ, আমাদের কাছে বাইটগুলির একটি গ্রুপ রয়েছে যা সূচকগুলির সাথে অ্যাক্সেস করা যেতে পারে , , , ।X+0
X+1
X+2
X+3
0
1
2
3
যখন আমরা একটি ডেটা ব্লকের মধ্যে একটি আপেক্ষিক ঠিকানার কথা চিন্তা করি, তখন শূন্য থেকে সূচীকরণই অর্থপূর্ণ। এটি শূন্য থেকে গণনা করার প্রধান কারণ ।
GO TO FULL VERSION