Permission is granted to copy, distribute and/or modify this document.

આ દસ્તાવેજની નકલ, વિતરણ અને/અથવા તેમાં ફેરફાર કરવાની પરવાનગી આપવામાં આવી છે.


This document is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

આ દસ્તાવેજ ક્રિએટિવ કોમન્સ એટ્રિબ્યુશન-નોનકોમર્શિયલ-શેરઅલાઈક 4.0 ઇન્ટરનેશનલ (CC BY-NC-SA 4.0) હેઠળ લાઇસન્સ પ્રાપ્ત છે.


The document covers topics related to concurrent programming.

આ દસ્તાવેજ સમવર્તી પ્રોગ્રામિંગ સંબંધિત વિષયોને આવરી લે છે.


Hello World! is a classic introductory program.

હેલો વર્લ્ડ! એક ક્લાસિક પ્રારંભિક પ્રોગ્રામ છે.


Concurrent programming presents several challenges.

સમવર્તી પ્રોગ્રામિંગ અનેક પડકારો રજૂ કરે છે.


The Harmony Virtual Machine is discussed in detail.

હાર્મની વર્ચ્યુઅલ મશીનની વિગતવાર ચર્ચા કરવામાં આવી છે.


Critical sections are essential for managing shared resources.

શેર્ડ સંસાધનોનું સંચાલન કરવા માટે ક્રિટિકલ વિભાગો આવશ્યક છે.


Understanding Harmony methods and pointers is crucial.

હાર્મની પદ્ધતિઓ અને પોઇન્ટર્સને સમજવું મહત્વપૂર્ણ છે.


Specifying a lock is a fundamental concept.

લોકનો ઉલ્લેખ કરવો એ એક મૂળભૂત ખ્યાલ છે.


Various lock implementations are explored.

વિવિધ લોક અમલીકરણોનું અન્વેષણ કરવામાં આવે છે.


Concurrent data structures are a key topic.

સમવર્તી ડેટા સ્ટ્રક્ચર્સ એક મુખ્ય વિષય છે.


Testing and debugging concurrent programs is vital.

સમવર્તી પ્રોગ્રામ્સનું પરીક્ષણ અને ડિબગીંગ મહત્વપૂર્ણ છે.


Conditional waiting mechanisms are discussed.

શરતી રાહ જોવાની પદ્ધતિઓની ચર્ચા કરવામાં આવી છે.


Reader/Writer locks and bounded buffers are examples.

રીડર/રાઇટર લોક અને બાઉન્ડેડ બફર ઉદાહરણો છે.


Condition variables are a powerful synchronization tool.

શરત ચલો એક શક્તિશાળી સુમેળ સાધન છે.


Starvation and deadlock are potential problems.

ભૂખમરો અને ડેડલોક સંભવિત સમસ્યાઓ છે.


Actors and message passing offer an alternative approach.

એક્ટર્સ અને મેસેજ પાસિંગ એક વૈકલ્પિક અભિગમ પ્રદાન કરે છે.


Barrier synchronization is used for coordinating threads.

થ્રેડોને સંકલન કરવા માટે બેરિયર સિંક્રનાઇઝેશનનો ઉપયોગ થાય છે.


Advanced barrier synchronization techniques are explored.

અદ્યતન બેરિયર સિંક્રનાઇઝેશન તકનીકોનું અન્વેષણ કરવામાં આવે છે.


The document provides an example of a concurrent file service.

આ દસ્તાવેજ સમવર્તી ફાઇલ સેવાનું ઉદાહરણ પૂરું પાડે છે.


Alternating Bit Protocol is a method for reliable data transfer.

વૈકલ્પિક બિટ પ્રોટોકોલ એ વિશ્વસનીય ડેટા ટ્રાન્સફર માટેની એક પદ્ધતિ છે.


The test code verifies the functionality of the protocol.

પરીક્ષણ કોડ પ્રોટોકોલની કાર્યક્ષમતાને ચકાસે છે.


A leader election protocol is implemented on a ring structure.

એક નેતાની ચૂંટણી પ્રોટોકોલ રિંગ સ્ટ્રક્ચર પર લાગુ કરવામાં આવે છે.


The two-phase commit protocol ensures data consistency in banking systems.

બે-તબક્કાનો કમિટ પ્રોટોકોલ બેન્કિંગ સિસ્ટમમાં ડેટાની સુસંગતતા સુનિશ્ચિત કરે છે.


Transaction coordinators use the two-phase commit protocol.

ટ્રાન્ઝેક્શન કોઓર્ડિનેટર બે-તબક્કાના કમિટ પ્રોટોકોલનો ઉપયોગ કરે છે.


Replicated State Machines provide fault tolerance.

પ્રતિકૃતિ સ્ટેટ મશીનો ખામી સહનશીલતા પ્રદાન કરે છે.


The DFA illustrates the behavior of the system.

DFA સિસ્ટમની વર્તણૂક દર્શાવે છે.


Chain Replication is a technique for data replication.

ચેઇન રેપ્લિકેશન એ ડેટા રેપ્લિકેશન માટેની એક તકનીક છે.


Chain Replication ensures data availability.

ચેઇન રેપ્લિકેશન ડેટાની ઉપલબ્ધતા સુનિશ્ચિત કરે છે.


Chain Replication uses actions for specification.

ચેઇન રેપ્લિકેશન સ્પષ્ટીકરણ માટે ક્રિયાઓનો ઉપયોગ કરે છે.


Actions define the behavior of the system.

ક્રિયાઓ સિસ્ટમની વર્તણૂકને વ્યાખ્યાયિત કરે છે.


An atomic read/write register is a fundamental concept.

એક અણુ રીડ/રાઇટ રજિસ્ટર એ એક મૂળભૂત ખ્યાલ છે.


Behavioral tests validate the register's functionality.

વર્તણૂકીય પરીક્ષણો રજિસ્ટરની કાર્યક્ષમતાને માન્ય કરે છે.


The implementation provides a replicated atomic register.

અમલીકરણ એક પ્રતિકૃતિ અણુ રજિસ્ટર પ્રદાન કરે છે.


Distributed consensus code and behavior are analyzed.

વિતરિત સર્વસંમતિ કોડ અને વર્તણૂકનું વિશ્લેષણ કરવામાં આવે છે.


The crash-tolerant consensus protocol is robust.

ક્રેશ-સહનશીલ સર્વસંમતિ પ્રોટોકોલ મજબૂત છે.


The behavior DFA describes the protocol's actions.

વર્તણૂક DFA પ્રોટોકોલની ક્રિયાઓનું વર્ણન કરે છે.


Reducing the state space improves efficiency.

સ્ટેટ સ્પેસ ઘટાડવાથી કાર્યક્ષમતામાં સુધારો થાય છે.


The Paxos protocol is a well-known consensus algorithm.

પેક્સોસ પ્રોટોકોલ એ એક જાણીતું સર્વસંમતિ અલ્ગોરિધમ છે.


The Needham-Schroeder protocol has security vulnerabilities.

નીડહામ-શ્રોડર પ્રોટોકોલમાં સુરક્ષા નબળાઈઓ છે.


The code prevents two or more threads from executing in the critical section at the same time.

આ કોડ બે કે તેથી વધુ થ્રેડોને એક જ સમયે નિર્ણાયક વિભાગમાં એક્ઝિક્યુટ થતા અટકાવે છે.


Mutual exclusion is an example of a safety property.

પરસ્પર બાકાત એ સલામતી મિલકતનું ઉદાહરણ છે.


We want to ensure that eventually something good will happen.

આપણે એ સુનિશ્ચિત કરવા માંગીએ છીએ કે આખરે કંઈક સારું થશે.


If threads in the critical section always leave eventually, then eventually one thread will enter the critical section.

જો નિર્ણાયક વિભાગમાં થ્રેડો હંમેશા આખરે છોડી દે છે, તો આખરે એક થ્રેડ નિર્ણાયક વિભાગમાં પ્રવેશ કરશે.


આપણે આને પ્રગતિ કહીએ છીએ.


In order to detect violations of progress, Harmony requires that every execution must be able to reach a state in which all threads have terminated.

પ્રગતિના ઉલ્લંઘનોને શોધવા માટે, હાર્મનીને જરૂરી છે કે દરેક અમલ એવી સ્થિતિ સુધી પહોંચી શકે જેમાં તમામ થ્રેડો સમાપ્ત થઈ ગયા હોય.


We will instead model threads in critical sections using the framework.

તેના બદલે, અમે ફ્રેમવર્કનો ઉપયોગ કરીને નિર્ણાયક વિભાગોમાં થ્રેડોનું મોડેલ બનાવીશું.


A thread can choose to enter a critical section more than once, but it can also choose to terminate.

એક થ્રેડ એક કરતાં વધુ વખત નિર્ણાયક વિભાગમાં પ્રવેશવાનું પસંદ કરી શકે છે, પરંતુ તે સમાપ્ત કરવાનું પણ પસંદ કરી શકે છે.


We also test if a thread can enter when there is no other thread trying to enter the critical section.

અમે એ પણ પરીક્ષણ કરીએ છીએ કે જ્યારે બીજો કોઈ થ્રેડ નિર્ણાયક વિભાગમાં પ્રવેશવાનો પ્રયાસ ન કરી રહ્યો હોય ત્યારે થ્રેડ પ્રવેશી શકે છે કે કેમ.


This code specifies that at most one thread can be executing in the critical section.

આ કોડ સ્પષ્ટ કરે છે કે નિર્ણાયક વિભાગમાં વધુમાં વધુ એક થ્રેડ એક્ઝિક્યુટ થઈ શકે છે.


You may already have heard of the concept of a lock.

તમે કદાચ લોકના ખ્યાલ વિશે સાંભળ્યું હશે.


The idea is that the lock is like a baton that at most one thread can own.

વિચાર એ છે કે લોક બેટન જેવું છે જે વધુમાં વધુ એક થ્રેડની માલિકીનું હોઈ શકે.


A thread that wants to enter the critical section must obtain the lock first.

જે થ્રેડ નિર્ણાયક વિભાગમાં પ્રવેશવા માંગે છે તેણે પહેલા લોક મેળવવો આવશ્યક છે.


Using a lock is a good thought, but how does one implement one?

લોકનો ઉપયોગ કરવો એ સારો વિચાર છે, પરંતુ કોઈ એકને કેવી રીતે અમલમાં મૂકે?


Unfortunately, if we run the program through Harmony, we find that the assertion fails.

કમનસીબે, જો આપણે હાર્મની દ્વારા પ્રોગ્રામ ચલાવીએ, તો અમને જાણવા મળે છે કે દાવો નિષ્ફળ જાય છે.


The lockTaken variable suffers from the same sort of race condition.

લોકટેકન ચલ એ જ પ્રકારની રેસ સ્થિતિથી પીડાય છે.


Preventing multiple threads from updating the same variable.

એક જ ચલને અપડેટ કરતા બહુવિધ થ્રેડોને અટકાવવું.


A thread can write its own flag and read the flag of its peer.

એક થ્રેડ પોતાનો ધ્વજ લખી શકે છે અને તેના સાથીનો ધ્વજ વાંચી શકે છે.


If thread i is in the critical section, then flags[i] = True.

જો થ્રેડ i નિર્ણાયક વિભાગમાં છે, તો પછી flags[i] = True.


Each thread politely lets the other thread have a turn first.

દરેક થ્રેડ નમ્રતાથી બીજા થ્રેડને પહેલા વારો લેવા દે છે.


The machine does not have instructions to atomically increment or decrement values in shared memory locations.

મશીનમાં શેર કરેલી મેમરી સ્થાનોમાં મૂલ્યોને અણુશક્તિથી વધારવા અથવા ઘટાડવા માટેની સૂચનાઓ નથી.


When running multiple threads, each essentially runs an instantiation of the machine, and they do so in parallel.

જ્યારે બહુવિધ થ્રેડો ચાલી રહ્યા હોય, ત્યારે દરેક મૂળભૂત રીતે મશીનનું એક ઉદાહરણ ચલાવે છે, અને તે તે સમાંતર રીતે કરે છે.


A program is correct if it works for all possible interleavings of threads.

જો તે થ્રેડોના તમામ સંભવિત ઇન્ટરલીવિંગ માટે કામ કરે તો પ્રોગ્રામ સાચો છે.


Harmony will try all interleavings and report an error even if only one of those interleavings fails.

સંવાદિતા બધા ઇન્ટરલીવિંગનો પ્રયાસ કરશે અને ભૂલની જાણ કરશે, પછી ભલે તેમાંથી ફક્ત એક જ ઇન્ટરલીવિંગ નિષ્ફળ જાય.


The result in this particular interleaving is that x ends up being 1.

આ ચોક્કસ ઇન્ટરલીવિંગનું પરિણામ એ છે કે x 1 બને છે.


આ રેસની સ્થિતિ તરીકે ઓળખાય છે.


When running a program with Harmony, it will report violations of assertions.

સંવાદિતા સાથે પ્રોગ્રામ ચલાવતી વખતે, તે દાવાઓના ઉલ્લંઘનની જાણ કરશે.


If one thinks of the assertion as providing the specification of the program, then clearly its implementation does not satisfy its specification.

જો કોઈ દલીલને પ્રોગ્રામની વિશિષ્ટતા પ્રદાન કરે છે તેમ વિચારે છે, તો પછી સ્પષ્ટ છે કે તેનો અમલ તેની વિશિષ્ટતાને સંતોષતો નથી.


We could change the specification by changing the assertion as follows: finally(x== 1)or(x== 2)

આપણે નીચે પ્રમાણે દલીલ બદલીને સ્પષ્ટીકરણ બદલી શકીએ છીએ: છેવટે(x== 1)અથવા(x== 2)


This would fix the issue, but more likely it is the program that must be fixed, not the specification.

આ સમસ્યાને ઠીક કરશે, પરંતુ સંભવ છે કે તે પ્રોગ્રામ છે જેને ઠીક કરવાની જરૂર છે, સ્પષ્ટીકરણ નહીં.


પાયથોનનો ઉપયોગ કરીને આકૃતિ 3.4 ચલાવો.


How many times does the assertion fail (if any)?

દલીલ કેટલી વાર નિષ્ફળ જાય છે (જો કોઈ હોય તો)?


Report how many times the assertion fails and what the value of x was for each of the failed runs.

કેટલી વાર દલીલ નિષ્ફળ જાય છે અને દરેક નિષ્ફળ રન માટે x નું મૂલ્ય શું હતું તે જણાવો.


Harmony programs are compiled to Harmony bytecode.

સંવાદિતા પ્રોગ્રામ્સને સંવાદિતા બાઈટકોડમાં કમ્પાઇલ કરવામાં આવે છે.


The Harmony compiler, harmony, places the bytecode for file x.hny in file x.hvm.

સંવાદિતા કમ્પાઇલર, સંવાદિતા, ફાઇલ x.hny માટે બાઈટકોડને ફાઇલ x.hvm માં મૂકે છે.


The model checker (called Charm) executes the code in x.hvm and places its output in a file called x.hco.

મોડેલ ચેકર (જેને ચાર્મ કહેવામાં આવે છે) x.hvm માં કોડ ચલાવે છે અને તેના આઉટપુટને x.hco નામની ફાઇલમાં મૂકે છે.


To understand the problem of concurrent computing, it is important to have a basic understanding of machine instructions.

સહવર્તી કમ્પ્યુટિંગની સમસ્યાને સમજવા માટે, મશીન સૂચનાઓની મૂળભૂત સમજ હોવી મહત્વપૂર્ણ છે.


સંવાદિતા મૂલ્યો પુનરાવર્તિત રીતે વ્યાખ્યાયિત કરવામાં આવે છે.


Strings that start with a letter or an underscore and only contain letters, digits, and underscores can be written without quotes.

જે સ્ટ્રિંગ્સ અક્ષર અથવા અન્ડરસ્કોરથી શરૂ થાય છે અને તેમાં ફક્ત અક્ષરો, અંકો અને અન્ડરસ્કોર હોય છે તે અવતરણ વિના લખી શકાય છે.


એક શબ્દકોશ કીને મૂલ્યો સાથે મેપ કરે છે.


The person can only take one item at a time.

વ્યક્તિ એક સમયે માત્ર એક જ વસ્તુ લઈ શકે છે.


If left to themselves, the goat would eat the cabbage.

જો બકરીને એકલા છોડી દેવામાં આવે, તો તે કોબી ખાઈ જશે.


The code is similar to Figure 5.3, except that waiting for the lock to become available and taking it is executed as an atomic operation.

આ કોડ આકૃતિ 5.3 જેવો જ છે, સિવાય કે લોક ઉપલબ્ધ થવાની રાહ જોવી અને તેને લેવાનું કાર્ય એક અણુ કામગીરી તરીકે ચલાવવામાં આવે છે.


Figure 7.2 shows how locks may be used to implement a critical section.

આકૃતિ 7.2 દર્શાવે છે કે કેવી રીતે લોકનો ઉપયોગ નિર્ણાયક વિભાગને અમલમાં મૂકવા માટે થઈ શકે છે.


In Harmony, any statement can be preceded by the atomically keyword.

હાર્મનીમાં, કોઈપણ વિધાનની પહેલાં atomically કીવર્ડ મૂકી શકાય છે.


Locks are the most prevalent and basic form of synchronization in concurrent programs.

લોક એ સમકાલીન કાર્યક્રમોમાં સુમેળનું સૌથી પ્રચલિત અને મૂળભૂત સ્વરૂપ છે.


When there is a bug in a program because some code omitted obtaining a lock before accessing a shared data structure, that is known as a data race.

જ્યારે કોઈ પ્રોગ્રામમાં કોઈ ભૂલ હોય છે કારણ કે કેટલાક કોડે શેર કરેલી ડેટા સ્ટ્રક્ચરને ઍક્સેસ કરતા પહેલાં લોક મેળવવાનું છોડી દીધું હોય છે, તેને ડેટા રેસ તરીકે ઓળખવામાં આવે છે.


Because atomic operations cannot overlap, data races can be avoided by making operations atomic.

કારણ કે અણુ કામગીરીઓ એકબીજા સાથે ઓવરલેપ થઈ શકતી નથી, ડેટા રેસને કામગીરીને અણુ બનાવીને ટાળી શકાય છે.


To implement locks, multi-core processors provide so-called atomic instructions.

લોકને અમલમાં મૂકવા માટે, મલ્ટિ-કોર પ્રોસેસર્સ કહેવાતા અણુ સૂચનો પૂરા પાડે છે.


The approach is called spinlock, because each thread is “spinning” (executing a tight loop) until it can acquire the lock.

આ અભિગમને સ્પિનલોક કહેવામાં આવે છે, કારણ કે દરેક થ્રેડ “સ્પિનિંગ” (ચુસ્ત લૂપ ચલાવવું) કરે છે જ્યાં સુધી તે લોક મેળવી ન શકે.


A more common solution to implementing a lock uses an atomic test-and-set instruction provided by most CPUs.

લોકને અમલમાં મૂકવા માટેનું વધુ સામાન્ય સમાધાન એટોમિક ટેસ્ટ-એન્ડ-સેટ સૂચનાનો ઉપયોગ કરે છે જે મોટાભાગના CPUs દ્વારા પ્રદાન કરવામાં આવે છે.


Method acquire(lk) invokes test and set(lk) until it returns False.

પદ્ધતિ acquire(lk) ત્યાં સુધી test and set(lk) ને બોલાવે છે જ્યાં સુધી તે ખોટું ન થાય.


The ticket lock prevents starvation using an atomic fetch-and-increment operator.

ટિકિટ લોક અણુ ફેચ-એન્ડ-ઇન્ક્રીમેન્ટ ઓપરેટરનો ઉપયોગ કરીને ભૂખમરો અટકાવે છે.


A European bakery often has a clearly displayed counter and a ticket dispenser.

યુરોપિયન બેકરીમાં ઘણીવાર સ્પષ્ટ રીતે પ્રદર્શિત કાઉન્ટર અને ટિકિટ ડિસ્પેન્સર હોય છે.


When a customer walks into the bakery, they draw a number from the dispenser.

જ્યારે કોઈ ગ્રાહક બેકરીમાં પ્રવેશે છે, ત્યારે તેઓ ડિસ્પેન્સરમાંથી એક નંબર લે છે.


After obtaining the ticket, the thread waits until its ticket value equals the counter.

ટિકિટ મેળવ્યા પછી, થ્રેડ ત્યાં સુધી રાહ જુએ છે જ્યાં સુધી તેની ટિકિટનું મૂલ્ય કાઉન્ટર બરાબર ન થાય.


We now turn to a radically different way of implementing locks.

હવે આપણે લોકને અમલમાં મૂકવાની એક આમૂલ રીતે અલગ રીત તરફ વળીએ છીએ.


A thread trying to acquire a lock held by another thread is a good example of a thread being blocked.

બીજા થ્રેડ દ્વારા રાખવામાં આવેલા લોકને મેળવવાનો પ્રયાસ કરતો થ્રેડ એ બ્લોક થતા થ્રેડનું સારું ઉદાહરણ છે.


In Harmony, a thread can suspend itself and save its context in a shared variable.

હાર્મનીમાં, એક થ્રેડ પોતાને સસ્પેન્ડ કરી શકે છે અને તેના સંદર્ભને શેર કરેલા ચલ માં સાચવી શકે છે.


The most common use for locks is in building concurrent data structures.

લોકનો સૌથી સામાન્ય ઉપયોગ સમકાલીન ડેટા સ્ટ્રક્ચર્સ બનાવવા માટે થાય છે.


આજે હવામાન સુખદ છે.


શું તમે મને મીઠું આપશો?


હું બજારમાં જઈ રહ્યો છું.


The company announced its quarterly results.

કંપનીએ તેના ત્રિમાસિક પરિણામોની જાહેરાત કરી.


The new software update has several bug fixes.

નવા સોફ્ટવેર અપડેટમાં ઘણા બગ ફિક્સ છે.


She is a talented musician and composer.

તે એક પ્રતિભાશાળી સંગીતકાર અને સંગીત રચયિતા છે.


The government is implementing new policies.

સરકાર નવી નીતિઓ લાગુ કરી રહી છે.


The research team is working on a new project.

સંશોધન ટીમ એક નવા પ્રોજેક્ટ પર કામ કરી રહી છે.


The economic outlook for the next year is uncertain.

આવતા વર્ષ માટે આર્થિક દૃષ્ટિકોણ અનિશ્ચિત છે.


The algorithm efficiently sorts the data.

એલ્ગોરિધમ કાર્યક્ષમ રીતે ડેટાને સૉર્ટ કરે છે.


Despite the challenges, they persevered and succeeded.

પડકારો હોવા છતાં, તેઓ ટકી રહ્યા અને સફળ થયા.


The intricate details of the painting were mesmerizing.

ચિત્રની જટિલ વિગતો મોહક હતી.


The company's innovative approach revolutionized the industry.

કંપનીના નવીન અભિગમે ઉદ્યોગમાં ક્રાંતિ લાવી.


The scientific community is debating the implications of the discovery.

વૈજ્ઞાનિક સમુદાય શોધના અર્થઘટન પર ચર્ચા કરી રહ્યો છે.


The complex interplay of factors contributed to the crisis.

પરિબળોની જટિલ ક્રિયાપ્રતિક્રિયાએ કટોકટીમાં ફાળો આપ્યો.


The philosophical treatise explored the nature of existence.

તત્વજ્ઞાનના નિબંધે અસ્તિત્વના સ્વભાવની શોધ કરી.


The rapid advancements in artificial intelligence are transforming society.

કૃત્રિમ બુદ્ધિમત્તામાં ઝડપી પ્રગતિ સમાજને બદલી રહી છે.


The historical analysis provided a nuanced understanding of the events.

ઐતિહાસિક વિશ્લેષણે ઘટનાઓની સૂક્ષ્મ સમજ આપી.


The intricate design of the building was a testament to the architect's skill.

બિલ્ડિંગની જટિલ ડિઝાઇન આર્કિટેક્ટની કુશળતાનો પુરાવો હતો.


The economic reforms aimed to stimulate growth and reduce inequality.

આર્થિક સુધારાઓનો હેતુ વૃદ્ધિને ઉત્તેજીત કરવાનો અને અસમાનતા ઘટાડવાનો હતો.


Alice sends application messages in order.

એલિસ એપ્લિકેશન સંદેશાઓ ક્રમમાં મોકલે છે.


બોબ એપ્લિકેશન સંદેશાઓ મેળવે છે.


The protocol ensures safety and liveness.

પ્રોટોકોલ સલામતી અને જીવંતતા સુનિશ્ચિત કરે છે.


The Alternating Bit Protocol is suitable for our purposes.

અલ્ટરનેટિંગ બિટ પ્રોટોકોલ આપણા હેતુઓ માટે યોગ્ય છે.


Alice and Bob each maintain a sequence number.

એલિસ અને બોબ દરેક એક સિક્વન્સ નંબર જાળવે છે.


બોબ એલિસને એક સ્વીકૃતિ પાછી મોકલે છે.


આને પુનઃપ્રસારણ કહેવામાં આવે છે.


એલિસ તેના સિક્વન્સ નંબરને વધારે છે.


Bob delivers the payload in the message.

બોબ સંદેશમાં પેલોડ પહોંચાડે છે.


એક-બીટ સિક્વન્સ નંબર પૂરતો છે.


We can model each channel as a variable.

આપણે દરેક ચેનલને એક ચલ તરીકે મોડેલ કરી શકીએ છીએ.


The method places either m or () in !pchan.

આ પદ્ધતિ !pchan માં m અથવા () મૂકે છે.


Method appsend retransmits until an acknowledgment is received.

પદ્ધતિ appsend સ્વીકૃતિ પ્રાપ્ત થાય ત્યાં સુધી ફરીથી પ્રસારિત કરે છે.


Figure 22.2 shows how the methods may be used.

આકૃતિ 22.2 બતાવે છે કે પદ્ધતિઓનો ઉપયોગ કેવી રીતે થઈ શકે છે.


સંદેશાઓની સંખ્યા મર્યાદિત હોવી જોઈએ.


The receiver is spawned as eternal because it does not terminate.

રીસીવરને શાશ્વત તરીકે જનરેટ કરવામાં આવે છે કારણ કે તે સમાપ્ત થતું નથી.


Develop a protocol for a single client and server.

એક જ ક્લાયંટ અને સર્વર માટે એક પ્રોટોકોલ વિકસાવો.


Generalize the solution to multiple clients.

બહુવિધ ક્લાયન્ટ્સ માટે ઉકેલને સામાન્ય બનાવો.


TCP સ્લાઇડિંગ વિન્ડો પ્રોટોકોલનો ઉપયોગ કરે છે.


સ્લાઇડિંગ વિન્ડો પ્રોટોકોલ લાગુ કરો.


The code allocates a new node initialized with a lock.

કોડ એક નવું નોડ ફાળવે છે જે લોક સાથે શરૂ થાય છે.


T1 first calls put(?q, 1) and then allocates a new node.

T1 પહેલાં put(?q, 1) ને બોલાવે છે અને પછી એક નવું નોડ ફાળવે છે.


This is sometimes known as reverse debugging.

આને ક્યારેક રિવર્સ ડિબગીંગ તરીકે ઓળખવામાં આવે છે.


In this case, we first want to see what T2 is doing.

આ કિસ્સામાં, આપણે પહેલાં જોવું છે કે T2 શું કરી રહ્યું છે.


You can click its first (top-left) orange box to time-travel to that part in the execution.

તમે એક્ઝિક્યુશનના તે ભાગમાં સમય-પ્રવાસ કરવા માટે તેના પ્રથમ (ટોચ-ડાબે) નારંગી બૉક્સ પર ક્લિક કરી શકો છો.


Now by hitting the〈return〉key repeatedly, we can quickly skip through the code, line by line.

હવે, વારંવાર 〈return〉 કી દબાવીને, અમે ઝડપથી કોડમાંથી, લાઇન દ્વારા લાઇન, પસાર થઈ શકીએ છીએ.


T1 then enters into the while loop and tries to acquire nq→lock.

T1 પછી while લૂપમાં પ્રવેશે છે અને nq→lock મેળવવાનો પ્રયાસ કરે છે.


T3 chooses "get" and then goes on to invoke get(?q).

T3 "get" પસંદ કરે છે અને પછી get(?q) ને બોલાવવા જાય છે.


This is where the problem is—T1 is about to acquire the lock in that same node.

સમસ્યા અહીં છે—T1 તે જ નોડમાં લોક મેળવવા જઈ રહ્યો છે.


To fix the code without changing the data structure, we can use hand-over-hand locking.

ડેટા સ્ટ્રક્ચરમાં ફેરફાર કર્યા વિના કોડને ઠીક કરવા માટે, અમે હેન્ડ-ઓવર-હેન્ડ લોકીંગનો ઉપયોગ કરી શકીએ છીએ.


Critical sections enable multiple threads to easily share data structures.

ક્રિટિકલ વિભાગો બહુવિધ થ્રેડોને સરળતાથી ડેટા સ્ટ્રક્ચર્સ શેર કરવામાં સક્ષમ કરે છે.


A thread that is waiting for a condition without changing shared variables is considered blocked.

એક થ્રેડ જે શેર કરેલા ચલોને બદલ્યા વિના સ્થિતિની રાહ જોઈ રહ્યો છે તેને અવરોધિત ગણવામાં આવે છે.


Sometimes it is useful for a thread to wait for additional conditions besides the critical section being unoccupied.

કેટલીકવાર થ્રેડ માટે ક્રિટિકલ વિભાગ ખાલી હોવા ઉપરાંત વધારાની સ્થિતિઓની રાહ જોવી ઉપયોગી છે.


What we want is a special kind of lock that allows either (i) one writer or (ii) one or more readers to acquire the lock.

આપણે જે જોઈએ છે તે એક ખાસ પ્રકારનું લોક છે જે (i) એક લેખક અથવા (ii) એક અથવા વધુ વાચકોને લોક મેળવવાની મંજૂરી આપે છે.


આને રીડર/રાઈટર લોક કહેવામાં આવે છે.


A reader/writer lock is an object whose abstract state contains two integer counters.

રીડર/રાઈટર લોક એ એક ઑબ્જેક્ટ છે જેની અમૂર્ત સ્થિતિમાં બે પૂર્ણાંક કાઉન્ટર્સ છે.


There are four operations on a reader/writer lock.

રીડર/રાઈટર લોક પર ચાર ઓપરેશન છે.


A problem with this test is that it does not find a problem with an implementation like the one in Figure 12.3.

આ પરીક્ષણ સાથેની સમસ્યા એ છે કે તે આકૃતિ 12.3 માંના જેવી અમલીકરણ સાથેની સમસ્યા શોધી શકતું નથી.


This implementation implements a reader/writer lock as an ordinary lock, and thus lets only one thread in the critical section at a time.

આ અમલીકરણ રીડર/રાઈટર લોકને સામાન્ય લોક તરીકે અમલમાં મૂકે છે, અને આમ એક સમયે ફક્ત એક જ થ્રેડને ક્રિટિકલ વિભાગમાં પ્રવેશવા દે છે.


Harmony can be particularly helpful here, as it examines each and every corner case.

અહીં હાર્મની ખાસ કરીને મદદરૂપ થઈ શકે છે, કારણ કે તે દરેક ખૂણાના કેસની તપાસ કરે છે.


The file service implementation will use a collection of worker threads.

ફાઇલ સેવા અમલીકરણ કામદારોના થ્રેડોના સંગ્રહનો ઉપયોગ કરશે.


Clients of the file service implementation use blocking synchronized queues.

ફાઇલ સેવા અમલીકરણના ગ્રાહકો અવરોધિત સુમેળિત કતારોનો ઉપયોગ કરે છે.


We will focus here on a low-level notion of a file.

અમે અહીં ફાઇલની નીચા-સ્તરની વિભાવના પર ધ્યાન કેન્દ્રિત કરીશું.


In our abstraction, each block holds an arbitrary Harmony value.

અમારા અમૂર્તનમાં, દરેક બ્લોક એક મનસ્વી હાર્મની મૂલ્ય ધરાવે છે.


If you want to remain more truthful to reality, you might only store lists of numbers.

જો તમે વાસ્તવિકતા પ્રત્યે વધુ સત્યવાદી રહેવા માંગતા હો, તો તમે ફક્ત સંખ્યાઓની યાદી સંગ્રહિત કરી શકો છો.


A more complete file system would keep track of various additional information.

વધુ સંપૂર્ણ ફાઇલ સિસ્ટમ વિવિધ વધારાની માહિતીનો ટ્રૅક રાખશે.


Such abstractions can be modularly implemented on top.

આવા અમૂર્તનને મોડ્યુલર રીતે ટોચ પર લાગુ કરી શકાય છે.


Figure 19.1 shows the file system interface.

આકૃતિ 19.1 ફાઇલ સિસ્ટમ ઇન્ટરફેસ દર્શાવે છે.


Just like in Unix-like file systems, you have to specify the number of files.

યુનિક્સ-જેવી ફાઇલ સિસ્ટમની જેમ, તમારે ફાઇલોની સંખ્યાનો ઉલ્લેખ કરવો પડશે.


File(n) returns a handle that must be passed to file operations.

ફાઇલ(n) એક હેન્ડલ પરત કરે છે જે ફાઇલ ઓપરેશનમાં પાસ થવું આવશ્યક છે.


read(fs,ino,offset) returns the block of file at the given offset.

read(fs,ino,offset) આપેલ ઓફસેટ પર ફાઇલનો બ્લોક પરત કરે છે.


write(fs,ino,offset,data) stores data at the given offset.

write(fs,ino,offset,data) આપેલ ઓફસેટ પર ડેટા સંગ્રહિત કરે છે.


If needed, the file is grown to include the given offset.

જરૂર પડ્યે, ફાઇલને આપેલ ઓફસેટનો સમાવેશ કરવા માટે વધારવામાં આવે છે.


Figure 19.2 shows how the file system may be tested.

આકૃતિ 19.2 દર્શાવે છે કે ફાઇલ સિસ્ટમનું પરીક્ષણ કેવી રીતે કરી શકાય.


We can do this for both the specification and implementation.

આપણે આ સ્પષ્ટીકરણ અને અમલીકરણ બંને માટે કરી શકીએ છીએ.


To store the file system, we will use a disk.

ફાઇલ સિસ્ટમને સંગ્રહિત કરવા માટે, અમે ડિસ્કનો ઉપયોગ કરીશું.


Each block is identified by its offset or block number.

દરેક બ્લોકને તેના ઓફસેટ અથવા બ્લોક નંબર દ્વારા ઓળખવામાં આવે છે.


For example, disk read(disk,bno) retrieves the value of block bno.

ઉદાહરણ તરીકે, ડિસ્ક read(disk,bno) બ્લોક bno નું મૂલ્ય મેળવે છે.


ધ્યાન રાખો કે ઓપરેશન અણુ નથી.


It is up to the file system implementation that this does not happen.

આ ન થાય તે ફાઇલ સિસ્ટમ અમલીકરણ પર આધારિત છે.


Imagine five philosopers sitting around a table, each with a plate of food in front of them and a fork between every two plates.

કલ્પના કરો કે પાંચ ફિલસૂફો એક ટેબલની આસપાસ બેઠા છે, દરેકની સામે ખોરાકની થાળી છે અને દરેક બે પ્લેટ વચ્ચે એક કાંટો છે.


Each philosopher requires two forks to eat.

દરેક ફિલસૂફને ખાવા માટે બે કાંટાની જરૂર પડે છે.


To start eating, a philosopher first picks up the fork on the left, then the fork on the right.

ખાવું શરૂ કરવા માટે, એક ફિલસૂફ પહેલા ડાબી બાજુનો કાંટો ઉપાડે છે, પછી જમણી બાજુનો કાંટો ઉપાડે છે.


Each philosopher likes to take breaks from eating to think for a while.

દરેક ફિલસૂફને થોડા સમય માટે ખાવાથી વિરામ લેવાનું અને વિચારવાનું ગમે છે.


To do so, the philosopher puts down both forks.

આમ કરવા માટે, ફિલસૂફ બંને કાંટા નીચે મૂકે છે.


Each philosopher repeats this procedure.

દરેક ફિલસૂફ આ પ્રક્રિયાને પુનરાવર્તિત કરે છે.


Dijkstra had them repeating this for ever, but for the purposes of this book, philosophers can—if they wish—leave the table when they are not using any forks.

ડિજ્ક્સ્ટ્રાએ તેમને આ કાયમ માટે પુનરાવર્તન કરાવ્યું, પરંતુ આ પુસ્તકના હેતુ માટે, ફિલસૂફો - જો તેઓ ઈચ્છે તો - જ્યારે તેઓ કોઈપણ કાંટાનો ઉપયોગ ન કરતા હોય ત્યારે ટેબલ છોડી શકે છે.


If you run it, Harmony complains that the execution may not be able to terminate, with all five threads being blocked trying to acquire the lock.

જો તમે તેને ચલાવો છો, તો હાર્મની ફરિયાદ કરે છે કે એક્ઝેક્યુશન સમાપ્ત થઈ શકશે નહીં, જેમાં લોક મેળવવાનો પ્રયાસ કરતા તમામ પાંચ થ્રેડો અવરોધિત છે.


તમને સમસ્યા શું છે તે દેખાય છે?


Does it depend on N, the number of philosophers?

શું તે N, ફિલસૂફોની સંખ્યા પર આધાર રાખે છે?


There are four conditions that must hold for deadlock to occur, sometimes known as the Coffman Conditions.

ડેડલોક થવા માટે ચાર શરતોનું પાલન કરવું આવશ્યક છે, જેને ક્યારેક કોફમેન શરતો તરીકે ઓળખવામાં આવે છે.


Mutual Exclusion: each resource can only be used by one thread at a time.

પરસ્પર બાકાત: દરેક સંસાધનનો ઉપયોગ એક સમયે ફક્ત એક થ્રેડ દ્વારા જ થઈ શકે છે.


Hold and Wait: each thread holds resources it already allocated while it waits for other resources that it needs.

હોલ્ડ અને વેઇટ: દરેક થ્રેડ તે પહેલાથી ફાળવેલ સંસાધનોને જાળવી રાખે છે જ્યારે તે અન્ય સંસાધનોની રાહ જુએ છે જેની તેને જરૂર છે.


No Preemption: resources cannot be forcibly taken away from threads that allocated them.

કોઈ પૂર્વગ્રહ નહીં: સંસાધનોને તે થ્રેડોથી બળપૂર્વક દૂર કરી શકાતા નથી જેણે તેમને ફાળવ્યા છે.


Circular Wait: there exists a directed circular chain of threads, each waiting to allocate a resource held by the next.

પરિપત્ર રાહ જુઓ: થ્રેડોની નિર્દેશિત પરિપત્ર સાંકળ અસ્તિત્વમાં છે, દરેક આગામી દ્વારા રાખવામાં આવેલા સંસાધનને ફાળવવાની રાહ જોઈ રહ્યા છે.


Preventing deadlock thus means preventing that one of these conditions occurs.

આમ, ડેડલોકને રોકવાનો અર્થ એ છે કે આમાંથી એક સ્થિતિને બનતી અટકાવવી.


However, mutual exclusion is not easily prevented in general because many resources allow only one process to use it at a time.

જો કે, સામાન્ય રીતે પરસ્પર બાકાતને સરળતાથી અટકાવી શકાતું નથી કારણ કે ઘણા સંસાધનો એક સમયે ફક્ત એક પ્રક્રિયાને તેનો ઉપયોગ કરવાની મંજૂરી આપે છે.


Havender proposed the following techniques that avoid the remaining three conditions.

હેવેન્ડરે નીચેની તકનીકોનો પ્રસ્તાવ મૂક્યો છે જે બાકીની ત્રણ શરતોને ટાળે છે.


No Hold and Wait: a thread must request all resources it is going to need at the same time.

હોલ્ડ અને વેઇટ નહીં: એક થ્રેડે તે બધા સંસાધનોની વિનંતી કરવી આવશ્યક છે જેની તેને તે જ સમયે જરૂર પડશે.


Preemption: if a thread is denied a request for a resource, it must release all resources that it has already acquired and start over.

પૂર્વગ્રહ: જો કોઈ થ્રેડને સંસાધન માટેની વિનંતી નકારવામાં આવે છે, તો તેણે તે બધા સંસાધનોને મુક્ત કરવા જોઈએ જે તેણે પહેલેથી જ મેળવ્યા છે અને ફરીથી શરૂઆત કરવી જોઈએ.


આજે સૂર્ય તેજસ્વી રીતે ચમકી રહ્યો છે.


કૃપા કરીને મને મીઠું આપો.


The company announced a new product launch.

કંપનીએ નવા ઉત્પાદન લોન્ચની જાહેરાત કરી.


તે તેની પરીક્ષાઓ માટે અભ્યાસ કરી રહ્યો છે.


The weather forecast predicts rain tomorrow.

હવામાન વિભાગની આગાહી મુજબ, આવતીકાલે વરસાદ પડશે.


શું તમે મને આમાં મદદ કરી શકશો?


The algorithm efficiently sorts the data.

એલ્ગોરિધમ ડેટાને કાર્યક્ષમ રીતે સૉર્ટ કરે છે.


She enjoys reading novels in her free time.

તેણીને તેના ફ્રી ટાઇમમાં નવલકથાઓ વાંચવી ગમે છે.


The government is implementing new policies.

સરકાર નવી નીતિઓ લાગુ કરી રહી છે.


The software requires a high-performance processor.

સોફ્ટવેરને ઉચ્ચ-પ્રદર્શન પ્રોસેસરની જરૂર છે.


I am going to the market to buy groceries.

હું કરિયાણું ખરીદવા બજારમાં જઈ રહ્યો છું.


The research team made a significant discovery.

સંશોધન ટીમે એક મહત્વપૂર્ણ શોધ કરી.


તે ખૂબ જ પ્રતિભાશાળી સંગીતકાર છે.


આગામી મહિને કોન્ફરન્સ યોજાશે.


The company's profits increased significantly.

કંપનીનો નફો નોંધપાત્ર રીતે વધ્યો.


The complex equation was difficult to solve.

જટિલ સમીકરણ ઉકેલવું મુશ્કેલ હતું.


The ancient civilization left behind many artifacts.

પ્રાચીન સંસ્કૃતિ ઘણા કલાકૃતિઓ પાછળ છોડી ગઈ.


The project requires careful planning and execution.

પ્રોજેક્ટને કાળજીપૂર્વક આયોજન અને અમલની જરૂર છે.


Despite the challenges, they persevered and succeeded.

પડકારો હોવા છતાં, તેઓ ટકી રહ્યા અને સફળ થયા.


The philosophical debate explored the nature of reality.

તત્વજ્ઞાનની ચર્ચાએ વાસ્તવિકતાના સ્વભાવની શોધ કરી.


The leader then moves on to the second round.

પછી નેતા બીજા રાઉન્ડ તરફ આગળ વધે છે.


You should get a warning that our implementation of Paxos does not generate all possible behaviors.

તમને ચેતવણી મળવી જોઈએ કે પેક્સોસનું અમારું અમલીકરણ તમામ સંભવિત વર્તન ઉત્પન્ન કરતું નથી.


The Needham-Schroeder protocol is a security protocol.

નીડહામ-શ્રોડર પ્રોટોકોલ એ એક સુરક્ષા પ્રોટોકોલ છે.


એલિસ બોબ સાથે વાતચીત કરવા માંગે છે.


આમ હુમલો આ રીતે થાય છે:


If Alice finishes the protocol with Bob and received N B from Bob, then nobody but Alice and Bob can learn N B.

જો એલિસ બોબ સાથે પ્રોટોકોલ સમાપ્ત કરે છે અને બોબ પાસેથી N B મેળવે છે, તો પછી એલિસ અને બોબ સિવાય કોઈ N B જાણી શકશે નહીં.


The model checker checks for overflow on various operations.

મોડેલ ચેકર વિવિધ કામગીરી પર ઓવરફ્લો તપાસે છે.


In Harmony, there is no distinction between tuples (denoted with parentheses) and lists (denoted by square brackets).

હાર્મનીમાં, ટ્યુપલ્સ (કૌંસ સાથે દર્શાવેલ) અને સૂચિઓ (ચોરસ કૌંસ દ્વારા દર્શાવેલ) વચ્ચે કોઈ તફાવત નથી.


The boolean type has only two possible values: False and True.

બૂલિયન પ્રકારમાં ફક્ત બે જ મૂલ્યો છે: ખોટું અને સાચું.


In Harmony programs, the ordering operators are only allowed on pairs of integers, pairs of strings, pairs of lists, or pairs of sets.

હાર્મની પ્રોગ્રામ્સમાં, ઓર્ડરિંગ ઓપરેટર્સ ફક્ત પૂર્ણાંકોની જોડી, સ્ટ્રિંગ્સની જોડી, સૂચિઓની જોડી અથવા સમૂહોની જોડી પર જ માન્ય છે.


The integer type supports any whole number.

પૂર્ણાંક પ્રકાર કોઈપણ આખા નંબરને સપોર્ટ કરે છે.


A string is a sequence of zero or more unicode characters.

સ્ટ્રિંગ એ શૂન્ય અથવા વધુ યુનિકોડ અક્ષરોનો ક્રમ છે.


In Harmony the empty set is denoted as {}.

હાર્મનીમાં ખાલી સમૂહને {} તરીકે દર્શાવવામાં આવે છે.


As in Python, you can also use set() to create an empty set.

પાયથોનની જેમ, તમે ખાલી સમૂહ બનાવવા માટે set() નો પણ ઉપયોગ કરી શકો છો.


In Harmony, there is no distinction between a list or a tuple.

હાર્મનીમાં, સૂચિ અથવા ટ્યુપલ વચ્ચે કોઈ તફાવત નથી.


A dictionary maps a set of values (known as keys) to another set of values.

એક શબ્દકોશ મૂલ્યોના સમૂહ (જેને કી તરીકે ઓળખવામાં આવે છે) ને મૂલ્યોના બીજા સમૂહમાં મેપ કરે છે.


Different from Python, the empty dictionary is written as {:} (because {} is the empty set in Harmony).

પાયથોનથી વિપરીત, ખાલી શબ્દકોશ {:} તરીકે લખાયેલ છે (કારણ કે {} હાર્મનીમાં ખાલી સમૂહ છે).


A bytecode address is an integer that can be used to index into Harmony bytecode.

બાઈટકોડ એડ્રેસ એ એક પૂર્ણાંક છે જેનો ઉપયોગ હાર્મની બાઈટકોડમાં ઇન્ડેક્સ કરવા માટે થઈ શકે છે.


A Harmony address is a type of thunk consisting of a curried function and a list of arguments.

હાર્મની એડ્રેસ એ એક પ્રકારનું થંક છે જેમાં કર્રીડ ફંક્શન અને દલીલોની સૂચિનો સમાવેશ થાય છે.


Given an address p = ?a[b][c]..., you can use the notation !p to evaluate it.

એક સરનામું p = ?a[b][c]... આપેલ છે, તમે તેને મૂલ્યાંકન કરવા માટે સંકેત !p નો ઉપયોગ કરી શકો છો.


A replica receives a failure notification, it updates its configuration accordingly.

એક પ્રતિકૃતિને નિષ્ફળતાની સૂચના મળે છે, તે તે મુજબ તેની રૂપરેખાંકનને અપડેટ કરે છે.


When a non-head replica receives a history that extends its own history, then the replica adopts the received history.

જ્યારે બિન-મુખ્ય પ્રતિકૃતિ તેના પોતાના ઇતિહાસને વિસ્તૃત કરતો ઇતિહાસ મેળવે છે, ત્યારે પ્રતિકૃતિ પ્રાપ્ત ઇતિહાસને અપનાવે છે.


Next, if a replica is the head, it adds any requests it has received to its history unless they are already on there.

આગળ, જો કોઈ પ્રતિકૃતિ મુખ્ય છે, તો તે તેના ઇતિહાસમાં પ્રાપ્ત કરેલી કોઈપણ વિનંતીઓને ઉમેરે છે સિવાય કે તે પહેલાથી જ ત્યાં ન હોય.


If a replica is the tail, it “delivers” operations on its history (by printing the operation) that it has not already delivered.

જો કોઈ પ્રતિકૃતિ પૂંછડી છે, તો તે તેના ઇતિહાસ પરની કામગીરીને “પહોંચાડે છે” (ઓપરેશન છાપીને) જે તેણે હજી સુધી પહોંચાડી નથી.


For this, it maintains a counterdeliveredthat counts the number of delivered requests.

આ માટે, તે એક કાઉન્ટરડિલિવર્ડ જાળવે છે જે વિતરિત વિનંતીઓની સંખ્યાની ગણતરી કરે છે.


Any replica that is not the tail sends its history to its successor in the chain.

પૂંછડી ન હોય તેવી કોઈપણ પ્રતિકૃતિ તેની સાંકળમાં તેના અનુગામીને તેનો ઇતિહાસ મોકલે છે.


The question is whether chain replication has the same behavior as the replicated state machine specification of Figure 25.1.

પ્રશ્ન એ છે કે શું ચેઇન પ્રતિકૃતિમાં આકૃતિ 25.1 ની પ્રતિકૃતિ સ્થિતિ મશીન સ્પષ્ટીકરણ જેવું જ વર્તન છે.


This can be checked using the following two Harmony commands: $ harmony -o rsm.hfa code/rsm.hny $ harmony -B rsm.hfa code/chain.hny

આ નીચેના બે હાર્મની આદેશોનો ઉપયોગ કરીને ચકાસી શકાય છે: $ harmony -o rsm.hfa code/rsm.hny $ harmony -B rsm.hfa code/chain.hny


The first command outputs the behavior DFA ofcode/rsm.hnyin the filersm.hfa.

પ્રથમ આદેશ ફાઇલ rsm.hfa માં code/rsm.hny નું વર્તન DFA આઉટપુટ કરે છે.


The second command checks that the behavior ofcode/chain.hnysatisfies the DFA inrsm.hfa.

બીજો આદેશ ચકાસે છે કે code/chain.hny નું વર્તન rsm.hfa માં DFA ને સંતોષે છે.


Note that chain replication does not produce all the possible behaviors of a replicated state machine, but all its behaviors are valid.

નોંધ લો કે ચેઇન પ્રતિકૃતિ પ્રતિકૃતિ સ્થિતિ મશીનના તમામ સંભવિત વર્તનો ઉત્પન્ન કરતી નથી, પરંતુ તેના બધા વર્તનો માન્ય છે.


The model has each replica send its entire history each time it extends its history.

મોડેલમાં દરેક પ્રતિકૃતિ તેનો ઇતિહાસ વિસ્તૃત કરે ત્યારે દરેક વખતે તેનો સંપૂર્ણ ઇતિહાસ મોકલે છે.


This is fine for modeling, but in practice that would not scale.

આ મોડેલિંગ માટે સારું છે, પરંતુ વ્યવહારમાં તે સ્કેલ નહીં થાય.


In practice, a predecessor would set up a TCP connection to its successor and only send updates to its history along the TCP connection.

વ્યવહારમાં, એક પુરોગામી તેના અનુગામી સાથે TCP કનેક્શન સ્થાપિત કરશે અને TCP કનેક્શન સાથે તેના ઇતિહાસમાં ફક્ત અપડેટ્સ મોકલશે.


Because TCP connections guarantee FIFO order, this would be identical to the predecessor sending a series of histories, but much more efficient.

કારણ કે TCP કનેક્શન FIFO ઓર્ડરની ખાતરી આપે છે, આ પુરોગામી દ્વારા ઇતિહાસની શ્રેણી મોકલવા સમાન હશે, પરંતુ વધુ કાર્યક્ષમ.


So far we have mostly modeled concurrent activities using threads.

અત્યાર સુધી, અમે મોટાભાગે થ્રેડોનો ઉપયોગ કરીને એકસાથે થતી પ્રવૃત્તિઓનું મોડેલિંગ કર્યું છે.


Another way of modeling is by enumerating all the possible state transitions from any given state.

મોડેલિંગની બીજી રીત એ છે કે કોઈપણ આપેલ સ્થિતિમાંથી તમામ સંભવિત સ્થિતિ સંક્રમણોની ગણતરી કરવી.


For example, this is how things are commonly specified in TLA+.

ઉદાહરણ તરીકે, આ રીતે વસ્તુઓ સામાન્ય રીતે TLA+ માં નિર્દિષ્ટ કરવામાં આવે છે.


As in TLA+, we call such state transitions actions.

TLA+ ની જેમ, અમે આવા સ્થિતિ સંક્રમણોને ક્રિયાઓ કહીએ છીએ.


In this chapter we will revisit modeling chain replication, but this time using actions.

આ પ્રકરણમાં, અમે ચેઇન પ્રતિકૃતિનું મોડેલિંગ ફરીથી જોઈશું, પરંતુ આ વખતે ક્રિયાઓનો ઉપયોગ કરીશું.


અંતે, તે બાઈટકોડ સરનામું હોઈ શકે છે.


This can be used to implement generators.

આનો ઉપયોગ જનરેટરને અમલમાં મૂકવા માટે થઈ શકે છે.


For example, the following Harmony program, perhaps surprisingly, does not run into failing assertions.

ઉદાહરણ તરીકે, નીચેનો હાર્મની પ્રોગ્રામ, કદાચ આશ્ચર્યજનક રીતે, નિષ્ફળ દાવાઓમાં ચાલતો નથી.


Internally, Harmony uses the address of a method variable.

આંતરિક રીતે, હાર્મની પદ્ધતિ ચલના સરનામાંનો ઉપયોગ કરે છે.


If k is a method variable, then its address is output as ?@k.

જો k એ પદ્ધતિ ચલ છે, તો તેનું સરનામું ?@k તરીકે આઉટપુટ થાય છે.


However, there is no such thing as the address of a local variable.

જોકે, સ્થાનિક ચલના સરનામા જેવું કંઈ નથી.


નીચેના બે પ્રોગ્રામ્સનો વિચાર કરો.


In the program on the left, x is a shared variable.

ડાબી બાજુના પ્રોગ્રામમાં, x એ શેર કરેલ ચલ છે.


In the program on the right, x is a local variable.

જમણી બાજુના પ્રોગ્રામમાં, x એ સ્થાનિક ચલ છે.


Like C, Harmony supports the shorthand p→v for the expression (!p).v.

C ની જેમ, હાર્મની એક્સપ્રેશન (!p).v માટે શોર્ટહેન્ડ p→v ને સપોર્ટ કરે છે.


A context value (a.k.a. continuation) captures the state of a thread.

એક સંદર્ભ મૂલ્ય (ઉર્ફે ચાલુ રાખવું) થ્રેડની સ્થિતિને કેપ્ચર કરે છે.


The save expression, when invoked, returns a tuple (e,c) where c is the context value of the thread right after the save instruction finished.

જ્યારે બોલાવવામાં આવે છે, ત્યારે સેવ એક્સપ્રેશન એક ટ્યુપલ (e,c) પરત કરે છે જ્યાં c એ થ્રેડનું સંદર્ભ મૂલ્ય છે જે સેવ સૂચના સમાપ્ત થયા પછી તરત જ આવે છે.


Using go c the context can be turned into a new thread.

ગો સી નો ઉપયોગ કરીને સંદર્ભને નવા થ્રેડમાં ફેરવી શકાય છે.


See Figure A.1 for an example of how this could be used to fork a thread into two threads.

આ થ્રેડને બે થ્રેડમાં ફોર્ક કરવા માટે કેવી રીતે વાપરી શકાય છે તેનું ઉદાહરણ આકૃતિ A.1 માં જુઓ.


The stop expression stores the context of the thread right after the expression in !p and terminates the thread.

સ્ટોપ એક્સપ્રેશન થ્રેડના સંદર્ભને એક્સપ્રેશનમાં !p પછી સંગ્રહિત કરે છે અને થ્રેડને સમાપ્ત કરે છે.


A thread can be for ever suspended using stop None or just stop().

થ્રેડને સ્ટોપ નન અથવા ફક્ત સ્ટોપ() નો ઉપયોગ કરીને કાયમ માટે સસ્પેન્ડ કરી શકાય છે.


Harmony currently supports the following statements.

હાર્મની હાલમાં નીચેના નિવેદનોને સપોર્ટ કરે છે.


Single expression evaluation Any expression by itself can be used as a statement.

એક જ અભિવ્યક્તિ મૂલ્યાંકન કોઈપણ અભિવ્યક્તિનો ઉપયોગ એકલા જ એક નિવેદન તરીકે થઈ શકે છે.


The statement x = 3 changes the state by assigning 3 to variable x.

નિવેદન x = 3 ચલ x ને 3 સોંપીને સ્થિતિ બદલે છે.


The statement x+= 3 loads x, adds 3, and then stores the results in x.

નિવેદન x+= 3 x લોડ કરે છે, 3 ઉમેરે છે અને પછી પરિણામો x માં સંગ્રહિત કરે છે.


The Harmony compiler analyzes the code for potential issues.

હાર્મની કમ્પાઇલર સંભવિત સમસ્યાઓ માટે કોડનું વિશ્લેષણ કરે છે.


The program checks for safety violations and race conditions.

પ્રોગ્રામ સલામતીના ઉલ્લંઘનો અને રેસની સ્થિતિઓ તપાસે છે.


Harmony can generate output in various formats, including HTML.

હાર્મની HTML સહિત વિવિધ ફોર્મેટમાં આઉટપુટ જનરેટ કરી શકે છે.


The compiler generates bytecode and then model checks it.

કમ્પાઇલર બાઇટકોડ જનરેટ કરે છે અને પછી તેનું મોડેલ ચેક કરે છે.


The test program starts a thread for each operation.

પરીક્ષણ પ્રોગ્રામ દરેક ઓપરેશન માટે એક થ્રેડ શરૂ કરે છે.


The program is similar to the sequential test program.

પ્રોગ્રામ સિક્વન્શિયલ ટેસ્ટ પ્રોગ્રામ જેવો જ છે.


The Harmony file extensions are as follows: .hny, .hvm, .hco.

હાર્મની ફાઇલ એક્સટેન્શન આ પ્રમાણે છે: .hny, .hvm, .hco.


The Harmony compiler and model checker are powerful tools.

હાર્મની કમ્પાઇલર અને મોડેલ ચેકર શક્તિશાળી સાધનો છે.


The program uses a concurrent queue implementation.

પ્રોગ્રામ એક સાથે ચાલતી કતારનો અમલ વાપરે છે.


The test program maintains a global time variable.

પરીક્ષણ પ્રોગ્રામ એક વૈશ્વિક સમય ચલ જાળવે છે.


The operations are executed concurrently.

ઓપરેશન્સ એકસાથે ચલાવવામાં આવે છે.


The compiler checks for non-terminating conditions.

કમ્પાઇલર નોન-ટર્મિનેટિંગ સ્થિતિઓ માટે તપાસ કરે છે.


The program analyzes the graph for race conditions.

પ્રોગ્રામ રેસની સ્થિતિઓ માટે ગ્રાફનું વિશ્લેષણ કરે છે.


The Harmony compiler is used for the Harmony programming language.

હાર્મની કમ્પાઇલરનો ઉપયોગ હાર્મની પ્રોગ્રામિંગ ભાષા માટે થાય છે.


The program checks for deviations from specifications.

પ્રોગ્રામ સ્પષ્ટીકરણોમાંથી વિચલનો માટે તપાસ કરે છે.


The Harmony compiler generates Harmony virtual machine code.

હાર્મની કમ્પાઇલર હાર્મની વર્ચ્યુઅલ મશીન કોડ જનરેટ કરે છે.


The program uses a sequential queue specification.

પ્રોગ્રામ સિક્વન્શિયલ કતાર સ્પષ્ટીકરણનો ઉપયોગ કરે છે.


પરીક્ષણ પ્રોગ્રામ થ્રેડોને સ્પૉન કરે છે.


હાર્મની કમ્પાઇલરના ત્રણ તબક્કા છે.


The program increments the shared qtime variable.

પ્રોગ્રામ શેર કરેલ qtime ચલને વધારે છે.


The code uses a bounded buffer implemented with Hoare monitors.

આ કોડ હોરે મોનિટર સાથે અમલમાં મૂકાયેલ બાઉન્ડેડ બફરનો ઉપયોગ કરે છે.


Method wait increments the condition’s counter.

પદ્ધતિ રાહ જુઓ સ્થિતિના કાઉન્ટરને વધારે છે.


Implementing a reader/writer lock with Hoare monitors is not straightforward.

હોરે મોનિટર સાથે રીડર/રાઇટર લોકનો અમલ કરવો સીધો નથી.


The simplest solution would be to peek at the counters inside the respective condition variables.

સૌથી સરળ ઉકેલ સંબંધિત સ્થિતિ ચલોની અંદરના કાઉન્ટર્સ પર નજર નાખવાનો રહેશે.


I received considerable help and inspiration from various people while writing this book.

આ પુસ્તક લખતી વખતે મને વિવિધ લોકો તરફથી નોંધપાત્ર મદદ અને પ્રેરણા મળી.


Many thanks are also due to William Ma who refactored the Harmony code.

વિલિયમ માનો પણ ખૂબ આભાર, જેમણે હાર્મની કોડને ફરીથી બનાવ્યો.


He also wrote the first version of the behavior automaton generator.

તેમણે વર્તણૂક ઓટોમેટોન જનરેટરનું પ્રથમ સંસ્કરણ પણ લખ્યું.


I have had lots of discussions with him about a wide range of improvements to the Harmony language.

મેં તેની સાથે હાર્મની ભાષામાં સુધારાઓની વિશાળ શ્રેણી વિશે ઘણી ચર્ચાઓ કરી છે.


I also want to thank Ariel Kellison with whom I discussed approaches to formally specify the Harmony virtual machine in TLA+.

હું એરિયલ કેલિસનનો પણ આભાર માનવા માંગુ છું, જેમની સાથે મેં TLA+ માં હાર્મની વર્ચ્યુઅલ મશીનને ઔપચારિક રીતે સ્પષ્ટ કરવા માટેના અભિગમોની ચર્ચા કરી.


They also developed much of that web site and made valuable suggestions for improvements to the Harmony language.

તેમણે તે વેબસાઇટનો ઘણો ભાગ પણ વિકસાવ્યો અને હાર્મની ભાષામાં સુધારાઓ માટે મૂલ્યવાન સૂચનો આપ્યા.


I also would like to acknowledge my regular conversation about Harmony with Sasha Sandler of the Oracle Cloud Infrastructure group.

હું ઓરેકલ ક્લાઉડ ઇન્ફ્રાસ્ટ્રક્ચર ગ્રૂપના સાશા સેન્ડલર સાથે હાર્મની વિશેની મારી નિયમિત વાતચીતને પણ સ્વીકારવા માંગુ છું.


He is an early industrial adopter of Harmony and has used it successfully to find and fix bugs in industrial settings.

તે હાર્મનીના પ્રારંભિક ઔદ્યોગિક અપનાવનાર છે અને તેનો ઉપયોગ ઔદ્યોગિક સેટિંગ્સમાં બગ્સ શોધવા અને ઠીક કરવા માટે સફળતાપૂર્વક કરે છે.


Most of what I know about concurrent programming I learned from my colleague Fred Schneider.

હું સમકાલીન પ્રોગ્રામિંગ વિશે જે કંઈ પણ જાણું છું તે મેં મારા સહકર્મી ફ્રેડ શ્નાઈડર પાસેથી શીખ્યું છે.


Being a foremost security expert, he also assisted significantly with the chapter on the Needham-Schroeder protocol.

અગ્રણી સુરક્ષા નિષ્ણાત હોવાને કારણે, તેમણે નીડહામ-શ્રોડર પ્રોટોકોલ પરના પ્રકરણમાં પણ નોંધપાત્ર મદદ કરી.


Leslie Lamport introduced me to using model checking to test properties of a concurrent system.

લેસ્લી લેમ્પોર્ટે મને સમકાલીન સિસ્ટમની મિલકતોનું પરીક્ષણ કરવા માટે મોડેલ તપાસનો ઉપયોગ કરવાનું શીખવ્યું.


My experimentation with using TLC on Peterson’s Algorithm became an aha moment for me.

પીટરસનના અલ્ગોરિધમ પર TLC નો ઉપયોગ કરવા સાથેનો મારો પ્રયોગ મારા માટે એક અહા ક્ષણ બની ગયો.


મેં તેમના પેપર્સમાંથી ઘણું બધું શીખ્યું છે.


Tim Teitelbaum provided numerous suggestions for improving the text and formatting of the book.

ટીમ ટેઇટેલબાઉમે પુસ્તકના લખાણ અને ફોર્મેટિંગને સુધારવા માટે અસંખ્ય સૂચનો આપ્યા.


I first demonstrated Harmony to the students in my CS6480 class on systems and formal verification and received valuable feedback from them.

મેં સૌપ્રથમ મારા CS6480 વર્ગના વિદ્યાર્થીઓને સિસ્ટમ અને ઔપચારિક ચકાસણી પર હાર્મનીનું પ્રદર્શન કર્યું અને તેમાંથી મૂલ્યવાન પ્રતિસાદ મેળવ્યો.


Finally, I would like to thank my family who had to suffer as I obsessed over writing the code and the book, at home, during the turbulent months of May and June 2020.

છેલ્લે, હું મારા પરિવારનો આભાર માનું છું, જેમણે મે અને જૂન 2020 ના તોફાની મહિનાઓ દરમિયાન, ઘરે, કોડ અને પુસ્તક લખવા માટે મને ઝનૂની બનાવ્યો ત્યારે સહન કરવું પડ્યું.