Theory
2 customer ના 2 કોયડા
એક જ બપોરે shop ના counter પર 2 સવાલ આવે છે.
પહેલો customer: "મારા laptop માં 8 GB RAM છે, પણ મેં ગણ્યું તો મારી બધી open apps અને tabs ને એના કરતાં વધારે memory જોઈએ. તો પછી એ crash કેમ નથી થયું?"
બીજો customer: "Photoshop સવારે open થવામાં એક minute લે છે, પણ બંધ કરીને ફરી open કરું તો seconds માં ખૂલી જાય છે, આવું કેમ?"
2 કોયડા, અને memory ની 2 યુક્તિ: પહેલાનો જવાબ છે virtual memory, અને બીજાનો છે cache.
Theory
ખાનું, છાજલી, godown
Chirag ના counter પર એક નાનું ખાનું (drawer) છે, જેમાં customer વારંવાર માંગે એ વસ્તુઓ પડી હોય છે: આ છે cache, નાનું પણ ત્વરિત. એની પાછળ છાજલી (shelves) પર દિવસનો કામનો stock રહે છે: આ છે RAM. અને સામે રસ્તાની પેલી બાજુ એક મોટો ધીમો godown છે, જ્યાં બાકીનું બધું પડ્યું હોય છે: આ છે hard disk. હવે જ્યારે છાજલી ભરાઈ જાય, ત્યારે Chirag છાજલી પરની થોડી વસ્તુઓ થોડા વખત માટે godown માં મૂકી દે છે અને જરૂર પડે ત્યારે પાછી લઈ આવે છે: આ છે virtual memory.
Theory
Cache memory, વ્યવસ્થિત રીતે
CPU એ RAM કરતાં ઘણું ઝડપી છે. કંઈ ના કરીએ તો CPU નવરું બેસી રહે, data આવે એની રાહ જોતું.
Cache એ એક નાની અને ખૂબ જ fast memory છે (SRAM માંથી બનેલી), જે CPU અને RAM ની વચ્ચે રહે છે અને હમણાં હમણાં તથા વારંવાર વપરાયેલો data અને instructions સાચવે છે. RAM પાસે જતાં પહેલાં CPU પહેલાં cache માં જુએ છે: hit થાય તો RAM સુધીની આખી આંટી બચી જાય, અને miss થાય તો RAM માંથી લાવવું પડે (અને એની એક copy cache માં રાખી લે).
આજકાલના CPU માં એ levels માં ગોઠવેલી હોય છે: L1 (સૌથી નાની, સૌથી ઝડપી, core ની અંદર), L2, અને L3 (મોટી, shared, પ્રમાણમાં ધીમી).
Theory
Virtual memory, વ્યવસ્થિત રીતે
જ્યારે RAM નો એકેએક byte ભરાઈ ગયો હોય અને તમે વધારે એક app open કરો, ત્યારે OS crash નથી થતું. એ ચૂપચાપ RAM માંથી સૌથી ઓછા વપરાયેલા (least recently used) ટુકડા (જેને pages કહે છે) ઉઠાવીને hard disk ના એક અલગ રાખેલા વિસ્તારમાં મૂકી દે છે, જેથી નવા કામ માટે ખરી RAM ખાલી થાય. પછી જે page કાઢી નાખ્યું હોય એની ફરી જરૂર પડે, તો એને પાછું swap કરી લે.
Disk નો આ વિસ્તાર જે નકલી RAM નું કામ કરે છે એને virtual memory કહે છે. Programs ને એની ખબર જ નથી પડતી; એમને તો physically છે એના કરતાં વધારે memory દેખાય છે.
At a glance
The memory hierarchy: જેમ નાની, તેમ ઝડપી
| Level | Size | Speed |
|---|---|---|
| Registers (CPU માં) | થોડા bytes | બધામાં સૌથી ઝડપી |
| Cache (L1/L2/L3) | KBs થી MBs | અતિશય ઝડપી |
| RAM | GBs | ઝડપી |
| Virtual memory (disk) | જેટલી ફાળવી હોય તેટલી | ચારેયમાં સૌથી ધીમી |
Quiz
What is the main purpose of cache memory?
- To bridge the speed gap between the fast CPU and slower RAM
- To permanently store files even when power is off
- To replace RAM entirely in modern computers
- To add extra storage space for large files
Show the answer
To bridge the speed gap between the fast CPU and slower RAM
Cache નું અસ્તિત્વ જ ફક્ત એટલા માટે છે કે fast CPU ને data મળતો રહે; જે data એ વારંવાર માંગે એ સાચવી રાખે જેથી RAM ની રાહ ભાગ્યે જ જોવી પડે. એ volatile છે (option B તો storage ની વાત કરે છે), એ RAM ને બદલે નહીં પણ RAM સાથે કામ કરે છે (option C), અને એની ગણતરીના MBs માં કોઈ files સચવાતી નથી (option D). Cache ના purpose નો સવાલ exam માં નિયમિત આવે છે.
Think first
પહેલા customer ને બરાબર જવાબ
તો 8 GB laptop માં 10 GB ની apps open હોય તોય એ ધીમું ચાલે છે પણ જીવતું રહે છે, એવું કેમ? અને એ થાય ત્યારે બધું lag કેમ કરે છે? Godown વાળા ચિત્રથી વિચારો.
Show the answer
OS એ વધારાનું બધું disk પરની virtual memory માં મૂકી દીધું, એટલે કંઈ crash ના થયું. પણ disk એ RAM કરતાં ઘણું ધીમું છે, એટલે છાજલી અને godown વચ્ચે થતો દરેક swap ખરેખરો સમય ખાય છે: machine ધીમું પડીને ટકી રહે છે. જ્યારે એ કામ કરવા કરતાં swapping માં જ વધારે સમય કાઢવા લાગે, એ ટોકના tબિંદુને thrashing કહે છે. અને shop નો સાચો advice એ જ છે: RAM વધારો.
Watch out
માર્ક કપાવે એવી ગૂંચવણો
"Virtual memory મને વધારે RAM આપે છે": ના. એ તો ધીમી disk space વાપરીને વધારે memory દેખાડે છે; ખરી RAM તો ફક્ત physical chips જ છે. "Cache files સાચવે છે": ના. Cache તો CPU માટે ચાલુ કામનો data રાખે છે અને power જતાં જ ખાલી થઈ જાય છે. અને comparison ના સવાલમાં ક્યારેય એવું ના લખતા કે cache RAM અને disk ની વચ્ચે રહે છે: એ CPU અને RAM ની વચ્ચે રહે છે.
Theory
Shop ની અક્કલ જે કામ લાગશે
એટલે જ વધારે RAM વાળો phone એ મોટા-number વાળા processor પણ ઓછી RAM વાળા phone કરતાં smooth લાગે છે: swapping ઓછું થાય. અને એટલે જ ક્યારેક "clear cache" કરવાથી app ઠીક થઈ જાય છે: જૂનો પડી ગયેલો cached data ફરી બની જાય. આ hierarchy નો idea (નાનું-ઝડપી નજીક, મોટું-ધીમું દૂર) Operating System ના subject માં અને દરેક systems interview માં પાછો આવવાનો છે.
Summary
Key takeaways
- Memory hierarchy: registers → cache → RAM → disk; જેમ નાની તેમ ઝડપી.
- Cache: CPU અને RAM ની વચ્ચેની નાની, ultra-fast SRAM, વારંવાર વપરાતા data માટે (L1/L2/L3).
- Virtual memory: OS disk space ને overflow RAM તરીકે વાપરે છે, pages માં swap થાય છે.
- Virtual memory machine ને જીવતું રાખે છે પણ ધીમું; વધુ પડતું swapping એટલે thrashing.
- Cache એ storage નથી; virtual memory એ ખરી RAM નથી.
- યાદ રાખવાની કડી: ખાનું, છાજલી, godown.