Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Тюпль кеңістігі – параллель/үлестірілген есептеулер үшін ассоциативтік жад парадигмасының іске асырылуы. Ол бір мезгілде қолжетімді туплдердің репозиторийін ұсынады. Мысал ретінде, дерек бөліктерін өндіретін процессорлар тобы және осы деректерді пайдаланатын процессорлар тобы бар делік. Өндірушілер өз деректерін кеңістікке тупл түрінде жариялайды, ал тұтынушылар белгілі бір үлгіге сәйкес келетін деректерді кеңістіктен алады. Бұл сондай-ақ «тақта» метафорасы деп те аталады. Тюпль кеңістігін үлестірілген ортақ жадтың бір түрі деп қарастыруға болады. Тюпль кеңістіктері 1986 жылы Йель университетінде Дэвид Гелернтер және Николас Каррьеро жасаған Linda тілінің теориялық негізін құрады. Тюпль кеңістіктерінің Java (JavaSpaces), Lisp, Lua, Prolog, Python, Ruby, Smalltalk, Tcl және .NET Framework үшін де іске асырылған нұсқалары бар.
A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of processors that produce pieces of data and a group of processors that use the data. Producers post their data as tuples in the space, and the consumers then retrieve data from the space that match a certain pattern. This is also known as the blackboard metaphor. Tuple space may be thought as a form of distributed shared memory. Tuple spaces were the theoretical underpinning of the Linda language developed by David Gelernter and Nicholas Carriero at Yale University in 1986. Implementations of tuple spaces have also been developed for Java (JavaSpaces), Lisp, Lua, Prolog, Python, Ruby, Smalltalk, Tcl, and the NET Framework.
Нысан кеңістіктері
Объектік кеңістік – үлестірілген есептеу қолданбаларын дамыту парадигмасы. Ол объектік кеңістік деп аталатын логикалық бірліктердің болуымен сипатталады. Үлестірілген қолданбаның барлық қатысушылары бір объектік кеңістікті пайдаланады. Қызмет провайдері қызметті Объект ретінде қаптамалап, оны объектік кеңістікке орналастырады. Қызметтің клиенттері объектік кеңістікке кіріп, қажетті қызметті қамтамасыз ететін объектіні анықтап, сұранысты осы объект арқылы өңдейді. Объектік кеңістік, есептеу парадигмасы ретінде, 1980 жылдары Йель университетіндегі Дэвид Гелернтермен ұсынылған. Гелернтер жаһандық объектілерді үйлестіру тұжырымын қолдау үшін Линда деп аталатын тілді жасады. Объектік кеңістікті желілік қызметтерді ұсынатын және оларға қол жеткізетін тараптар арасындағы ортақ виртуалды репозиторий ретінде қарастыруға болады, ал олардың өзі объектілер ретінде абстракцияланады. Процестер осы ортақ объектілерді пайдалана отырып бір-бірімен байланысады – қажет болған кезде объектілердің күйін жаңарту арқылы. Объект кеңістікке орналастырылған кезде, ол объектік кеңістіктегі Объекттер каталогында тіркелуі керек. Кез келген процесс объектіні Объекттер каталогынан қасиеттерді іздеу арқылы анықтай алады, мұнда объектті іздеу критерийлерін анықтайтын қасиет – оның атауы немесе оны бірегей анықтайтын басқа да қасиет болып табылады. Процесс қажетті объекті қазірдің өзінде болмаса, объектінің объектік кеңістікке орналасуын күтуге таңдауы мүмкін. Объектілер объектік кеңістікке орналастырылғанда пассивті болады, яғни, объектік кеңістікте болғанда олардың әдістерін шақыруға болмайды. Оның орнына, кіру процесі оны объектік кеңістіктен жергілікті жадына алуы, объект ұсынатын қызметті пайдалануы, объектінің күйін жаңартуы және оны қайтадан объектік кеңістікке орналастыруы керек. Бұл парадигма өзара қол жеткізуді қамтамасыз етеді. Өйткені, бір рет объектіге қол жеткізілгеннен кейін, оны объектік кеңістіктен алып тастау қажет, және тек босатылғаннан кейін ғана қайта орналастырылады. Бұл басқа процесс объектіні пайдаланып жатқанда оған қол жеткізе алмайды дегенді білдіреді, осылайша өзара қол жеткізуді қамтамасыз етеді.
Object Spaces is a paradigm for development of distributed computing applications. It is characterized by the existence of logical entities, called Object Spaces. All the participants of the distributed application share an Object Space. A provider of a service encapsulates the service as an Object, and puts it in the Object Space. Clients of a service then access the Object Space, find out which object provides the needed service, and have the request serviced by the object. Object Spaces, as a computing paradigm, was put forward in the 1980s by David Gelernter at Yale University. Gelernter developed a language called Linda to support the concept of global object coordination. Object Space can be thought of as a virtual repository, shared amongst providers and accessors of network services, which are themselves abstracted as objects. Processes communicate among each other using these shared objects — by updating the state of the objects as and when needed. An object, when deposited into a space, needs to be registered with an Object Directory in the Object Space. Any processes can then identify the object from the Object Directory, using properties lookup, where the property specifying the criteria for the lookup of the object is its name or some other property which uniquely identifies it. A process may choose to wait for an object to be placed in the Object Space, if the needed object is not already present. Objects, when deposited in an Object Space are passive, i. e., their methods cannot be invoked while the objects are in the Object Space. Instead, the accessing process must retrieve it from the Object Space into its local memory, use the service provided by the object, update the state of the object and place it back into the Object Space. This paradigm inherently provides mutual exclusion. Because once an object is accessed, it has to be removed from the Object Space, and is placed back only after it has been released. This means that no other process can access an object while it is being used by one process, thereby ensuring mutual exclusion.
JavaSpaces (жазба орындары)
JavaSpaces – Java объектілері үшін таратылған объект алмасу және үйлестіру механизмін (бұл тұрақты болуы мүмкін немесе болмауы мүмкін) қамтамасыз ететін қызмет спецификациясы. Ол таратылған жүйе күйін сақтау және таратылған алгоритмдерді іске асыру үшін қолданылады. JavaSpace-те барлық байланыс серіктестері (төрелер) күйді бөлісу арқылы қарым-қатынас жасайды және үйлестіреді. JavaSpaces параллель өңдеу арқылы кеңейтімділікке қол жеткізуге мүмкіндік береді, сондай-ақ таратылған көшірмелер арқылы объектілерді сенімді сақтау үшін де қолданылады, бірақ бұл диск сияқты толық қуат жоғалуынан аман қалмайды; көптеген адамдар қуат сенімді болғанша сенімді деп санайды. Тарату алыс орналасқан жерлерге де болуы мүмкін; алайда, мұндай жағдай сирек кездеседі, себебі JavaSpaces көбінесе сенімді объект кэшін емес, төмен жауап уақыты және жоғары өнімділік қолданбалары үшін қолданылады. JavaSpaces-те ең көп қолданылатын бағдарламалық үлгі – Master Worker (Басшы-Орындаушы) үлгісі. Басшы жұмыс бірліктерін "кеңістікке" жібереді, ал оларды жұмысшылар оқып, өңдеп, кеңістікке қайта жазады. Типтік ортада бірнеше "кеңістік", бірнеше басшы және көптеген жұмысшылар болады; жұмысшылар әдетте универсалды болып жасалады, яғни олар кеңістіктен кез келген жұмыс бірлігін алып, тапсырманы орындай алады. JavaSpaces – Java Jini технологиясының бір бөлігі, ол өздігінен коммерциялық сәттілікке жете алмады. Алайда, технология жылдар бойы жаңа пайдаланушыларды тапты және сақтады, сондай-ақ кейбір сатушылар JavaSpaces негізіндегі өнімдерді ұсынады. JavaSpaces көбінесе қаржылық қызметтер және телекоммуникация салаларында қолданылатын, адал қолданушылар қатарын сақтап келе жатқан технология болып табылады. Jini/JavaSpaces туралы хабарлама үлкен қызығушылық тудырды, бірақ Sun негізін қалаушы және Jini бас архитекторы Билл Джой бұл таратылған жүйелер арманына жету үшін "ойлауда кванттық секіру" қажет екенін айтты.
JavaSpaces is a service specification providing a distributed object exchange and coordination mechanism (which may or may not be persistent) for Java objects. It is used to store the distributed system state and implement distributed algorithms. In a JavaSpace, all communication partners (peers) communicate and coordinate by sharing state. JavaSpaces can be used to achieve scalability through parallel processing, it can also be used to provide reliable storage of objects through distributed replication, although this won't survive a total power failure like a disk; it is regarded by many to be reliable as long as the power is reliable. Distribution can also be to remote locations; however, this is rare as JavaSpaces are usually used for low latency, high performance applications rather than reliable object caching. The most common software pattern used in JavaSpaces is the Master Worker pattern. The Master hands out units of work to the "space", and these are read, processed and written back to the space by the workers. In a typical environment there are several "spaces", several masters and many workers; the workers are usually designed to be generic, i. e. they can take any unit of work from the space and process the task. JavaSpaces is part of the Java Jini technology, which on its own has not been a commercial success. The technology has found and kept new users over the years and some vendors are offering JavaSpaces based products. JavaSpaces remains a niche technology mostly used in the financial services and telco industries where it continues to maintain a faithful following. The announcement of Jini/JavaSpaces created quite some hype although Sun co founder and chief Jini architect Bill Joy put it straight that this distributed systems dream will take "a quantum leap in thinking."