dbo:abstract
|
- Test-and-set (TSL, též Test-and-set lock) je v informatice jednoduchá atomická operace, která slouží k vytváření . Operace TSL funguje tak, že nastaví hodnotu typu boolean na pravdu (true) a vrátí její předchozí hodnotu. Zajistí tak, že ze soutěžících procesů je pouze jednomu dovoleno vstoupit do kritické sekce a při nežádoucím souběhu nedojde k poškození dat v kritické oblasti současným zápisem. Další proces se dostane do kritické sekce až poté, co z ní předchozí vystoupí a hodnotu zámku nastaví na nepravdu (false), přičemž čekající proces provádí pokusy o vstup ve smyčce (tzv. aktivní čekání). (cs)
- TSL son las siglas de Test and set lock, una instrucción hardware utilizada por ciertos procesadores para facilitar la creación de semáforos y otras herramientas necesarias para la programación concurrente en computadores. TSL es una instrucción máquina que realiza dos acciones: leer el contenido de una palabra de la memoria en un registro y almacenar un valor distinto de cero en dicha palabra de memoria. Al tratarse de una instrucción máquina, el procesador garantiza que la instrucción TSL es realizada sin ningún tipo de interrupción por parte de otro proceso, es decir las operaciones de lectura y escritura de la palabra tienen la garantía de ser indivisibles. Además, si nos encontramos en un sistema multiprocesador, ninguno de los demás procesadores tendrá acceso a la palabra hasta que termine de ejecutarse la instrucción. El procesador que ejecuta la instrucción TSL cierra el bus de la memoria para prohibir a los demás el acceso a la memoria hasta el término de la instrucción. (es)
- L'instruction test-and-set est une instruction atomique utilisée en informatique dans les systèmes multiprocesseurs ou multi-cœurs utilisant une mémoire partagée, elle sert à écrire une valeur prédéterminée dans un emplacement mémoire et retourner la valeur d'origine de cet emplacement. Elle possède le nombre de consensus numéro deux. Elle opère sur un seul mot mémoire (un octet ou byte) qui peut soit valoir vrai (true) soit faux (false), parfois noté 0 et 1 dans certain langages comme le C. Quand elle est appelée, elle remplace atomiquement la valeur mémorisée par la nouvelle valeur donnée en argument, et renvoie la valeur mémorisée précédente. Elle permet de protéger une adresse mémoire en cas d'accès concurrents : si plusieurs processus tentent d'accéder à la même adresse mémoire et qu'un processus est en train d'exécuter une instruction test-and-set sur cette même adresse mémoire, alors aucun autre processus ne peut exécuter une autre instruction test-and-set jusqu'à ce que le premier processus aie terminé d'exécuter son instruction. (fr)
- In computer science, the test-and-set instruction is an instruction used to write (set) 1 to a memory location and return its old value as a single atomic (i.e., non-interruptible) operation. The caller can then "test" the result to see if the state was changed by the call. If multiple processes may access the same memory location, and if a process is currently performing a test-and-set, no other process may begin another test-and-set until the first process's test-and-set is finished. A CPU may use a test-and-set instruction offered by another electronic component, such as dual-port RAM; a CPU itself may also offer a test-and-set instruction. A lock can be built using an atomic test-and-set instruction as follows: This code assumes that the memory location was initialized to 0 at some point prior to the first test-and-set. The calling process obtains the lock if the old value was 0, otherwise the while-loop spins waiting to acquire the lock. This is called a spinlock. At any point, the holder of the lock can simply set the memory location back to 0 to release the lock for acquisition by another--this does not require any special handling as the holder "owns" this memory location. "Test and Test-and-set" is another example. Maurice Herlihy (1991) proved that test-and-set (1-bit comparand) has a finite consensus number and can solve the wait-free consensus problem for at-most two concurrent processes. In contrast, compare-and-swap (32-bit comparand) offers a more general solution to this problem, and in some implementations compare-double-and-swap (64-bit comparand) is also available for extended utility. (en)
- 검사와 지정(test-and-set) 명령어는 동시성을 제어하기 위한 동기화 명령어 중 하나로서, 하드웨어의 도움을 받아 수행된다. 이것을 활용하면 상호 배제 등을 편리하게 구현할 수 있다. 이 명령어는 원자성을 가져 명령어가 실행되는 도중에 인터럽트될 수 없으며, 명령어 내에서 수행되는 두 명령어 "boolean initial = lock" 과 "lock = true"는 동시에 실행되어 둘 다 실행되거나 둘 중 하나가 실행되지 않으면 나머지 하나도 실행되지 않는다. function TestAndSet(boolean_ref lock) { boolean initial = lock lock = true return initial} 검사와 지정을 활용하여 상호 배제를 구현하는 방법의 예제 do { while(TestAndSet(&lock)) ; // do nothing // critical section lock = false; // remainder section} while(true); 코드 해설 : lock 값이 true일 때는 initial 값이 항상 true이기 때문에 TestAndSet은 항상 true를 반환한다. 따라서 프로세스는 while(TestAndSet(&lock)); 루프를 빠져나가지 못한다. 이것은 다른 프로세스 하나가 임계구역(Critical Section)에 진입했음을 의미한다. 임계구역에 진입했던 프로세스는 임계구역을 빠져나오면서 lock = false;를 수행한다. 그때 대기중이던 프로세스 중 가장 먼저 TestAndSet을 실행한 프로세스가 while(TestAndSet(&lock)); 루프에서 false를 반환받고 while문을 빠져나오며 임계구역에 진입한다. 이 과정에서 boolean initial = lock; 과 lock = true;는 동시에 실행되므로 다른 프로세스들은 계속 while(TestAndSet(&lock)); 루프를 빠져나오지 못하고 계속 대기한다. 임계구역에 진입했던 프로세스는 임계구역을 빠져나오면서 lock = false;를 수행한다. 위의 과정이 반복된다. (ko)
- In informatica l'istruzione test-and-set viene usata per scrivere in una locazione di memoria e restituire il suo vecchio valore come una singola operazione atomica (non interrompibile). Se diversi processi possono accedere alla stessa area di memoria, e se un processo sta eseguendo una test-and-set, nessun altro processo può iniziare un'altra test-and-set finché il primo processo non ha terminato la propria. La CPU può usare l'istruzione test-and-set offerta da altre componenti elettroniche, oppure può fornire una propria istruzione test-and-set. Nell'esempio seguente la funzione controlla e modifica atomicamente il contenuto di un byte. bool Test-and-Set(bool *target){ bool val; val = *target; *target = TRUE; return val;} L'istruzione permette a più processi coordinanti di modificare una variabile condivisa senza incorrere nell'inconsistenza dei dati cioè modificandola senza il rischio che con la prelazione del sistema operativo un processo non concluda la modifica dei dati portando così a risultati imprevedibili. La zona di codice in cui il programma modifica questi dati condivisi è detta sezione critica. L'obiettivo è che su n processi solamente uno entri in sezione critica evitando così che altri processi cooperanti ad esso accedano a dati non ancora completamente modificati, mantenendo la coerenza dei dati. bool lock = FALSE;while(...){ while(Test-and-Set(&lock)) ; //il processo attende: qualcun altro è in sezione critica // -- SEZIONE CRITICA -- lock = FALSE; //il processo è uscito da SC: permette ad un altro processo di entrare // -- RESTO DEL CODICE} In questo esempio di implementazione del Test and Set il primo processo che accede all'interno del primo while può entrare in sezione critica dato che lock è inizializzato a FALSE. Il test&set però imposta ora lock a TRUE impedendo così a tutti gli altri processi che incorrono di entrare in SC e quindi "sospendendo" la loro esecuzione al secondo while (busy wait). Quando il processo iniziale ha concluso la SC imposta lock a false permettendo ad un altro processo di entrare proprio nello stesso modo in cui il primo processo è entrato. Questa implementazione però non rispetta l'attesa limitata: infatti un processo potrebbe attendere molto dato che non c'è priorità per chi arriva prima o dopo. Un'implementazione più complessa che prevede l'uso di un array per tener conto dei processi in attesa e di altre variabili ovvia a questo problema permettendo al primo elemento trovate dell'array in attesa di entrare in SC. In questo modo un processo supponendo che l'array sia di N processi non può attendere più di N - 1 volte, equilibrando perciò il tempo di attesa per tutti i processi entranti. (it)
- テスト・アンド・セット(Test-and-Set、TAS)命令は、あるメモリ位置へアトミックに書き込みを行うコンピュータの命令である。値をセットする前に何らかのテストを行い(例えば、そのメモリ位置の内容が指定された値と等しいかどうかなど)、テストが失敗した場合は値のセットは行われない。複数のプロセスが同じメモリ位置にアクセスする可能性があり、ひとつのプロセスがテスト・アンド・セットを実行中であれば、他のプロセスは最初のプロセスの命令が完了するまで、テスト・アンド・セット命令を実行開始することができない。CPUは他の電子部品(例えば、デュアルポートRAM; DPRAM)を使用してテスト・アンド・セット命令を実現していることもあるし、CPU自身で実現していることもある。 (ja)
- Test-and-set — інструкція, що використовується в інформатиці як атомарна (тобто безперервна) операція для такої послідовності дій: запис в пам'ять і повернення старого значення. Якщо декілька процесів можуть доступитися до одної ділянки пам'яті, і якщо процес наразі виконує test-and-set, жоден інший процес не може отримати доступ до цієї ділянки доки перший процес не завершить інструкцію. Центральні процесори можуть використовувати test-and-set інструкції запропоновані іншими електронними вузлами, такими як ; ЦП також пропонують власну test-and-set інструкцію. Блокування може бути виконане із використанням атомарної test-and-set інструкції, наприклад так: function Lock(boolean *lock) { while (test_and_set (lock) == 1);} Процес отримує блокування якщо старе значення було 0. Цикл продовжує встановлювати 1 доки умова не виконається. Доведено, що test-and-set має кінцеве , на відміну операції compare-and-swap. Test-and-set операція може розв'язати задачу узгодженості без очікування не більше ніж для двох конкурентних процесів. Свобода від очікування є найсильнішою гарантією прогресу без блокування, яка поєднує загальну роботу системи із свободою від голодування. Алгоритм є вільним від очікування, якщо кожна операція має обмежену кількість кроків, які зробить алгоритм до того як вона завершиться. (uk)
- Test-and-set — простая неразрывная (атомарная) процессорная инструкция, которая копирует значение переменной в регистр, и устанавливает некое новое значение. Во время исполнения данной инструкции процессор не может прервать её выполнение и переключиться на выполнение другого потока. Если используется многопроцессорная архитектура, то, пока один процессор выполняет эту инструкцию с ячейкой памяти, другие процессоры не могут получить доступ к этой ячейке, что может достигаться путём кратковременного блокирования шины памяти. Пример: enter_critical_section: TSL REGISTER, LOCK // Значение переменной LOCK копируется в регистр // и устанавливается в 1. CMP REGISTER, #0 // Старое значение сравнивается с нулем. JNE enter_critical_section // Если оно ненулевое, значит кто-то уже вошел в критическую секцию и заблокировал её. RET // Блокировка выполнена успешно, возвращаемся в вызывающую функцию. При этом разблокирование ячейки производится обычной процедурой MOV: leave_critical_section: MOV LOCK, #0 // Разблокирование переменной. RET // Возврат в вызывающую функцию. (ru)
- 在計算機科學中,檢查並設置(test-and-set-lock,TSL)是一種不可中斷的。TSL对某個記憶體位置写入1(set)並返回其舊值。 在多个进程可同時访问記憶體同个地址时,如果一個程式正在執行TSL,其他程式在它執行完成前不能執行TSL。中央處理器可提供TSL指令,或利用如雙埠隨機存取記憶體(Dual-ported RAM)等其它電子元件所提供的機制实现TSL。 下述为一種利用TSL指令來實現自旋鎖: function Lock(boolean *lock) { while (test_and_set (lock) == 1) ;} 當舊值為 0 時,這程序可以得到鎖。否則的話,它會一直嘗試將 1 寫入記憶體位置,直到舊值為 0。 锁(lock)的状态一般是0(未锁)与1(已锁)。因此下列test_and_set的实现是等价的: 1.
* if (lock==0) then 置锁, 进入临界区; else 忙等待, 重新测试; endif 2.
* 读取lock状态; lock被置为1; 测试读出的lock状态,判断进入临界区还是忙等待; x86汇编指令BTS,意味Bit Test and Set,就是一条原子操作的CPU指令。它把由操作数指定地址的锁的状态保存入CF寄存器,然后锁被设置为1. 1991年证明test-and-set具有一个有限的,能解决不超过2个并发进程的无等待问题。 (zh)
|
dbo:wikiPageExternalLink
| |
dbo:wikiPageID
| |
dbo:wikiPageLength
|
- 14434 (xsd:nonNegativeInteger)
|
dbo:wikiPageRevisionID
| |
dbo:wikiPageWikiLink
| |
dcterms:subject
| |
gold:hypernym
| |
rdf:type
| |
rdfs:comment
|
- Test-and-set (TSL, též Test-and-set lock) je v informatice jednoduchá atomická operace, která slouží k vytváření . Operace TSL funguje tak, že nastaví hodnotu typu boolean na pravdu (true) a vrátí její předchozí hodnotu. Zajistí tak, že ze soutěžících procesů je pouze jednomu dovoleno vstoupit do kritické sekce a při nežádoucím souběhu nedojde k poškození dat v kritické oblasti současným zápisem. Další proces se dostane do kritické sekce až poté, co z ní předchozí vystoupí a hodnotu zámku nastaví na nepravdu (false), přičemž čekající proces provádí pokusy o vstup ve smyčce (tzv. aktivní čekání). (cs)
- テスト・アンド・セット(Test-and-Set、TAS)命令は、あるメモリ位置へアトミックに書き込みを行うコンピュータの命令である。値をセットする前に何らかのテストを行い(例えば、そのメモリ位置の内容が指定された値と等しいかどうかなど)、テストが失敗した場合は値のセットは行われない。複数のプロセスが同じメモリ位置にアクセスする可能性があり、ひとつのプロセスがテスト・アンド・セットを実行中であれば、他のプロセスは最初のプロセスの命令が完了するまで、テスト・アンド・セット命令を実行開始することができない。CPUは他の電子部品(例えば、デュアルポートRAM; DPRAM)を使用してテスト・アンド・セット命令を実現していることもあるし、CPU自身で実現していることもある。 (ja)
- TSL son las siglas de Test and set lock, una instrucción hardware utilizada por ciertos procesadores para facilitar la creación de semáforos y otras herramientas necesarias para la programación concurrente en computadores. TSL es una instrucción máquina que realiza dos acciones: leer el contenido de una palabra de la memoria en un registro y almacenar un valor distinto de cero en dicha palabra de memoria. Al tratarse de una instrucción máquina, el procesador garantiza que la instrucción TSL es realizada sin ningún tipo de interrupción por parte de otro proceso, es decir las operaciones de lectura y escritura de la palabra tienen la garantía de ser indivisibles. Además, si nos encontramos en un sistema multiprocesador, ninguno de los demás procesadores tendrá acceso a la palabra hasta que t (es)
- In informatica l'istruzione test-and-set viene usata per scrivere in una locazione di memoria e restituire il suo vecchio valore come una singola operazione atomica (non interrompibile). Se diversi processi possono accedere alla stessa area di memoria, e se un processo sta eseguendo una test-and-set, nessun altro processo può iniziare un'altra test-and-set finché il primo processo non ha terminato la propria. La CPU può usare l'istruzione test-and-set offerta da altre componenti elettroniche, oppure può fornire una propria istruzione test-and-set. Nell'esempio seguente la funzione controlla e modifica atomicamente il contenuto di un byte. (it)
- In computer science, the test-and-set instruction is an instruction used to write (set) 1 to a memory location and return its old value as a single atomic (i.e., non-interruptible) operation. The caller can then "test" the result to see if the state was changed by the call. If multiple processes may access the same memory location, and if a process is currently performing a test-and-set, no other process may begin another test-and-set until the first process's test-and-set is finished. A CPU may use a test-and-set instruction offered by another electronic component, such as dual-port RAM; a CPU itself may also offer a test-and-set instruction. (en)
- L'instruction test-and-set est une instruction atomique utilisée en informatique dans les systèmes multiprocesseurs ou multi-cœurs utilisant une mémoire partagée, elle sert à écrire une valeur prédéterminée dans un emplacement mémoire et retourner la valeur d'origine de cet emplacement. Elle possède le nombre de consensus numéro deux. (fr)
- 검사와 지정(test-and-set) 명령어는 동시성을 제어하기 위한 동기화 명령어 중 하나로서, 하드웨어의 도움을 받아 수행된다. 이것을 활용하면 상호 배제 등을 편리하게 구현할 수 있다. 이 명령어는 원자성을 가져 명령어가 실행되는 도중에 인터럽트될 수 없으며, 명령어 내에서 수행되는 두 명령어 "boolean initial = lock" 과 "lock = true"는 동시에 실행되어 둘 다 실행되거나 둘 중 하나가 실행되지 않으면 나머지 하나도 실행되지 않는다. function TestAndSet(boolean_ref lock) { boolean initial = lock lock = true return initial} 검사와 지정을 활용하여 상호 배제를 구현하는 방법의 예제 do { while(TestAndSet(&lock)) ; // do nothing // critical section lock = false; // remainder section} while(true); 코드 해설 : 임계구역에 진입했던 프로세스는 임계구역을 빠져나오면서 lock = false;를 수행한다. (ko)
- Test-and-set — простая неразрывная (атомарная) процессорная инструкция, которая копирует значение переменной в регистр, и устанавливает некое новое значение. Во время исполнения данной инструкции процессор не может прервать её выполнение и переключиться на выполнение другого потока. Если используется многопроцессорная архитектура, то, пока один процессор выполняет эту инструкцию с ячейкой памяти, другие процессоры не могут получить доступ к этой ячейке, что может достигаться путём кратковременного блокирования шины памяти. Пример: (ru)
- Test-and-set — інструкція, що використовується в інформатиці як атомарна (тобто безперервна) операція для такої послідовності дій: запис в пам'ять і повернення старого значення. Якщо декілька процесів можуть доступитися до одної ділянки пам'яті, і якщо процес наразі виконує test-and-set, жоден інший процес не може отримати доступ до цієї ділянки доки перший процес не завершить інструкцію. Центральні процесори можуть використовувати test-and-set інструкції запропоновані іншими електронними вузлами, такими як ; ЦП також пропонують власну test-and-set інструкцію. (uk)
- 在計算機科學中,檢查並設置(test-and-set-lock,TSL)是一種不可中斷的。TSL对某個記憶體位置写入1(set)並返回其舊值。 在多个进程可同時访问記憶體同个地址时,如果一個程式正在執行TSL,其他程式在它執行完成前不能執行TSL。中央處理器可提供TSL指令,或利用如雙埠隨機存取記憶體(Dual-ported RAM)等其它電子元件所提供的機制实现TSL。 下述为一種利用TSL指令來實現自旋鎖: function Lock(boolean *lock) { while (test_and_set (lock) == 1) ;} 當舊值為 0 時,這程序可以得到鎖。否則的話,它會一直嘗試將 1 寫入記憶體位置,直到舊值為 0。 锁(lock)的状态一般是0(未锁)与1(已锁)。因此下列test_and_set的实现是等价的: 1.
* if (lock==0) then 置锁, 进入临界区; else 忙等待, 重新测试; endif 2.
* 读取lock状态; lock被置为1; 测试读出的lock状态,判断进入临界区还是忙等待; x86汇编指令BTS,意味Bit Test and Set,就是一条原子操作的CPU指令。它把由操作数指定地址的锁的状态保存入CF寄存器,然后锁被设置为1. (zh)
|
rdfs:label
|
- Test-and-set (cs)
- Test-and-set lock (es)
- Test-and-set (it)
- Test-and-set (fr)
- テスト・アンド・セット (ja)
- 검사와 지정 (ko)
- Test-and-set (en)
- Test-and-set (ru)
- 检查并设置 (zh)
- Test-and-set (uk)
|
owl:sameAs
| |
prov:wasDerivedFrom
| |
foaf:isPrimaryTopicOf
| |
is dbo:wikiPageRedirects
of | |
is dbo:wikiPageWikiLink
of | |
is foaf:primaryTopic
of | |