You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: computer-architecture-&-operating-system.md
+79-24Lines changed: 79 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,46 +70,97 @@
70
70
## 2. Punch Card কি এবং এটি দিয়ে কিভাবে প্রোগ্রাম লিখতো?
71
71
72
72
**পাঞ্চ কার্ডঃ**
73
-
পাঞ্চ কার্ড ছিল মোটা কাগজের কার্ড, সাধারণত ৭.৩৮ ইঞ্চি লম্বা আর ৩.২৫ ইঞ্চি চওড়া। এই কার্ডে ৮০টা কলাম থাকতো, আর প্রতি কলামে ১২টা সারি।
73
+
পাঞ্চ কার্ড ছিল মোটা কাগজের কার্ড, সাধারণত ৭.৩৮ ইঞ্চি লম্বা আর ৩.২৫ ইঞ্চি চওড়া। এই কার্ডে ৮০টা কলাম থাকতো, আর প্রতি কলামে ১২টা সারি। প্রতিটা কলামে ছোট ছোট গর্ত পাঞ্চ করে নির্দিষ্ট অক্ষর বা নির্দেশনা লেখা হতো। এই গর্তগুলোই কম্পিউটার পড়তো। ধরেন, আপনি একটা প্রোগ্রাম লিখতে চান যেটা দুইটা সংখ্যা যোগ করবে। তাহলে এই নির্দেশনাগুলোকে প্রথমে একটা কোডিং ভাষায় (যেমন ফরট্রান বা কোবল) লিখতে হতো।
**১. কোড হাতে লেখা:** প্রোগ্রামার প্রথমে কাগজে হাতে কোড লিখতো। ধরেন, ফরট্রানে একটা লাইন: `Z = X + Y`। এটা একটা নির্দেশনা যে X আর Y যোগ করে Z তে রাখতে হবে।
85
+
86
+
**২. পাঞ্চিং মেশিনে টাইপ:** এরপর একটা পাঞ্চিং মেশিনে (যেটা দেখতে অনেকটা টাইপরাইটারের মতো) বসে কোডের প্রতিটা অক্ষর বা নির্দেশনা টাইপ করা হতো। প্রতিটা অক্ষরের জন্য কার্ডে নির্দিষ্ট জায়গায় গর্ত হতো। যেমন, 'X' লেখার জন্য একটা নির্দিষ্ট প্যাটার্নে গর্ত করা হতো, আর '+' এর জন্য আরেকটা প্যাটার্ন।
87
+
88
+
**৩. কার্ডের স্ট্যাক তৈরি:** একটা প্রোগ্রামে অনেক লাইন কোড থাকতে পারে, তাই অনেকগুলো কার্ড লাগতো। প্রতিটা কার্ডে একটা বা কয়েকটা নির্দেশনা থাকতো। এই কার্ডগুলোকে ঠিকঠাক সিরিয়ালে সাজিয়ে একটা স্ট্যাক বানানো হতো।
89
+
90
+
**৪. কম্পিউটারে দেওয়া:** এই কার্ডের স্ট্যাকটা কম্পিউটারের কার্ড রিডারে দেওয়া হতো। রিডারটা গর্তগুলো পড়ে বুঝতো কী নির্দেশনা দেওয়া হচ্ছে। গর্তের প্যাটার্ন থেকে কম্পিউটার বাইনারি কোডে রূপান্তর করতো, আর সেই কোড চালিয়ে প্রোগ্রাম রান করতো।
91
+
92
+
মজার ব্যাপার হলো, এই পাঞ্চ কার্ডে ভুল হলে পুরো কার্ডটা ফেলে নতুন করে লিখতে হতো। একটা কার্ড ভুল জায়গায় চলে গেলে বা ফেলে দিলে পুরো প্রোগ্রাম গোলমাল হয়ে যেতো! 😅 তাই প্রোগ্রামাররা খুব সাবধানে কার্ডগুলো সাজাতো, এমনকি কার্ডে নম্বর লিখে রাখতো যাতে সিরিয়াল ঠিক থাকে।
93
+
94
+
তো, এভাবেই পাঞ্চ কার্ড দিয়ে প্রোগ্রাম লেখা হতো। এটা ছিল ধীর, কষ্টের কাজ, কিন্তু তখনকার দিনে এটাই ছিল কম্পিউটার প্রোগ্রামিংয়ের একমাত্র উপায়। এখন আমরা কিবোর্ডে টাইপ করে সেকেন্ডের মধ্যে কোড লিখে ফেলি, কিন্তু তখনকার প্রোগ্রামারদের ধৈর্য আর নিষ্ঠার কাছে স্যালুট দিতে হয়, তাই না? 😊
84
95
85
-
মজার ব্যাপার হলো, এই পাঞ্চ কার্ডে ভুল হলে পুরো কার্ডটা ফেলে নতুন করে লিখতে হতো।
86
96
87
97
## 3. Punch Card থেকে ডাটা কিভাবে Ram এ উঠতো?
88
98
99
+
অ্যানালিটিক্যাল ইঞ্জিনের যুগে RAM বলে আলাদা কোনো জিনিস ছিল না, কিন্তু "স্টোর" নামে একটা মেমরি সেকশন ছিল যেটা আজকের RAM-এর মতোই কাজ করত! পুরো প্রক্রিয়াটা এমন ছিল:
100
+
101
+
<palign="center"><imgalt="how data transfer from punch card to ram"src="https://github.com/dynamiclance/golang-interview-questions-and-answers-bangla/blob/main/img/how-data-tranfer-from-punch-card-to-ram"></p>
102
+
89
103
<palign="center">Picture Credit: Chatgpt</p>
90
104
91
-
অ্যানালিটিক্যাল ইঞ্জিনের যুগে RAM ছিল না, ছিল “স্টোর” যেটা RAM-এর মতোই কাজ করত।
105
+
**১. পাঞ্চ কার্ড পড়ার যন্ত্র (কার্ড রিডার):**
106
+
- কার্ডটাকে এই যন্ত্রের মধ্যে ঢুকানো হতো যেখানে ছিদ্রের অবস্থান অনুযায়ী মেটাল পিন বা আলো তৈরি হত।
107
+
- যেমন: কার্ডের ৩ নম্বর পজিশনে ছিদ্র/আলো থাকলে সেটা বাইনারি ১ আর না থাকলে ০ হিসাবে পড়া হতো।
108
+
109
+
**২. ডাটা ট্রান্সফার:**
110
+
- কার্ড রিডার থেকে ডাটা যেত "কন্ট্রোল ইউনিট"-এ (যেটা আজকের CPU-র মতো কাজ করত)।
111
+
- কন্ট্রোল ইউনিট ঠিক করত ডাটাটা কোথায় জমা হবে—স্টোরের (মেমরি) কোন লোকেশনে।
112
+
- উদাহরণ: ৫ + ৩ প্রোগ্রামে ৫ কে স্টোরের ০ নম্বর সেল-এ রাখা হতো, ৩ কে ১ নম্বর সেল-এ।
92
113
93
-
**১. পাঞ্চ কার্ড পড়ার যন্ত্র (কার্ড রিডার):**
94
-
**২. ডাটা ট্রান্সফার:**
95
-
**৩. মেমরিতে জমা হওয়া:**
114
+
**৩. মেমরিতে জমা হওয়া:**
115
+
- অ্যানালিটিক্যাল ইঞ্জিনের স্টোর অংশটা ছিল গিয়ার, লিভার আর ডায়াল-এর সমষ্টি।
116
+
- প্রতিটি সংখ্যা জমা হতো যান্ত্রিক ডায়াল ঘুরিয়ে (ঘড়ির মতো!)—যেমন: ডায়ালে ৫ সেট করলে সেটাই মেমরিতে সেভ হয়ে যেত।
117
+
- আজকের RAM-এর মতো ইলেকট্রিক সিগনাল নয়, তখন মেকানিক্যাল মুভমেন্ট দিয়ে ডাটা স্টোর হতো!
96
118
97
-
### উদাহরণ:
98
-
১০ এর কার্ড পড়ে স্টোরের সেল ০ এ জমা হতো।
99
-
২০ এর কার্ড পড়ে স্টোরের সেল ১ এ জমা হতো।
100
-
+ এর কার্ড পড়ে মিল সেল ০ ও সেল ১-এর ডাটা যোগ করে সেল ২-তে রাখত।
119
+
### উদাহরণ:
120
+
ধরুন, আপনি ১০ + ২০ গণনা করতে চান। তখন:
121
+
১০ এর কার্ড পড়ে স্টোরের সেল ০ এ জমা হতো।
122
+
২০ এর কার্ড পড়ে স্টোরের সেল ১ এ জমা হতো।
123
+
+ এর কার্ড পড়ে মিল (প্রসেসর) সেল ০ ও সেল ১-এর ডাটা যোগ করে সেল ২-তে রাখত।
101
124
102
125
**সংক্ষেপে:**
103
126
পাঞ্চ কার্ড → Card Reader পড়ে → বাইনারি বানায় → RAM/STORE এ পাঠায় → CPU কাজ করে
104
127
105
128
## 4. CPU কিভাবে Pointing Register এর সাহায্যে RAM এর ডাটাকে Execute করে?
106
129
107
-
Pointing Register হলো CPU-এর জন্য একটা "গাইড"। ধাপে ধাপে যেভাবে কাজ হয়:
130
+
Pointing Register হলো CPU-এর জন্য একটা "গাইড"। এটা বলে দেয় কোথায় কোন ডেটা আছে, যাতে CPU সেটা নিয়ে কাজ করতে পারে। তারপর CPU ডেটা প্রসেস করে এবং ফলাফল দেয়।
131
+
132
+
ধাপে ধাপে যেভাবে কাজ হয়:
133
+
১. Program Counter (PC)
134
+
প্রথমে CPU দেখে, PC (Pointing Register)-তে যেই অ্যাড্রেস আছে, সেখানে RAM-এ কী লেখা আছে।
135
+
২. Instruction Fetch
136
+
সেই অ্যাড্রেস থেকে CPU RAM-এর ডাটা নেয় — এটাকেই বলে “fetch” করা।
137
+
৩. Decode & Execute
138
+
ডাটা বা নির্দেশনা CPU বুঝে ফেলে (decode করে) আর সেই অনুযায়ী কাজ করে (execute করে)।
139
+
যেমন: যোগ করো,গুন করো, লিখো ইত্যাদি।
140
+
৪. Program Counter আপডেট হয়
141
+
142
+
একটা ইনস্ট্রাকশন শেষ হলে, PC নিজে থেকেই পরের অ্যাড্রেসে চলে যায় (ধরো, 100 থাকলে এখন 104 হয়ে যাবে)। যেন CPU জানে, পরেরবার কোথা থেকে পড়তে হবে।
143
+
144
+
### উদাহরণ:
145
+
146
+
```go
147
+
RAM এ আছে এমন ৩টা লাইন:
148
+
100: LOADA
149
+
104: ADDB
150
+
108: PRINT
151
+
152
+
```
153
+
---
154
+
155
+
তখন:
156
+
PC = 100 → CPU যাবে 100 নম্বর অ্যাড্রেসে → “LOAD A” নিবে
157
+
158
+
তারপর PC = 104 → “ADD B” নিবে
159
+
160
+
তারপর PC = 108 → “PRINT” নিবে
161
+
162
+
***এইভাবে PC বা Pointing Register CPU কে পথ দেখিয়ে RAM থেকে একটার পর একটা নির্দেশনা বের করে আনে।***
108
163
109
-
**1. Program Counter (PC)**
110
-
**2. Instruction Fetch**
111
-
**3. Decode & Execute**
112
-
**4. Program Counter আপডেট হয়**
113
164
114
165
### উদাহরণ:
115
166
```go
@@ -122,11 +173,15 @@ RAM এ আছে এমন ৩টা লাইন:
122
173
## 5. কোনটা ৩২ বিট, ৬৪ বিট, ২০ বিট কম্পিউটার কিভাবে বুজবো?
123
174
124
175
**বিট কী?**
125
-
৮ বিট = ১ বাইট
126
176
127
-
- ৩২-বিট: ৪ জিবি পর্যন্ত RAM
128
-
- ৬৪-বিট: ১৮ কোটি GB পর্যন্ত RAM
129
-
- ২০-বিট: পুরোনো সিস্টেম, ১ মেগাবাইট পর্যন্ত RAM
177
+
বিট হলো কম্পিউটারের ভাষায় ডেটা প্রকাশের সবচেয়ে ছোট একক। এটা হয় 0 অথবা 1। মনে রাখতে হবে, ৮ বিট = ১ বাইট।
178
+
179
+
এখন যদি বলা হয় একটা **কম্পিউটার ৩২-বিট**, তার মানে হলো সেই কম্পিউটার একবারে ৩২টি বিট (অর্থাৎ ৩২টি 0 বা 1) নিয়ে কাজ করতে পারে। অর্থাৎ র্যামের একটি সেলে ৩২ টি বিট বা 0,1 পাশাপাশি রাখতে পারে।এরা সর্বোচ্চ ৪ জিবি RAM (2^32 বাইট) অ্যাড্রেস করতে পারে।এটা সাধারণত ছোট ধরনের কাজের জন্য ব্যবহৃত হয়।
180
+
181
+
একটা **কম্পিউটার ৬৪-বিট** মানে হলো সেই কম্পিউটার একবারে ৬৪ টি বিট (অর্থাৎ ৬৪টি 0 বা 1) নিয়ে কাজ করতে পারে। অর্থাৎ র্যামের একটি সেলে ৬৪ টি বিট বা 0,1 পাশাপাশি রাখতে পারে।এরা অনেক বেশি RAM অ্যাড্রেস করতে পারে, তাত্ত্বিকভাবে ১৮ কোটি গিগাবাইট (2^64 বাইট)।এটা বড় ধরনের কাজ, যেমন গেমিং, ভিডিও এডিটিং, বা ভারী সফটওয়্যার চালানোর জন্য উপযোগী।
182
+
183
+
**২০ বিট কম্পিউটার** আসলে খুব পুরোনো, ১৯৭০-৮০ এর দশকের কথা। এটা সাধারণত পুরোনো মেইনফ্রেম বা মিনি কম্পিউটারে ব্যবহৃত হতো, যেমন PDP-11 সিস্টেম। এগুলোর অ্যাড্রেস বাস ২০ বিটের হতো, মানে এরা ১ মেগাবাইট (2^20 বাইট) পর্যন্ত মেমরি অ্যাড্রেস করতে পারতো।
0 commit comments