घरी अभ्यास (मापन).


वेळापत्रक: ओळख


पहिले आत, पहिले बाहेर (FIFO).


सर्वात लहान काम प्रथम (SJF).


राउंड रॉबिन.


I/O चा समावेश करणे.


आता ओरेकल नाही.


MLFQ: मूलभूत नियम.


प्राधान्य कसे बदलावे.


प्राधान्य वाढ.


चांगले लेखांकन.


प्रमाणशीर हिस्सा


Basic Concept: Tickets Represent Your Share.

मूलभूत संकल्पना: तिकीट तुमचा हिस्सा दर्शवतात.


तिकीट कसे नियुक्त करावे?


निश्चित का नाही?


मल्टिप्रोसेसर आर्किटेक्चर.


समक्रमण विसरू नका.


सिंगल-क्यू शेड्यूलिंग.


लिनक्स मल्टीप्रोसेसर शेड्यूलर.


पत्ता अवकाश.


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: इतर सुधारणा.


एकाच वेळी अनेक प्रोग्राम चालवणे.


मेमरी ऍक्सेस करणारा प्रोग्राम.


एक मल्टी-थ्रेडेड प्रोग्राम.


जो प्रोग्राम I/O करतो.


व्यत्यय नियंत्रित करणे.


कार्यक्षम स्पिन लॉक तयार करणे.


स्पिन लॉक्सचे मूल्यांकन करणे.


तुलना करा आणि अदलाबदल करा.


एक सोपा दृष्टीकोन: फक्त उत्पन्न द्या, बाळ.


Using Queues: Sleeping Instead Of Spinning.

रांगा वापरणे: फिरण्याऐवजी झोपणे.


दोन-टप्प्यातील कुलूप.


एकाच वेळी चालणारे काउंटर.


एकाच वेळी चालणाऱ्या लिंक्ड लिस्ट्स.


एकाच वेळी चालणाऱ्या रांगा.


व्याख्या आणि दिनचर्या.


The Producer/Consumer (Bound Buffer) Problem.

उत्पादक/ग्राहक (बाउंड बफर) समस्या.


सेमाफोर्स: व्याख्या.


बायनरी सेमाफोर्स (कुलूप).


वाचकांसाठी-लेखकांसाठी कुलूप.


जेवणारे तत्त्वज्ञ.


कोणत्या प्रकारच्या त्रुटी अस्तित्वात आहेत?


मूलभूत कल्पना: एक इव्हेंट लूप.


सिस्टम आर्किटेक्चर.


The operating system virtualizes resources.

ऑपरेटिंग सिस्टम संसाधनांचे व्हर्च्युअलायझेशन करते.


एक प्रोग्राम सूचना अंमलात आणतो.


OS प्रणाली वापरण्यास सुलभ करते.


व्हर्च्युअलायझेशन ही एक महत्त्वाची तंत्र आहे.


The processor fetches instructions from memory.

प्रोसेसर मेमरीमधून सूचना मिळवतो.


The operating system is a resource manager.

ऑपरेटिंग सिस्टम एक संसाधन व्यवस्थापक आहे.


Each process accesses its own virtual address space.

प्रत्येक प्रक्रिया स्वतःच्या व्हर्च्युअल ऍड्रेस स्पेसमध्ये प्रवेश करते.


Concurrency is a major theme in this book.

या पुस्तकातील समवर्तीता हा एक प्रमुख विषय आहे.


The OS provides system calls to applications.

OS ऍप्लिकेशन्सना सिस्टम कॉल प्रदान करते.


How does the OS virtualize resources efficiently?

OS संसाधनांचे कार्यक्षमतेने व्हर्च्युअलायझेशन कसे करते?


The operating system transforms physical resources.

ऑपरेटिंग सिस्टम भौतिक संसाधनांचे रूपांतर करते.


Understanding virtualization is crucial for OS design.

OS डिझाइनसाठी व्हर्च्युअलायझेशन समजून घेणे आवश्यक आहे.


The OS manages resources efficiently or fairly.

OS संसाधनांचे कार्यक्षमतेने किंवा योग्यरित्या व्यवस्थापन करते.


Modern multi-threaded programs exhibit concurrency problems.

आधुनिक मल्टी-थ्रेडेड प्रोग्राम्स समवर्तीतेच्या समस्या दर्शवतात.


The program prints the string passed on the command line.

प्रोग्राम कमांड लाइनवर पाठवलेला स्ट्रिंग प्रिंट करतो.


The OS is in charge of the illusion of virtual CPUs.

OS व्हर्च्युअल CPU च्या भ्रमाचे व्यवस्थापन करते.


Each running program has its own private virtual address space.

प्रत्येक चालणाऱ्या प्रोग्राममध्ये स्वतःची खाजगी व्हर्च्युअल ऍड्रेस स्पेस असते.


The OS provides a standard library to applications.

OS ऍप्लिकेशन्सना एक प्रमाणित लायब्ररी प्रदान करते.


The primary way the OS does this is through virtualization.

OS हे प्रामुख्याने व्हर्च्युअलायझेशनद्वारे करते.


How to build correct concurrent programs is a key question.

सत्यनिष्ठ समवर्ती प्रोग्राम कसे तयार करायचे हा एक महत्त्वाचा प्रश्न आहे.


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.

प्रत्येक मुख्य संकल्पना अनेक प्रकरणांमध्ये विभागलेली आहे.


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.

अ‍ॅसाइड्स मुख्य मजकुराशी संबंधित (पण कदाचित आवश्यक नाही) असलेल्या गोष्टींवर चर्चा करतात.


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 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.

मजकुराच्या विविध भागांमध्ये, आम्ही काही गृहपाठ समाविष्ट केले आहेत.


The most important addendum to this book is a set of projects.

या पुस्तकातील सर्वात महत्त्वाचे परिशिष्ट म्हणजे प्रकल्पांचा संच आहे.


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 आठवड्यांच्या सत्रात चांगला विभागला जातो.


One slightly unusual aspect of the book is that concurrency, a topic at the front of many OS books, is pushed off herein until the student has built an understanding of virtualization.

या पुस्तकाचा एक थोडा असामान्य पैलू म्हणजे एकाच वेळी अनेक कामे करणे, जे अनेक ऑपरेटिंग सिस्टमच्या पुस्तकांमध्ये सुरुवातीला असते, ते येथे विद्यार्थ्याने व्हर्च्युअलायझेशनची कल्पना येईपर्यंत पुढे ढकलले जाते.


We created these notes to spark your interest in operating systems.

ऑपरेटिंग सिस्टिम्समध्ये तुमची आवड निर्माण व्हावी यासाठी आम्ही या नोट्स तयार केल्या आहेत.


हा प्रोग्राम थेट CPU वर चालतो.


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

ऑपरेटिंग सिस्टमला अनेक कामांमध्ये भौतिक CPU सामायिक करणे आवश्यक आहे.


By time sharing the CPU in this manner, virtualization is achieved.

या पद्धतीने CPU ची वेळ विभागणी करून, व्हर्च्युअलायझेशन साधले जाते.


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

OS अनेकदा आपले कार्य प्रभावीपणे पार पाडण्यासाठी हार्डवेअर सपोर्टचा योग्य वापर करेल.


The process prints out a hello world message.

प्रक्रियेमध्ये एक 'नमस्कार जग' संदेश छापला जातो.


In UNIX systems, the PID is used to name the process.

UNIX प्रणालीमध्ये, PID चा वापर प्रक्रियेचे नाव देण्यासाठी केला जातो.


The process calls the fork() system call.

प्रक्रिया fork() सिस्टम कॉल करते.


The child process doesn’t start running at main().

बाल प्रक्रिया main() वर चालणे सुरू करत नाही.


The parent receives the PID of the newly-created child.

पालक नव्याने तयार केलेल्या मुलाचा PID प्राप्त करतो.


Sometimes, it is quite useful for a parent to wait for a child process to finish.

कधीकधी, पालकांसाठी बाल प्रक्रिया पूर्ण होण्याची प्रतीक्षा करणे खूप उपयुक्त असते.


This task is accomplished with the wait() system call.

हे कार्य wait() सिस्टम कॉलने पूर्ण केले जाते.


The parent process calls wait() to delay its execution.

पालक प्रक्रिया तिचे अंमलबजावणी (execution) ला विलंब करण्यासाठी wait() कॉल करते.


मुल नेहमी प्रथम छापेल.


A final and important piece of the process creation API is the exec() system call.

प्रक्रिया निर्मिती API चा अंतिम आणि महत्त्वाचा भाग म्हणजे exec() सिस्टम कॉल आहे.


शेल फक्त एक वापरकर्ता कार्यक्रम आहे.


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

शेल नंतर एक्झिक्युटेबल फाइल सिस्टममध्ये नेमके कुठे आहे हे शोधते.


The output of the program wc is redirected into the output file.

wc प्रोग्रामचा आउटपुट आउटपुट फाईलमध्ये पुनर्निर्देशित केला जातो.


UNIX pipes are implemented in a similar way.

UNIX पाईप्स त्याच पद्धतीने लागू केले जातात.


The fork()/exec() combination is a powerful way to create and manipulate processes.

fork()/exec() संयोजन प्रक्रिया तयार करण्यासाठी आणि हाताळण्यासाठी एक शक्तिशाली मार्ग आहे.


Read the manual pages, or man pages for short.

मॅन्युअल पेजेस वाचा, किंवा थोडक्यात मॅन पेजेस.


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम संगणकाचे संसाधने व्यवस्थापित करते.


कृपया फाईल उघडा.


The program is running in the background.

प्रोग्राम पार्श्वभूमीत चालू आहे.


The kernel is the core of the operating system.

कर्नल हे ऑपरेटिंग सिस्टमचे केंद्र आहे.


मला सॉफ्टवेअर स्थापित करायचे आहे.


The system call allows user programs to access the kernel.

सिस्टम कॉल वापरकर्त्यांना कर्नलमध्ये प्रवेश करण्यास मदत करते.


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

कॉल करणाऱ्याची रजिस्टर स्थिती हार्डवेअरला जतन करणे आवश्यक आहे.


The OS informs the hardware of the locations of the trap handlers.

ऑपरेटिंग सिस्टम हार्डवेअरला ट्रॅप हँडलर्सच्या स्थानांची माहिती देते.


The machine boots up in privileged (kernel) mode.

मशीन विशेषाधिकारित (कर्नल) मोडमध्ये बूट होते.


Switching between processes should be simple, right?

प्रक्रिया बदलणे सोपे असायला हवे, बरोबर?


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

ऑपरेटिंग सिस्टम सिस्टम कॉलची प्रतीक्षा करून CPU वर नियंत्रण मिळवते.


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

टाइमर व्यत्यय ऑपरेटिंग सिस्टमला पुन्हा चालवण्याची क्षमता देतो.


The OS must start the timer, which is a privileged operation.

ऑपरेटिंग सिस्टमने टाइमर सुरू करणे आवश्यक आहे, जी एक विशेषाधिकारित क्रिया आहे.


The hardware saves the state of the program.

हार्डवेअर प्रोग्रामची स्थिती जतन करते.


The scheduler decides which process to run.

शेड्यूलर ठरवतो की कोणती प्रक्रिया चालवायची.


A context switch is conceptually simple.

संदर्भातील बदल संकल्पनात्मकदृष्ट्या सोपा आहे.


The OS saves register values for the currently-executing process.

ऑपरेटिंग सिस्टम सध्या सुरू असलेल्या प्रक्रियेसाठी रजिस्टर व्हॅल्यू जतन करते.


The system resumes execution of another process.

सिस्टम दुसऱ्या प्रक्रियेचे कार्यान्वयन सुरू करते.


The context switch code for xv6 is shown in Figure 6.1.

xv6 साठीचा संदर्भ स्विच कोड आकृती 6.1 मध्ये दर्शविला आहे.


What happens when a timer interrupt occurs during a system call?

सिस्टम कॉल दरम्यान टाइमर व्यत्यय आल्यास काय होते?


A classic text on software engineering; well worth the read.

सॉफ्टवेअर अभियांत्रिकीवरील एक उत्कृष्ट पुस्तक; नक्कीच वाचण्यासारखे.


Another great intro to how computer systems work.

संगणक प्रणाली कशा काम करतात, याची आणखी एक उत्तम ओळख.


After all, one good way to build up your own knowledge is to hear as many other perspectives as possible, and then develop your own opinion and thoughts on the matter.

शेवटी, तुमचे ज्ञान वाढवण्याचा एक चांगला मार्ग म्हणजे शक्य तितके इतर दृष्टिकोन ऐकणे, आणि नंतर त्या विषयावर तुमचे स्वतःचे मत आणि विचार विकसित करणे.


The Atlas pioneered much of what you see in modern systems.

आजच्या आधुनिक प्रणालींमध्ये जे काही दिसते, त्यापैकी बर्‍याच गोष्टींचेPायनियर अॅटलसने केले.


A nice piece of history on the early development of computer systems and the pioneering efforts of the Atlas.

संगणक प्रणालीच्या सुरुवातीच्या विकासावर आणि Atlas च्या महत्त्वपूर्ण प्रयत्नांवर एक छान ऐतिहासिक माहिती.


मल्टिक्सचे उत्तम विहंगावलोकन.


So many good ideas, and yet it was an over-designed system, shooting for too much, and thus never really worked as expected.

एवढ्या चांगल्या कल्पना होत्या, तरीही ती एक जास्त डिझाइन केलेली प्रणाली होती, जास्त साध्य करण्याचा प्रयत्न करत होती, आणि त्यामुळे अपेक्षेप्रमाणे कधीच काम करू शकली नाही.


One of our favorite intro to computing systems books.

संगणक प्रणालीवरच्या आमच्या आवडत्या पुस्तकांपैकी एक.


A great summary of UNIX written as it was taking over the world of computing, by the people who wrote it.

UNIX चा एक उत्कृष्ट सारांश, ज्यांनी ते लिहिले, त्यांच्याद्वारेच, ते संगणक जगतावर राज्य करत असताना लिहिले गेले.


Yes, a technical manual was the best we could find.

होय, आम्हाला सापडलेल्यांपैकी हे तांत्रिक मार्गदर्शन सर्वोत्तम होते.


But it is fascinating to read these old system documents, and see how much was already in place in the late 1960’s.

पण हे जुने सिस्टम डॉक्युमेंट्स वाचणे खूप आकर्षक आहे, आणि 1960 च्या दशकाच्या उत्तरार्धात कितीतरी गोष्टी अस्तित्वात होत्या हे पाहणे महत्त्वाचे आहे.


The great thing about writing your own class notes: you can advertise your own research.

तुमच्या स्वतःच्या क्लास नोट्स लिहिण्याचा एक चांगला फायदा म्हणजे, तुम्ही तुमच्या संशोधनाची जाहिरात करू शकता.


But this paper is actually pretty neat – when a file system hits a bug and crashes, Membrane auto-magically restarts it, all without applications or the rest of the system being affected.

पण हे संशोधन खरंच खूप छान आहे – जेव्हा फाईल सिस्टीममध्ये बग येतो आणि ती क्रॅश होते, तेव्हा मेम्ब्रेन आपोआपच ते रीस्टार्ट करते, तेही कोणत्याही ॲप्लिकेशन्सवर किंवा सिस्टीमच्या इतर भागांवर परिणाम न करता.


कल्पना करा, आपल्याकडे एक पीच आहे.


चला, त्याला 'फिजिकल पीच' म्हणूया.


But we have many eaters who would like to eat this peach.

पण आपल्याकडे असे अनेक खाणारे आहेत ज्यांना हा पीच खायला आवडेल.


What we would like to present to each eater is their own peach, so that they can be happy.

प्रत्येक खाणाऱ्याला आपण काय देऊ इच्छितो, ते म्हणजे त्यांचा स्वतःचा पीच, जेणेकरून ते आनंदी होतील.


We call the peach we give eaters virtual peaches; we somehow create many of these virtual peaches out of the one physical peach.

आम्ही खाणाऱ्यांना देतो त्या पीचला 'व्हर्च्युअल पीच' म्हणतो; आपण एका फिजिकल पीचमधून अनेक व्हर्च्युअल पीच तयार करतो.


And the important thing: in this illusion, it looks to each eater like they have a physical peach, but in reality they don’t.

आणि महत्त्वाची गोष्ट: या भ्रमात, प्रत्येक खाणाऱ्याला असे वाटते की त्यांच्याकडे फिजिकल पीच आहे, पण प्रत्यक्षात तसे नसते.


हे एखाद्या वाईट निवडणुकीच्या घोषणेसारखे वाटते.


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 उपकरणाच्या स्वरूपात येते; आधुनिक प्रणालींमध्ये, हार्ड ड्राइव्ह हे दीर्घकाळ टिकणाऱ्या माहितीसाठी एक सामान्य भांडार आहे, जरी सॉलिड-स्टेट ड्राइव्ह (SSDs) देखील या क्षेत्रात प्रगती करत आहेत.


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.

OS द्वारे CPU आणि मेमरीसाठी प्रदान केलेल्या अमूर्ततेच्या विपरीत, 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 author shows that if you can jump into code arbitrarily, you can essentially stitch together any code sequence you like.

लेखक दाखवतो की जर तुम्ही मनमानी पद्धतीने कोडमध्ये प्रवेश करू शकत असाल, तर तुम्ही आवश्यकतेनुसार कोणताही कोड क्रम एकत्र जोडू शकता.


Measuring the cost of a system call is relatively easy.

सिस्टम कॉलची किंमत मोजणे तुलनेने सोपे आहे.


You can try to re-create something similar here, using pipes, or perhaps some other communication mechanism such as UNIX sockets.

तुम्ही येथे तत्सम काहीतरी पुन्हा तयार करण्याचा प्रयत्न करू शकता, पाईप्स वापरून किंवा कदाचित युनिक्स सॉकेट्ससारखे इतर काही संवाद यंत्रणा वापरून.


By ensuring both processes are on the same processor, you are making sure to measure the cost of the OS stopping one process and restoring another on the same CPU.

दोन्ही प्रक्रिया एकाच प्रोसेसरवर असल्याची खात्री करून, तुम्ही एका प्रक्रियेला थांबवून त्याच CPU वर दुसरी पुनर्संचयित करण्याची OS ची किंमत मोजत आहात.


We will now do just that, presenting a series of scheduling policies that various smart and hard-working people have developed over the years.

आम्ही आता तेच करू, अनेक वर्षांपासून विविध हुशार आणि मेहनती लोकांनी विकसित केलेल्या शेड्यूलिंग धोरणांची मालिका सादर करत आहोत.


The origins of scheduling, in fact, predate computer systems.

शेड्यूलिंगची उत्पत्ती, खरं तर, संगणक प्रणालीच्या आधीची आहे.


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

शेड्यूलिंग धोरणांचा विचार करण्यासाठी आपण एक मूलभूत কাঠামো कसा विकसित करावा?


Determining the workload is a critical part of building policies.

वर्कलोड निश्चित करणे हे धोरणे तयार करण्याचा एक महत्त्वपूर्ण भाग आहे.


We will make the following assumptions about the processes, sometimes called jobs, that are running in the system:

आम्ही सिस्टममध्ये चालणाऱ्या प्रक्रिया, ज्यांना काहीवेळा जॉब म्हणतात, त्याबद्दल खालील गृहितके मांडू:


Each job runs for the same amount of time.

प्रत्येक नोकरी समान वेळेसाठी चालते.


The turnaround time of a job is defined as the time at which the job completes minus the time at which the job arrived in the system.

एका नोकरीची टर्नअराउंड वेळ म्हणजे नोकरी पूर्ण होण्याचा वेळ वजा नोकरी सिस्टममध्ये येण्याचा वेळ.


This fact will change as we relax the aforementioned assumptions.

आम्ही वरील गृहितके शिथिल करताच हे वास्तव बदलेल.


Performance and fairness are often at odds in scheduling.

शेड्यूलिंगमध्ये कार्यक्षमतेत आणि न्यायात अनेकदा विसंगती असते.


FIFO has a number of positive properties: it is clearly very simple and thus easy to implement.

FIFO मध्ये अनेक सकारात्मक गुणधर्म आहेत: ते स्पष्टपणे खूप सोपे आहे आणि त्यामुळे अंमलात आणणे सोपे आहे.


चला, एकत्र एक जलद उदाहरण घेऊया.


Imagine three jobs arrive in the system, A, B, and C, at roughly the same time.

कल्पना करा की तीन नोकऱ्या सिस्टममध्ये येतात, A, B, आणि C, जवळजवळ एकाच वेळी.


This problem is generally referred to as the convoy effect.

या समस्येला सामान्यतः ताफ्याचा प्रभाव म्हणून संबोधले जाते.


मग आपण काय करावे?


It turns out that a very simple approach solves this problem.

असे दिसून येते की एक अतिशय सोपा दृष्टिकोन ही समस्या सोडवतो.


Let’s take our example above but with SJF as our scheduling policy.

चला, वरील उदाहरण घेऊया, परंतु SJF हे आपले शेड्यूलिंग धोरण म्हणून वापरूया.


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.

ऑपरेटिंग सिस्टमला सहसा प्रत्येक कामाच्या लांबीबद्दल फार कमी माहिती असते.


We will see how to overcome this problem by building a scheduler.

शेड्यूलर तयार करून हे कसं सोडवायचं, ते आपण पाहू.


The pioneering paper on using an SJF approach in scheduling the repair of machines.

मशीन दुरुस्तीचे शेड्यूलिंग करण्यासाठी SJF दृष्टिकोन वापरण्यावरचे हे एक महत्त्वपूर्ण संशोधन आहे.


This is a great but depressing allegorical book about power and its corruptions.

हे सत्तेबद्दल आणि तिच्या भ्रष्टाचाराबद्दलचे एक उत्कृष्ट पण निराशाजनक रूपक पुस्तक आहे.


The simulator allows you to see how different schedulers perform.

सिम्युलेटर आपल्याला विविध शेड्यूलरची कार्यक्षमता पाहण्याची परवानगी देतो.


Compute the response time and turnaround time when running three jobs.

तीन कामे चालवताना रिस्पॉन्स टाइम आणि टर्नअराउंड टाइम मोजा.


In this chapter, we’ll tackle the problem of developing one of the most well-known approaches to scheduling.

या अध्यायात, आपण शेड्यूलिंगच्या सर्वात प्रसिद्ध पद्धतींपैकी एकाचा विकास करण्याच्या समस्येवर चर्चा करू.


The fundamental problem MLFQ tries to address is two-fold.

MLFQ ज्या समस्येचे निराकरण करण्याचा प्रयत्न करते, ती दुहेरी आहे.


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

MLFQ प्रणालीला संवाद साधणाऱ्या वापरकर्त्यांसाठी प्रतिसादक्षम बनवू इच्छिते.


How can we design a scheduler that both minimizes response time for interactive jobs?

आम्ही असा शेड्यूलर कसा डिझाइन करू शकतो जो संवादात्मक कामांसाठी प्रतिसाद वेळ कमी करेल?


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

मल्टी-लेव्हल फीडबॅक रांग भूतकाळातील गोष्टींमधून शिकणाऱ्या प्रणालीचे उत्तम उदाहरण आहे.


MLFQ uses priorities to decide which job should run at a given time.

MLFQ हे ठरवण्यासाठी प्राधान्यक्रम वापरते की विशिष्ट वेळी कोणते काम चालले पाहिजे.


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 सोडत असेल, तर ते त्याच प्राधान्य पातळीवर राहते.


Let’s look at what happens when there has been a long running job in the system.

सिस्टममध्ये बराच वेळ चालणारे काम असल्यास काय होते ते पाहूया.


Let’s now look at an example with some I/O.

आता काही I/O सह एक उदाहरण पाहूया.


First, there is the problem of starvation.

पहिले म्हणजे, उपासमारीची समस्या आहे.


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

येथे सोपी कल्पना म्हणजे वेळोवेळी सिस्टममधील सर्व कामांना प्राधान्य देणे.


हा लेख लॉटरी शेड्यूलिंगवर चर्चा करतो.


Lottery scheduling is a fair resource management technique.

लॉटरी शेड्यूलिंग ही संसाधनांचे योग्य व्यवस्थापन करण्याची एक पद्धत आहे.


This thesis outlines lottery and stride scheduling.

हा प्रबंध लॉटरी आणि स्ट्राइड शेड्यूलिंगची रूपरेषा देतो.


The paper is about memory resource management in VMware ESX Server.

हा लेख VMware ESX सर्व्हरमधील मेमरी संसाधनांच्या व्यवस्थापनावर आहे.


This program allows you to see how a lottery scheduler works.

हे प्रोग्राम आपल्याला लॉटरी शेड्यूलर कसे कार्य करते हे पाहण्याची परवानगी देतो.


Compute the solutions for simulations with 3 jobs.

3 नोकऱ्यांसह सिम्युलेशनसाठी सोल्यूशन्सची गणना करा.


What happens when the number of tickets is so imbalanced?

जेव्हा तिकिटांची संख्या असंतुलित होते, तेव्हा काय होते?


शेड्यूलर किती अन्यायकारक आहे?


How does your answer to the previous question change?

मागील प्रश्नाचे तुमचे उत्तर कसे बदलते?


This chapter will introduce the basics of multiprocessor scheduling.

हे प्रकरण मल्टीप्रोसेसर शेड्यूलिंगची मूलभूत माहिती देईल.


Multiprocessor systems are increasingly commonplace.

मल्टीप्रोसेसर प्रणाली अधिकाधिक सामान्य होत आहेत.


The rise of the multicore processor is the source of this proliferation.

मल्टिकोर प्रोसेसरचा उदय या प्रसाराचे कारण आहे.


Multi-threaded applications can spread work across multiple CPUs.

मल्टी-थ्रेडेड ऍप्लिकेशन्स एकाधिक CPU मध्ये काम विभागू शकतात.


How should the OS schedule jobs on multiple CPUs?

OS ने एकाधिक CPU वर नोकऱ्या कशा शेड्यूल कराव्यात?


We have to understand a new and fundamental difference.

आपल्याला एक नवीन आणि मूलभूत फरक समजून घेणे आवश्यक आहे.


कॅशे लहान, जलद मेमरी आहेत.


सिस्टम ते मुख्य मेमरीमधून मिळवते.


Caches are thus based on the notion of locality.

कॅशे स्थानिकतेच्या संकल्पनेवर आधारित आहेत.


This general problem is called the problem of cache coherence.

या सर्वसाधारण समस्येला कॅशे कोहरेन्सची समस्या म्हणतात.


The basic solution is provided by the hardware.

मूलभूत समाधान हार्डवेअरद्वारे प्रदान केले जाते.


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम संगणकाचे संसाधने व्यवस्थापित करते.


MLFQ uses feedback to determine the priority of a job.

MLFQ कामाची प्राथमिकता ठरवण्यासाठी अभिप्राय वापरते.


The scheduler needs to make decisions about which process to run.

शेड्यूलरला कोणत्या प्रक्रियेस चालवायचे आहे याबद्दल निर्णय घेणे आवश्यक आहे.


Users can provide hints to the OS to improve performance.

उपयोगकर्ते कार्यक्षमतेत सुधारणा करण्यासाठी OS ला सूचना देऊ शकतात.


MLFQ can deliver excellent overall performance for short-running interactive jobs.

MLFQ कमी वेळेत चालणाऱ्या संवादात्मक कामांसाठी उत्कृष्ट एकूण कार्यक्षमते देऊ शकते.


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

अनेक प्रणाली MLFQ चा एक प्रकार त्यांच्या बेस शेड्यूलर म्हणून वापरतात.


Proportional-share scheduling aims to guarantee each job a certain percentage of CPU time.

प्रपोर्शनल-शेअर शेड्यूलिंग प्रत्येक कामाला CPU वेळेचा एक निश्चित टक्केवारी मिळवण्याची हमी देण्याचे लक्ष्य ठेवते.


Lottery scheduling achieves this probabilistically.

लॉटरी शेड्यूलिंग हे संभाव्यतेने साध्य करते.


Tickets are used to represent the share of a resource.

टिकेट्स संसाधनांचा वाटा दर्शवण्यासाठी वापरले जातात.


The scheduler picks a winning ticket to determine which process runs next.

शेड्यूलर पुढील प्रक्रिया कोणती सुरू करायची हे ठरवण्यासाठी एक विजयी तिकीट निवडतो.


Randomness is a key aspect of lottery scheduling.

लॉटरी शेड्यूलिंगमध्ये यादृच्छिकता (randomness) एक महत्त्वाची बाजू आहे.


Ticket currency allows users to allocate tickets among their own jobs.

तिकीट चलन वापरकर्त्यांना त्यांच्या कामांमध्ये तिकीट वाटप करण्यास सक्षम करते.


A process can temporarily hand off its tickets to another process.

एखादी प्रक्रिया तात्पुरते तिची तिकीटं दुसऱ्या प्रक्रियेस देऊ शकते.


Ticket inflation can be a useful technique.

तिकीट वाढवणे (inflation) एक उपयुक्त तंत्र असू शकते.


The implementation of lottery scheduling is simple.

लॉटरी शेड्यूलिंगची अंमलबजावणी सोपी आहे.


Stride scheduling is a deterministic fair-share scheduler.

स्ट्राइड शेड्यूलिंग हे एक निश्चित फेअर-शेअर शेड्यूलर आहे.


Stride scheduling gets the proportions exactly right at the end of each scheduling cycle.

स्ट्राइड शेड्यूलिंग प्रत्येक शेड्यूलिंग चक्राच्या शेवटी प्रमाण अचूकपणे निश्चित करते.


Proportional-share schedulers are useful in domains where ticket assignment is relatively easy.

प्रपोर्शनल-शेअर शेड्यूलर अशा डोमेनमध्ये उपयुक्त आहेत जिथे तिकीट वाटप करणे तुलनेने सोपे आहे.


The system's performance depends on how tickets are allocated.

प्रणालीची कार्यक्षमता तिकीट वाटपावर अवलंबून असते.


This approach does not mesh well with I/O.

हा दृष्टिकोन I/O सोबत चांगला जुळत नाही.


OS CPU चे व्हर्च्युअलायझेशन करते.


The OS wants to stay in charge of the machine.

OS ला मशीनच्या नियंत्रणात राहायचे आहे.


OS बऱ्यापैकी शंकेखोर आहे.


चांगले अभियांत्रिकी तसेच असू शकते.


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

असे दिसते की मी पुढील वेळी Amazon च्या EC2 सेवेवर नोकरी करत असताना यावर लक्ष देण्याची गरज आहे.


The OS is just providing an illusion to each process.

OS प्रत्येक प्रक्रियेसाठी फक्त एक भ्रम निर्माण करत आहे.


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

OS प्रत्येक प्रोग्रामला एक मोठा, लागोपाठ ऍड्रेस स्पेस आहे, असे दृश्य देईल.


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.

OS ने व्हर्च्युअल मेमरी अशा प्रकारे लागू केली पाहिजे की ती चालू असलेल्या प्रोग्रामला दिसू नये.


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

OS ने व्हर्च्युअलायझेशन शक्य तितके कार्यक्षम बनवण्याचा प्रयत्न केला पाहिजे.


The program really isn’t in memory at physical addresses 0 through 16KB.

प्रोग्राम खरोखरच 0 ते 16KB पर्यंतच्या फिजिकल ऍड्रेसवर मेमरीमध्ये नाही.


The OS will do this for many processes at once.

OS हे एकाच वेळी अनेक प्रक्रियांसाठी करेल.


मला वाटतं मी काही गोष्टी शिकलो.


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

याचा अर्थ लावण्यासाठी मला अनेक महत्त्वाचे यंत्रणा समजून घ्यावे लागले.


Do the class projects and I bet by the end it will all kind of make sense.

वर्गाचे प्रकल्प करा आणि मला खात्री आहे की, शेवटी, या सगळ्याचा अर्थ लागेल.


It seems like the OS is fairly paranoid.

असे दिसते की OS बऱ्यापैकी शंकेखोर आहे.


Perhaps that is why we think of the OS as a resource manager.

कदाचित म्हणूनच आपण OS ला संसाधनांचा व्यवस्थापक मानतो.


Like the notion of bumping short jobs to the front of the queue.

उदाहरणार्थ, कमी वेळेची कामे रांगेत पुढे ढकलण्याची कल्पना.


These policy battles seem like they could rage forever.

असे दिसते की धोरणांवरील हे वाद नेहमीच चालू राहू शकतात.


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

चांगले अभियांत्रिकी तसेच असू शकते. आणि ते आनंददायी देखील असू शकते!


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.

ॲड्रेस ट्रान्सलेशनसह, हार्डवेअर प्रत्येक मेमरी ॲक्सेसमध्ये बदल करते.


The programmer further helps out by using what is called a cast.

प्रोग्रामर कास्ट वापरून अधिक मदत करतो.


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

UNIX/C प्रोग्राममध्ये, मेमरी कशी वाटप करावी आणि व्यवस्थापित करावी हे समजून घेणे महत्त्वाचे आहे.


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

आपण ज्या मुख्य समस्येचे निराकरण करतो ती ही आहे: CRUX: मेमरी कशी वाटप करावी आणि व्यवस्थापित करावी.


Declaring memory on the stack in C is easy.

C मध्ये स्टॅकवर मेमरी घोषित करणे सोपे आहे.


When your 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.

दीर्घकाळ टिकणाऱ्या मेमरीची ही गरजच आपल्याला मेमरीच्या दुसऱ्या प्रकाराकडे नेते, ज्याला हिप मेमरी म्हणतात.


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.

तुम्ही त्याला हिपवर काही जागा देण्यासाठी आकार (size) पाठवता.


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

मॅन्युअल पेजमध्ये malloc वापरण्यासाठी काय करावे लागेल हे दर्शविते.


In fact, you don’t really need to even do this, as the C library has the code for malloc() inside of it.

खरं तर, हे करण्याचीही तुम्हाला गरज नाही, कारण C लायब्ररीत malloc() चा कोड आहे.


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.

तुम्ही वापरत असलेल्या काही रुटीन किंवा ऑपरेटरची कार्यप्रणाली (behave) तुम्हाला माहीत नसेल, तर ते वापरून पाहण्याशिवाय दुसरा पर्याय नाही.


In the first line, we’ve declared space for an array of 10 integers, which is fine and dandy.

पहिल्या ओळीत, आम्ही 10 पूर्णांकांच्या ॲरेसाठी जागा घोषित केली आहे, जी चांगली आहे.


Another place to be careful is with strings.

स्ट्रिंग वापरताना आणखी एक काळजी घेण्यासारखी गोष्ट आहे.


The total amount of free space exceeds the size of the request.

मोकळ्या जागेची एकूण मात्रा विनंतीच्या आकारापेक्षा जास्त आहे.


The figure shows an example of this problem.

आकृती या समस्येचे उदाहरण दर्शवते.


In this case, the total free space available is 20 bytes.

या स्थितीत, उपलब्ध एकूण मोकळी जागा 20 bytes आहे.


As a result, a request for 15 bytes will fail even though there are 20 bytes free.

परिणामी, 15 bytes ची विनंती अयशस्वी होईल, जरी 20 bytes मोकळे असले तरी.


How should free space be managed, when satisfying variable-sized requests?

व्हेरिएबल-आकाराच्या विनंत्या पूर्ण करताना मोकळ्या जागेचे व्यवस्थापन कसे केले पाहिजे?


What strategies can be used to minimize fragmentation?

विभाजन कमी करण्यासाठी कोणती रणनीती वापरली जाऊ शकते?


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

आम्ही malloc() आणि free() द्वारे प्रदान केलेल्या मूलभूत इंटरफेसची कल्पना करतो.


Specifically, void * malloc(size t size) takes a single parameter, size.

विशेषतः, void * malloc(size t size) एकच पॅरामीटर, size घेते.


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.

ही लायब्ररी व्यवस्थापित करत असलेली जागा ऐतिहासिकदृष्ट्या 'heap' म्हणून ओळखली जाते.


This structure contains references to all of the free chunks of space.

या संरचनेत मोकळ्या जागेच्या सर्व भागांचा संदर्भ आहे.


We further assume that primarily we are concerned with external fragmentation.

आम्ही पुढे असे मानतो की प्रामुख्याने, आम्ही बाह्य विभाजनाशी संबंधित आहोत.


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

अर्थात, एलोकेटर्सना अंतर्गत विभाजनाची समस्या देखील येऊ शकते.


We’ll mostly focus on external fragmentation.

आम्ही प्रामुख्याने बाह्य विभाजनावर लक्ष केंद्रित करू.


We’ll also assume that once memory is handed out to a client, it cannot be relocated.

आम्ही असेही मानू की एकदा मेमरी क्लायंटला दिल्यावर, ती दुसऱ्या ठिकाणी हलवता येत नाही.


Thus, no compaction of free space is possible.

म्हणून, मोकळ्या जागेचे कोणतेही संकुचन शक्य नाही.


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

आम्ही असे मानू की एलोकेटर बाइट्सचा एक सतत प्रदेश व्यवस्थापित करतो.


First, we’ll discuss the basics of splitting and coalescing.

प्रथम, आपण विभाजन आणि एकत्रीकरणाच्या मूलभूत गोष्टींवर चर्चा करू.


A free list contains a set of elements that describe the free space.

एका मोकळ्या सूचीमध्ये घटकांचा संच असतो जो मोकळ्या जागेचे वर्णन करतो.


Assume the following 30-byte heap: freeusedfree 0102030

खालील 30-byte heap ची कल्पना करा: freeusedfree 0102030


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

OS ने मेमरी व्यवस्थापित करणे आवश्यक आहे, कोणती स्थाने मोकळी आहेत आणि कोणती वापरात आहेत याचा मागोवा घेणे.


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

व्हर्च्युअलायझेशनद्वारे, OS हे कुरूप मशीन वास्तव उपयुक्त, शक्तिशाली आणि वापरण्यास सुलभ अशा अमूर्त गोष्टीमध्ये रूपांतरित करते.


We will assume for now that the user’s address space must be placed contiguously in physical memory.

आम्ही सध्या हे गृहीत धरू की वापरकर्त्याची ऍड्रेस स्पेस भौतिक मेमरीमध्ये सलग ठेवली पाहिजे.


The compiler turns this line of code into assembly.

संकलक (compiler) कोडच्या या ओळीचे असेंब्लीमध्ये रूपांतर करतो.


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

प्रक्रियेद्वारे तयार केलेला प्रत्येक मेमरी संदर्भ एक आभासी पत्ता आहे.


The hardware will interpose on each memory access, and translate each virtual address issued by the process to a physical address.

प्रत्येक मेमरी ऍक्सेसवर हार्डवेअर हस्तक्षेप करेल आणि प्रक्रियेद्वारे जारी केलेल्या प्रत्येक व्हर्च्युअल ऍड्रेसचे भौतिक पत्त्यावर भाषांतर करेल.


The OS must take action when a process is created, finding space for its address space in memory.

प्रक्रिया तयार झाल्यावर OS ने ऍक्शन घेणे आवश्यक आहे, मेमरीमध्ये त्याच्या ऍड्रेस स्पेससाठी जागा शोधणे.


The OS must also take action when a context switch occurs.

संदर्भ स्विच (context switch) झाल्यावरही OS ने ऍक्शन घेणे आवश्यक आहे.


The OS can control each and every memory access from a process.

OS एका प्रक्रियेतील प्रत्येक मेमरी ऍक्सेस नियंत्रित करू शकते.


बेस-अँड-बाउंड्स सुरक्षा देखील प्रदान करते.


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

कल्पना करा, जर एखादी वापरकर्ता प्रक्रिया (user process) चालत असताना मनमानीपणे बेस रजिस्टर बदलू शकली, तर काय गोंधळ उडेल!


This paper is a nice summary of early work on dynamic relocation.

हा पेपर डायनॅमिक रिलोकेशनवरील सुरुवातीच्या कामाचा चांगला सारांश आहे.


The program relocation allows you to see how address translations are performed.

प्रोग्राम रिलोकेशन आपल्याला ऍड्रेस भाषांतर कसे केले जाते हे पाहण्याची परवानगी देतो.


Run with seeds 1, 2, and 3, and compute whether each virtual address generated by the process is in or out of bounds.

बीज (seeds) 1, 2, आणि 3 सह चालवा आणि गणना करा की प्रक्रियेद्वारे तयार केलेला प्रत्येक व्हर्च्युअल ऍड्रेस मर्यादेत आहे की नाही.


How do we support a large address space with (potentially) a lot of free space?

मोठ्या प्रमाणात मोकळी जागा (free space) असलेल्या मोठ्या ऍड्रेस स्पेसला (address space) आपण कसे समर्थन देऊ शकतो?


The OS must save and restore the base-and-bounds pair when it switches between processes.

प्रक्रियांमध्ये स्विच करताना OS ने बेस-अँड-बाउंड्स पेअर जतन (save) आणि पुनर्संचयित (restore) करणे आवश्यक आहे.


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

बाउंड्सचा उद्देश असा आहे की प्रक्रियेद्वारे तयार केलेले सर्व पत्ते कायदेशीर आहेत हे सुनिश्चित करणे.


In this setup, each program is written and compiled as if it is loaded at address zero.

या सेटअपमध्ये, प्रत्येक प्रोग्राम असा लिहिला आणि संकलित केला जातो जणू काही तो शून्य पत्त्यावर लोड झाला आहे.


We are going to need more sophisticated machinery, to try to better utilize physical memory.

भौतिक मेमरीचा अधिक चांगला वापर करण्याचा प्रयत्न करण्यासाठी, आपल्याला अधिक अत्याधुनिक यंत्रसामग्रीची आवश्यकता असेल.


The OS will have to search a data structure to find room for the new address space.

नवीन ऍड्रेस स्पेससाठी जागा शोधण्यासाठी OS ला डेटा स्ट्रक्चर शोधावे लागेल.


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?

कल्पना सोपी आहे: आपल्या MMU मध्ये फक्त एक बेस आणि बाउंड्स जोडी ठेवण्याऐवजी, ॲड्रेस स्पेसच्या प्रत्येक लॉजिकल विभागासाठी बेस आणि बाउंड्स जोडी का नसावी?


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.

सेगमेंटेशनमुळे OS ला काय करता येते ते म्हणजे त्यापैकी प्रत्येक विभाग भौतिक मेमरीच्या वेगवेगळ्या भागांमध्ये ठेवणे.


चला एक उदाहरण पाहूया.


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.

सेगमेंटेशनला सपोर्ट करण्यासाठी आपल्या MMU मधील हार्डवेअर स्ट्रक्चर, तुम्ही अपेक्षा कराल तसेच आहे.


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.

आता, चला हिपमधील ॲड्रेस पाहूया, व्हर्च्युअल ॲड्रेस 4200.


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.

आपल्याला प्रथम काय करणे आवश्यक आहे ते म्हणजे हिपमधील ऑफसेट काढणे, म्हणजे, या विभागात ॲड्रेस कोणत्या बाईट(स) चा संदर्भ देतो.


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 first instruction moves the value zero into the virtual memory address.

पहिले सूचना शून्य मूल्य व्हर्च्युअल मेमरी पत्त्यावर हलवते.


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

दुसरी सूचना %eax मध्ये असलेल्या अॅरे इंडेक्समध्ये वाढ करते.


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

जर तुलना दर्शवते की दोन मूल्ये अजून समान नाहीत, तर चौथी सूचना लूपच्या शीर्षस्थानी परत जाते.


We assume a virtual address space of size 64KB.

आम्ही 64KB आकाराचे व्हर्च्युअल ऍड्रेस स्पेस गृहीत धरतो.


आम्ही 1 KB चा पेज आकार देखील गृहीत धरतो.


The array itself. Its size is 4000 bytes (1000 integers).

अॅरे स्वतः. त्याचा आकार 4000 bytes (1000 पूर्णांक) आहे.


When it runs, each instruction fetch will generate two memory references.

जेव्हा ते चालते, तेव्हा प्रत्येक सूचना फेच दोन मेमरी संदर्भ तयार करेल.


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

संपूर्ण प्रक्रिया, पहिल्या पाच लूप पुनरावृत्तीसाठी, आकृती 18.7 मध्ये दर्शविली आहे.


Paging has many advantages over previous approaches.

पेजिंगचे मागील दृष्टिकोनपेक्षा अनेक फायदे आहेत.


First, it does not lead to external fragmentation.

पहिले म्हणजे, ते बाह्य तुकडे होण्यास कारणीभूत नाही.


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 have introduced the concept of paging as a solution to our challenge of virtualizing memory.

आम्ही व्हर्च्युअलाइजिंग मेमरीच्या समस्येचे समाधान म्हणून पेजिंगची संकल्पना सादर केली आहे.


How can we speed up address translation?

आम्ही ऍड्रेस भाषांतर कसे जलद करू शकतो?


To speed address translation, we are going to add what is called a translation-lookaside buffer, or TLB.

ऍड्रेस भाषांतर जलद करण्यासाठी, आम्ही ट्रान्सलेशन-लूकसाइड बफर, किंवा TLB, जोडणार आहोत.


A TLB is part of the chip’s memory-management unit (MMU).

TLB हा चिपच्या मेमरी-व्यवस्थापन युनिटचा (MMU) एक भाग आहे.


Upon each virtual memory reference, the hardware first checks the TLB.

प्रत्येक व्हर्च्युअल मेमरी संदर्भावर, हार्डवेअर प्रथम TLB तपासते.


If it does, we have a TLB hit, which means the TLB holds the translation.

जर तसे असेल, तर आपल्याकडे TLB हिट आहे, याचा अर्थ TLB मध्ये भाषांतर आहे.


When a miss occurs, the high cost of paging is incurred.

जेव्हा मिस होते, तेव्हा पेजिंगची उच्च किंमत येते.


If the program of interest exhibits such locality (and many programs do), the TLB hit rate will likely be high.

जर स्वारस्य असलेला प्रोग्राम अशा स्थानिकीकरण दर्शवित असेल (आणि अनेक प्रोग्राम करतात), तर TLB हिट रेट जास्त असण्याची शक्यता आहे.


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.

स्लॅब एलोकेटर बहुतेक विभक्त सूची दृष्टिकोनच्या पलीकडे जातो, ज्यामुळे सूचीमधील विनामूल्य वस्तू पूर्व-सुरुवातीच्या स्थितीत ठेवल्या जातात.


Bonwick shows that initialization and destruction of data structures is costly.

बॉनविक दर्शवितो की डेटा स्ट्रक्चर्सची सुरूवात आणि विनाश करणे खर्चिक आहे.


By keeping freed objects in a particular list in their initialized state, the slab allocator thus avoids frequent initialization and destruction cycles per object and thus lowers overheads noticeably.

विनामूल्य वस्तू त्यांच्या सुरुवातीच्या स्थितीत विशिष्ट सूचीमध्ये ठेवून, स्लॅब एलोकेटर वारंवार सुरूवात आणि विनाश चक्र टाळतो, ज्यामुळे ओव्हरहेड लक्षणीयरीत्या कमी होतो.


When a request for memory is made, the search for free space recursively divides free space by two until a block that is big enough to accommodate the request is found.

मेमरीची विनंती केल्यावर, विनामूल्य जागेचा शोध, विनंती सामावून घेण्यासाठी पुरेसा मोठा ब्लॉक मिळेपर्यंत, विनामूल्य जागेला दोन भागांमध्ये विभागतो.


At this point, the requested block is returned to the user.

या टप्प्यावर, विनंती केलेला ब्लॉक वापरकर्त्यास परत केला जातो.


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.

बडी एलोकेशन चांगले काम करते कारण विशिष्ट ब्लॉकचा बडी निश्चित करणे सोपे आहे.


Thus, advanced allocators use more complex data structures to address these costs, trading simplicity for performance.

म्हणून, प्रगत एलोकेटर या खर्चांना सामोरे जाण्यासाठी अधिक जटिल डेटा स्ट्रक्चर्सचा वापर करतात, साधेपणाऐवजी कार्यक्षमतेची निवड करतात.


Given that modern systems often have multiple processors and run multi-threaded workloads, it is not surprising that a lot of effort has been spent making allocators work well on multiprocessor-based systems.

सध्याच्या प्रणालींमध्ये अनेक प्रोसेसर असतात आणि मल्टी-थ्रेडेड वर्कलोड चालतात, हे आश्चर्यकारक नाही की मल्टीप्रोसेसर-आधारित सिस्टमवर एलोकेटर चांगले काम करतील यासाठी खूप प्रयत्न केले गेले आहेत.


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 well as in the underlying OS which is managing memory for its own data structures.

असे एलोकेटर सर्वत्र अस्तित्वात आहेत, जे तुम्ही लिहित असलेल्या प्रत्येक सी प्रोग्राममध्ये तसेच अंतर्निहित ऑपरेटिंग सिस्टममध्ये जोडलेले आहेत, जे त्यांच्या स्वतःच्या डेटा स्ट्रक्चर्ससाठी मेमरी व्यवस्थापित करते.


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 in modern computer systems.

कमी जागेत, जलद, स्केलेबल एलोकेटर तयार करणे जे विस्तृत श्रेणीतील वर्कलोडसाठी चांगले कार्य करते, हे आधुनिक संगणक प्रणालीमध्ये एक सतत आव्हान आहे.


The idea behind CISC was that instructions should be high-level primitives.

CISC मागची कल्पना अशी होती की सूचना उच्च-स्तरीय मूलभूत घटक असावेत.


RISC instruction sets are exactly the opposite.

RISC सूचना संच अगदी उलट आहेत.


A key observation behind RISC is that instruction sets are really compiler targets.

RISC मागचे मुख्य निरीक्षण म्हणजे सूचना संच खरोखरच कंपाइलरचे लक्ष्य आहेत.


In the early days, RISC chips made a huge impact, as they were noticeably faster.

सुरुवातीच्या काळात, RISC चिप्सने खूप मोठा प्रभाव पाडला, कारण त्या लक्षणीयरीत्या जलद होत्या.


The debate died down, and today both types of processors can be made to run fast.

वाद शमला, आणि आज दोन्ही प्रकारचे प्रोसेसर जलद गतीने चालवता येतात.


Let’s look at the contents of the hardware TLB in more detail.

चला हार्डवेअर TLB ची सामग्री अधिक तपशीलवार पाहूया.


A typical TLB might have 32, 64, or 128 entries.

एका सामान्य TLB मध्ये 32, 64, किंवा 128 नोंदी असू शकतात.


Basically, this just means that any given translation can be anywhere in the TLB.

सोप्या भाषेत, याचा अर्थ असा आहे की कोणतीही भाषांतरण TLB मध्ये कुठेही असू शकते.


The hardware searches the entries in parallel to see if there is a match.

जुळणारे काही आहे का हे पाहण्यासाठी हार्डवेअर समांतर नोंदी शोधते.


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

एक सामान्य चूक म्हणजे TLB मध्ये सापडलेले वैध बिट्स आणि पेज टेबलमध्ये सापडलेले बिट्स गोंधळात टाकणे.


When a system boots, a common initial state for each TLB entry is to be set to invalid.

जेव्हा सिस्टम बूट होते, तेव्हा प्रत्येक TLB एंट्रीसाठी एक सामान्य प्रारंभिक स्थिती अवैध (invalid) सेट करणे आहे.


The TLB valid bit is quite useful when performing a context switch too.

संदर्भाचे स्विचिंग (context switch) करताना 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 नोंदी अवैध (invalid) सेट करून, सिस्टम हे सुनिश्चित करू शकते की लवकरच चालणारी प्रक्रिया मागील प्रक्रियेतील व्हर्च्युअल-टू-फिजिकल भाषांतरण (virtual-to-physical translation) चुकून वापरणार नाही.


अधिक मनोरंजक म्हणजे “इतर बिट्स”.


With TLBs, some new issues arise when switching between processes.

TLB सह, प्रक्रियांच्या दरम्यान स्विच करताना काही नवीन समस्या येतात.


The translations in the TLB for the last process are not meaningful to the about-to-be-run process.

शेवटच्या प्रक्रियेसाठी TLB मधील भाषांतरण, लवकरच चालणाऱ्या प्रक्रियेसाठी अर्थपूर्ण नाहीत.


What should the hardware or OS do in order to solve this problem?

ही समस्या सोडवण्यासाठी हार्डवेअर किंवा OS ने काय करावे?


One approach is to simply flush the TLB on context switches.

एका दृष्टीकोनानुसार, संदर्भ स्विचवर (context switch) TLB साफ करणे.


By flushing the TLB on each context switch, we now have a working solution.

प्रत्येक संदर्भ स्विचवर (context switch) TLB साफ करून, आता आपल्याकडे एक कार्यरत समाधान आहे.


To reduce this overhead, some systems add hardware support to enable sharing of the TLB across context switches.

हा ओव्हरहेड कमी करण्यासाठी, काही सिस्टम संदर्भ स्विच दरम्यान TLB सामायिक करण्यास सक्षम करण्यासाठी हार्डवेअर समर्थन (hardware support) जोडतात.


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 bytes) विचारात घ्या, ज्यामध्ये 4KB (2^12 byte) पेजेस आणि 4-byte पेज-टेबल एंट्री आहे.


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

एका आधुनिक प्रणालीवर शंभर सक्रिय प्रक्रिया (असामान्य नाही), आम्ही फक्त पेज टेबल्ससाठी शेकडो मेगाबाइट्स मेमरी वाटप करत असू!


आम्ही पेज टेबल्स लहान कसे बनवू शकतो?


यामागील मुख्य कल्पना काय आहेत?


What inefficiencies arise as a result of these new data structures?

या नवीन डेटा स्ट्रक्चर्सच्या परिणामी कोणती अक्षमता उद्भवतात?


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.

आमच्या संकरित योजनेत महत्त्वपूर्ण फरक म्हणजे प्रत्येक विभागासाठी बाउंड्स रजिस्टरची उपस्थिती.


For these reasons, people continued to look for better approaches to implementing smaller page tables.

या कारणांमुळे, लोकांनी लहान पेज टेबल्स लागू करण्यासाठी चांगले मार्ग शोधणे सुरूच ठेवले.


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम संगणकाचे संसाधने व्यवस्थापित करते.


कृपया तुमचे नाव आणि पत्ता द्या.


बातमीमध्ये मोठ्या भूकंपाची नोंद आहे.


आज मला खूप आनंद होत आहे.


The company announced a new product launch.

कंपनीने नवीन उत्पादन सुरू करण्याची घोषणा केली.


तुम्ही ते पुन्हा सांगू शकाल का?


The algorithm efficiently sorts the data.

अल्गोरिदम डेटाची कार्यक्षमतेने क्रमवारी लावतो.


The government is implementing new policies.

सरकार नवीन धोरणे लागू करत आहे.


The team worked collaboratively to achieve the goal.

संघाने ध्येय साध्य करण्यासाठी एकत्रितपणे काम केले.


The research paper explores the impact of climate change.

संशोधन निबंधात हवामान बदलाच्या परिणामांचा शोध घेतला आहे.


The complex system requires careful analysis.

जटिल प्रणालीसाठी काळजीपूर्वक विश्लेषणाची आवश्यकता आहे.


Despite the challenges, they persevered and succeeded.

आव्हानांना न जुमानता, त्यांनी चिकाटीने प्रयत्न केले आणि यश मिळवले.


The economic forecast predicts a period of growth.

आर्थिक अंदाजानुसार वाढीचा कालावधी दर्शविला आहे.


The intricate details of the project were meticulously planned.

प्रकल्पाचे गुंतागुंतीचे तपशील अत्यंत विचारपूर्वक योजनाबद्ध केले होते.


The philosophical debate centered on the nature of reality.

तत्त्वज्ञानाचा वाद वास्तवाच्या स्वरूपावर केंद्रित होता.


The implications of the new law are far-reaching and complex.

नवीन कायद्याचे परिणाम दूरगामी आणि गुंतागुंतीचे आहेत.


The company's strategic decisions significantly impacted its market share.

कंपनीच्या धोरणात्मक निर्णयांचा तिच्या बाजारपेठेतील हिस्स्यावर महत्त्वपूर्ण परिणाम झाला.


The scientific community is actively researching the potential of artificial intelligence.

वैज्ञानिक समुदाय कृत्रिम बुद्धिमत्तेच्या संभाव्यतेवर सक्रियपणे संशोधन करत आहे.


The intricate interplay of factors contributed to the crisis.

घटकांच्या गुंतागुंतीच्या आंतरक्रियेमुळे संकटात भर पडली.


The nuanced understanding of the subject matter is crucial for effective communication.

विषयाचे सूक्ष्म ज्ञान प्रभावी संवादासाठी आवश्यक आहे.


The hardware first checks the TLB; upon a hit, the physical address is formed directly without accessing the page table at all, as before.

सॉफ्टवेअर सुरुवातीला टीएलबी तपासते; हिट झाल्यावर, भौतिक पत्ता जसा पूर्वी होता, त्याचप्रमाणे पेज टेबलमध्ये प्रवेश न करता तयार केला जातो.


In some cases, a deeper tree is possible (and indeed, needed).

काही प्रकरणांमध्ये, एक सखोल ट्री शक्य आहे (आणि आवश्यक आहे).


Let’s take a simple example and use it to show why a deeper multi- level table can be useful.

चला एक सोपे उदाहरण घेऊया आणि मल्टी-लेव्हल टेबल अधिक उपयुक्त का असू शकते हे दर्शविण्यासाठी त्याचा वापर करूया.


Remember our goal in constructing a multi-level page table: to make each piece of the page table fit within a single page.

मल्टी-लेव्हल पेज टेबल तयार करताना आपले ध्येय लक्षात ठेवा: पेज टेबलचा प्रत्येक भाग एकाच पृष्ठात बसवणे.


To remedy this problem, we build a further level of the tree, by splitting the page directory itself into multiple pages, and then adding another page directory on top of that, to point to the pages of the page directory.

या समस्येचे निराकरण करण्यासाठी, आम्ही ट्रीचे आणखी एक स्तर तयार करतो, पेज डिरेक्टरी स्वतःच अनेक पृष्ठांमध्ये विभाजित करून, आणि नंतर त्या शीर्षस्थानी आणखी एक पेज डिरेक्टरी जोडतो, जेणेकरून पेज डिरेक्टरीच्या पृष्ठांवर निर्देशित करता येईल.


Now, when indexing the upper-level page directory, we use the very top bits of the virtual address (PD Index 0 in the diagram); this index can be used to fetch the page-directory entry from the top-level page directory.

आता, उच्च-स्तरीय पेज डिरेक्टरी इंडेक्सिंग करताना, आम्ही व्हर्च्युअल पत्त्याचे सर्वात वरचे बिट्स वापरतो (आकृतीमधील PD इंडेक्स 0); या इंडेक्सचा वापर टॉप-लेव्हल पेज डिरेक्टरीमधून पेज-डिरेक्टरी एंट्री मिळवण्यासाठी केला जाऊ शकतो.


If valid, the second level of the page directory is consulted by combining the physical frame number from the top-level PDE and the next part of the VPN (PD Index 1).

जर ते वैध असेल, तर टॉप-लेव्हल PDE मधील फिजिकल फ्रेम नंबर आणि VPN चा पुढील भाग (PD इंडेक्स 1) एकत्र करून पेज डिरेक्टरीच्या दुसऱ्या स्तराचा सल्ला घेतला जातो.


Finally, if valid, the PTE address can be formed by using the page-table index combined with the address from the second-level PDE.

शेवटी, जर ते वैध असेल, तर पेज-टेबल इंडेक्स आणि दुसऱ्या स्तरातील PDE मधील पत्ता वापरून PTE पत्ता तयार केला जाऊ शकतो.


Whew! That’s a lot of work. And all just to look something up in a multi-level table.

अरेच्चा! हे खूप काम आहे. आणि हे सर्व मल्टी-लेव्हल टेबलमध्ये काहीतरी शोधण्यासाठी.


The figure shows what happens in hardware (assuming a hardware-managed TLB) upon every memory reference.

आकृती हार्डवेअरमध्ये काय होते हे दर्शवते (हार्डवेअर-व्यवस्थापित टीएलबी गृहीत धरून) प्रत्येक मेमरी संदर्भावर.


Only upon a TLB miss does the hardware need to perform the full multi-level lookup.

फक्त टीएलबी गहाळ झाल्यावरच हार्डवेअरला संपूर्ण मल्टी-लेव्हल लुकअप करण्याची आवश्यकता असते.


On this path, you can see the cost of our traditional two-level page table: two additional memory accesses to look up a valid translation.

या मार्गावर, आपण आपल्या पारंपारिक दोन-स्तरीय पेज टेबलची किंमत पाहू शकता: वैध भाषांतर शोधण्यासाठी दोन अतिरिक्त मेमरी ऍक्सेस.


Here, instead of having many page tables (one per process of the system), we keep a single page table that has an entry for each physical page of the system.

येथे, अनेक पेज टेबल (सिस्टममधील प्रत्येक प्रक्रियेसाठी एक) ठेवण्याऐवजी, आम्ही एकच पेज टेबल ठेवतो ज्यामध्ये सिस्टमच्या प्रत्येक फिजिकल पेजसाठी एक एंट्री असते.


Finding the correct entry is now a matter of searching through this data structure.

योग्य एंट्री शोधणे आता या डेटा स्ट्रक्चरमध्ये शोधण्याचा विषय आहे.


Multi-level and inverted page tables are just two examples of the many things one could do.

मल्टी-लेव्हल आणि इन्व्हर्टेड पेज टेबल हे अनेक गोष्टींपैकी फक्त दोन उदाहरणे आहेत जी कोणीही करू शकेल.


Thus far, we have assumed that page tables reside in kernel-owned physical memory.

आतापर्यंत, आम्ही असे मानले आहे की पेज टेबल कर्नल-मालकीच्या फिजिकल मेमरीमध्ये असतात.


Even with our many tricks to reduce the size of page tables, it is still possible, however, that they may be too big to fit into memory all at once.

पेज टेबल्सचा आकार कमी करण्यासाठी आम्ही अनेक युक्त्या वापरल्या तरीही, ते एकाच वेळी मेमरीमध्ये बसण्यासाठी खूप मोठे असू शकतात.


Thus, some systems place such page tables in kernel virtual memory, thereby allowing the system to swap some of these page tables to disk when memory pressure gets a little tight.

म्हणून, काही सिस्टम असे पेज टेबल कर्नल व्हर्च्युअल मेमरीमध्ये ठेवतात, ज्यामुळे मेमरीचा दाब थोडा कमी झाल्यावर सिस्टम यापैकी काही पेज टेबल डिस्कवर स्वॅप करू शकते.


We have now seen how real page tables are built; not necessarily just as linear arrays but as more complex data structures.

आम्ही आता पाहिले आहे की वास्तविक पेज टेबल कसे तयार केले जातात; आवश्यक नाही की ते फक्त रेखीय ॲरे म्हणून, अधिक जटिल डेटा स्ट्रक्चर्स म्हणून.


The trade-offs such tables present are in time and space – the bigger the table, the faster a TLB miss can be serviced, as well as the converse – and thus the right choice of structure depends strongly on the constraints of the given environment.

अशा टेबल्सचे फायदे वेळ आणि जागेत आहेत - टेबल जितके मोठे असेल तितके टीएलबी गहाळ जलद सोडवले जाऊ शकते, तसेच याउलट - आणि म्हणूनच संरचनेची योग्य निवड दिलेल्या वातावरणाच्या बंधनांवर मोठ्या प्रमाणात अवलंबून असते.


The principle of locality suggests that programs often access data and instructions in a clustered manner.

स्थानीयतेचे तत्त्व असे सूचित करते की प्रोग्राम अनेकदा डेटा आणि सूचना एकत्रित पद्धतीने ऍक्सेस करतात.


LRU (Least Recently Used) is a page replacement algorithm that replaces the page that hasn't been used for the longest time.

LRU (सर्वात कमी वापरलेले) हे एक पृष्ठ पुनर्स्थापना अल्गोरिदम आहे जे सर्वात जास्त वेळेसाठी वापरले न गेलेले पृष्ठ बदलते.


The operating system uses historical information to make decisions about which pages to keep in memory.

ऑपरेटिंग सिस्टम मेमरीमध्ये कोणती पृष्ठे ठेवायची याबद्दल निर्णय घेण्यासाठी ऐतिहासिक माहिती वापरते.


Programs exhibit two types of locality: spatial and temporal.

प्रोग्राम दोन प्रकारचे स्थानिकता दर्शवतात: स्थानिक आणि तात्कालिक.


The 80-20 workload demonstrates that LRU performs better than random page replacement.

80-20 वर्कलोड दर्शवितो की LRU यादृच्छिक पृष्ठ पुनर्स्थापनेपेक्षा चांगले कार्य करते.


In a looping-sequential workload, LRU and FIFO algorithms can perform poorly.

लूपिंग-अनुक्रमिक वर्कलोडमध्ये, LRU आणि FIFO अल्गोरिदम खराब प्रदर्शन करू शकतात.


Implementing LRU perfectly requires significant overhead.

LRU ची परिपूर्ण अंमलबजावणी करण्यासाठी महत्त्वपूर्ण ओव्हरहेड आवश्यक आहे.


Approximating LRU is a more feasible approach.

LRU चे अनुमान करणे अधिक व्यवहार्य दृष्टीकोन आहे.


The clock algorithm is a method to approximate LRU.

घड्याळ अल्गोरिदम LRU चे अनुमानित करण्याची एक पद्धत आहे.


The use bit is set by hardware when a page is accessed.

जेव्हा एखाद्या पृष्ठावर प्रवेश केला जातो तेव्हा हार्डवेअरद्वारे वापर बिट सेट केला जातो.


Dirty pages need to 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 improve performance by bringing pages into memory before they are needed.

प्रीफेचिंग आवश्यकतेपूर्वी पृष्ठे मेमरीमध्ये आणून कार्यक्षमतेत सुधारणा करू शकते.


Clustering writes improves disk efficiency.

क्लस्टरिंग लेखन डिस्कची कार्यक्षमता सुधारते.


Thrashing occurs when the system is oversubscribed.

जेव्हा सिस्टम ओव्हरसबस्क्राइब होते तेव्हा थ्रॅशिंग होते.


Admission control is a strategy to cope with thrashing.

प्रवेश नियंत्रण हे थ्रॅशिंगचा सामना करण्याची एक रणनीती आहे.


Modern systems use scan-resistant algorithms.

आधुनिक प्रणाली स्कॅन-प्रतिरोधक अल्गोरिदम वापरतात.


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

VAX/VMS ऑपरेटिंग सिस्टम एक चांगल्या प्रकारे डिझाइन केलेले व्हर्च्युअल मेमरी व्यवस्थापक आहे.


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

अतिPageing वरचा सर्वोत्तम उपाय म्हणजे अधिक मेमरी खरेदी करणे.


The operating system manages the computer's resources.

ऑपरेटिंग सिस्टम संगणकाचे संसाधने व्यवस्थापित करते.


Virtual memory allows the system to use more memory than physically available.

व्हर्च्युअल मेमरी प्रणालीला उपलब्ध असलेल्या भौतिक मेमरीपेक्षा जास्त मेमरी वापरण्याची परवानगी देते.


The kernel is the core of the operating system.

कर्नल हे ऑपरेटिंग सिस्टमचे केंद्रस्थान आहे.


Page tables are used to translate virtual addresses to physical addresses.

पेज टेबलचा वापर व्हर्च्युअल ऍड्रेसचे फिजिकल ऍड्रेसमध्ये भाषांतर करण्यासाठी केला जातो.


Context switching is the process of switching between different processes.

संदर्भ स्विचिंग ही विविध प्रक्रियांच्या दरम्यान स्विच करण्याची प्रक्रिया आहे.


सीपीयू सूचना कार्यान्वित करतो.


File systems organize data on storage devices.

फाईल सिस्टम स्टोरेज उपकरणांवर डेटा व्यवस्थित ठेवतात.


Multitasking allows a computer to run multiple programs concurrently.

मल्टिटास्किंगमुळे संगणकाला एकाच वेळी अनेक प्रोग्राम चालवता येतात.


The operating system provides an interface for users to interact with the hardware.

ऑपरेटिंग सिस्टम वापरकर्त्यांना हार्डवेअरशी संवाद साधण्यासाठी एक इंटरफेस प्रदान करते.


Memory management is crucial for efficient system performance.

कार्यक्षम प्रणाली कार्यक्षमतेसाठी मेमरी व्यवस्थापन आवश्यक आहे.


The VAX/VMS operating system was known for its advanced features.

VAX/VMS ऑपरेटिंग सिस्टम त्याच्या प्रगत वैशिष्ट्यांसाठी ओळखले जात होते.


Understanding how the OS works is key to troubleshooting.

ऑपरेटिंग सिस्टम कसे कार्य करते हे समजून घेणे हे समस्या निवारणासाठी महत्त्वाचे आहे.


The TLB (Translation Lookaside Buffer) speeds up address translation.

टीएलबी (भाषांतर लुकअसाइड बफर) ऍड्रेस भाषांतरण (address translation) जलद करते.


Demand zeroing is a lazy optimization technique.

डिमांड झिरोइंग ही एक आळशी ऑप्टिमायझेशन (optimization) तंत्र आहे.


Copy-on-write is used to optimize memory usage.

मेमरीचा वापर अनुकूलित करण्यासाठी कॉपी-ऑन-राईटचा वापर केला जातो.


The kernel manages the system's resources efficiently.

कर्नल प्रणालीच्या संसाधनांचे कार्यक्षमतेने व्यवस्थापन करते.


The VMS designers faced challenges due to the hardware limitations.

व्हीएमएस (VMS) डिझायनर्सना हार्डवेअरच्या मर्यादांमुळे आव्हानांचा सामना करावा लागला.


The segmented FIFO replacement policy was implemented to address memory hogging.

मेमरी हॉगिंग (memory hogging) सोडवण्यासाठी सेगमेंटेड फिफो (FIFO) रिप्लेसमेंट पॉलिसी लागू करण्यात आली.


The OS must handle various hardware architectures effectively.

ऑपरेटिंग सिस्टमने विविध हार्डवेअर आर्किटेक्चर प्रभावीपणे हाताळणे आवश्यक आहे.


The study of VMS provides insights into real-world address space construction.

व्हीएमएसच्या अभ्यासातून वास्तविक-जगातील ऍड्रेस स्पेस (address space) निर्मितीची माहिती मिळते.


मूलभूत धोरणे काही प्रमाणात स्पष्ट आहेत.


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?

तर, एकाच वेळी अनेक क्रिया म्हणजे काय,अहो अद्भुत प्राध्यापक?


कल्पना करा आपल्याकडे एक पीच आहे.


टी. एस. एलियट वाचले आहे का?


This has nothing to do with that – I just like peaches.

याचा त्याच्याशी काहीही संबंध नाही – मला फक्त पीच आवडतात.


Let’s say we did it this way: each eater first identifies a peach visually, and then tries to grab it and eat it.

समजा, आपण हे या पद्धतीने केले: प्रत्येक खाणारा प्रथम पीचला दृश्यमानपणे ओळखतो, आणि नंतर तो पकडण्याचा आणि खाण्याचा प्रयत्न करतो.


Well, probably develop a better way of going about this.

बरं, कदाचित हे करण्याचा एक चांगला मार्ग विकसित करा.


तुम्ही खरोखरच प्रभावित करत आहात.


In fact, you just told us everything we need to know about concurrency!

खरं तर, तुम्ही आत्ताच आम्हाला एकाच वेळी अनेक क्रियांबद्दल (concurrency) माहित असणे आवश्यक असलेली प्रत्येक गोष्ट सांगितली!


नक्कीच. माझी माफी!


Well, as it turns out, there are certain types of programs that we call multi-threaded applications.

बरं, असं दिसतं की, काही प्रकारचे प्रोग्राम आहेत ज्यांना आपण मल्टी-थ्रेडेड ऍप्लिकेशन्स म्हणतो.


If we don’t coordinate access to memory between threads, the program won’t work as expected.

जर आपण थ्रेड्समध्ये मेमरीमध्ये प्रवेश समन्वयित केला नाही, तर प्रोग्राम अपेक्षेप्रमाणे कार्य करणार नाही.


The OS must support multi-threaded applications with primitives such as locks and condition variables.

OS ने मल्टी-थ्रेडेड ऍप्लिकेशन्सना लॉक आणि कंडिशन व्हेरिएबल्स सारख्या आदिम गोष्टींसह समर्थन दिले पाहिजे.


The operating system manages computer hardware and software resources.

ऑपरेटिंग सिस्टम संगणकातील हार्डवेअर आणि सॉफ्टवेअर संसाधनांचे व्यवस्थापन करते.


Concurrency allows multiple tasks to appear to run simultaneously.

एकाच वेळी अनेक कार्ये चालवण्याची क्षमता समवर्तीतेमुळे (कन्करन्सी) मिळते.


Threads share the same address space, making communication efficient.

थ्रेड्स समान ऍड्रेस स्पेस वापरतात, ज्यामुळे संवाद कार्यक्षम होतो.


Synchronization primitives are essential for managing shared resources.

सामायिक संसाधनांचे व्यवस्थापन करण्यासाठी सिंक्रोनायझेशन आदिम घटक आवश्यक आहेत.


Mutexes provide mutual exclusion to prevent race conditions.

रेस कंडिशन (शर्यतीची स्थिती) टाळण्यासाठी म्युटेक्स परस्पर अपवर्जन (म्युच्युअल एक्सक्लूजन) प्रदान करतात.


Condition variables enable threads to wait for specific conditions.

कंडिशन व्हेरिएबल्स थ्रेड्सना विशिष्ट परिस्थितीची प्रतीक्षा करण्यास सक्षम करतात.


The program uses locks to protect critical sections of code.

हा प्रोग्राम कोडच्या गंभीर भागांचे संरक्षण करण्यासाठी लॉक्सचा वापर करतो.


Understanding thread APIs is crucial for multi-threaded programming.

मल्टी-थ्रेडेड प्रोग्रामिंगसाठी थ्रेड एपीआय समजून घेणे आवश्यक आहे.


The book provides a detailed explanation of operating system concepts.

हे पुस्तक ऑपरेटिंग सिस्टमच्या संकल्पनांचे विस्तृत स्पष्टीकरण देते.


Atomic operations ensure that a series of actions are performed as a single unit.

अणू (ॲटॉमिक) ऑपरेशन्स हे सुनिश्चित करतात की अनेक क्रिया एकाच युनिटमध्ये केल्या जातील.


The news reported a significant increase in the stock market.

बाजारपेठेत मोठी वाढ झाल्याचे वृत्त आहे.


She decided to go for a walk in the park.

तिने उद्यानात फिरायला जाण्याचा निर्णय घेतला.


The company announced a new product launch.

कंपनीने नवीन उत्पादन सुरू करण्याची घोषणा केली.


कृपया, मला मीठ द्याल का?


The weather forecast predicts rain for tomorrow.

हवामान खात्याने उद्या पावसाचा अंदाज वर्तवला आहे.


He is working hard to achieve his goals.

तो आपली ध्येये साध्य करण्यासाठी खूप मेहनत करत आहे.


The team celebrated their victory with great enthusiasm.

संघानं मोठ्या उत्साहात विजय साजरा केला.


The government is implementing new policies to boost the economy.

अर्थव्यवस्थेला चालना देण्यासाठी सरकार नवीन धोरणे राबवत आहे.


The artist's paintings were displayed in a prestigious gallery.

कलाकाराची चित्रे एका प्रतिष्ठित गॅलरीत प्रदर्शित करण्यात आली.


The complex algorithm requires significant computational resources.

या जटिल अल्गोरिदमला महत्त्वपूर्ण संगणकीय संसाधनांची आवश्यकता आहे.


कंडीशन व्हेरिएबलसाठी लॉक आवश्यक आहे.


The thread goes to sleep using pthread_cond_wait().


The lock should be held when calling these routines.

या रूटीनला कॉल करताना लॉक धरून ठेवले पाहिजे.


The initialized variable is checked in a while loop.

सुरुवात केलेली व्हेरिएबल व्हाईल लूपमध्ये तपासली जाते.


सिग्नल कॉल फक्त एक अट घेतो.


Avoid using a simple flag to signal between threads.

थ्रेड्समध्ये सिग्नल देण्यासाठी साध्या फ्लॅगचा वापर करणे टाळा.


Condition variables are essential for multi-threaded programming.

मल्टी-थ्रेडेड प्रोग्रामिंगसाठी कंडिशन व्हेरिएबल्स आवश्यक आहेत.


-pthread फ्लॅग वापरून संकलित करा.


त्रुटी टाळण्यासाठी कोड सोपा ठेवा.


Initialize locks and condition variables properly.

लॉक आणि कंडिशन व्हेरिएबल्स योग्यरित्या सुरू करा.


Check return codes to avoid unexpected behavior.

अपेक्षित वर्तन टाळण्यासाठी रिटर्न कोड तपासा.


प्रत्येक थ्रेडचा स्वतःचा स्टॅक असतो.


Use manual pages for detailed information.

विस्तृत माहितीसाठी मॅन्युअल पेजेस वापरा.


लॉक शेड्यूलिंगवर नियंत्रण ठेवतात.


The programmer can guarantee that no more than a single thread can ever be active within that code.

प्रोग्रामर हमी देऊ शकतो की त्या कोडमध्ये एकापेक्षा जास्त थ्रेड कधीही सक्रिय होऊ शकत नाहीत.


POSIX लॉकसाठी mutex हे नाव वापरते.


Using different locks can increase concurrency.

वेगवेगळे लॉक वापरल्याने एकाच वेळी अधिक थ्रेड्स लॉक केलेल्या कोडमध्ये असू शकतात.


Test-and-set instruction is used for building locks.

लॉक तयार करण्यासाठी टेस्ट-अँड-सेट सूचना वापरली जाते.


स्पिन-वेटिंगमुळे CPU सायकल वाया जातात.


Disabling interrupts is not suitable for multiprocessors.

मल्टिप्रोसेसरसाठी इंटरप्ट अक्षम करणे योग्य नाही.


हा कोड एक साधे स्पिन लॉक वापरतो.


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 are not fair and may lead to starvation.

स्पिन लॉक्स निष्पक्ष नाहीत आणि उपासमारीस कारणीभूत होऊ शकतात.


On multiple CPUs, spin locks work reasonably well.

एकाधिक CPU वर, स्पिन लॉक्स चांगले काम करतात.


The basic idea is for compare-and-swap to test whether the value is equal to expected.

मूलभूत कल्पना अशी आहे की तुलना-आणि-स्वॅप हे तपासण्यासाठी आहे की मूल्य अपेक्षित मूल्याच्या समान आहे की नाही.


With the compare-and-swap instruction, we can build a lock.

तुलना-आणि-स्वॅप सूचनेद्वारे, आम्ही लॉक तयार करू शकतो.


Some platforms provide a pair of instructions that work in concert.

काही प्लॅटफॉर्म सूचनांची एक जोडी देतात जी एकत्र काम करते.


The key difference comes with the store-conditional.

मुख्य फरक स्टोअर-कंडिशनलसह येतो.


The lock() code is the only interesting piece.

लॉक() कोड हा एकमेव मनोरंजक भाग आहे.


Once a thread is assigned its ticket value, it will be scheduled.

एका थ्रेडला त्याचे तिकीट मूल्य नियुक्त झाल्यावर, त्याचे वेळापत्रक तयार केले जाईल.


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?

आम्ही असे लॉक कसे विकसित करू शकतो जे विनाकारण वेळ वाया घालवत नाही?


Our first try is a simple and friendly approach.

आमचा पहिला प्रयत्न एक सोपा आणि मैत्रीपूर्ण दृष्टीकोन आहे.


Because a thread can be in one of three states.

कारण एक थ्रेड तीनपैकी कोणत्याही स्थितीत असू शकतो.


हा दृष्टीकोन अजूनही खर्चिक आहे.


We must explicitly exert some control over who gets to acquire the lock.

ज्यांना लॉक मिळवायचे आहे त्यांच्यावर आपल्याला स्पष्टपणे काही नियंत्रण ठेवावे लागेल.


Solaris solves this problem by adding a third system call.

सोलारिस या समस्येचे निराकरण तिसरे सिस्टम कॉल जोडून करते.


The code uses a hash table for efficient data storage.

हा कोड डेटा संचयनासाठी कार्यक्षमतेसाठी हॅश टेबल वापरतो.


Locks are essential for managing concurrent access to shared resources.

सामायिक संसाधनांवर एकाच वेळी प्रवेश व्यवस्थापित करण्यासाठी लॉक्स आवश्यक आहेत.


The operating system manages the execution of multiple threads.

ऑपरेटिंग सिस्टम अनेक थ्रेड्सच्या अंमलबजावणीचे व्यवस्थापन करते.


Condition variables help synchronize threads waiting for a specific condition.

कंडिशन व्हेरिएबल्स विशिष्ट स्थितीची प्रतीक्षा करत असलेल्या थ्रेड्सना समक्रमित (synchronize) करण्यास मदत करतात.


Avoid premature optimization; focus on correctness first.

अवेळी अनुकूलन टाळा; प्रथम अचूकतेवर लक्ष केंद्रित करा.


The producer-consumer problem is a classic concurrency challenge.

उत्पादक-ग्राहक समस्या ही एक उत्कृष्ट समवर्ती (concurrent) आव्हान आहे.


A bounded buffer is used to store data between producers and consumers.

उत्पादक आणि ग्राहकांमध्ये डेटा संग्रहित करण्यासाठी मर्यादित बफर वापरला जातो.


The program uses mutexes to protect shared data.

प्रोग्राम सामायिक डेटाचे संरक्षण करण्यासाठी म्युटेक्सचा वापर करतो.


The child thread signals the parent thread after completing its task.

कार्य पूर्ण झाल्यावर, बाल थ्रेड (child thread) पालक थ्रेडला सिग्नल देतो.


हॅश टेबल जलद लुकअप (lookups) प्रदान करते.


The parent thread waits for the child thread to finish.

पालक थ्रेड बाल थ्रेडच्या समाप्तीची प्रतीक्षा करतो.


एकाच वेळी अनेक कामे (Concurrency) कार्यक्षमतेत सुधारणा करू शकते.


हा कोड थ्रेड-सुरक्षित (thread-safe) होण्यासाठी डिझाइन केला आहे.


प्रोग्राममध्ये लिंक्ड लिस्टचा वापर केला आहे.


The system uses condition variables for synchronization.

सिंक्रोनाइझेशनसाठी सिस्टम कंडिशन व्हेरिएबल्सचा वापर करते.


The consumer retrieves data from the buffer.

ग्राहक बफरमधून डेटा पुनर्प्राप्त करतो.


The producer inserts data into the buffer.

उत्पादक बफरमध्ये डेटा इन्सर्ट करतो.


ही एक गुंतागुंतीची समस्या आहे.


सॉफ्टवेअर ऑप्टिमाइझ करणे आवश्यक आहे.


ॲप्लिकेशन मल्टी-थ्रेडेड आहे.


The code simply acquires a lock in the insert routine upon entry, and releases it upon exit.

कोड फक्त एंट्रीवर इन्सर्ट रुटीनमध्ये लॉक घेतो आणि बाहेर पडल्यावर ते सोडतो.


This concurrent counter is simple and works correctly.

हे समवर्ती काउंटर सोपे आहे आणि ते योग्यरित्या कार्य करते.


Adding locks to a data structure to make it usable by threads makes the structure thread safe.

डेटा स्ट्रक्चरमध्ये लॉक जोडल्याने ते थ्रेड्सद्वारे वापरण्यायोग्य होते, ज्यामुळे रचना थ्रेड सुरक्षित होते.


The idea, introduced in recent research, is known as a sloppy counter.

अलीकडील संशोधनात सादर केलेली कल्पना म्हणजे एक ढिसाळ काउंटर.


If your data structure is too slow, you’ll have to do more than just add a single lock.

तुमचे डेटा स्ट्रक्चर खूप संथ असल्यास, तुम्हाला फक्त एक लॉक जोडण्यापेक्षा अधिक काहीतरी करावे लागेल.


The basic idea of sloppy counting is as follows.

ढिसाळ मोजणीची मूलभूत कल्पना खालीलप्रमाणे आहे.


When a thread running on a given core wishes to increment the counter, it increments its local counter.

जेव्हा एखादा थ्रेड दिलेल्या कोरवर चालत असतो आणि काउंटर वाढवू इच्छितो, तेव्हा तो त्याचा स्थानिक काउंटर वाढवतो.


Performance is excellent; the time taken to update the counter four million times on four processors is hardly higher than the time taken to update it one million times on one processor.

कार्यक्षमता उत्कृष्ट आहे; चार प्रोसेसरवर काउंटर चार दशलक्ष वेळा अपडेट करण्यासाठी लागणारा वेळ एका प्रोसेसरवर एक दशलक्ष वेळा अपडेट करण्यासाठी लागणाऱ्या वेळेपेक्षा फारसा जास्त नाही.


We next examine a more complicated structure, the linked list.

आम्ही पुढील गुंतागुंतीची रचना, लिंक्ड लिस्ट तपासू.


For simplicity, we’ll omit some of the obvious routines that such a list would have and just focus on concurrent insert.

सोप्या करण्यासाठी, आम्ही अशा सूचीमध्ये असलेल्या काही स्पष्ट नित्यक्रमांना वगळू आणि फक्त समवर्ती इन्सर्टवर लक्ष केंद्रित करू.


One small tricky issue arises if malloc() happens to fail.

जर malloc() अयशस्वी झाल्यास एक लहान, कठीण समस्या उद्भवते.


This kind of exceptional control flow has been shown to be quite error prone.

या प्रकारचा अपवादात्मक नियंत्रण प्रवाह खूप त्रुटी-प्रवण असल्याचे दर्शविले गेले आहे.


या प्रकरणात, उत्तर होय आहे.


Doing so again reduces the number of lock acquire/release points in the code, and thus decreases the chances of accidentally introducing bugs.

असे केल्याने कोडमधील लॉक मिळवण्याचे/सोडण्याचे बिंदू कमी होतात आणि त्यामुळे चुकून बग (bugs) येण्याची शक्यता कमी होते.


One technique that researchers have explored to enable more concurrency within a list is something called hand-over-hand locking.

सूचीमध्ये अधिक समवर्तीता सक्षम करण्यासाठी संशोधकांनी शोधलेली एक तंत्र म्हणजे हँड-ओव्हर-हँड लॉकिंग.


If the scheme you design adds a lot of overhead, the fact that it is more concurrent may not be important.

तुम्ही डिझाइन केलेली योजना खूप ओव्हरहेड (overhead) जोडत असेल, तर ती अधिक समवर्ती आहे हे महत्त्वाचे नसेल.


Simple schemes tend to work well, especially if they use costly routines rarely.

सोप्या योजना चांगल्या प्रकारे कार्य करतात, विशेषत: जर त्या क्वचितच खर्चिक नित्यक्रम वापरत असतील.


A general design tip, which is useful in concurrent code as well as elsewhere, is to be wary of control flow changes.

एक सामान्य डिझाइन टीप, जी समवर्ती कोडमध्ये तसेच इतरत्र उपयुक्त आहे, ती म्हणजे नियंत्रण प्रवाहातील बदलांपासून सावध राहणे.


For a queue, we’ll skip that approach, assuming you can figure it out.

एका रांगेसाठी, आम्ही तो दृष्टिकोन वगळू, असे गृहीत धरून की तुम्हाला ते समजेल.


Queues are commonly used in multi-threaded applications.

रांगा सामान्यतः मल्टी-थ्रेडेड ऍप्लिकेशन्समध्ये वापरल्या जातात.


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.

उत्पादक आणि उपभोक्ता दोघेही एकमेकांची वाट पाहत अडकले आहेत: एक क्लासिक डेडलॉक.


आता समजून घ्या; नंतर वापरा.


Reader-writer locks should be used with some caution.

वाचकांसाठी-लेखक लॉकचा वापर काही प्रमाणात सावधगिरीने केला पाहिजे.


The problem is famous because it is fun and somewhat intellectually interesting.

ही समस्या प्रसिद्ध आहे कारण ती मजेदार आहे आणि काही प्रमाणात बौद्धिकदृष्ट्या मनोरंजक आहे.


In order to eat, a philosopher needs two forks.

खाण्यासाठी, एका तत्त्ववेत्त्याला दोन कांटे (forks) आवश्यक आहेत.


The key challenge, then, is to write the routines getforks() and putforks() such that there is no deadlock.

मग, मुख्य आव्हान म्हणजे getforks() आणि putforks() रूटीन लिहिणे, जेणेकरून कोणताही डेडलॉक होणार नाही.


The intuition behind this (broken) solution is as follows.

या (त्रुटीपूर्ण) समाधानामागची अंतर्दृष्टी खालीलप्रमाणे आहे.


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.

जर प्रत्येक तत्त्ववेत्ता त्यांच्या उजव्या बाजूचा काटा पकडण्यापूर्वी त्यांच्या डाव्या बाजूचा काटा पकडतो, तर प्रत्येकजण अडकून पडेल.


प्रतीक्षेचे चक्र तुटलेले आहे.


Think through the ramifications of this solution, and convince yourself that it works.

या समाधानाचे परिणाम विचारात घ्या आणि ते कार्य करते हे स्वतःला पटवून द्या.


We use just one lock and one condition variable, plus a state variable to track the value of the semaphore.

आम्ही फक्त एक लॉक आणि एक अट व्हेरिएबल वापरतो, तसेच सेमाफोरचे मूल्य ट्रॅक करण्यासाठी एक स्टेट व्हेरिएबल वापरतो.


Semaphores are a powerful and flexible primitive for writing concurrent programs.

सेमाफोर हे समवर्ती (concurrent) प्रोग्राम लिहिण्यासाठी एक शक्तिशाली आणि लवचिक आदिम (primitive) आहेत.


Some programmers use them exclusively, shunning locks and condition variables.

काही प्रोग्रामर त्यांचा अपवादात्मक वापर करतात, लॉक आणि अट व्हेरिएबल्सना टाळतात.


If you are interested in finding out more, there are many other materials you can reference.

तुम्हाला अधिक माहिती घेण्यात स्वारस्य असल्यास, तुम्ही अनेक इतर सामग्रीचा संदर्भ घेऊ शकता.


Concurrency bugs tend to come in a variety of common patterns.

समवर्ती (Concurrency) बग अनेक सामान्य नमुन्यांमध्ये येतात.


या गोष्टीचा विचार करा की हे कसे कार्य करते.


If the buffer is empty at that point, the consumer simply goes back to sleep.

जर त्यावेळी बफर रिकामा असेल, तर ग्राहक फक्त झोपायला परत जातो.


Thanks to Mesa semantics, a simple rule to remember with condition variables is to always use while loops.

मेसा अर्थशास्त्रामुळे, अट असलेल्या व्हेरिएबल्स लक्षात ठेवण्याचा एक सोपा नियम म्हणजे नेहमी व्हाईल लूप वापरा.


Sometimes you don’t have to re-check the condition, but it is always safe to do so; just do it and be happy.

कधीकधी तुम्हाला अट पुन्हा तपासण्याची गरज नसते, परंतु असे करणे नेहमीच सुरक्षित असते; फक्त ते करा आणि आनंदी राहा.


The problem occurs when two consumers run first.

समस्या तेव्हा उद्भवते जेव्हा दोन ग्राहक प्रथम चालतात.


Then, a producer runs, put a value in the buffer, wakes one of the consumers.

मग, एक उत्पादक चालतो, बफरमध्ये एक मूल्य ठेवतो, ग्राहकांपैकी एकाला जागे करतो.


The consumer then wakes by returning from wait(), re-checks the condition, and finding the buffer full, consumes the value.

ग्राहक नंतर प्रतीक्षा() मधून परत येऊन, अट पुन्हा तपासतो आणि बफर भरलेला आढळल्यास, मूल्य वापरतो.


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.

येथे उपाय पुन्हा एकदा लहान आहे: एकाऐवजी दोन अट व्हेरिएबल्स वापरा.


By doing so, the second problem above is avoided by design.

असे केल्याने, वरील दुसरी समस्या डिझाइननुसार टाळली जाते.


We now have a working producer/consumer solution, albeit not a fully general one.

आता आपल्याकडे एक कार्यरत उत्पादक/ग्राहक समाधान आहे, जरी ते पूर्णपणे सामान्य नाही.


The last change we make is to enable more concurrency and efficiency.

आम्ही केलेला शेवटचा बदल म्हणजे अधिक एकाच वेळी होणारे कार्य (concurrency) आणि कार्यक्षमतेस सक्षम करणे.


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.

मल्टी-थ्रेडेड प्रोग्राममध्ये अट तपासताना, व्हाईल लूप वापरणे नेहमीच योग्य असते.


Lampson and Redell call such a condition a covering condition.

लॅम्पसन आणि रेडेल अशा स्थितिला कव्हरिंग अट म्हणतात.


We have seen the introduction of another important synchronization primitive beyond locks: condition variables.

आम्ही लॉक्सच्या पलीकडे आणखी एक महत्त्वाचे सिंक्रोनायझेशन आदिम (primitive) ची ओळख पाहिली आहे: अट व्हेरिएबल्स.


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.

सेमाफोरचे सुरुवातीचे मूल्य त्याचे वर्तन निश्चित करते, सेमाफोरशी संवाद साधण्यासाठी इतर कोणतेही रूटीन कॉल करण्यापूर्वी, आपण ते प्रथम काही मूल्यावर सुरू करणे आवश्यक आहे.


आता आपण सेमाफोर वापरण्यास तयार आहोत.


The study focuses on four major and important open-source applications.

अभ्यासात चार प्रमुख आणि महत्त्वाच्या ओपन-सोर्स ऍप्लिकेशन्सवर लक्ष केंद्रित केले आहे.


Understanding these results can help you understand what types of problems actually occur in mature code bases.

या निकालांचा अर्थ समजून घेतल्यास, परिपक्व कोड बेसमध्ये नेमक्या कोणत्या प्रकारच्या समस्या येतात, हे समजून घेण्यास मदत होते.


Table 32.1 shows a summary of the bugs Lu and colleagues studied.

तक्ता ३२.१ मध्ये लू आणि त्यांच्या सहकाऱ्यांनी अभ्यासलेल्या बग्सचा संक्षिप्त आढावा दिला आहे.


From the table, you can see that there were 105 total bugs.

तक्त्यावरून दिसते की एकूण १०५ बग्स होते.


We now dive into these different classes of bugs a bit more deeply.

आता आपण या विविध प्रकारच्या बग्सचा अधिक सखोल अभ्यास करूया.


Non-deadlock bugs make up a majority of concurrency bugs.

नॉन-डेडलॉक बग्स हे बहुतेक समवर्ती (कन्करन्सी) बग्स बनवतात.


ते कसे उद्भवतात?


We now discuss the two major types of non-deadlock bugs.

आता आपण नॉन-डेडलॉक बग्सच्या दोन प्रमुख प्रकारांवर चर्चा करूया.


The first type of problem encountered is referred to as an atomicity violation.

पहिला प्रकारचा प्रॉब्लेम अणु-अखंडता उल्लंघन म्हणून ओळखला जातो.


Here is a simple example, found in MySQL.

येथे एक सोपे उदाहरण आहे, जे MySQL मध्ये आढळले.


Can you think of how to fix the code above?

तुम्ही वरील कोड कसा ठीक करायचा याचा विचार करू शकता का?


Another common type of non-deadlock bug found by Lu et al. is known as an order violation.

लू एट अल यांनी शोधलेला नॉन-डेडलॉक बगचा आणखी एक सामान्य प्रकार म्हणजे ऑर्डरचे उल्लंघन.


As you probably figured out, the code in Thread 2 seems to assume that the variable mThread has already been initialized.

तुम्ही कदाचित अंदाज लावला असेल की, थ्रेड २ मधील कोड असे गृहीत धरतो की mThread हे व्हेरिएबल आधीच सुरू झाले आहे.


The fix to this type of bug is generally to enforce ordering.

या प्रकारच्या बगला ठीक करण्यासाठी, सामान्यतः ऑर्डरिंग लागू करणे आवश्यक आहे.


When ordering matters between threads, condition variables (or semaphores) can come to the rescue.

जेव्हा थ्रेड्समध्ये ऑर्डरिंग महत्त्वाचे असते, तेव्हा कंडिशन व्हेरिएबल्स (किंवा सेमाफोर्स) मदतीला येतात.


A large fraction (97%) of non-deadlock bugs studied by Lu et al. are either atomicity or order violations.

लू एट अल यांनी अभ्यासलेल्या नॉन-डेडलॉक बग्सपैकी (९७%) एक मोठा भाग अणु-अखंडता किंवा ऑर्डर उल्लंघनाशी संबंधित आहे.


Beyond the concurrency bugs mentioned above, a classic problem that arises in many concurrent systems with complex locking protocols is known as deadlock.

वर नमूद केलेल्या समवर्ती बग्सव्यतिरिक्त, अनेक समवर्ती प्रणालींमध्ये, जटिल लॉकिंग प्रोटोकॉलसह उद्भवणारी एक क्लासिक समस्या म्हणजे डेडलॉक.


Deadlock occurs, for example, when a thread (say Thread 1) is holding a lock (L1) and waiting for another one (L2).

उदाहरणार्थ, डेडलॉक तेव्हा उद्भवतो जेव्हा एक थ्रेड (म्हणा थ्रेड १) एक लॉक (L1) धरून असतो आणि दुसऱ्या लॉकची (L2) वाट पाहत असतो.


How should we build systems to prevent, avoid, or at least detect and recover from deadlock?

डेडलॉकला प्रतिबंध, टाळण्यासाठी किंवा कमीतकमी शोधून त्यातून बाहेर पडण्यासाठी आपण सिस्टम कसे तयार करावे?


One reason is that in large code bases, complex dependencies arise between components.

याचे एक कारण म्हणजे मोठ्या कोड बेसमध्ये, घटकांमध्ये जटिल अवलंबित्व निर्माण होते.


The paper ushered in the era of large-scale data processing.

या पेपरने मोठ्या प्रमाणावर डेटा प्रोसेसिंगच्या युगाची सुरुवात केली.


Herlihy’s work pioneers the ideas behind wait-free approaches.

हेर्लिही यांचे कार्य प्रतीक्षा-मुक्त दृष्टिकोन (wait-free approaches) च्या कल्पनांचे प्रणेते आहे.


हे पूर्णपणे सत्य नाही.


This style, known as event-based concurrency, has become popular.

इव्हेंट-आधारित समवर्तीता (event-based concurrency) म्हणून ओळखली जाणारी ही शैली लोकप्रिय झाली आहे.


The problem that event-based concurrency addresses is two-fold.

इव्हेंट-आधारित समवर्तीता ज्या समस्येचे निराकरण करते ती दुहेरी आहे.


The basic approach we’ll use is called event-based concurrency.

आपण वापरत असलेला मूलभूत दृष्टिकोन इव्हेंट-आधारित समवर्तीता (event-based concurrency) आहे.


The main loop simply waits for something to do.

मुख्य लूप फक्त काहीतरी होण्याची वाट पाहतो.


Importantly, when a handler processes an event, it is the only activity taking place.

महत्त्वाचे म्हणजे, जेव्हा एखादा हँडलर (handler) इव्हेंटवर प्रक्रिया करतो, तेव्हा ती एकमेव क्रिया असते.


This explicit control over scheduling is one of the fundamental advantages.

शेड्युलिंगवरील हे स्पष्ट नियंत्रण मूलभूत फायद्यांपैकी एक आहे.


How can we build a concurrent server without using threads?

थ्रेड्सचा वापर न करता आपण समवर्ती सर्व्हर (concurrent server) कसे तयार करू शकतो?


In most systems, a basic API is available.

बहुतेक प्रणालींमध्ये, एक मूलभूत API उपलब्ध आहे.


These system calls let you do exactly that.

हे सिस्टम कॉल तुम्हाला नेमके तेच करू देतात.


The manual page describes the API in this manner.

मॅन्युअल पृष्ठ API चे वर्णन या पद्धतीने करते.


First, note that it lets you check whether descriptors can be read from as well as written to.

पहिले म्हणजे, हे आपल्याला तपासण्याची परवानगी देते की डिस्क्रिप्टर वाचले जाऊ शकतात तसेच लिहिले जाऊ शकतात.


One common usage here is to set the timeout to NULL.

येथे एक सामान्य वापर म्हणजे टाइमआउट NULL वर सेट करणे.