| dbpprop:abstract
|
- A computer program or routine is described as reentrant if the routine can be re-entered while it is already running (i. e it can be safely executed concurrently). To be reentrant, a computer program or routine: Must hold no static (or global) non-constant data. Must not return the address to static (or global) non-constant data. Must work only on the data provided to it by the caller. Must not rely on locks to singleton resources. Must not modify its own code. (unless executing in its own unique thread storage) Must not call non-reentrant computer programs or routines.
- Eine Routine bzw. Methode wird als eintrittsinvariant (engl. reentrant) oder auch wiedereintrittsfähig bezeichnet, wenn sie so implementiert ist, dass sie von mehreren Prozessen gleichzeitig ausgeführt werden kann. Dabei dürfen sich die gleichzeitig ausgeführten Instanzen nicht in die Quere kommen. Die Ausführung jeder Instanz läuft also gleich ab, egal wie viele andere Instanzen es noch von dieser Methode gibt. Das Ziel eines Designs für eine eintrittsinvariante Methode ist es, sicherzustellen, dass kein Teil des Programmcodes selbst durch die Methode geändert wird und dass prozesseigene Informationen wie beispielsweise lokale Variablen in getrennten Speicherbereichen gehalten werden. Eintrittsinvariante Programmkonstrukte sind die Basis für viele Multitasking-Systeme.
- En informatique, la réentrance est la propriété pour une fonction d'être utilisable simultanément par plusieurs tâches utilisatrices. La réentrance permet d'éviter la duplication en mémoire vive d'un programme utilisé simultanément par plusieurs utilisateurs. L'écriture de code réentrant était autrefois une tâche très ardue. Elle s'est simplifiée avec les langages actuels qui autorisent : l'allocation dynamique de mémoire, la séparation, dans des segments distincts, du code et des données, la gestion de piles. Le noyau d'un système d'exploitation comporte souvent des parties non réentrantes afin d'éviter des complications fâcheuses (incohérence de données critiques, perte de performances). L'écriture de modules destinés à être exécutés dans l'espace noyau reste, pour cette raison, délicate.
- In informatica, il codice di un programma o di una routine è detto rientrante se è progettato in modo che una singola copia del codice in memoria possa essere condivisa ed eseguita contemporaneamente da utenti multipli o processi separati. La programmazione rientrante è vitale per molti sistemi multitasking. Affinché una routine o comunque una parte di codice sia rientrante deve soddisfare questi requisiti: Nessuna porzione del codice possa essere alterata durante l'esecuzione (codice non automodificante); Il codice non deve richiamare nessuna routine che non sia a sua volta rientrante. Per esempio molte implementazioni delle funzioni malloc e free in C non lo sono (stesso discorso per new e dispose in Pascal) e non devono essere utilizzate. In caso sia necessario allocare memoria si potrebbero utilizzare le API di sistema (dopo averne consultato la documentazione per avere la certezza che siano rientranti), che, potendo in teoria essere chiamate in qualsiasi momento e in qualsiasi situazione (perlomeno in un sistema pienamente multitasking) offrono maggiori garanzie. Il codice deve usare, se necessarie, solo variabili temporanee allocate sullo stack. Il codice non deve modificare né variabili globali né aree di memoria condivisa né impiegare variabili locali statiche. Se una data porzione di codice non rispetta queste regole, non è possibile farla eseguire da più processi contemporaneamente ma è necessario regolarne l'accesso tramite semafori o sezioni critiche, per assicurarsi che venga eseguita da un solo processo alla volta. La parte di codice dei kernel che implementa la sincronizzazione interprocesso (semafori, sezioni critiche ecc. ) non è rientrante per definizione. Il kernel dei sistemi operativi Windows NT è completamente rientrante, a differenza di quello di Windows 9x, le cui notevoli porzioni di codice a 16 bit derivate da MS-DOS non sono rientranti. Pertanto l'accesso a codice di sistema a 16 bit in Windows 9x è regolato da una sezione critica globale, con il risultato che spesso il sistema operativo opera in maniera monotask. Le funzioni ricorsive dovrebbero essere sempre rientranti, sebbene sia possibile scrivere funzioni ricorsive non rientranti con le dovute cautele.
- リエントラント(Reentrant、再入可能)とは、プログラムやサブルーチンが、静的な内部状態をもたないので、再帰的にも、複数のスレッドからも、データを壊すおそれなく呼び出せる場合をいう。関数がリエントラントであるためには、静的データを保持してはならず、静的データへのポインタを返してもいけない。呼出し側が提供したデータだけに基づいて処理を行わなければならず、リエントラントでない関数を呼び出してはならない。 リエントラントなコードはスレッドセーフであるほか、データを壊すことなく処理を一時中断することもできる。 セマフォのような同期機構を用いて静的データへのアクセスを保護したコードは、スレッドセーフではあるがリエントラントではない。 スレッドセーフなコードを書く場合に、その手法として、リエントラントなコードを採用することがある。しかし、リエントラントなコードは、同期機構を用いた単にスレッドセーフなコードを書くのに比べて難度が高い。 誤解されることが多いが、仮想記憶によって物理記憶上のプログラムのイメージを複数のプロセスのアドレス空間にマッピングして使用するなどの設計と、リエントラントという概念は厳密には同じではない。
- Wielobieżność – cecha jądra systemu operacyjnego, pozwalająca na jednoczesną pracę kilku procesów w trybie jądra.
- Em programação, reentrância refere-se a qualidade duma subrotina de ser executada concorrentemente de forma segura, isto é, a subrotina pode ser invocada enquanto está em execução. Para atenter essa qualidade, a subrotina não deve armazenar dados estáticos (globais) não constantes, não deve retornar o endereço de dados estáticos não constantes, deve trabalhar somente com os dados fornecidos pela subrotina que a invocou, não deve contar com exclusão mútua para recursos construídos com o modelo singleton e só deve invocar subrotinas que também atendam as qualidades anteriores, isto é, que também sejam reentrantes. Vários níveis de prioridade de tarefas ou multiprocessamento geralmente complica o controle de código reentrante. Código I/O geralmente não é reentrante pois manipula recursos singleton como discos rígidos. Entretanto, a reentrância é uma funcionalidade importante da programação funcional.
- Компьютерная программа в целом или её отдельная процедура называется реентера́бельной, если она разработана таким образом, что одна и та же копия инструкций программы в памяти может быть совместно использована несколькими пользователями или процессами. При этом второй пользователь может вызвать реентерабельный код до того, как с ним завершит работу первый пользователь и это как минимум не должно привести к ошибке, а в лучшем случае не должно вызвать потери вычислений (то есть не должно появиться необходимости выполнять уже выполненные фрагменты кода). Реентерабельность тесно связана с безопасностью функции в многопоточной среде, тем не менее, это разные понятия. Обеспечение реентерабельности является ключевым моментом при программировании многозадачных систем, в частности, операционных систем. Для обеспечения реентерабельности необходимо выполнение нескольких условий: никакая часть вызываемого кода не должна модифицироваться; вызываемая процедура не должна сохранять информацию между вызовами; если процедура изменяет какие-либо данные, то они должны быть уникальными для каждого пользователя; процедура не должна возвращать указатели на объекты, общие для разных пользователей. В общем случае, для обеспечения реентерабельности необходимо, чтобы вызывающий процесс или функция каждый раз передавал вызываемому процессу все необходимые данные. Таким образом, функция, которая зависит только от своих параметров, не использует глобальные и статические переменные и вызывает только реентерабельные функции, будет реентерабельной. Если функция использует глобальные или статические переменные, необходимо обеспечить, чтобы каждый пользователь хранил свою локальную копию этих переменных.
- 若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即,当该子程序正在运行时,可以再次进入并执行它。若一个函数是可重入的,则该函数: 不能含有静态(全局)非常量数据。 不能返回静态(全局)非常量数据的地址。 只能处理由调用者提供的数据。 不能依赖于单实例模式资源的锁。 不能调用不可重入的函数。 多'用户/对象/进程优先级'以及多进程一般会使得对可重入代码的控制变得复杂。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的资源。 可重入性是函数编程语言的关键特性之一。
|
| rdfs:comment
|
- A computer program or routine is described as reentrant if the routine can be re-entered while it is already running (i. e it can be safely executed concurrently). To be reentrant, a computer program or routine: Must hold no static (or global) non-constant data. Must not return the address to static (or global) non-constant data. Must work only on the data provided to it by the caller. Must not rely on locks to singleton resources. Must not modify its own code.
- Eine Routine bzw. Methode wird als eintrittsinvariant (engl. reentrant) oder auch wiedereintrittsfähig bezeichnet, wenn sie so implementiert ist, dass sie von mehreren Prozessen gleichzeitig ausgeführt werden kann. Dabei dürfen sich die gleichzeitig ausgeführten Instanzen nicht in die Quere kommen. Die Ausführung jeder Instanz läuft also gleich ab, egal wie viele andere Instanzen es noch von dieser Methode gibt.
- En informatique, la réentrance est la propriété pour une fonction d'être utilisable simultanément par plusieurs tâches utilisatrices. La réentrance permet d'éviter la duplication en mémoire vive d'un programme utilisé simultanément par plusieurs utilisateurs. L'écriture de code réentrant était autrefois une tâche très ardue.
- In informatica, il codice di un programma o di una routine è detto rientrante se è progettato in modo che una singola copia del codice in memoria possa essere condivisa ed eseguita contemporaneamente da utenti multipli o processi separati. La programmazione rientrante è vitale per molti sistemi multitasking.
- Wielobieżność – cecha jądra systemu operacyjnego, pozwalająca na jednoczesną pracę kilku procesów w trybie jądra.
- Em programação, reentrância refere-se a qualidade duma subrotina de ser executada concorrentemente de forma segura, isto é, a subrotina pode ser invocada enquanto está em execução.
- Компьютерная программа в целом или её отдельная процедура называется реентера́бельной, если она разработана таким образом, что одна и та же копия инструкций программы в памяти может быть совместно использована несколькими пользователями или процессами.
|