एक कार्यशील स्पिन लॉक बनाना।


स्पिन लॉक का मूल्यांकन करना।


तुलना-और-स्वैप।


लाओ-और-जोड़ो।


बस उपज, बेबी।


Using Queues: Sleeping Instead Of Spinning.

कतारों का उपयोग: घूमने के बजाय सोना।


अलग ओएस, अलग समर्थन।


दो-चरण ताले।


समवर्ती काउंटर।


समवर्ती लिंक्ड लिस्ट।


समवर्ती कतारें।


समवर्ती हैश टेबल।


परिभाषा और दिनचर्या।


The Producer/Consumer (Bound Buffer) Problem.

निर्माता/उपभोक्ता (बाउंड बफर) समस्या।


शर्तों को कवर करना।


सेमाफोर: एक परिभाषा।


बाइनरी सेमाफोर (लॉक)।


शर्त चर के रूप में सेमाफोर।


भोजन करने वाले दार्शनिक।


Key To Fast Crash Recovery: Statelessness.

तेज़ क्रैश रिकवरी की कुंजी: स्टेटलेसनेस।


NFSv2 प्रोटोकॉल।


From Protocol to Distributed File System.

प्रोटोकॉल से डिस्ट्रीब्यूटेड फाइल सिस्टम तक।


Handling Server Failure with Idempotent Operations.

इडेम्पोटेंट ऑपरेशंस के साथ सर्वर विफलता को संभालना।


Improving Performance: Client-side Caching.

प्रदर्शन में सुधार: क्लाइंट-साइड कैशिंग।


कैश कंसिस्टेंसी की समस्या।


NFS कैश कंसिस्टेंसी का आकलन करना।


Implications on Server-Side Write Buffering.

सर्वर-साइड राइट बफ़रिंग पर निहितार्थ।


AFS संस्करण 1।


संस्करण 1 के साथ समस्याएँ।


प्रोटोकॉल में सुधार।


AFS संस्करण 2।


कैश कंसिस्टेंसी।


क्रैश रिकवरी।


AFSv2 का पैमाना और प्रदर्शन।


AFS: अन्य सुधार।


वितरण पर सारांश संवाद


एक प्रोग्राम जो मेमोरी तक पहुंचता है।


एक साथ कई प्रोग्राम चलाना।


The operating system virtualizes resources.

ऑपरेटिंग सिस्टम संसाधनों का वर्चुअलाइजेशन करता है।


एक प्रोग्राम निर्देशों को निष्पादित करता है।


ओएस सिस्टम को इस्तेमाल करने में आसान बनाता है।


वर्चुअलाइजेशन एक महत्वपूर्ण तकनीक है।


ओएस भौतिक संसाधनों को रूपांतरित करता है।


The operating system is a virtual machine.

ऑपरेटिंग सिस्टम एक वर्चुअल मशीन है।


ओएस अनुप्रयोगों के लिए एपीआई प्रदान करता है।


ओएस एक संसाधन प्रबंधक है।


Multiple programs can run at the same time.

एक ही समय में कई प्रोग्राम चल सकते हैं।


ओएस सीपीयू, मेमोरी और डिस्क का प्रबंधन करता है।


The program prints the string passed on the command line.

प्रोग्राम कमांड लाइन पर पारित स्ट्रिंग को प्रिंट करता है।


ओएस सीपीयू का वर्चुअलाइजेशन करता है।


Each program has its own private memory.

प्रत्येक प्रोग्राम की अपनी निजी मेमोरी होती है।


ओएस मेमोरी का वर्चुअलाइजेशन करता है।


कनकरेंसी एक मुख्य विषय है।


Modern multi-threaded programs exhibit concurrency problems.

आधुनिक मल्टी-थ्रेडेड प्रोग्राम कनकरेंसी समस्याओं को प्रदर्शित करते हैं।


The operating system is in charge of this illusion.

ऑपरेटिंग सिस्टम इस भ्रम का प्रभारी है।


How does the OS virtualize resources efficiently?

ओएस कुशलता से संसाधनों का वर्चुअलाइजेशन कैसे करता है?


What mechanisms and policies are implemented by the OS?

ओएस द्वारा कौन सी तंत्र और नीतियां लागू की जाती हैं?


The OS provides a standard library to applications.

ओएस अनुप्रयोगों को एक मानक लाइब्रेरी प्रदान करता है।


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम कंप्यूटर के संसाधनों का प्रबंधन करता है।


Scheduling algorithms determine the order in which processes are executed.

शेड्यूलिंग एल्गोरिदम निर्धारित करते हैं कि प्रक्रियाओं को किस क्रम में निष्पादित किया जाएगा।


The FIFO scheduling algorithm is simple but can lead to long wait times.

FIFO शेड्यूलिंग एल्गोरिदम सरल है, लेकिन इससे लंबा इंतज़ार हो सकता है।


Shortest Job First (SJF) aims to minimize average waiting time.

शॉर्टेस्ट जॉब फर्स्ट (SJF) का लक्ष्य औसत प्रतीक्षा समय को कम करना है।


Round Robin scheduling provides each process with a fixed time slice.

राउंड रॉबिन शेड्यूलिंग प्रत्येक प्रक्रिया को एक निश्चित समय स्लाइस प्रदान करता है।


Multiprocessor scheduling involves managing processes across multiple CPUs.

मल्टीप्रोसेसर शेड्यूलिंग में कई सीपीयू में प्रक्रियाओं का प्रबंधन शामिल है।


Address spaces provide isolation between processes.

एड्रेस स्पेस प्रक्रियाओं के बीच अलगाव प्रदान करते हैं।


Memory virtualization allows a system to run more processes than physical memory.

मेमोरी वर्चुअलाइजेशन एक सिस्टम को भौतिक मेमोरी से अधिक प्रक्रियाएं चलाने की अनुमति देता है।


The malloc() call is used to allocate memory dynamically.

मेमोरी को गतिशील रूप से आवंटित करने के लिए malloc() कॉल का उपयोग किया जाता है।


Segmentation is a memory management technique.

सेगमेंटेशन एक मेमोरी प्रबंधन तकनीक है।


Free-space management deals with how the operating system tracks free memory.

फ्री-स्पेस मैनेजमेंट इस बात से संबंधित है कि ऑपरेटिंग सिस्टम कैसे मुफ्त मेमोरी को ट्रैक करता है।


Paging divides memory into fixed-size blocks called pages.

पेजिंग मेमोरी को निश्चित आकार के ब्लॉकों में विभाजित करता है जिन्हें पेज कहा जाता है।


TLBs (Translation Lookaside Buffers) speed up address translation.

TLB (ट्रांसलेशन लुकसाइड बफ़र्स) एड्रेस ट्रांसलेशन को गति देते हैं।


Multi-level page tables reduce the size of page tables.

मल्टी-लेवल पेज टेबल पेज टेबल के आकार को कम करते हैं।


Swap space is used to store pages that are not currently in physical memory.

स्वैप स्पेस का उपयोग उन पृष्ठों को संग्रहीत करने के लिए किया जाता है जो वर्तमान में भौतिक मेमोरी में नहीं हैं।


The present bit indicates whether a page is in physical memory.

प्रेजेंट बिट इंगित करता है कि कोई पेज भौतिक मेमोरी में है या नहीं।


Page faults occur when a process tries to access a page that is not in memory.

पेज फॉल्ट तब होते हैं जब कोई प्रक्रिया ऐसे पेज तक पहुंचने की कोशिश करती है जो मेमोरी में नहीं है।


LRU (Least Recently Used) is a common page replacement policy.

LRU (सबसे कम हाल ही में उपयोग किया गया) एक सामान्य पेज रिप्लेसमेंट नीति है।


Concurrency introduces challenges in managing shared data.

कनकरेंसी साझा डेटा के प्रबंधन में चुनौतियाँ पेश करती है।


Locks are used to protect shared resources from concurrent access.

साझा संसाधनों को समवर्ती पहुंच से बचाने के लिए लॉक का उपयोग किया जाता है।


The book is called Operating Systems: Three Easy Pieces.

इस किताब का नाम है ऑपरेटिंग सिस्टम: थ्री इज़ी पीसेस।


We hope you’ll enjoy reading it as much as we enjoyed writing it.

हमें उम्मीद है कि आपको इसे पढ़ने में उतना ही मज़ा आएगा जितना हमें इसे लिखने में आया।


The three easy pieces refer to the three major thematic elements the book is organized around: virtualization, concurrency, and persistence.

तीन आसान टुकड़े उन तीन प्रमुख विषयगत तत्वों को संदर्भित करते हैं जिनके इर्द-गिर्द पुस्तक व्यवस्थित है: वर्चुअलाइजेशन, समवर्तीता और स्थिरता।


नई चीजें सीखना मजेदार है, है ना?


Each major concept is divided into a set of chapters, most of which present a particular problem and then show how to solve it.

प्रत्येक प्रमुख अवधारणा को अध्यायों के एक समूह में विभाजित किया गया है, जिनमें से अधिकांश एक विशेष समस्या प्रस्तुत करते हैं और फिर दिखाते हैं कि इसे कैसे हल किया जाए।


One of our goals in writing this book is to make the paths of history as clear as possible.

इस किताब को लिखने में हमारा एक लक्ष्य इतिहास के रास्तों को यथासंभव स्पष्ट करना है।


There are a couple devices we use throughout the book which are probably worth introducing here.

ऐसी कुछ युक्तियाँ हैं जिनका उपयोग हम पूरी किताब में करते हैं, जिन्हें यहाँ पेश करना शायद उचित होगा।


पहला समस्या का मूल है।


Asides tend to discuss something relevant (but perhaps not essential) to the main text.

असाइड्स मुख्य पाठ से संबंधित (लेकिन शायद आवश्यक नहीं) किसी चीज़ पर चर्चा करते हैं।


An index at the end of the book lists all of these tips and asides for your convenience.

पुस्तक के अंत में एक इंडेक्स आपकी सुविधा के लिए इन सभी युक्तियों और साइड्स को सूचीबद्ध करता है।


We use one of the oldest didactic methods, the dialogue, throughout the book.

हम पूरी किताब में सबसे पुरानी शिक्षाप्रद विधियों में से एक, संवाद का उपयोग करते हैं।


At the beginning of each major section, we’ll first present an abstraction that an operating system provides.

प्रत्येक प्रमुख खंड की शुरुआत में, हम पहले एक अमूर्तता प्रस्तुत करेंगे जो एक ऑपरेटिंग सिस्टम प्रदान करता है।


Throughout the chapters, we try to use real code (not pseudocode) where possible.

अध्यायों में, हम जहाँ तक संभव हो, वास्तविक कोड (स्यूडोकोड नहीं) का उपयोग करने का प्रयास करते हैं।


Running real code on real systems is the best way to learn about operating systems.

वास्तविक प्रणालियों पर वास्तविक कोड चलाना ऑपरेटिंग सिस्टम के बारे में जानने का सबसे अच्छा तरीका है।


In various parts of the text, we have sprinkled in a few homeworks to ensure that you are understanding what is going on.

पाठ के विभिन्न हिस्सों में, हमने यह सुनिश्चित करने के लिए कुछ होमवर्क शामिल किए हैं कि आप समझ रहे हैं कि क्या हो रहा है।


The most important addendum to this book is a set of projects in which you learn about how real systems work.

इस पुस्तक का सबसे महत्वपूर्ण परिशिष्ट परियोजनाओं का एक समूह है जिसमें आप वास्तविक प्रणालियों के काम करने के तरीके के बारे में सीखते हैं।


All projects are in the C programming language.

सभी परियोजनाएँ सी प्रोग्रामिंग भाषा में हैं।


If you are an instructor or professor who wishes to use this book, please feel free to do so.

यदि आप एक प्रशिक्षक या प्रोफेसर हैं जो इस पुस्तक का उपयोग करना चाहते हैं, तो कृपया ऐसा करने के लिए स्वतंत्र महसूस करें।


The course divides fairly well across a 15-week semester.

पाठ्यक्रम 15-सप्ताह के सेमेस्टर में काफी अच्छी तरह से विभाजित है।


You may have noticed this book is free and available online.

आपने देखा होगा कि यह पुस्तक मुफ्त है और ऑनलाइन उपलब्ध है।


The OS creates this illusion by virtualizing the CPU.

ऑपरेटिंग सिस्टम सीपीयू का वर्चुअलाइजेशन करके इस भ्रम को पैदा करता है।


कल्पना कीजिए कि हमारे पास एक आड़ू है।


The OS will also likely initialize the stack with arguments.

ऑपरेटिंग सिस्टम संभवतः स्टैक को तर्कों के साथ आरंभ करेगा।


This paper defined many of the early terms and concepts around building multiprogrammed systems.

इस पेपर ने मल्टीप्रोग्राम्ड सिस्टम बनाने के आसपास के कई शुरुआती शब्दों और अवधारणाओं को परिभाषित किया।


The abstraction provided by the OS of a running program is something we will call a process.

ऑपरेटिंग सिस्टम द्वारा एक चल रहे प्रोग्राम का अमूर्तता कुछ ऐसा है जिसे हम एक प्रक्रिया कहेंगे।


Start at transistors and gets you all the way up to C.

ट्रांजिस्टर से शुरू करें और आपको C तक ले जाता है।


The OS has created a beautiful illusion: it has virtualized the CPU.

ऑपरेटिंग सिस्टम ने एक सुंदर भ्रम पैदा किया है: इसने सीपीयू का वर्चुअलाइजेशन किया है।


कार्यक्रम स्वयं एक निर्जीव वस्तु है।


शुरू में ढेर छोटा होगा।


By combining mechanisms and policies, we will build up our understanding of how an operating system virtualizes the CPU.

तंत्र और नीतियों को मिलाकर, हम इस बात की समझ विकसित करेंगे कि कैसे एक ऑपरेटिंग सिस्टम सीपीयू का वर्चुअलाइजेशन करता है।


The Manchester Mark I and Atlas: A Historical Perspective

मैनचेस्टर मार्क I और एटलस: एक ऐतिहासिक परिप्रेक्ष्य


The OS will need both some low-level machinery as well as some high-level intelligence.

ऑपरेटिंग सिस्टम को कुछ निम्न-स्तरीय मशीनरी के साथ-साथ कुछ उच्च-स्तरीय बुद्धिमत्ता की भी आवश्यकता होगी।


The OS is a program, and like any program, it has some key data structures that track various relevant pieces of information.

ऑपरेटिंग सिस्टम एक प्रोग्राम है, और किसी भी प्रोग्राम की तरह, इसमें कुछ प्रमुख डेटा संरचनाएँ हैं जो विभिन्न प्रासंगिक सूचनाओं को ट्रैक करती हैं।


The OS may also create some initial memory for the program’s heap.

ऑपरेटिंग सिस्टम प्रोग्राम के ढेर के लिए कुछ प्रारंभिक मेमोरी भी बना सकता है।


कार्यक्रम उपयोगकर्ता मोड में चल रहा है।


The operating system needs to share the CPU among many jobs.

ऑपरेटिंग सिस्टम को कई कार्यों के बीच CPU साझा करने की आवश्यकता है।


शेल सिर्फ एक उपयोगकर्ता प्रोग्राम है।


The child process calls execvp() in order to run the program wc.

चाइल्ड प्रोसेस प्रोग्राम wc चलाने के लिए execvp() को कॉल करता है।


The parent process callswait() to delay its execution until the child finishes executing.

पैतृक प्रक्रिया चाइल्ड के निष्पादन समाप्त होने तक अपने निष्पादन में देरी करने के लिए wait() को कॉल करती है।


In this interlude, we discuss process creation in UNIX systems.

इस अंतराल में, हम UNIX सिस्टम में प्रक्रिया निर्माण पर चर्चा करते हैं।


The fork() system call is used to create a new process.

fork() सिस्टम कॉल का उपयोग एक नई प्रक्रिया बनाने के लिए किया जाता है।


The newly-created process doesn’t start running at main(), like you might expect.

नई बनाई गई प्रक्रिया main() पर चलना शुरू नहीं होती है, जैसा कि आप उम्मीद कर सकते हैं।


The CPU scheduler determines which process runs at a given moment in time.

CPU शेड्यूलर निर्धारित करता है कि कौन सी प्रक्रिया समय के किसी दिए गए क्षण में चलती है।


The separation of fork() and exec() allows the shell to do a whole bunch of useful things rather easily.

fork() और exec() का पृथक्करण शेल को बहुत सारी उपयोगी चीजें आसानी से करने की अनुमति देता है।


The program prints out a hello world message.

कार्यक्रम एक हेलो वर्ल्ड संदेश प्रिंट करता है।


The OS will often use a judicious bit of hardware support in order to accomplish its work effectively.

OS अक्सर अपने काम को प्रभावी ढंग से पूरा करने के लिए हार्डवेयर समर्थन का एक विवेकपूर्ण बिट का उपयोग करेगा।


चाइल्ड को बस 0 लौटाया जाता है।


The shell then figures out where in the file system the executable resides.

शेल तब यह पता लगाता है कि फ़ाइल सिस्टम में निष्पादन योग्य कहाँ स्थित है।


The output of one process is connected to an in-kernel pipe.

एक प्रक्रिया का आउटपुट एक इन-कर्नेल पाइप से जुड़ा होता है।


The OS must virtualize the CPU in an efficient manner.

OS को CPU को कुशल तरीके से वर्चुअलाइज़ करना होगा।


The program runs natively on the hardware CPU.

कार्यक्रम हार्डवेयर CPU पर मूल रूप से चलता है।


OS संसाधनों का प्रभारी है।


The child process callsexecvp() in order to run the program wc.


The program is redirected into the output file.

कार्यक्रम को आउटपुट फ़ाइल में पुनर्निर्देशित किया जाता है।


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम कंप्यूटर के संसाधनों का प्रबंधन करता है।


System calls allow user programs to access kernel functionality.

सिस्टम कॉल उपयोगकर्ता कार्यक्रमों को कर्नेल कार्यक्षमता तक पहुंचने की अनुमति देते हैं।


The hardware needs to save the caller’s register state.

हार्डवेयर को कॉलर की रजिस्टर स्थिति को सहेजना होगा।


The kernel initializes the trap table at boot time.

कर्नेल बूट समय पर ट्रैप टेबल को आरंभ करता है।


The OS must inform the hardware of the locations of the trap handlers.

ओएस को हार्डवेयर को ट्रैप हैंडलर के स्थानों के बारे में सूचित करना चाहिए।


Switching between processes should be simple.

प्रक्रियाओं के बीच स्विच करना सरल होना चाहिए।


The OS regains control of the CPU by waiting for a system call.

ओएस सिस्टम कॉल की प्रतीक्षा करके सीपीयू पर नियंत्रण वापस प्राप्त करता है।


A timer interrupt gives the OS the ability to run again.

एक टाइमर इंटरप्ट ओएस को फिर से चलाने की क्षमता देता है।


The OS can feel safe in that control will eventually be returned to it.

ओएस सुरक्षित महसूस कर सकता है कि नियंत्रण अंततः उसे वापस कर दिया जाएगा।


The scheduler must answer which process should we run at a given time.

शिड्यूलर को यह उत्तर देना होगा कि हमें किसी दिए गए समय पर कौन सी प्रक्रिया चलानी चाहिए।


नमस्ते, आज आप कैसे हैं?


समाचार में एक बड़े भूकंप की खबर दी गई।


क्या आप कृपया मुझे नमक दे सकते हैं?


The company announced its quarterly earnings.

कंपनी ने अपनी तिमाही आय की घोषणा की।


I am going to the market to buy some groceries.

मैं कुछ किराने का सामान खरीदने के लिए बाजार जा रहा हूँ।


The weather forecast predicts rain for tomorrow.

मौसम पूर्वानुमान कल बारिश की भविष्यवाणी करता है।


वह एक बहुत ही प्रतिभाशाली संगीतकार है।


The government is discussing new economic policies.

सरकार नई आर्थिक नीतियों पर चर्चा कर रही है।


The book was a captivating read from start to finish.

शुरू से अंत तक पुस्तक एक मनोरंजक पठन थी।


The scientists are conducting research on climate change.

वैज्ञानिक जलवायु परिवर्तन पर शोध कर रहे हैं।


The operating system manages computer hardware and software resources.

ऑपरेटिंग सिस्टम कंप्यूटर हार्डवेयर और सॉफ्टवेयर संसाधनों का प्रबंधन करता है।


Please download the lmbench tools to analyze your OS performance.

अपने ऑपरेटिंग सिस्टम के प्रदर्शन का विश्लेषण करने के लिए कृपया lmbench टूल डाउनलोड करें।


The Single UNIX Specification, Version 3 is difficult to read.

सिंगल यूनिक्स स्पेसिफिकेशन, संस्करण 3 पढ़ना मुश्किल है।


Measuring the cost of a system call is relatively easy.

सिस्टम कॉल की लागत को मापना अपेक्षाकृत आसान है।


The lmbench benchmark uses pipes for inter-process communication.

lmbench बेंचमार्क इंटर-प्रोसेस संचार के लिए पाइप का उपयोग करता है।


Ensure your context-switching processes are on the same processor.

सुनिश्चित करें कि आपके संदर्भ-स्विचिंग प्रक्रियाएं एक ही प्रोसेसर पर हैं।


We will now present a series of scheduling policies.

अब हम शेड्यूलिंग नीतियों की एक श्रृंखला प्रस्तुत करेंगे।


Early approaches to scheduling were taken from operations management.

शेड्यूलिंग के शुरुआती दृष्टिकोण संचालन प्रबंधन से लिए गए थे।


How should we develop a basic framework for thinking about scheduling policies?

हमें शेड्यूलिंग नीतियों के बारे में सोचने के लिए एक बुनियादी ढांचा कैसे विकसित करना चाहिए?


Determining the workload is a critical part of building policies.

कार्यभार का निर्धारण नीतियां बनाने का एक महत्वपूर्ण हिस्सा है।


Each job runs for the same amount of time.

प्रत्येक कार्य समान समय के लिए चलता है।


सभी कार्य एक ही समय पर आते हैं।


प्रत्येक कार्य का रन-टाइम ज्ञात है।


Turnaround time is a performance metric.

टर्नअराउंड समय एक प्रदर्शन मीट्रिक है।


FIFO scheduling is very simple and easy to implement.

FIFO शेड्यूलिंग बहुत सरल है और लागू करना आसान है।


The average turnaround time for the three jobs is 20.

तीन कार्यों के लिए औसत टर्नअराउंड समय 20 है।


This problem is generally referred to as the convoy effect.

इस समस्या को आमतौर पर काफिला प्रभाव के रूप में जाना जाता है।


Shortest Job First runs the shortest job first.

सबसे छोटा कार्य पहले सबसे छोटे कार्य को चलाता है।


SJF reduces average turnaround from 110 seconds to 50.

SJF औसत टर्नअराउंड को 110 सेकंड से घटाकर 50 कर देता है।


STCF सिद्ध रूप से इष्टतम है।


In this run, when we gave an input value of 100,000, instead of getting a final value of 200,000, we instead first get 143,012.

इस रन में, जब हमने 100,000 का इनपुट मान दिया, तो 200,000 का अंतिम मान प्राप्त करने के बजाय, हमें पहले 143,012 मिला।


Then, when we run the program a second time, we not only again get the wrong value, but also a different value than the last time.

फिर, जब हम प्रोग्राम को दूसरी बार चलाते हैं, तो हमें न केवल फिर से गलत मान मिलता है, बल्कि पिछली बार से एक अलग मान भी मिलता है।


In fact, if you run the program over and over with high values of loops, you may find that sometimes you even get the right answer!

वास्तव में, यदि आप प्रोग्राम को बार-बार उच्च लूप मानों के साथ चलाते हैं, तो आप पा सकते हैं कि कभी-कभी आपको सही उत्तर भी मिल जाता है!


तो, ऐसा क्यों हो रहा है?


As it turns out, the reason for these odd and unusual outcomes relate to how instructions are executed, which is one at a time.

जैसा कि पता चला है, इन अजीब और असामान्य परिणामों का कारण यह है कि निर्देश कैसे निष्पादित किए जाते हैं, जो एक समय में एक होता है।


Unfortunately, a key part of the program above, where the shared counter is incremented, takes three instructions: one to load the value of the counter from memory into a register, one to increment it, and one to store it back into memory.

दुर्भाग्य से, उपरोक्त प्रोग्राम का एक महत्वपूर्ण हिस्सा, जहां साझा काउंटर को बढ़ाया जाता है, तीन निर्देश लेता है: एक काउंटर के मान को मेमोरी से एक रजिस्टर में लोड करने के लिए, एक इसे बढ़ाने के लिए, और एक इसे वापस मेमोरी में संग्रहीत करने के लिए।


Because these three instructions do not execute atomically (all at once), strange things can happen.

चूंकि ये तीन निर्देश परमाणु रूप से (एक साथ) निष्पादित नहीं होते हैं, इसलिए अजीब चीजें हो सकती हैं।


It is this problem of concurrency that we will address in great detail in the second part of this book.

यह समवर्तीता की समस्या है जिसे हम इस पुस्तक के दूसरे भाग में विस्तार से संबोधित करेंगे।


The third major theme of the course is persistence.

पाठ्यक्रम का तीसरा प्रमुख विषय दृढ़ता है।


In system memory, data can be easily lost, as devices such as DRAM store values in a volatile manner; when power goes away or the system crashes, any data in memory is lost.

सिस्टम मेमोरी में, डेटा आसानी से खो सकता है, क्योंकि DRAM जैसे डिवाइस अस्थिर तरीके से मान संग्रहीत करते हैं; जब बिजली चली जाती है या सिस्टम क्रैश हो जाता है, तो मेमोरी में कोई भी डेटा खो जाता है।


Thus, we need hardware and software to be able to store data persistently; such storage is thus critical to any system as users care a great deal about their data.

इसलिए, हमें डेटा को स्थायी रूप से संग्रहीत करने में सक्षम होने के लिए हार्डवेयर और सॉफ़्टवेयर की आवश्यकता है; इस तरह का भंडारण किसी भी सिस्टम के लिए महत्वपूर्ण है क्योंकि उपयोगकर्ता अपने डेटा के बारे में बहुत परवाह करते हैं।


The hardware comes in the form of some kind of input/output or I/O device; in modern systems, a hard drive is a common repository for long-lived information, although solid-state drives (SSDs) are making headway in this arena as well.

हार्डवेयर कुछ प्रकार के इनपुट/आउटपुट या I/O डिवाइस के रूप में आता है; आधुनिक प्रणालियों में, एक हार्ड ड्राइव लंबे समय तक चलने वाली जानकारी के लिए एक सामान्य भंडार है, हालांकि सॉलिड-स्टेट ड्राइव (एसएसडी) भी इस क्षेत्र में प्रगति कर रहे हैं।


The software in the operating system that usually manages the disk is called the file system; it is thus responsible for storing any files the user creates in a reliable and efficient manner on the disks of the system.

ऑपरेटिंग सिस्टम में सॉफ़्टवेयर जो आमतौर पर डिस्क का प्रबंधन करता है, उसे फ़ाइल सिस्टम कहा जाता है; इस प्रकार यह सिस्टम के डिस्क पर उपयोगकर्ता द्वारा बनाई गई किसी भी फ़ाइल को विश्वसनीय और कुशल तरीके से संग्रहीत करने के लिए ज़िम्मेदार है।


Unlike the abstractions provided by the OS for the CPU and memory, the OS does not create a private, virtualized disk for each application.

CPU और मेमोरी के लिए OS द्वारा प्रदान किए गए अमूर्तता के विपरीत, OS प्रत्येक एप्लिकेशन के लिए एक निजी, वर्चुअलाइज्ड डिस्क नहीं बनाता है।


Rather, it is assumed that often times, users will want to share information that is in files.

बल्कि, यह माना जाता है कि अक्सर, उपयोगकर्ता उन फ़ाइलों में मौजूद जानकारी को साझा करना चाहेंगे।


For example, when writing a C program, you might first use an editor (e.g., Emacs) to create and edit the C file (emacs -nw main.c).

उदाहरण के लिए, C प्रोग्राम लिखते समय, आप पहले C फ़ाइल बनाने और संपादित करने के लिए एक संपादक (जैसे, Emacs) का उपयोग कर सकते हैं (emacs -nw main.c)।


Once done, you might use the compiler to turn the source code into an executable (e.g., gcc -o main main.c).

एक बार हो जाने के बाद, आप स्रोत कोड को एक निष्पादन योग्य में बदलने के लिए कंपाइलर का उपयोग कर सकते हैं (उदाहरण के लिए, gcc -o main main.c)।


When you’re finished, you might run the new executable (e.g., ./main).

जब आप समाप्त कर लें, तो आप नए निष्पादन योग्य को चला सकते हैं (उदाहरण के लिए, ./main)।


Thus, you can see how files are shared across different processes.

इस प्रकार, आप देख सकते हैं कि फ़ाइलें विभिन्न प्रक्रियाओं में कैसे साझा की जाती हैं।


The file system is the part of the OS in charge of managing persistent data.

फ़ाइल सिस्टम OS का वह हिस्सा है जो स्थायी डेटा के प्रबंधन का प्रभारी है।


The scheduler decides which process gets to use the CPU.

शिड्यूलर तय करता है कि कौन सी प्रक्रिया CPU का उपयोग करेगी।


Overlapping operations can maximize system utilization.

ओवरलैपिंग ऑपरेशन सिस्टम के उपयोग को अधिकतम कर सकते हैं।


The OS usually knows very little about the length of each job.

OS आमतौर पर प्रत्येक कार्य की लंबाई के बारे में बहुत कम जानता है।


The first runs the shortest job remaining and thus optimizes turnaround time.

पहला शेष सबसे छोटे कार्य को चलाता है और इस प्रकार टर्नअराउंड समय को अनुकूलित करता है।


We have also seen how we might incorporate I/O into the picture.

हमने यह भी देखा है कि हम I/O को चित्र में कैसे शामिल कर सकते हैं।


The scheduler makes sure processes that are interactive get run frequently.

शिड्यूलर यह सुनिश्चित करता है कि इंटरैक्टिव प्रक्रियाएं बार-बार चलें।


The multi-level feedback queue is an excellent example of a system that learns from the past.

मल्टी-लेवल फीडबैक कतार एक ऐसे सिस्टम का उत्कृष्ट उदाहरण है जो अतीत से सीखता है।


MLFQ would like to make a system feel responsive to interactive users.

MLFQ एक सिस्टम को इंटरैक्टिव उपयोगकर्ताओं के लिए उत्तरदायी महसूस कराना चाहता है।


How can the scheduler learn, as the system runs, the characteristics of the jobs it is running?

सिस्टम के चलने पर, शिड्यूलर कैसे सीख सकता है कि वह जिन कार्यों को चला रहा है उनकी विशेषताएं क्या हैं?


If a job uses up an entire time slice while running, its priority is reduced.

यदि कोई कार्य चलते समय एक पूरे समय के टुकड़े का उपयोग करता है, तो उसकी प्राथमिकता कम हो जाती है।


If a job gives up the CPU before the time slice is up, it stays at the same priority level.

यदि कोई कार्य समय के टुकड़े से पहले CPU छोड़ देता है, तो वह उसी प्राथमिकता स्तर पर रहता है।


The intent of this rule is simple: if an interactive job is doing a lot of I/O.

इस नियम का इरादा सरल है: यदि कोई इंटरैक्टिव कार्य बहुत अधिक I/O कर रहा है।


First, there is the problem of starvation: if there are “too many” interactive jobs in the system.

सबसे पहले, भुखमरी की समस्या है: यदि सिस्टम में बहुत अधिक इंटरैक्टिव कार्य हैं।


A smart user could rewrite their program to game the scheduler.

एक स्मार्ट उपयोगकर्ता शिड्यूलर को गेम करने के लिए अपने प्रोग्राम को फिर से लिख सकता है।


The simple idea here is to periodically boost the priority of all the jobs in system.

यहाँ सरल विचार समय-समय पर सिस्टम में सभी कार्यों की प्राथमिकता को बढ़ाना है।


After some time period S, move all the jobs in the system to the topmost queue.

कुछ समय अवधि S के बाद, सिस्टम के सभी कार्यों को सबसे ऊपरी कतार में ले जाएं।


The real culprit here, as you might have guessed, are Rules 4a and 4b.

यहाँ असली अपराधी, जैसा कि आपने अनुमान लगाया होगा, नियम 4a और 4b हैं।


Once a job uses up its time allotment at a given level, its priority is reduced.

एक बार जब कोई कार्य किसी दिए गए स्तर पर अपना समय आवंटन समाप्त कर लेता है, तो उसकी प्राथमिकता कम हो जाती है।


कितनी कतारें होनी चाहिए?


The high-priority queues are usually given short time slices.

उच्च-प्राथमिकता वाली कतारों को आमतौर पर कम समय के टुकड़े दिए जाते हैं।


The operating system rarely knows what is best for each process.

ऑपरेटिंग सिस्टम शायद ही कभी जानता है कि प्रत्येक प्रक्रिया के लिए सबसे अच्छा क्या है।


Such hints are useful in many parts of the OS, including the scheduler.

इस तरह के संकेत ओएस के कई हिस्सों में उपयोगी हैं, जिसमें शेड्यूलर भी शामिल है।


When a job enters the system, it is placed at the highest priority.

जब कोई कार्य सिस्टम में प्रवेश करता है, तो उसे उच्चतम प्राथमिकता पर रखा जाता है।


MLFQ is interesting because it observes the execution of a job.

MLFQ दिलचस्प है क्योंकि यह एक कार्य के निष्पादन का निरीक्षण करता है।


Many systems use a form of MLFQ as their base scheduler.

कई सिस्टम अपने बेस शेड्यूलर के रूप में MLFQ के एक रूप का उपयोग करते हैं।


Proportional-share is based around a simple concept.

आनुपातिक-साझाकरण एक सरल अवधारणा पर आधारित है।


Processes that should run more often should be given more chances.

जिन प्रक्रियाओं को अधिक बार चलाना चाहिए, उन्हें अधिक अवसर दिए जाने चाहिए।


The basic idea is quite simple: tickets represent your share.

बुनियादी विचार काफी सरल है: टिकट आपके हिस्से का प्रतिनिधित्व करते हैं।


Imagine two processes, A and B, and further that A has 75 tickets while B has only 25.

दो प्रक्रियाओं, A और B की कल्पना करें, और आगे कि A के पास 75 टिकट हैं जबकि B के पास केवल 25 हैं।


The scheduler then picks a winning ticket.

फिर शेड्यूलर एक जीतने वाला टिकट चुनता है।


The use of randomness in lottery scheduling leads to a probabilistic correctness.

लॉटरी शेड्यूलिंग में यादृच्छिकता का उपयोग संभाव्य शुद्धता की ओर ले जाता है।


Random approaches has at least three advantages over more traditional decisions.

यादृच्छिक दृष्टिकोण में अधिक पारंपरिक निर्णयों की तुलना में कम से कम तीन फायदे हैं।


यादृच्छिक काफी तेज़ हो सकता है।


The ticket is used to represent a process’s share of the CPU.

टिकट का उपयोग CPU में एक प्रक्रिया के हिस्से का प्रतिनिधित्व करने के लिए किया जाता है।


Currency allows a user to allocate tickets among their own jobs.

मुद्रा एक उपयोगकर्ता को अपने स्वयं के कार्यों के बीच टिकट आवंटित करने की अनुमति देती है।


With transfers, a process can temporarily hand off its tickets to another process.

स्थानांतरण के साथ, एक प्रक्रिया अस्थायी रूप से अपने टिकट किसी अन्य प्रक्रिया को सौंप सकती है।


With inflation, a process can temporarily raise or lower the number of tickets it owns.

मुद्रास्फीति के साथ, एक प्रक्रिया अस्थायी रूप से अपने स्वामित्व वाले टिकटों की संख्या को बढ़ा या घटा सकती है।


Probably the most amazing thing about lottery scheduling is the simplicity of its implementation.

शायद लॉटरी शेड्यूलिंग के बारे में सबसे आश्चर्यजनक बात इसके कार्यान्वयन की सादगी है।


To make a scheduling decision, we first have to pick a random number.

एक शेड्यूलिंग निर्णय लेने के लिए, हमें पहले एक यादृच्छिक संख्या चुननी होगी।


Only as the jobs run for a significant number of time slices does the lottery scheduler approach the desired outcome.

केवल तभी जब कार्य समय स्लाइस की एक महत्वपूर्ण संख्या के लिए चलते हैं, तो लॉटरी शेड्यूलर वांछित परिणाम तक पहुंचता है।


ऑपरेटिंग सिस्टम सीपीयू का वर्चुअलाइजेशन करता है।


The program uses a stack to keep track of function calls.

प्रोग्राम फ़ंक्शन कॉल को ट्रैक करने के लिए एक स्टैक का उपयोग करता है।


The OS wants to make sure it stays in charge of the machine.

ऑपरेटिंग सिस्टम यह सुनिश्चित करना चाहता है कि वह मशीन का प्रभारी बना रहे।


Good engineering can be that way. And it can also be uplifting!

अच्छी इंजीनियरिंग इस तरह हो सकती है। और यह उत्साहवर्धक भी हो सकती है!


The OS is providing an illusion to each process.

ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया को एक भ्रम प्रदान कर रहा है।


The OS will give each program the view that it has a large contiguous address space.

ऑपरेटिंग सिस्टम प्रत्येक प्रोग्राम को यह दृश्य देगा कि उसके पास एक बड़ा सन्निहित पता स्थान है।


We don’t want one errant program to be able to read, or worse, overwrite, some other program’s memory, do we?

हम नहीं चाहते कि कोई गलत प्रोग्राम किसी अन्य प्रोग्राम की मेमोरी को पढ़ सके, या उससे भी बदतर, उस पर लिख सके, क्या हम चाहते हैं?


The OS should implement virtual memory in a way that is invisible to the running program.

ऑपरेटिंग सिस्टम को वर्चुअल मेमोरी को इस तरह से लागू करना चाहिए जो चल रहे प्रोग्राम के लिए अदृश्य हो।


The program really isn’t in memory at physical addresses 0 through 16KB; rather it is loaded at some arbitrary physical address(es).

प्रोग्राम वास्तव में भौतिक पतों 0 से 16KB पर मेमोरी में नहीं है; बल्कि इसे कुछ मनमाने भौतिक पते पर लोड किया जाता है।


The OS will do this for many processes at once, making sure to protect programs from one another, as well as protect the OS.

ऑपरेटिंग सिस्टम यह एक साथ कई प्रक्रियाओं के लिए करेगा, यह सुनिश्चित करते हुए कि प्रोग्राम एक दूसरे से सुरक्षित रहें, साथ ही ऑपरेटिंग सिस्टम की भी सुरक्षा हो।


मुझे लगता है कि मैंने कुछ चीजें सीखीं।


There are a bunch of important mechanisms that I had to understand.

ऐसे कई महत्वपूर्ण तंत्र हैं जिन्हें मुझे समझने की आवश्यकता थी।


Paranoia rules the day, and certainly keeps the OS in charge of the machine.

सनक का बोलबाला है, और निश्चित रूप से ऑपरेटिंग सिस्टम को मशीन का प्रभारी रखता है।


It seems like that might be something to look into when I’m next running a job on Amazon’s EC2 service.

ऐसा लगता है कि जब मैं अगली बार अमेज़ॅन की EC2 सेवा पर कोई काम चला रहा हूँ तो यह कुछ देखने लायक हो सकता है।


Virtualizing memory is complicated and requires us to understand many more intricate details.

मेमोरी का वर्चुअलाइजेशन जटिल है और इसके लिए हमें कई और जटिल विवरणों को समझने की आवश्यकता है।


The OS is just providing an illusion to each process, specifically that it has its own large and private memory.

ऑपरेटिंग सिस्टम बस प्रत्येक प्रक्रिया को एक भ्रम प्रदान कर रहा है, विशेष रूप से यह कि उसकी अपनी बड़ी और निजी मेमोरी है।


Life, for a programmer, becomes much more tricky if you have to worry about fitting all of your code data into a small, crowded memory.

एक प्रोग्रामर के लिए, जीवन बहुत अधिक मुश्किल हो जाता है यदि आपको अपने सभी कोड डेटा को एक छोटी, भीड़भाड़ वाली मेमोरी में फिट करने की चिंता करनी पड़ती है।


The OS should strive to make the virtualization as efficient as possible.

ऑपरेटिंग सिस्टम को वर्चुअलाइजेशन को यथासंभव कुशल बनाने का प्रयास करना चाहिए।


The OS should make sure to protect processes from one another as well as the OS itself from processes.

ऑपरेटिंग सिस्टम को प्रक्रियाओं को एक दूसरे से और साथ ही ऑपरेटिंग सिस्टम को प्रक्रियाओं से बचाने के लिए सुनिश्चित करना चाहिए।


We have seen the introduction of a major OS subsystem: virtual memory.

हमने एक प्रमुख ओएस सबसिस्टम: वर्चुअल मेमोरी का परिचय देखा है।


The OS, with a little hardware support, tries its best to get out of the way of the running program.

ऑपरेटिंग सिस्टम, थोड़ी सी हार्डवेयर सहायता के साथ, चल रहे प्रोग्राम से दूर रहने की पूरी कोशिश करता है।


Efficiency and control together are two of the main goals of any modern operating system.

दक्षता और नियंत्रण एक साथ किसी भी आधुनिक ऑपरेटिंग सिस्टम के दो मुख्य लक्ष्य हैं।


In virtualizing memory, we will pursue a similar strategy, attaining both efficiency and control.

मेमोरी को वर्चुअलाइज़ करने में, हम एक समान रणनीति अपनाएंगे, दक्षता और नियंत्रण दोनों प्राप्त करेंगे।


Control implies that the OS ensures that no application is allowed to access any memory but its own.

नियंत्रण का तात्पर्य है कि ऑपरेटिंग सिस्टम यह सुनिश्चित करता है कि किसी भी एप्लिकेशन को अपनी स्वयं की मेमोरी के अलावा किसी अन्य मेमोरी तक पहुंचने की अनुमति नहीं है।


With address translation, the hardware transforms each memory access, changing the virtual address to a physical address.

एड्रेस ट्रांसलेशन के साथ, हार्डवेयर प्रत्येक मेमोरी एक्सेस को ट्रांसफॉर्म करता है, वर्चुअल एड्रेस को फिजिकल एड्रेस में बदलता है।


The main problem we address is this: CRUX: HOW TO ALLOCATE AND MANAGE MEMORY.

मुख्य समस्या जिसका हम समाधान करते हैं वह यह है: CRUX: मेमोरी को कैसे आवंटित और प्रबंधित करें।


In UNIX/C programs, understanding how to allocate and manage memory is critical.

UNIX/C प्रोग्राम में, यह समझना महत्वपूर्ण है कि मेमोरी को कैसे आवंटित और प्रबंधित किया जाए।


In running a C program, there are two types of memory that are allocated.

एक C प्रोग्राम चलाते समय, दो प्रकार की मेमोरी आवंटित की जाती हैं।


The first is called stack memory, and allocations and deallocations of it are managed implicitly.

पहला स्टैक मेमोरी कहलाता है, और इसका आवंटन और विखंडन निहित रूप से प्रबंधित किया जाता है।


Declaring memory on the stack in C is easy.

C में स्टैक पर मेमोरी घोषित करना आसान है।


When you return from the function, the compiler deallocates the memory for you.

जब आप फ़ंक्शन से लौटते हैं, तो कंपाइलर आपके लिए मेमोरी को डीएलोकेट कर देता है।


It is this need for long-lived memory that gets us to the second type of memory, called heap memory.

यह लंबे समय तक चलने वाली मेमोरी की आवश्यकता है जो हमें दूसरे प्रकार की मेमोरी, जिसे हीप मेमोरी कहा जाता है, तक ले जाती है।


Heap memory is explicitly handled by you, the programmer.

हीप मेमोरी को स्पष्ट रूप से आप, प्रोग्रामर द्वारा संभाला जाता है।


Here is an example of how one might allocate a pointer to an integer on the heap.

यहां एक उदाहरण दिया गया है कि कोई हीप पर एक पूर्णांक के लिए एक पॉइंटर कैसे आवंटित कर सकता है।


malloc() कॉल काफी सरल है।


You pass it a size asking for some room on the heap.

आप इसे हीप पर कुछ जगह के लिए पूछने वाला आकार पास करते हैं।


The manual page shows what you need to do to use malloc.

मैनुअल पेज दिखाता है कि आपको malloc का उपयोग करने के लिए क्या करने की आवश्यकता है।


The single parameter malloc() takes is of type size_t which simply describes how many bytes you need.

malloc() द्वारा लिया गया एकल पैरामीटर size_t प्रकार का है जो बस बताता है कि आपको कितने बाइट्स की आवश्यकता है।


For example, to allocate space for a double-precision floating point value, you simply do this:

उदाहरण के लिए, डबल-प्रिसिजन फ्लोटिंग पॉइंट वैल्यू के लिए जगह आवंटित करने के लिए, आप बस यह करते हैं:


If you aren’t sure how some routine or operator you are using behaves, there is no substitute for simply trying it out.

यदि आप सुनिश्चित नहीं हैं कि आप जिस रूटीन या ऑपरेटर का उपयोग कर रहे हैं, वह कैसे व्यवहार करता है, तो बस इसे आज़माने का कोई विकल्प नहीं है।


The paper to read about memory management in VMMs (a.k.a., hypervisors).

वीएमएम (उर्फ, हाइपरवाइजर) में मेमोरी प्रबंधन के बारे में पढ़ने के लिए यह पेपर है।


If you’re thinking of writing a Ph. D. dissertation at some point, you should always have a good example around.

यदि आप किसी समय पीएचडी शोध प्रबंध लिखने की सोच रहे हैं, तो आपके पास हमेशा एक अच्छा उदाहरण होना चाहिए।


This chapter will introduce the basics of multiprocessor scheduling.

यह अध्याय मल्टीप्रोसेसर शेड्यूलिंग की मूल बातें पेश करेगा।


Multi-threaded applications can spread work across multiple CPUs and thus run faster when given more CPU resources.

मल्टी-थ्रेडेड एप्लिकेशन कई सीपीयू में काम फैला सकते हैं और इस प्रकार अधिक सीपीयू संसाधन दिए जाने पर तेजी से चलते हैं।


The rise of the multicore processor, in which multiple CPU cores are packed onto a single chip, is the source of this proliferation.

मल्टीकोर प्रोसेसर का उदय, जिसमें कई सीपीयू कोर एक ही चिप पर पैक किए जाते हैं, इस प्रसार का स्रोत है।


Caches are small, fast memories that (in general) hold copies of popular data that is found in the main memory of the system.

कैश छोटी, तेज़ यादें हैं जो (सामान्य तौर पर) लोकप्रिय डेटा की प्रतियां रखती हैं जो सिस्टम की मुख्य मेमोरी में पाई जाती हैं।


The basic solution is provided by the hardware: by monitoring memory accesses, hardware can ensure that basically the “right thing” happens.

बुनियादी समाधान हार्डवेयर द्वारा प्रदान किया जाता है: मेमोरी एक्सेस की निगरानी करके, हार्डवेयर यह सुनिश्चित कर सकता है कि मूल रूप से “सही चीज़” हो।


When accessing (and in particular, updating) shared data items or structures across CPUs, mutual exclusion primitives (such as locks) should likely be used.

सीपीयू में साझा डेटा आइटम या संरचनाओं तक पहुँचते (और विशेष रूप से, अपडेट करते) समय, पारस्परिक अपवर्जन प्रिमिटिव (जैसे ताले) का उपयोग किया जाना चाहिए।


A primary one is that a typical application (i.e., some C program you wrote) only uses a single CPU.

एक प्राथमिक यह है कि एक विशिष्ट एप्लिकेशन (यानी, आपके द्वारा लिखा गया कुछ सी प्रोग्राम) केवल एक ही सीपीयू का उपयोग करता है।


The idea behind temporal locality is that when a piece of data is accessed, it is likely to be accessed again in the near future.

टेम्पोरल लोकैलिटी के पीछे का विचार यह है कि जब डेटा के एक टुकड़े तक पहुँचा जाता है, तो निकट भविष्य में फिर से पहुँचने की संभावना होती है।


Thus, a multiprocessor scheduler should consider cache affinity when making its scheduling decisions.

इस प्रकार, मल्टीप्रोसेसर शेड्यूलर को अपने शेड्यूलिंग निर्णय लेते समय कैश आत्मीयता पर विचार करना चाहिए।


This approach has the advantage of simplicity; it does not require much work to take an existing policy.

इस दृष्टिकोण में सादगी का लाभ है; इसके लिए मौजूदा नीति लेने के लिए अधिक काम करने की आवश्यकता नहीं है।


Locks, unfortunately, can greatly reduce performance, particularly as the number of CPUs in the systems grows.

दुर्भाग्य से, ताले प्रदर्शन को बहुत कम कर सकते हैं, खासकर जैसे-जैसे सिस्टम में सीपीयू की संख्या बढ़ती है।


Because each CPU simply picks the next job to run from the globally-shared queue, each job ends up bouncing around from CPU to CPU.

चूंकि प्रत्येक सीपीयू बस वैश्विक रूप से साझा कतार से चलाने के लिए अगले कार्य को चुनता है, इसलिए प्रत्येक कार्य सीपीयू से सीपीयू में घूमता रहता है।


To handle this problem, most SQMS schedulers include some kind of affinity mechanism.

इस समस्या को हल करने के लिए, अधिकांश SQMS शेड्यूलर कुछ प्रकार के आत्मीयता तंत्र को शामिल करते हैं।


MQMS has a distinct advantage of SQMS in that it should be inherently more scalable.

MQMS में SQMS का एक अलग फायदा है कि यह स्वाभाविक रूप से अधिक स्केलेबल होना चाहिए।


As you can see from this diagram, A gets twice as much CPU as B and D, which is not the desired outcome.

जैसा कि आप इस आरेख से देख सकते हैं, A को B और D की तुलना में दोगुना CPU मिलता है, जो वांछित परिणाम नहीं है।


The obvious answer to this query is to move jobs around, a technique which we (once again) refer to as migration.

इस क्वेरी का स्पष्ट उत्तर कार्यों को इधर-उधर ले जाना है, एक ऐसी तकनीक जिसे हम (एक बार फिर) माइग्रेशन कहते हैं।


With a work-stealing approach, a (source) queue that is low on jobs will occasionally peek at another (target) queue.

वर्क-स्टीलिंग दृष्टिकोण के साथ, एक (स्रोत) कतार जिसमें कार्य कम हैं, कभी-कभी दूसरी (लक्ष्य) कतार पर झाँकेगी।


Finding the right threshold remains, as is common in system policy design, a black art.

सही सीमा ढूँढना, जैसा कि सिस्टम नीति डिजाइन में आम है, एक काला जादू बना हुआ है।


The OS must manage memory, keeping track of which locations are free and which are in use.

ओएस को मेमोरी का प्रबंधन करना होगा, यह ट्रैक रखते हुए कि कौन से स्थान खाली हैं और कौन से उपयोग में हैं।


Through virtualization, the OS turns the ugly machine reality into something that is a useful, powerful, and easy to use abstraction.

वर्चुअलाइजेशन के माध्यम से, ओएस बदसूरत मशीन वास्तविकता को ऐसी चीज में बदल देता है जो एक उपयोगी, शक्तिशाली और उपयोग में आसान अमूर्तता है।


Don’t like the idea of the OS laughing at you? Well, you may be out of luck then; that’s just how the OS rolls.

क्या आपको ओएस के आप पर हंसने का विचार पसंद नहीं है? खैर, तब आप भाग्य से बाहर हो सकते हैं; ओएस बस ऐसे ही चलता है।


We will also assume, for simplicity, that the size of the address space is not too big.

हम यह भी मान लेंगे, सरलता के लिए, कि एड्रेस स्पेस का आकार बहुत बड़ा नहीं है।


To understand better what we need to do to implement address translation, let’s look at a simple example.

एड्रेस ट्रांसलेशन को लागू करने के लिए हमें क्या करने की आवश्यकता है, इसे बेहतर ढंग से समझने के लिए, आइए एक सरल उदाहरण देखें।


The compiler turns this line of code into assembly, which might look something like this.

कम्पाइलर इस कोड की लाइन को असेंबली में बदल देता है, जो कुछ इस तरह दिख सकता है।


This code snippet is relatively straightforward.

यह कोड स्निपेट अपेक्षाकृत सीधा है।


From the program’s perspective, its address space starts at address 0 and grows to a maximum of 16 KB.

प्रोग्राम के दृष्टिकोण से, इसका एड्रेस स्पेस एड्रेस 0 से शुरू होता है और अधिकतम 16 KB तक बढ़ता है।


How can we relocate this process in memory in a way that is transparent to the process?

हम इस प्रक्रिया को मेमोरी में इस तरह से कैसे स्थानांतरित कर सकते हैं जो प्रक्रिया के लिए पारदर्शी हो?


In the figure, you can see the OS using the first slot of physical memory for itself.

चित्र में, आप देख सकते हैं कि ओएस अपने लिए भौतिक मेमोरी के पहले स्लॉट का उपयोग कर रहा है।


To gain some understanding of hardware-based address translation, we’ll first discuss its first incarnation.

हार्डवेयर-आधारित एड्रेस ट्रांसलेशन की कुछ समझ हासिल करने के लिए, हम पहले इसके पहले अवतार पर चर्चा करेंगे।


This base-and-bounds pair is going to allow us to place the address space anywhere we’d like in physical memory.

यह बेस-एंड-बाउंड्स युग्म हमें एड्रेस स्पेस को भौतिक मेमोरी में कहीं भी रखने की अनुमति देगा।


Each memory reference generated by the process is a virtual address.

प्रक्रिया द्वारा उत्पन्न प्रत्येक मेमोरी संदर्भ एक वर्चुअल एड्रेस है।


Transforming a virtual address into a physical address is exactly the technique we refer to as address translation.

एक वर्चुअल एड्रेस को फिजिकल एड्रेस में बदलना बिल्कुल वही तकनीक है जिसे हम एड्रेस ट्रांसलेशन कहते हैं।


With dynamic relocation, we can see how a little hardware goes a long way.

डायनेमिक रिलोकेशन के साथ, हम देख सकते हैं कि थोड़ा सा हार्डवेयर कैसे बहुत आगे जाता है।


The point of the bounds is thus to make sure that all addresses generated by the process are legal.

इस प्रकार सीमाओं का बिंदु यह सुनिश्चित करना है कि प्रक्रिया द्वारा उत्पन्न सभी पते कानूनी हैं।


Imagine the havoc a user process could wreak if it could arbitrarily change the base register while running.

कल्पना कीजिए कि एक उपयोगकर्ता प्रक्रिया कितना नुकसान कर सकती है यदि वह चलते समय मनमाने ढंग से बेस रजिस्टर को बदल सकती है।


In this chapter, we have extended the concept of limited direct execution with a specific mechanism used in virtual memory.

इस अध्याय में, हमने वर्चुअल मेमोरी में उपयोग किए जाने वाले एक विशिष्ट तंत्र के साथ सीमित प्रत्यक्ष निष्पादन की अवधारणा का विस्तार किया है।


We have also seen one particular form of virtualization, known as base and bounds or dynamic relocation.

हमने वर्चुअलाइजेशन का एक विशेष रूप भी देखा है, जिसे बेस एंड बाउंड्स या डायनेमिक रिलोकेशन के रूप में जाना जाता है।


Base-and-bounds also offers protection; the OS and hardware combine to ensure no process can generate memory references outside its own address space.

बेस-एंड-बाउंड्स सुरक्षा भी प्रदान करता है; ओएस और हार्डवेयर यह सुनिश्चित करने के लिए मिलते हैं कि कोई भी प्रक्रिया अपने स्वयं के एड्रेस स्पेस के बाहर मेमोरी संदर्भ उत्पन्न नहीं कर सकती है।


The idea is simple: instead of having just one base and bounds pair in our MMU, why not have a base and bounds pair per logical segment of the address space?

विचार सरल है: हमारे एमएमयू में केवल एक बेस और बाउंड्स युग्म रखने के बजाय, एड्रेस स्पेस के प्रत्येक तार्किक खंड के लिए एक बेस और बाउंड्स युग्म क्यों न हो?


A segment is just a contiguous portion of the address space of a particular length.

एक खंड केवल एक विशेष लंबाई के एड्रेस स्पेस का एक सतत भाग है।


What segmentation allows the OS to do is to place each one of those segments in different parts of physical memory.

सेगमेंटेशन ओएस को यह करने की अनुमति देता है कि वह उन खंडों में से प्रत्येक को भौतिक मेमोरी के विभिन्न भागों में रखे।


Assume we want to place the address space from Figure 16.1 into physical memory.

मान लीजिए कि हम चित्र 16.1 से एड्रेस स्पेस को भौतिक मेमोरी में रखना चाहते हैं।


With a base and bounds pair per segment, we can place each segment independently in physical memory.

प्रति खंड एक बेस और बाउंड्स युग्म के साथ, हम प्रत्येक खंड को भौतिक मेमोरी में स्वतंत्र रूप से रख सकते हैं।


As you can see in the diagram, only used memory is allocated space in physical memory.

जैसा कि आप आरेख में देख सकते हैं, केवल उपयोग की गई मेमोरी को भौतिक मेमोरी में स्थान आवंटित किया जाता है।


The hardware structure in our MMU required to support segmentation is just what you’d expect.

सेगमेंटेशन का समर्थन करने के लिए हमारे एमएमयू में हार्डवेयर संरचना वही है जिसकी आप उम्मीद करेंगे।


You can see from the table that the code segment is placed at physical address 32KB and has a size of 2KB.

आप तालिका से देख सकते हैं कि कोड खंड भौतिक पते 32KB पर रखा गया है और इसका आकार 2KB है।


Let’s do an example translation, using the address space in Figure 16.1.

आइए चित्र 16.1 में एड्रेस स्पेस का उपयोग करके एक उदाहरण अनुवाद करते हैं।


Assume a reference is made to virtual address 100 (which is in the code segment).

मान लीजिए कि वर्चुअल एड्रेस 100 (जो कोड खंड में है) का संदर्भ दिया गया है।


When the reference takes place (say, on an instruction fetch), the hardware will add the base value to the offset into this segment.

जब संदर्भ होता है (उदाहरण के लिए, एक निर्देश लाने पर), तो हार्डवेयर बेस मान को इस खंड में ऑफसेट में जोड़ देगा।


The term segmentation fault or violation arises from a memory access on a segmented machine to an illegal address.

सेगमेंटेशन फॉल्ट या उल्लंघन शब्द एक खंडित मशीन पर एक अवैध पते पर मेमोरी एक्सेस से उत्पन्न होता है।


Now let’s look at an address in the heap, virtual address 4200 (again refer to Figure 16.1).

अब आइए हीप में एक पते पर नज़र डालते हैं, वर्चुअल एड्रेस 4200 (फिर से चित्र 16.1 देखें)।


What we need to first do is extract the offset into the heap, i.e., which byte(s) in this segment the address refers to.

हमें सबसे पहले जो करने की ज़रूरत है, वह है हीप में ऑफसेट निकालना, यानी, इस खंड में कौन सा/से बाइट्स पते को संदर्भित करते हैं।


What if we tried to refer to an illegal address, such as 7KB which is beyond the end of the heap?

क्या होगा यदि हम एक अवैध पते को संदर्भित करने का प्रयास करते हैं, जैसे कि 7KB जो हीप के अंत से परे है?


The hardware uses segment registers during translation.

हार्डवेयर अनुवाद के दौरान सेगमेंट रजिस्टरों का उपयोग करता है।


One common approach, sometimes referred to as an explicit approach, is to chop up the address space into segments based on the top few bits of the virtual address.

एक सामान्य दृष्टिकोण, जिसे कभी-कभी स्पष्ट दृष्टिकोण के रूप में जाना जाता है, वर्चुअल एड्रेस के शीर्ष कुछ बिट्स के आधार पर एड्रेस स्पेस को खंडों में विभाजित करना है।


In our example, then, if the top two bits are 00, the hardware knows the virtual address is in the code segment.

हमारे उदाहरण में, यदि शीर्ष दो बिट 00 हैं, तो हार्डवेयर जानता है कि वर्चुअल एड्रेस कोड खंड में है।


The stack has been relocated to physical address 28KB in the diagram above, but with one critical difference: it grows backwards.

स्टैक को उपरोक्त आरेख में भौतिक पते 28KB पर स्थानांतरित कर दिया गया है, लेकिन एक महत्वपूर्ण अंतर के साथ: यह पीछे की ओर बढ़ता है।


As support for segmentation grew, system designers soon realized that they could realize new types of efficiencies with a little more hardware support.

जैसे-जैसे सेगमेंटेशन का समर्थन बढ़ा, सिस्टम डिजाइनरों ने जल्द ही महसूस किया कि वे थोड़े और हार्डवेयर समर्थन के साथ नए प्रकार की दक्षता का एहसास कर सकते हैं।


The total free space available is 20 bytes.

उपलब्ध कुल खाली स्थान 20 बाइट है।


15 बाइट्स का अनुरोध विफल हो जाएगा।


खाली स्थान का प्रबंधन कैसे किया जाना चाहिए?


What strategies can be used to minimize fragmentation?

विखंडन को कम करने के लिए किन रणनीतियों का उपयोग किया जा सकता है?


We assume a basic interface such as that provided by malloc() and free().

हम एक बुनियादी इंटरफ़ेस मानते हैं जैसे कि malloc() और free() द्वारा प्रदान किया गया।


The user, when freeing the space, does not inform the library of its size.

उपयोगकर्ता, स्थान खाली करते समय, लाइब्रेरी को उसके आकार के बारे में सूचित नहीं करता है।


The space that this library manages is known historically as the heap.

वह स्थान जिसका यह लाइब्रेरी प्रबंधन करती है, ऐतिहासिक रूप से ढेर के रूप में जाना जाता है।


We are concerned with external fragmentation.

हमें बाहरी विखंडन की चिंता है।


Allocators could of course also have the problem of internal fragmentation.

निश्चित रूप से, आवंटकों को आंतरिक विखंडन की समस्या भी हो सकती है।


We’ll mostly focus on external fragmentation.

हम ज्यादातर बाहरी विखंडन पर ध्यान केंद्रित करेंगे।


Once memory is handed out to a client, it cannot be relocated.

एक बार जब मेमोरी किसी क्लाइंट को सौंप दी जाती है, तो उसे दूसरी जगह स्थानांतरित नहीं किया जा सकता है।


Compaction could be used in the OS to deal with fragmentation.

विखंडन से निपटने के लिए ओएस में संकुचन का उपयोग किया जा सकता है।


We’ll assume that the allocator manages a contiguous region of bytes.

हम मान लेंगे कि आवंटक बाइट्स के एक सन्निहित क्षेत्र का प्रबंधन करता है।


We’ll first cover some common mechanisms used in most allocators.

सबसे पहले, हम कुछ सामान्य तंत्रों को कवर करेंगे जो अधिकांश आवंटकों में उपयोग किए जाते हैं।


A request for exactly that size (10 bytes) could be satisfied easily.

ठीक उसी आकार (10 बाइट) का अनुरोध आसानी से पूरा किया जा सकता है।


The allocator will perform an action known as splitting.

आवंटक एक क्रिया करेगा जिसे विभाजन के रूप में जाना जाता है।


A corollary mechanism found in many allocators is known as coalescing of free space.

कई आवंटकों में पाया जाने वाला एक परिणामी तंत्र मुक्त स्थान का संलयन है।


What happens when an application calls free(10)?

क्या होता है जब कोई एप्लिकेशन free(10) को कॉल करता है?


The library must be able to figure out how big a chunk of memory is.

लाइब्रेरी को यह पता लगाने में सक्षम होना चाहिए कि मेमोरी का एक टुकड़ा कितना बड़ा है।


Most allocators store a little bit of extra information in a header block.

अधिकांश आवंटक एक हेडर ब्लॉक में थोड़ी अतिरिक्त जानकारी संग्रहीत करते हैं।


Engineers like Jeff Bonwick are the heart of Silicon Valley.

जेफ बोनविक जैसे इंजीनियर सिलिकॉन वैली का दिल हैं।


Behind almost any great product or technology is a human who is way above average in their talents.

लगभग किसी भी महान उत्पाद या तकनीक के पीछे एक इंसान होता है जो अपनी प्रतिभा में औसत से कहीं ऊपर होता है।


This is why, still today, one or two people can start a company that changes the face of the world forever.

यही कारण है कि आज भी, एक या दो लोग एक ऐसी कंपनी शुरू कर सकते हैं जो हमेशा के लिए दुनिया का चेहरा बदल देती है।


Work hard and you might become such a “100x” person as well.

कड़ी मेहनत करें और आप भी ऐसे “100x” व्यक्ति बन सकते हैं।


Failing that, work with such a person; you’ll learn more in a day than most learn in a month.

अगर ऐसा नहीं होता है, तो ऐसे व्यक्ति के साथ काम करें; आप एक दिन में उतना सीखेंगे जितना ज्यादातर लोग एक महीने में सीखते हैं।


The slab allocator also goes beyond most segregated list approaches by keeping free objects on the lists in a pre-initialized state.

स्लैब एलोकेटर अधिकांश अलग-अलग सूची दृष्टिकोणों से भी आगे जाता है, मुक्त वस्तुओं को पूर्व-प्रारंभिक स्थिति में सूचियों पर रखकर।


When a request for memory is made, the search for free space recursively divides free space by two.

जब मेमोरी का अनुरोध किया जाता है, तो मुक्त स्थान की खोज पुनरावर्ती रूप से मुक्त स्थान को दो से विभाजित करती है।


In the example, the leftmost 8KB block is allocated and returned to the user.

उदाहरण में, सबसे बायां 8KB ब्लॉक आवंटित किया गया है और उपयोगकर्ता को लौटा दिया गया है।


The beauty of buddy allocation is found in what happens when that block is freed.

बडी आवंटन की सुंदरता इस बात में निहित है कि जब वह ब्लॉक मुक्त हो जाता है तो क्या होता है।


When returning the 8KB block to the free list, the allocator checks whether the “buddy” 8KB is free.

8KB ब्लॉक को मुक्त सूची में लौटाते समय, एलोकेटर जांचता है कि क्या “बडी” 8KB मुक्त है।


The reason buddy allocation works so well is that it is simple to determine the buddy of a particular block.

बडी आवंटन इतनी अच्छी तरह से काम करने का कारण यह है कि किसी विशेष ब्लॉक के बडी को निर्धारित करना सरल है।


One major problem with many of the approaches described above is their lack of scaling.

ऊपर वर्णित कई दृष्टिकोणों के साथ एक प्रमुख समस्या उनका स्केलिंग का अभाव है।


Given that modern systems often have multiple processors and run multi-threaded workloads.

यह देखते हुए कि आधुनिक प्रणालियों में अक्सर कई प्रोसेसर होते हैं और मल्टी-थ्रेडेड वर्कलोड चलाते हैं।


In this chapter, we’ve discussed the most rudimentary forms of memory allocators.

इस अध्याय में, हमने मेमोरी एलोकेटर के सबसे बुनियादी रूपों पर चर्चा की है।


Such allocators exist everywhere, linked into every C program you write.

ऐसे एलोकेटर हर जगह मौजूद हैं, जो आपके द्वारा लिखे गए प्रत्येक सी प्रोग्राम में जुड़े हुए हैं।


As with many systems, there are many trade-offs to be made in building such a system.

कई प्रणालियों की तरह, ऐसी प्रणाली बनाने में कई ट्रेड-ऑफ किए जाने हैं।


Making a fast, space-efficient, scalable allocator that works well for a broad range of workloads remains an on-going challenge.

एक तेज़, स्थान-कुशल, स्केलेबल एलोकेटर बनाना जो व्यापक श्रेणी के वर्कलोड के लिए अच्छी तरह से काम करता है, एक सतत चुनौती बनी हुई है।


Instead of splitting up our address space into three logical segments, we split up our address space into fixed-sized units we call a page.

हमारे एड्रेस स्पेस को तीन तार्किक खंडों में विभाजित करने के बजाय, हम अपने एड्रेस स्पेस को निश्चित आकार की इकाइयों में विभाजित करते हैं जिसे हम एक पृष्ठ कहते हैं।


With paging, physical memory is also split into some number of pages as well; we sometimes will call each page of physical memory a page frame.

पेजिंग के साथ, भौतिक मेमोरी को भी कुछ संख्या में पृष्ठों में विभाजित किया जाता है; हम कभी-कभी भौतिक मेमोरी के प्रत्येक पृष्ठ को एक पृष्ठ फ्रेम कहेंगे।


The major role of the page table is to store address translations for each of the virtual pages of the address space.

पेज टेबल की प्रमुख भूमिका एड्रेस स्पेस के प्रत्येक वर्चुअल पेज के लिए एड्रेस ट्रांसलेशन को स्टोर करना है।


यह कार्यक्रम समझने में आसान है।


The first instruction moves the value zero into the virtual memory address.

पहला निर्देश शून्य मान को वर्चुअल मेमोरी पते पर ले जाता है।


We assume a virtual address space of size 64KB.

हम 64KB आकार के वर्चुअल एड्रेस स्पेस मान लेते हैं।


The second instruction increments the array index held in %eax.

दूसरा निर्देश %eax में रखे गए सरणी सूचकांक को बढ़ाता है।


If the comparison shows that that two values are not yet equal, the fourth instruction jumps back to the top of the loop.

यदि तुलना दिखाती है कि दो मान अभी तक बराबर नहीं हैं, तो चौथा निर्देश लूप के शीर्ष पर वापस कूदता है।


To understand which memory accesses this instruction sequence makes, we’ll have to assume something about where in virtual memory the code snippet and array are found.

यह समझने के लिए कि यह निर्देश अनुक्रम किन मेमोरी एक्सेस को बनाता है, हमें यह मानना होगा कि वर्चुअल मेमोरी में कोड स्निपेट और सरणी कहाँ पाए जाते हैं।


The entire process, for the first five loop iterations, is depicted in Figure 18.7.

पूरी प्रक्रिया, पहले पांच लूप पुनरावृत्तियों के लिए, चित्र 18.7 में दर्शाई गई है।


See if you can make sense of the patterns that show up in this visualization.

देखें कि क्या आप इस विज़ुअलाइज़ेशन में दिखाई देने वाले पैटर्न को समझ सकते हैं।


In particular, what will change as the loop continues to run beyond these first five iterations?

विशेष रूप से, इन पहले पांच पुनरावृत्तियों से परे लूप के चलते रहने पर क्या बदलेगा?


This has just been the simplest of examples, and yet you might already be able to sense the complexity of understanding the actual memory behavior of real applications.

यह केवल सबसे सरल उदाहरण रहा है, और फिर भी आप वास्तविक अनुप्रयोगों के वास्तविक मेमोरी व्यवहार को समझने की जटिलता को पहले से ही महसूस कर सकते हैं।


We have introduced the concept of paging as a solution to our challenge of virtualizing memory.

हमने मेमोरी को वर्चुअलाइज़ करने की हमारी चुनौती के समाधान के रूप में पेजिंग की अवधारणा पेश की है।


Paging has many advantages over previous approaches.

पेजिंग के पिछले दृष्टिकोणों की तुलना में कई फायदे हैं।


First, it does not lead to external fragmentation, as paging divides memory into fixed-sized units.

सबसे पहले, यह बाहरी विखंडन की ओर नहीं जाता है, क्योंकि पेजिंग मेमोरी को निश्चित आकार की इकाइयों में विभाजित करता है।


Second, it is quite flexible, enabling the sparse use of virtual address spaces.

दूसरा, यह काफी लचीला है, जो वर्चुअल एड्रेस स्पेस के विरल उपयोग को सक्षम बनाता है।


However, implementing paging support without care will lead to a slower machine.

हालांकि, बिना सावधानी के पेजिंग समर्थन को लागू करने से मशीन धीमी हो जाएगी।


We’ll thus have to think a little harder to come up with a paging system that not only works, but works well.

इसलिए हमें एक पेजिंग सिस्टम के साथ आने के लिए थोड़ा और सोचना होगा जो न केवल काम करे, बल्कि अच्छी तरह से काम करे।


The Atlas pioneered the idea of dividing memory into fixed-sized pages.

एटलस ने मेमोरी को निश्चित आकार के पृष्ठों में विभाजित करने के विचार का बीड़ा उठाया।


In this homework, you will use a simple program to see if you understand how simple virtual-to-physical address translation works.

इस होमवर्क में, आप यह देखने के लिए एक सरल प्रोग्राम का उपयोग करेंगे कि क्या आप समझते हैं कि सरल वर्चुअल-टू-फिजिकल एड्रेस ट्रांसलेशन कैसे काम करता है।


Compute the size of linear page tables as different parameters change.

विभिन्न मापदंडों के बदलने पर रैखिक पृष्ठ तालिकाओं का आकार ज्ञात करें।


How can we speed up address translation, and generally avoid the extra memory reference that paging seems to require?

हम एड्रेस ट्रांसलेशन को कैसे गति दे सकते हैं, और आम तौर पर अतिरिक्त मेमोरी संदर्भ से कैसे बच सकते हैं जो पेजिंग को आवश्यक प्रतीत होता है?


The operating system manages the computer's memory.

ऑपरेटिंग सिस्टम कंप्यूटर की मेमोरी का प्रबंधन करता है।


बहु-स्तरीय पेज टेबल उपयोगी हो सकते हैं।


सबसे पहले, हार्डवेयर टीएलबी की जाँच करता है।


The OS will need to swap the page into memory.

OS को पेज को मेमोरी में स्वैप करने की आवश्यकता होगी।


We have assumed that page tables reside in kernel-owned physical memory.

हमने मान लिया है कि पेज टेबल कर्नेल के स्वामित्व वाली भौतिक मेमोरी में रहते हैं।


The OS will be free to run other ready processes.

OS अन्य तैयार प्रक्रियाओं को चलाने के लिए स्वतंत्र होगा।


The invention of multiprogramming almost demanded the ability to swap out some pages.

मल्टीप्रोग्रामिंग के आविष्कार ने लगभग कुछ पृष्ठों को स्वैप आउट करने की क्षमता की मांग की।


In modern systems, this role is usually served by a hard disk drive.

आधुनिक प्रणालियों में, यह भूमिका आमतौर पर एक हार्ड डिस्क ड्राइव द्वारा निभाई जाती है।


The OS will need to remember the disk address of a given page.

OS को किसी दिए गए पृष्ठ के डिस्क पते को याद रखने की आवश्यकता होगी।


The size of the swap space is important.

स्वैप स्पेस का आकार महत्वपूर्ण है।


The hardware translates virtual addresses into physical addresses.

हार्डवेयर वर्चुअल पतों को भौतिक पतों में अनुवादित करता है।


If the present bit is set to one, it means the page is present in physical memory.

यदि वर्तमान बिट एक पर सेट है, तो इसका मतलब है कि पृष्ठ भौतिक मेमोरी में मौजूद है।


The OS is put in charge to handle the page fault.

पेज फॉल्ट को संभालने का प्रभार OS को दिया जाता है।


The OS could use the bits in the PTE for a disk address.

OS डिस्क पते के लिए PTE में बिट्स का उपयोग कर सकता है।


OS तब पेज टेबल को अपडेट करेगा।


Because I/O is expensive, this overlap of the I/O of one process and the execution of another is yet another way a multiprogrammed system can make the most effective use of its hardware.

चूंकि I/O महंगा है, इसलिए एक प्रक्रिया के I/O और दूसरी के निष्पादन का यह ओवरलैप एक और तरीका है जिससे एक मल्टीप्रोग्राम्ड सिस्टम अपने हार्डवेयर का सबसे प्रभावी उपयोग कर सकता है।


The process of picking a page to kick out is known as the page-replacement policy.

किसी पृष्ठ को बाहर निकालने की प्रक्रिया को पेज-रिप्लेसमेंट नीति के रूप में जाना जाता है।


Making the wrong decision can exact a great cost on program performance.

गलत निर्णय लेने से प्रोग्राम के प्रदर्शन पर भारी लागत लग सकती है।


We have now seen how real page tables are built.

अब हमने देखा है कि वास्तविक पेज टेबल कैसे बनाए जाते हैं।


The right choice of structure depends strongly on the constraints of the given environment.

संरचना का सही चुनाव दिए गए वातावरण की बाधाओं पर दृढ़ता से निर्भर करता है।


बिल्ली चटाई पर बैठी थी।


The company announced record profits this quarter.

कंपनी ने इस तिमाही में रिकॉर्ड मुनाफे की घोषणा की।


कृपया दरवाजा बंद कर दीजिए।


The algorithm efficiently sorts the data.

एल्गोरिदम कुशलता से डेटा को सॉर्ट करता है।


मैं बाज़ार जा रहा हूँ।


The government implemented new policies to boost the economy.

सरकार ने अर्थव्यवस्था को बढ़ावा देने के लिए नई नीतियाँ लागू कीं।


क्या आप कृपया मेरी इसमें मदद कर सकते हैं?


The software update fixed several critical bugs.

सॉफ्टवेयर अपडेट ने कई महत्वपूर्ण बग को ठीक किया।


आज बहुत बारिश हो रही है।


The international community condemned the act of aggression.

अंतर्राष्ट्रीय समुदाय ने आक्रामकता के इस कृत्य की निंदा की।


आपका नाम क्या है?


The system architecture is designed for high scalability.

सिस्टम आर्किटेक्चर को उच्च मापनीयता के लिए डिज़ाइन किया गया है।


मुझे समझ नहीं आया।


The economic forecast predicts a period of slow growth.

आर्थिक पूर्वानुमान धीमी वृद्धि की अवधि की भविष्यवाणी करता है।


आप कैसे हैं?


The research paper explores the impact of climate change.

शोध पत्र जलवायु परिवर्तन के प्रभाव की पड़ताल करता है।


आज मौसम सुहावना है।


The company is facing significant financial challenges.

कंपनी को महत्वपूर्ण वित्तीय चुनौतियों का सामना करना पड़ रहा है।


क्या आप कृपया उसे दोहरा सकते हैं?


The database management system ensures data integrity.

डेटाबेस प्रबंधन प्रणाली डेटा की अखंडता सुनिश्चित करती है।


Will this affect your code and its timing?

क्या इसका असर आपके कोड और उसके समय पर पड़ेगा?


What can you do to counterbalance these potential costs?

इन संभावित लागतों का मुकाबला करने के लिए आप क्या कर सकते हैं?


Assume again a 32-bit address space (2^32 bytes), with 4KB (2^12 byte) pages and a 4-byte page-table entry.

फिर से एक 32-बिट एड्रेस स्पेस (2^32 बाइट्स) मान लें, जिसमें 4KB (2^12 बाइट) पेज और 4-बाइट पेज-टेबल एंट्री हैं।


With a hundred active processes (not uncommon on a modern system), we will be allocating hundreds of megabytes of memory just for page tables!

एक सौ सक्रिय प्रक्रियाओं के साथ (एक आधुनिक प्रणाली पर असामान्य नहीं), हम केवल पेज टेबलों के लिए सैकड़ों मेगाबाइट मेमोरी आवंटित करेंगे!


Simple array-based page tables (usually called linear pagetables) are too big, taking up far too much memory on typical systems.

सरल ऐरे-आधारित पेज टेबल (आमतौर पर रैखिक पेजटेबल कहा जाता है) बहुत बड़े होते हैं, जो सामान्य प्रणालियों पर बहुत अधिक मेमोरी लेते हैं।


हम पेज टेबलों को छोटा कैसे बना सकते हैं?


We could reduce the size of the page table in one simple way: use bigger pages.

हम एक सरल तरीके से पेज टेबल के आकार को कम कर सकते हैं: बड़े पेज का उपयोग करें।


The major problem with this approach, however, is that big pages lead to waste within each page, a problem known as internal fragmentation.

हालांकि, इस दृष्टिकोण के साथ मुख्य समस्या यह है कि बड़े पेज प्रत्येक पेज के भीतर बर्बादी की ओर ले जाते हैं, एक ऐसी समस्या जिसे आंतरिक विखंडन के रूप में जाना जाता है।


Applications thus end up allocating pages but only using little bits and pieces of each, and memory quickly fills up with these overly-large pages.

इस प्रकार, एप्लिकेशन पेज आवंटित करते हैं लेकिन उनमें से केवल छोटे-छोटे हिस्सों का उपयोग करते हैं, और मेमोरी इन अत्यधिक बड़े पेजों से जल्दी भर जाती है।


Whenever you have two reasonable but different approaches to something in life, you should always examine the combination of the two to see if you can obtain the best of both worlds.

जब भी आपके पास जीवन में किसी चीज के लिए दो उचित लेकिन अलग-अलग दृष्टिकोण हों, तो आपको हमेशा दोनों के संयोजन की जांच करनी चाहिए ताकि यह देखा जा सके कि क्या आप दोनों दुनिया का सर्वश्रेष्ठ प्राप्त कर सकते हैं।


हम ऐसे संयोजन को एक हाइब्रिड कहते हैं।


Specifically, Dennis had the idea of combining paging and segmentation in order to reduce the memory overhead of page tables.

विशेष रूप से, डेनिस के पास पेज टेबलों के मेमोरी ओवरहेड को कम करने के लिए पेजिंग और विभाजन को संयोजित करने का विचार था।


As you can see from the picture, most of the page table is unused, full of invalid entries.

जैसा कि आप चित्र से देख सकते हैं, पेज टेबल का अधिकांश भाग अप्रयुक्त है, जो अमान्य प्रविष्टियों से भरा है।


कितना बेकार!


Imagine the page table of a 32-bit address space and all the potential wasted space in there!

एक 32-बिट एड्रेस स्पेस के पेज टेबल और वहां सभी संभावित बर्बाद जगह की कल्पना करें!


Thus, our hybrid approach: instead of having a single page table for the entire address space of the process, why not have one per logical segment?

इस प्रकार, हमारा हाइब्रिड दृष्टिकोण: प्रक्रिया के पूरे एड्रेस स्पेस के लिए एक ही पेज टेबल रखने के बजाय, क्यों न प्रति तार्किक खंड एक रखा जाए?


On a context switch, these registers must be changed to reflect the location of the page tables of the newly-running process.

संदर्भ स्विच पर, इन रजिस्टरों को नए-चल रहे प्रोसेस के पेज टेबलों के स्थान को दर्शाने के लिए बदला जाना चाहिए।


The critical difference in our hybrid scheme is the presence of a bounds register per segment.

हमारे हाइब्रिड स्कीम में महत्वपूर्ण अंतर प्रति खंड एक सीमा रजिस्टर की उपस्थिति है।


In this manner, our hybrid approach realizes a significant memory savings compared to the linear page table.

इस तरह से, हमारा हाइब्रिड दृष्टिकोण रैखिक पेज टेबल की तुलना में महत्वपूर्ण मेमोरी बचत का एहसास कराता है।


However, as you might notice, this approach is not without problems.

हालांकि, जैसा कि आप देख सकते हैं, यह दृष्टिकोण बिना समस्याओं के नहीं है।


CISC instruction sets tend to have a lot of instructions in them, and each instruction is relatively powerful.

CISC निर्देश सेट में बहुत सारे निर्देश होते हैं, और प्रत्येक निर्देश अपेक्षाकृत शक्तिशाली होता है।


The idea behind CISC was that instructions should be high-level primitives, to make the assembly language itself easier to use, and to make code more compact.

CISC के पीछे का विचार यह था कि निर्देश उच्च-स्तरीय आदिम होने चाहिए, ताकि असेंबली भाषा का उपयोग करना आसान हो जाए और कोड अधिक संक्षिप्त हो जाए।


RISC instruction sets are exactly the opposite.

RISC निर्देश सेट बिल्कुल विपरीत हैं।


A key observation behind RISC is that instruction sets are really compiler targets, and all compilers really want are a few simple primitives that they can use to generate high-performance code.

RISC के पीछे एक मुख्य अवलोकन यह है कि निर्देश सेट वास्तव में संकलक लक्ष्य हैं, और सभी संकलक वास्तव में कुछ सरल आदिम चाहते हैं जिनका उपयोग वे उच्च-प्रदर्शन कोड उत्पन्न करने के लिए कर सकते हैं।


Thus, RISC proponents argued, let’s rip out as much from the hardware as possible (especially the microcode), and make what’s left simple, uniform, and fast.

इस प्रकार, RISC समर्थकों ने तर्क दिया, आइए हार्डवेयर से जितना संभव हो सके (विशेष रूप से माइक्रोकोड) निकाल दें, और जो बचा है उसे सरल, समान और तेज़ बनाएं।


In the early days, RISC chips made a huge impact, as they were noticeably faster; many papers were written; a few companies were formed (e.g., MIPS and Sun).

शुरुआती दिनों में, RISC चिप्स ने भारी प्रभाव डाला, क्योंकि वे स्पष्ट रूप से तेज़ थे; कई पेपर लिखे गए; कुछ कंपनियों का गठन किया गया (जैसे, MIPS और Sun)।


However, as time progressed, CISC manufacturers such as Intel incorporated many RISC techniques into the core of their processors.

हालांकि, समय के साथ, इंटेल जैसे CISC निर्माताओं ने कई RISC तकनीकों को अपने प्रोसेसर के कोर में शामिल किया।


These innovations, plus a growing number of transistors on each chip, allowed CISC to remain competitive.

इन नवाचारों, साथ ही प्रत्येक चिप पर ट्रांजिस्टर की बढ़ती संख्या ने CISC को प्रतिस्पर्धी बने रहने की अनुमति दी।


The end result is that the debate died down, and today both types of processors can be made to run fast.

अंतिम परिणाम यह है कि बहस शांत हो गई, और आज दोनों प्रकार के प्रोसेसर को तेजी से चलाने के लिए बनाया जा सकता है।


A typical TLB might have 32, 64, or 128 entries and be what is called fully associative.

एक विशिष्ट TLB में 32, 64, या 128 प्रविष्टियाँ हो सकती हैं और इसे पूरी तरह से साहचर्य कहा जाता है।


Basically, this just means that any given translation can be anywhere in the TLB, and that the hardware will search the entire TLB in parallel to find the desired translation.

मूल रूप से, इसका मतलब है कि कोई भी दिया गया अनुवाद TLB में कहीं भी हो सकता है, और हार्डवेयर वांछित अनुवाद खोजने के लिए पूरे TLB को समानांतर में खोजेगा।


A common mistake is to confuse the valid bits found in a TLB with those found in a page table.

एक आम गलती TLB में पाए जाने वाले मान्य बिट्स को पेज टेबल में पाए जाने वाले बिट्स के साथ भ्रमित करना है।


In a page table, when a page-table entry (PTE) is marked invalid, it means that the page has not been allocated by the process, and should not be accessed by a correctly-working program.

एक पेज टेबल में, जब एक पेज-टेबल प्रविष्टि (PTE) को अमान्य के रूप में चिह्नित किया जाता है, तो इसका मतलब है कि पेज को प्रक्रिया द्वारा आवंटित नहीं किया गया है, और इसे सही ढंग से काम करने वाले प्रोग्राम द्वारा एक्सेस नहीं किया जाना चाहिए।


A TLB valid bit, in contrast, simply refers to whether a TLB entry has a valid translation within it.

इसके विपरीत, एक TLB मान्य बिट, बस इस बात को संदर्भित करता है कि क्या एक TLB प्रविष्टि में एक मान्य अनुवाद है।


When a system boots, for example, a common initial state for each TLB entry is to be set to invalid, because no address translations are yet cached there.

उदाहरण के लिए, जब एक सिस्टम बूट होता है, तो प्रत्येक TLB प्रविष्टि के लिए एक सामान्य प्रारंभिक स्थिति को अमान्य पर सेट करना होता है, क्योंकि अभी तक कोई पता अनुवाद वहां कैश नहीं किया गया है।


By setting all TLB entries to invalid, the system can ensure that the about-to-be-run process does not accidentally use a virtual-to-physical translation from a previous process.

सभी TLB प्रविष्टियों को अमान्य पर सेट करके, सिस्टम यह सुनिश्चित कर सकता है कि जल्द ही चलने वाली प्रक्रिया गलती से पिछले प्रोसेस से वर्चुअल-टू-फिजिकल अनुवाद का उपयोग न करे।


अधिक दिलचस्प “अन्य बिट्स” हैं।


For example, the TLB commonly has a valid bit, which says whether the entry has a valid translation or not.

उदाहरण के लिए, TLB में आमतौर पर एक मान्य बिट होता है, जो बताता है कि प्रविष्टि में एक मान्य अनुवाद है या नहीं।


With TLBs, some new issues arise when switching between processes (and hence address spaces).

TLB के साथ, प्रक्रियाओं (और इसलिए एड्रेस स्पेस) के बीच स्विच करते समय कुछ नए मुद्दे सामने आते हैं।


Specifically, the TLB contains virtual-to-physical translations that are only valid for the currently running process; these translations are not meaningful for other processes.

विशेष रूप से, TLB में वर्चुअल-टू-फिजिकल अनुवाद होते हैं जो केवल वर्तमान में चल रही प्रक्रिया के लिए मान्य होते हैं; ये अनुवाद अन्य प्रक्रियाओं के लिए सार्थक नहीं हैं।


The principle of locality suggests that recently accessed pages are likely to be accessed again soon.

स्थानीयता का सिद्धांत बताता है कि हाल ही में एक्सेस किए गए पृष्ठों की जल्द ही फिर से एक्सेस किए जाने की संभावना है।


LRU (Least Recently Used) replaces the page that was least recently accessed.

LRU (सबसे हाल ही में उपयोग किया गया) उस पृष्ठ को बदल देता है जिसे सबसे हाल ही में एक्सेस किया गया था।


Programs often exhibit two types of locality: spatial and temporal.

कार्यक्रम अक्सर दो प्रकार की स्थानीयता प्रदर्शित करते हैं: स्थानिक और अस्थायी।


The 80-20 workload shows that 80% of references go to 20% of the pages.

80-20 वर्कलोड दिखाता है कि 80% संदर्भ 20% पृष्ठों पर जाते हैं।


In a looping-sequential workload, LRU performs poorly.

लूपिंग-सीक्वेंशियल वर्कलोड में, LRU खराब प्रदर्शन करता है।


Implementing LRU perfectly requires significant overhead.

LRU को पूरी तरह से लागू करने के लिए महत्वपूर्ण ओवरहेड की आवश्यकता होती है।


Approximating LRU is more feasible from a computational standpoint.

गणना के दृष्टिकोण से LRU का अनुमान लगाना अधिक संभव है।


The clock algorithm is a method to approximate LRU.

क्लॉक एल्गोरिदम LRU का अनुमान लगाने का एक तरीका है।


The use bit is set to 1 when a page is referenced.

जब किसी पृष्ठ का संदर्भ दिया जाता है तो उपयोग बिट को 1 पर सेट किया जाता है।


Dirty pages must be written back to disk before eviction.

निष्कासन से पहले गंदे पृष्ठों को वापस डिस्क पर लिखा जाना चाहिए।


The OS also decides when to bring a page into memory.

OS यह भी तय करता है कि किसी पृष्ठ को कब मेमोरी में लाना है।


Demand paging brings a page into memory when it is accessed.

मांग पर पेजिंग किसी पेज को मेमोरी में तब लाता है जब उसे एक्सेस किया जाता है।


Prefetching can bring pages into memory before they are needed.

प्रीफ़ेचिंग उन पृष्ठों को मेमोरी में ला सकता है जिनकी आवश्यकता होने से पहले ही।


Clustering writes improves disk efficiency.

क्लस्टरिंग राइट्स डिस्क दक्षता में सुधार करता है।


Thrashing occurs when memory is oversubscribed.

थ्रैशिंग तब होती है जब मेमोरी ओवरसब्सक्राइब हो जाती है।


Admission control can prevent thrashing.

एडमिशन कंट्रोल थ्रैशिंग को रोक सकता है।


Modern systems use scan-resistant algorithms.

आधुनिक सिस्टम स्कैन-प्रतिरोधी एल्गोरिदम का उपयोग करते हैं।


The VAX/VMS operating system is a well-designed virtual memory manager.

VAX/VMS ऑपरेटिंग सिस्टम एक अच्छी तरह से डिज़ाइन किया गया वर्चुअल मेमोरी मैनेजर है।


Dave Cutler was a primary architect of VMS.

डेव कटलर VMS के प्राथमिक वास्तुकारों में से एक थे।


The best solution to excessive paging is often to buy more memory.

अत्यधिक पेजिंग का सबसे अच्छा समाधान अक्सर अधिक मेमोरी खरीदना होता है।


बुनियादी नीतियाँ तो स्पष्ट हैं।


Building a real virtual memory system seems more interesting.

एक वास्तविक वर्चुअल मेमोरी सिस्टम बनाना अधिक रोचक लगता है।


The mechanisms are more interesting, and the policies less so.

तंत्र अधिक दिलचस्प हैं, और नीतियाँ कम।


My machine is running a little slowly these days.

इन दिनों मेरी मशीन थोड़ी धीमी चल रही है।


Go and get yourself some DRAM, cheapskate.

जाओ और कुछ DRAM ले आओ, कंजूस।


मैं फिर कभी डिस्क पर स्वैप नहीं करूंगा।


And thus we reach the second of our three pillars of operating systems: concurrency.

और इस प्रकार हम ऑपरेटिंग सिस्टम के तीन स्तंभों में से दूसरे पर पहुँचते हैं: समवर्तीता।


मुझे लगा कि चार स्तंभ थे...?


So what is concurrency, oh wonderful professor?

तो, समवर्तीता क्या है, हे अद्भुत प्रोफेसर?


कल्पना कीजिए कि हमारे पास एक आड़ू है।


Peaches again! What is it with you and peaches?

फिर से आड़ू! तुम्हें आड़ू से क्या लेना-देना है?


Imagine there are a lot of peaches on a table, and a lot of people who wish to eat them.

कल्पना कीजिए कि एक मेज पर बहुत सारे आड़ू हैं, और बहुत से लोग उन्हें खाना चाहते हैं।


इस दृष्टिकोण में क्या गलत है?


Hmmm... seems like you might see a peach that somebody else also sees.

हम्म... ऐसा लगता है कि आप एक आड़ू देख सकते हैं जिसे कोई और भी देखता है।


तो हमें इसके बारे में क्या करना चाहिए?


Well, probably develop a better way of going about this.

ठीक है, शायद इस बारे में जाने का एक बेहतर तरीका विकसित करें।


आप वास्तव में प्रभावित करना शुरू कर रहे हैं।


In fact, you just told us everything we need to know about concurrency!

वास्तव में, आपने अभी हमें वह सब कुछ बताया जो हमें समवर्तीता के बारे में जानने की आवश्यकता है!


किसी को भी ठोस को कभी नहीं भूलना चाहिए।


If we don’t coordinate access to memory between threads, the program won’t work as expected.

यदि हम थ्रेड्स के बीच मेमोरी तक पहुंच का समन्वय नहीं करते हैं, तो प्रोग्राम उम्मीद के मुताबिक काम नहीं करेगा।


A condition variable requires an associated lock.

एक स्थिति चर के लिए एक संबद्ध लॉक की आवश्यकता होती है।


The lock should be held when calling pthread_cond_wait().

pthread_cond_wait() को कॉल करते समय लॉक को रखा जाना चाहिए।


The wait routine puts the calling thread to sleep.

वेट रूटीन कॉलिंग थ्रेड को सुला देता है।


The thread waits for another thread to signal it.

थ्रेड दूसरे थ्रेड के सिग्नल का इंतजार करता है।


A typical usage involves a mutex lock and condition variable.

एक विशिष्ट उपयोग में एक म्युटेक्स लॉक और स्थिति चर शामिल होता है।


The initialized variable is checked before waiting.

इंतजार करने से पहले इनिशियलाइज़्ड वेरिएबल की जाँच की जाती है।


The signaling code modifies the global variable.

सिग्नलिंग कोड वैश्विक चर को संशोधित करता है।


सिग्नलिंग करते समय हमेशा लॉक रखें।


The wait call releases the lock while sleeping.

वेट कॉल सोते समय लॉक जारी करता है।


The waiting thread re-acquires the lock before returning.

वापसी से पहले प्रतीक्षा करने वाला थ्रेड लॉक को फिर से प्राप्त करता है।


Using a while loop is generally safer for re-checking the condition.

स्थिति की दोबारा जांच के लिए आमतौर पर एक while लूप का उपयोग करना अधिक सुरक्षित है।


Spurious wakeups can occur in some pthread implementations.

कुछ pthread कार्यान्वयन में झूठी जागृति हो सकती है।


Avoid using simple flags for thread synchronization.

थ्रेड सिंक्रनाइज़ेशन के लिए सरल फ़्लैग का उपयोग करने से बचें।


स्पिनिंग सीपीयू चक्रों को बर्बाद करता है।


Using flags for synchronization is error-prone.

सिंक्रनाइज़ेशन के लिए फ़्लैग का उपयोग करना त्रुटि-प्रवण है।


Use condition variables even when you think you can avoid them.

कंडीशन वेरिएबल्स का उपयोग करें, भले ही आपको लगे कि आप उनसे बच सकते हैं।


-pthread फ़्लैग के साथ संकलित करें।


The hard part is the logic of concurrent programs.

कठिन हिस्सा समवर्ती कार्यक्रमों का तर्क है।


थ्रेड इंटरैक्शन को सरल रखें।


Initialize locks and condition variables properly.

लॉक और स्थिति चर को ठीक से इनिशियलाइज़ करें।


The operating system manages computer hardware and software resources.

ऑपरेटिंग सिस्टम कंप्यूटर हार्डवेयर और सॉफ्टवेयर संसाधनों का प्रबंधन करता है।


Concurrency allows multiple tasks to appear to run simultaneously.

कनकरेंसी कई कार्यों को एक साथ चलाने का आभास कराती है।


Threads often need to synchronize access to shared resources to avoid data corruption.

डेटा भ्रष्टाचार से बचने के लिए थ्रेड्स को अक्सर साझा संसाधनों तक पहुंच को सिंक्रनाइज़ करने की आवश्यकता होती है।


Condition variables are used for thread synchronization and communication.

कंडीशन वेरिएबल्स का उपयोग थ्रेड सिंक्रनाइज़ेशन और संचार के लिए किया जाता है।


The program uses locks to protect critical sections of code.

कार्यक्रम कोड के महत्वपूर्ण खंडों की सुरक्षा के लिए लॉक का उपयोग करता है।


Understanding concurrency is crucial for building efficient multi-threaded applications.

कुशल मल्टी-थ्रेडेड एप्लिकेशन बनाने के लिए कनकरेंसी को समझना महत्वपूर्ण है।


The operating system provides APIs for thread creation and management.

ऑपरेटिंग सिस्टम थ्रेड निर्माण और प्रबंधन के लिए एपीआई प्रदान करता है।


Atomic operations ensure that a sequence of actions is executed as a single unit.

परमाणु संचालन यह सुनिश्चित करते हैं कि कार्यों का एक क्रम एक ही इकाई के रूप में निष्पादित हो।


The concept of atomicity is fundamental in concurrent programming.

कनकरेंट प्रोग्रामिंग में एटोमसिटी की अवधारणा मौलिक है।


The program uses mutexes to prevent race conditions.

कार्यक्रम रेस की स्थिति को रोकने के लिए म्युटेक्स का उपयोग करता है।


The file system uses journaling to ensure data consistency.

फ़ाइल सिस्टम डेटा की स्थिरता सुनिश्चित करने के लिए जर्नलिंग का उपयोग करता है।


The homework assignment explores thread interleaving and race conditions.

होमवर्क असाइनमेंट थ्रेड इंटरलीविंग और रेस की स्थिति की पड़ताल करता है।


The program demonstrates how to create and join threads.

कार्यक्रम दर्शाता है कि थ्रेड कैसे बनाएं और उनसे जुड़ें।


The code uses pthread_create to create a new thread.

कोड एक नया थ्रेड बनाने के लिए pthread_create का उपयोग करता है।


The main thread waits for the child thread to complete using pthread_join.

मुख्य थ्रेड pthread_join का उपयोग करके चाइल्ड थ्रेड के पूरा होने का इंतजार करता है।


The example shows how to pass arguments to a thread.

उदाहरण दिखाता है कि किसी थ्रेड को तर्क कैसे पास करें।


Be careful when returning pointers from threads.

थ्रेड से पॉइंटर्स लौटाते समय सावधान रहें।


The program uses wrappers to check for errors in pthreads calls.

कार्यक्रम pthreads कॉल में त्रुटियों की जांच के लिए रैपर का उपयोग करता है।


The trylock and timedlock functions are used for lock acquisition.

trylock और timedlock फ़ंक्शन का उपयोग लॉक अधिग्रहण के लिए किया जाता है।


Condition variables are used to signal and wait for events between threads.

कंडीशन वेरिएबल्स का उपयोग थ्रेड्स के बीच घटनाओं को सिग्नल देने और उनका इंतजार करने के लिए किया जाता है।


The operating system had to have mechanisms and policies that worked across a huge range of systems.

ऑपरेटिंग सिस्टम में ऐसे तंत्र और नीतियां होनी चाहिए जो विभिन्न प्रकार के सिस्टम पर काम करें।


Operating systems often have a problem known as “the curse of generality”.

ऑपरेटिंग सिस्टम में अक्सर एक समस्या होती है जिसे “सामान्यीकरण का अभिशाप” कहा जाता है।


Thus, how can an OS be built so as to run effectively on a wide range of systems?

इसलिए, एक ऑपरेटिंग सिस्टम को कैसे बनाया जा सकता है ताकि वह विभिन्न प्रकार के सिस्टम पर प्रभावी ढंग से चल सके?


VMS is an excellent example of software innovations used to hide some of the inherent flaws of the architecture.

वीएमएस सॉफ्टवेयर नवाचारों का एक उत्कृष्ट उदाहरण है जिसका उपयोग वास्तुकला की कुछ अंतर्निहित कमियों को छिपाने के लिए किया जाता है।


The VAX-11 provided a 32-bit virtual address space per process, divided into 512-byte pages.

VAX-11 ने प्रति प्रक्रिया 32-बिट वर्चुअल एड्रेस स्पेस प्रदान किया, जिसे 512-बाइट पेजों में विभाजित किया गया था।


The lower-half of the address space was known as “process space” and is unique to each process.

एड्रेस स्पेस का निचला आधा भाग “प्रोसेस स्पेस” के रूप में जाना जाता था और यह प्रत्येक प्रक्रिया के लिए अद्वितीय है।


The upper-half of the address space is known as system space (S), although only half of it is used.

एड्रेस स्पेस का ऊपरी आधा भाग सिस्टम स्पेस (S) के रूप में जाना जाता है, हालाँकि इसका केवल आधा ही उपयोग किया जाता है।


One major concern of the VMS designers was the incredibly small size of pages in the VAX hardware (512 bytes).

वीएमएस डिजाइनरों की एक प्रमुख चिंता वीएएक्स हार्डवेयर में पेजों का अविश्वसनीय रूप से छोटा आकार (512 बाइट्स) था।


The system reduced the pressure page tables place on memory in two ways.

सिस्टम ने दो तरीकों से मेमोरी पर पेज टेबल के दबाव को कम किया।


Putting page tables in kernel virtual memory means that address translation is even further complicated.

कर्नेल वर्चुअल मेमोरी में पेज टेबल रखने का मतलब है कि एड्रेस ट्रांसलेशन और भी जटिल हो जाता है।


A process generates a virtual address of 0, by doing something like this: int * p = NULL; * p = 10;

एक प्रक्रिया इस तरह कुछ करके 0 का वर्चुअल एड्रेस उत्पन्न करती है: int * p = NULL; * p = 10;


The hardware tries to look up the VPN (also 0 here) in the TLB, and suffers a TLB miss.

हार्डवेयर टीएलबी में वीपीएन (यहां भी 0) को देखने की कोशिश करता है, और टीएलबी मिस का शिकार होता है।


Perhaps more importantly, the kernel virtual address space (i.e., its data structures and code) is a part of each user address space.

शायद इससे भी महत्वपूर्ण बात यह है कि कर्नेल वर्चुअल एड्रेस स्पेस (यानी, इसकी डेटा संरचनाएं और कोड) प्रत्येक उपयोगकर्ता एड्रेस स्पेस का एक हिस्सा है।


The OS does not want user applications reading or writing OS data or code.

ऑपरेटिंग सिस्टम नहीं चाहता कि उपयोगकर्ता एप्लिकेशन ओएस डेटा या कोड को पढ़ें या लिखें।


The VAX did so by specifying, in protection bits in the page table, what privilege level the CPU must be at in order to access a particular page.

VAX ने पेज टेबल में सुरक्षा बिट्स में निर्दिष्ट करके ऐसा किया, कि CPU को किसी विशेष पेज तक पहुंचने के लिए किस विशेषाधिकार स्तर पर होना चाहिए।


The page table entry (PTE) in VAX contains the following bits: a valid bit, a protection field (4 bits), a modify (or dirty) bit, a field reserved for OS use (5 bits), and finally a physical frame number (PFN).

VAX में पेज टेबल एंट्री (PTE) में निम्नलिखित बिट्स होते हैं: एक मान्य बिट, एक सुरक्षा फ़ील्ड (4 बिट्स), एक संशोधित (या गंदा) बिट, OS उपयोग के लिए आरक्षित एक फ़ील्ड (5 बिट्स), और अंत में एक भौतिक फ्रेम नंबर (PFN)।


The idea is simple: each process has a maximum number of pages it can keep in memory, known as its resident set size (RSS).

विचार सरल है: प्रत्येक प्रक्रिया में अधिकतम संख्या में पृष्ठ होते हैं जिन्हें वह मेमोरी में रख सकता है, जिसे उसकी निवासी सेट आकार (RSS) के रूप में जाना जाता है।


To improve FIFO’s performance, VMS introduced two second-chance lists where pages are placed before getting evicted from memory.

FIFO के प्रदर्शन को बेहतर बनाने के लिए, VMS ने दो सेकंड-चांस सूचियाँ पेश कीं जहाँ पेजों को मेमोरी से निकाले जाने से पहले रखा जाता है।


With clustering, VMS groups large batches of pages together from the global dirty list, and writes them to disk in one fell swoop.

क्लस्टरिंग के साथ, वीएमएस वैश्विक गंदी सूची से पेजों के बड़े बैचों को एक साथ समूहित करता है, और उन्हें एक ही झटके में डिस्क पर लिखता है।


The OS must not be too aggressive in marking pages inaccessible, or overhead would be too high.

OS को पेजों को दुर्गम चिह्नित करने में बहुत आक्रामक नहीं होना चाहिए, अन्यथा ओवरहेड बहुत अधिक होगा।


कोड एक साधारण स्पिन लॉक का उपयोग करता है।


Test-and-set instruction returns the old value.

टेस्ट-एंड-सेट निर्देश पुराना मान लौटाता है।


Imagine a thread calls lock() and no other thread currently holds the lock.

कल्पना कीजिए कि एक थ्रेड लॉक() को कॉल करता है और वर्तमान में कोई अन्य थ्रेड लॉक को होल्ड नहीं करता है।


The thread will also atomically set the value to 1.

थ्रेड परमाणु रूप से मान को 1 पर सेट भी करेगा।


Spin locks don’t provide any fairness guarantees.

स्पिन लॉक कोई निष्पक्षता गारंटी प्रदान नहीं करते हैं।


On multiple CPUs, spin locks work reasonably well.

एकाधिक सीपीयू पर, स्पिन लॉक उचित रूप से काम करते हैं।


The basic idea is for compare-and-swap to test whether the value at the address specified by ptr is equal to expected.

मूल विचार यह है कि तुलना-और-स्वैप यह परीक्षण करे कि ptr द्वारा निर्दिष्ट पते पर मान अपेक्षित के बराबर है या नहीं।


With the compare-and-swap instruction, we can build a lock in a manner quite similar to that with test-and-set.

तुलना-और-स्वैप निर्देश के साथ, हम टेस्ट-एंड-सेट के समान तरीके से एक लॉक बना सकते हैं।


The key difference comes with the store-conditional, which only succeeds if no intermittent store to the address has taken place.

मुख्य अंतर स्टोर-कंडीशनल के साथ आता है, जो केवल तभी सफल होता है जब पते पर कोई बीच का स्टोर नहीं हुआ है।


The load-linked operates much like a typical load instruction.

लोड-लिंक्ड एक विशिष्ट लोड निर्देश की तरह ही काम करता है।


Once a thread is assigned its ticket value, it will be scheduled at some point in the future.

एक बार जब किसी थ्रेड को उसका टिकट मान असाइन कर दिया जाता है, तो उसे भविष्य में किसी बिंदु पर शेड्यूल किया जाएगा।


These solutions can be quite inefficient.

ये समाधान काफी अक्षम हो सकते हैं।


The problem gets worse with N threads contending for a lock.

यह समस्या N थ्रेड के लॉक के लिए प्रतिस्पर्धा करने के साथ और भी बदतर हो जाती है।


How can we develop a lock that doesn’t needlessly waste time spinning on the CPU?

हम एक ऐसा लॉक कैसे विकसित कर सकते हैं जो अनावश्यक रूप से सीपीयू पर स्पिन करने में समय बर्बाद न करे?


Our first try is a simple and friendly approach: when you are going to spin, instead give up the CPU to another thread.

हमारा पहला प्रयास एक सरल और मैत्रीपूर्ण दृष्टिकोण है: जब आप स्पिन करने जा रहे हैं, तो इसके बजाय सीपीयू को दूसरे थ्रेड को दे दें।


In this simple case, the yielding approach works well.

इस सरल मामले में, उपज दृष्टिकोण अच्छी तरह से काम करता है।


The cost of a context switch can be substantial.

संदर्भ स्विच की लागत काफी हो सकती है।


We must explicitly exert some control over who gets to acquire the lock next.

हमें स्पष्ट रूप से इस पर कुछ नियंत्रण रखना होगा कि अगला लॉक कौन प्राप्त करता है।


We will need a little more OS support, as well as a queue.

हमें थोड़ी अधिक ओएस सहायता के साथ-साथ एक कतार की भी आवश्यकता होगी।


Solaris solves this problem by adding a third system call: setpark().

सोलारिस इस समस्या को तीसरा सिस्टम कॉल जोड़कर हल करता है: सेटपार्क()।


The Linux approach has the flavor of an old approach.

लिनक्स का दृष्टिकोण एक पुराने दृष्टिकोण जैसा है।


A two-phase lock realizes that spinning can be useful.

दो-चरण लॉक महसूस करता है कि स्पिनिंग उपयोगी हो सकती है।


So in the first phase, the lock spins for a while.

इसलिए पहले चरण में, लॉक थोड़ी देर के लिए घूमता है।


The Linux lock above is a form of such a lock.

ऊपर दिया गया लिनक्स लॉक इस तरह के लॉक का एक रूप है।


Two-phase locks are yet another instance of a hybrid approach.

दो-चरण लॉक एक संकर दृष्टिकोण का एक और उदाहरण हैं।


Making a single general-purpose lock is quite a challenge.

एकल सामान्य-उद्देश्यीय लॉक बनाना एक चुनौती है।


The above approach shows how real locks are built these days.

उपरोक्त दृष्टिकोण दिखाता है कि आजकल वास्तविक लॉक कैसे बनाए जाते हैं।


Check out the Solaris or Linux open source code bases.

सोलारिस या लिनक्स ओपन सोर्स कोड बेस देखें।


There is even an undoubtedly bad book about Al Davis.

अल डेविस के बारे में एक निस्संदेह बुरी किताब भी है।


One of the early seminal papers in the area.

इस क्षेत्र में शुरुआती मौलिक पत्रों में से एक।


A must-read retrospective about the development of the Pilot OS.

पायलट ओएस के विकास के बारे में एक अवश्य पढ़ने योग्य पूर्वव्यापी।


This concurrent counter is simple and works correctly.

यह समवर्ती काउंटर सरल है और सही ढंग से काम करता है।


If your data structure is too slow, you’ll have to do more.

यदि आपकी डेटा संरचना बहुत धीमी है, तो आपको अधिक करना होगा।


Achieving this end is called perfect scaling.

इस अंत को प्राप्त करना पूर्ण स्केलिंग कहलाता है।


Researchers have studied how to build more scalable counters.

शोधकर्ताओं ने अध्ययन किया है कि अधिक स्केलेबल काउंटर कैसे बनाए जाएं।


यह विचार एक सुस्त काउंटर के रूप में जाना जाता है।


When a thread wishes to increment the counter, it increments its local counter.

जब कोई थ्रेड काउंटर को बढ़ाना चाहता है, तो वह अपने स्थानीय काउंटर को बढ़ाता है।


The smaller S is, the more the counter behaves like the non-scalable counter.

S जितना छोटा होगा, काउंटर गैर-स्केलेबल काउंटर की तरह व्यवहार करेगा।


We next examine a more complicated structure, the linked list.

इसके बाद हम एक अधिक जटिल संरचना, लिंक्ड लिस्ट की जांच करते हैं।


For simplicity, we’ll omit some of the obvious routines.

सरलता के लिए, हम कुछ स्पष्ट दिनचर्या को छोड़ देंगे।


The operating system manages computer hardware and software resources.

ऑपरेटिंग सिस्टम कंप्यूटर हार्डवेयर और सॉफ्टवेयर संसाधनों का प्रबंधन करता है।


Please provide the necessary details for the project.

कृपया परियोजना के लिए आवश्यक विवरण प्रदान करें।


The company announced a new product launch next month.

कंपनी ने अगले महीने एक नए उत्पाद के लॉन्च की घोषणा की।


Concurrency control is crucial in database systems to maintain data integrity.

डेटा अखंडता बनाए रखने के लिए डेटाबेस सिस्टम में समवर्ती नियंत्रण महत्वपूर्ण है।


He enjoys reading books and playing cricket in his free time.

उसे खाली समय में किताबें पढ़ना और क्रिकेट खेलना पसंद है।


The algorithm efficiently sorts the data.

एल्गोरिदम कुशलता से डेटा को सॉर्ट करता है।


The government is implementing new policies to boost the economy.

सरकार अर्थव्यवस्था को बढ़ावा देने के लिए नई नीतियां लागू कर रही है।


The software requires a minimum of 8GB of RAM to run smoothly.

सॉफ्टवेयर को सुचारू रूप से चलाने के लिए कम से कम 8GB RAM की आवश्यकता होती है।


She is a talented musician and composer.

वह एक प्रतिभाशाली संगीतकार और संगीतकार हैं।


The research paper explores the impact of climate change.

शोध पत्र जलवायु परिवर्तन के प्रभाव की पड़ताल करता है।


The meeting will be held at 2 PM tomorrow.

कल दोपहर 2 बजे बैठक होगी।


The company's stock price has increased significantly.

कंपनी के शेयर की कीमत में काफी वृद्धि हुई है।


The complex system requires careful design and implementation.

जटिल प्रणाली को सावधानीपूर्वक डिजाइन और कार्यान्वयन की आवश्यकता है।


He is fluent in several languages, including Hindi.

वह कई भाषाओं में धाराप्रवाह है, जिसमें हिंदी भी शामिल है।


The database uses indexing to speed up query performance.

डेटाबेस क्वेरी प्रदर्शन को गति देने के लिए इंडेक्सिंग का उपयोग करता है।


The new regulations will affect small businesses.

नए नियम छोटे व्यवसायों को प्रभावित करेंगे।


The program efficiently processes large datasets.

कार्यक्रम कुशलता से बड़े डेटासेट को संसाधित करता है।


She is passionate about environmental conservation.

वह पर्यावरण संरक्षण के बारे में भावुक हैं।


The project requires a team of skilled developers.

परियोजना के लिए कुशल डेवलपर्स की एक टीम की आवश्यकता है।


The system's architecture is designed for scalability and performance.

सिस्टम की वास्तुकला को मापनीयता और प्रदर्शन के लिए डिज़ाइन किया गया है।


उपभोक्ता बस वापस सो जाता है।


Thanks to Mesa semantics, a simple rule to remember with condition variables is to always use while loops.

मेसा सिमेंटिक्स के लिए धन्यवाद, कंडीशन वेरिएबल्स के साथ याद रखने का एक सरल नियम है कि हमेशा व्हाइल लूप का उपयोग करें।


The problem occurs when two consumers run first, and both go to sleep.

समस्या तब होती है जब दो उपभोक्ता पहले चलते हैं, और दोनों सो जाते हैं।


Signaling is clearly needed, but must be more directed.

सिग्नलिंग स्पष्ट रूप से आवश्यक है, लेकिन अधिक निर्देशित होनी चाहिए।


A consumer should not wake other consumers, only producers, and vice-versa.

एक उपभोक्ता को अन्य उपभोक्ताओं को नहीं जगाना चाहिए, केवल उत्पादकों को, और इसके विपरीत।


The solution here is once again a small one: use two condition variables, instead of one.

यहाँ समाधान एक बार फिर से छोटा है: एक के बजाय दो कंडीशन वेरिएबल्स का उपयोग करें।


A producer only sleeps if all buffers are currently filled.

एक निर्माता केवल तभी सोता है जब सभी बफ़र्स वर्तमान में भरे हुए हों।


When checking for a condition in a multi-threaded program, using a while loop is always correct.

एक मल्टी-थ्रेडेड प्रोग्राम में एक स्थिति की जाँच करते समय, एक व्हाइल लूप का उपयोग करना हमेशा सही होता है।


The cost, as we’ve discussed, is that too many threads might be woken.

जैसा कि हमने चर्चा की है, इसकी लागत यह है कि बहुत सारे थ्रेड जाग सकते हैं।


We have seen the introduction of another important synchronization primitive beyond locks: condition variables.

हमने ताले से परे एक और महत्वपूर्ण सिंक्रनाइज़ेशन प्रिमिटिव की शुरुआत देखी है: कंडीशन वेरिएबल्स।


A semaphore is as an object with an integer value that we can manipulate with two routines.

एक सेमाफोर एक पूर्णांक मान वाला एक ऑब्जेक्ट है जिसे हम दो रूटीन के साथ हेरफेर कर सकते हैं।


Because the initial value of the semaphore determines its behavior, before calling any other routine to interact with the semaphore, we must first initialize it to some value.

चूंकि सेमाफोर का प्रारंभिक मान इसके व्यवहार को निर्धारित करता है, सेमाफोर के साथ इंटरैक्ट करने के लिए किसी अन्य रूटीन को कॉल करने से पहले, हमें पहले इसे कुछ मान पर आरंभ करना होगा।


After a semaphore is initialized, we can call one of two functions to interact with it, sem_wait() or sem_post().

एक सेमाफोर को आरंभ करने के बाद, हम इसके साथ इंटरैक्ट करने के लिए दो में से एक फ़ंक्शन को कॉल कर सकते हैं, sem_wait() या sem_post().


First, we can see that sem_wait() will either return right away or it will cause the caller to suspend execution waiting for a subsequent post.

सबसे पहले, हम देख सकते हैं कि sem_wait() या तो तुरंत वापस आ जाएगा या यह कॉलर को बाद के पोस्ट की प्रतीक्षा में निष्पादन को निलंबित करने का कारण बनेगा।


अब हम एक सेमाफोर का उपयोग करने के लिए तैयार हैं।


Critical to making this work, though, is the initial value of the semaphore.

हालांकि, इसे काम करने के लिए महत्वपूर्ण है, सेमाफोर का प्रारंभिक मान।


A more interesting case arises when Thread 0 “holds the lock”, and another thread tries to enter the critical section.

एक अधिक दिलचस्प मामला तब उत्पन्न होता है जब थ्रेड 0


Semaphores are also useful when a thread wants to halt its progress waiting for a condition to become true.

सेमाफोर तब भी उपयोगी होते हैं जब कोई थ्रेड किसी स्थिति के सत्य होने की प्रतीक्षा में अपनी प्रगति को रोकना चाहता है।


Imagine a thread creates another thread and then wants to wait for it to complete its execution.

कल्पना कीजिए कि एक थ्रेड एक और थ्रेड बनाता है और फिर उसके निष्पादन को पूरा होने का इंतजार करना चाहता है।


The answer, of course, is that the value of the semaphore should be set to is 0.

उत्तर, निश्चित रूप से, यह है कि सेमाफोर का मान 0 पर सेट किया जाना चाहिए।


The consumer waits for a buffer to become filled before using it.

उपभोक्ता इसका उपयोग करने से पहले एक बफर के भरने का इंतजार करता है।


Imagine there are two threads, a producer and a consumer.

कल्पना कीजिए कि दो थ्रेड हैं, एक निर्माता और एक उपभोक्ता।


The producer will put a data value into the first entry of buffer.

निर्माता बफर की पहली प्रविष्टि में एक डेटा मान डालेगा।


This is a no-no; we don’t want any data from the producer to be lost.

यह उचित नहीं है; हम नहीं चाहते कि निर्माता का कोई भी डेटा खो जाए।


The consumer acquires the mutex and then calls sem wait() on the full semaphore.

उपभोक्ता म्युटेक्स प्राप्त करता है और फिर पूर्ण सेमाफोर पर sem wait() को कॉल करता है।


The producer and consumer are each stuck waiting for each other: a classic deadlock.

निर्माता और उपभोक्ता दोनों एक-दूसरे का इंतजार कर रहे हैं: एक क्लासिक डेडलॉक।


To solve this problem, we simply must reduce the scope of the lock.

इस समस्या को हल करने के लिए, हमें बस लॉक के दायरे को कम करना होगा।


The code for such a lock is available in Figure 31.9.

ऐसे लॉक का कोड चित्र 31.9 में उपलब्ध है।


More interesting is the pair of routines to acquire and release read locks.

अधिक दिलचस्प रीड लॉक प्राप्त करने और जारी करने के लिए रूटीन की जोड़ी है।


They often add more overhead and thus do not end up speeding up performance.

वे अक्सर अधिक ओवरहेड जोड़ते हैं और इस प्रकार प्रदर्शन को गति देने में समाप्त नहीं होते हैं।


The basic setup for the problem is this: assume there are five philosophers sitting around a table.

समस्या के लिए बुनियादी सेटअप यह है: मान लें कि एक मेज के चारों ओर बैठे पांच दार्शनिक हैं।


In order to eat, a philosopher needs two forks, both the one on their left and the one on their right.

खाने के लिए, एक दार्शनिक को दो कांटों की आवश्यकता होती है, दोनों उनके बाएं और उनके दाएं।


The key challenge, then, is to write the routines getforks() and putforks() such that there is no deadlock.

मुख्य चुनौती, तब, getforks() और putforks() रूटीन को लिखना है ताकि कोई डेडलॉक न हो।


If each philosopher happens to grab the fork on their left before any philosopher can grab the fork on their right, each will be stuck.

यदि प्रत्येक दार्शनिक अपने बाएं कांटे को पकड़ लेता है, इससे पहले कि कोई भी दार्शनिक अपने दाएं कांटे को पकड़ सके, तो प्रत्येक फंस जाएगा।


We’ll also need some semaphores to solve this problem.

हमें इस समस्या को हल करने के लिए कुछ सेमाफोर की भी आवश्यकता होगी।


समस्या डेडलॉक है।