142 | | == H) Implementations == |
| 142 | == H) Text terminals == |
| 143 | |
| 144 | The target hardware architectures generally provide a variable - but bounded - number of text terminals (called TXT channels). This NB_TXT_CHANNELS is an hardware parameter defined in the ''arch_info.bin file. We describe here how ALMOS-MKH uses these resources: |
| 145 | 1. The TXT[0] terminal is reserved for the kernel. It is normally used by the kernel to display log and/or debug messages. It can only be used by the user processes for debug, through some specific system calls such as the panic() or display_xxx() functions, that should not be used in normal exploitation. |
| 146 | 1. The other (NB_TXT_CHANNELS - 1) terminals TXT[i] are shared resources used by all user processes. During kernel initialization, ALMOS-MKH creates the first ''INIT'' user process, that creates itself (NB_TXT_CHANNELS -1) ''KSH'' user processes (one shell per user text terminal). All user process created by the KSH[i] process |
| 147 | share the same TXT[i] terminal, and belong to the same ''group'' of process. |
| 148 | 1. In normal use, the ''KSH[i]'' processes should not be destroyed. If a ''KSH[i]'' process is killed, it is automatically recreated by the ''INIT'' process, to guaranty that there is always one ''KSH[i]'' for each TXT_i terminal. |
| 149 | 1. Regarding the WRITE accesses, all processes attached to the same TXT[i] terminal can atomically display character strings without any guaranty on the order.mutual exclusion mechanism. The strings providing from various processes will be simply sequentialized |
| 150 | by the kernel thread associated to the shared TXT[i] device. |
| 151 | 1. Regarding the READ accesses, only one process the group of process attached to the TXT[i] terminal (called ''foreground'' process) can read characters. The other processes (called s ''background'' processes) should not try to read characters. If a background process try to read, it receives a SIGSTOP signal, and will keep blocked |
| 152 | until the user uses the fg shell command to put it in foreground mode. |
| 153 | |
| 154 | == I) Implementations == |