2010년 3월 10일 수요일

L4 chapter 2. Thread

OKL4 provides threads which represents a context of execution within a program.
Threads can be used together with scheduling to manage the sharing of processing time.
An OKL4 system consists of a fixed set of thread identifiers, each of which may be used or available.
(OKL4 syste은 사용되거나 이용할 수 있는 고정된 쓰레드 식별자(identifier)의 집합으로 구성된다.)
An unique thread identifier is allocated to each thread, and each thread is associated with an address space.(as described in Chapter A-3.)
(유일한 쓰레드 식별자는 각 쓰레드마다 할당되고, 각 쓰레드는 address space와 조합된다.)


In OKL4, threads serve three main purpose:
 a. Threads represent the active parties during communication between different address space, or between user programs and the microkernel.
 b. Threads endeavour to provide time protection and an abstraction of an uninterrupted flow of time on a processing unit.

OKL4 threads behave in a similar manner to threads in most multi-tasking environments.
(OKL4 Thread는 대부분의 멀티태스킹 환경상의 쓰레드와 비슷한 방식으로 동작한다.)
OKL4 achieves the illusion of an uninterrupted flow of time using an integrated pre-emptive scheduler.
(OKL4는 통합된 선정형 스케줄러를 사용하여 간섭이 없는 시간흐름(an uninterrupted flow of time)의 환영을 달성했다).

1. Thread States
 At a given point in time, the state of a thread may be captured by one of ten distinct thread states.
 (주어진 시점에서, 쓰레드의 상태는 10개의 다른 쓰레드 상태중에 하나로 포착될 수 있다. - 의역 : 10개중에 하나가 될 수 있다.)
 a. A thread is in an inactive state when it has been temporarily suspend using the ExchangeRegisters system call or it encounters an unhandled exception.
 (쓰레드는 ExchangeRegister 시스템 콜을 사용하여 임시적으로 suspending되거나 제어할 수 없는 예외상황으로 들어갈 때 inactive 상태이다.)
    - An inactive thread is unable to be scheduled for execution until it has been resumed using an appropriate ExchnageRegisters system call.
 b. A thread is in an running state when it has been properly configured using the ThreadControl system call, has not been suspended using the ExchangeRegisters system call, is not currently participating in an IPC message exchanage.
 (쓰레드는 ThreadContorl 시스템콜을 사용하겨 적절하게 구성되고, ExchagenRegisters를 사용하여 중지되지 않고, IPC 메시지 교환에 관여되고 있지 않을 때 실행상태이다.)
    - Running threads are free to scheduled by OKL4. Note that runnig threads may not be executing on a processor at a given point in time.
 c. A thread is in a polling state after it has issued a blocking IPC send operation, but the receiver of the message has yet to issue a corresponding IPC receive operation.
 (쓰레드는 blocking IPC Send 오퍼레이션이 호출된(issued) 후에는 polling state이다. 그러나 메세지 수신자는 언젠가는 적합한(맞는) IPC receive 오퍼레이션을 호출해야 한다.(issue))
    * Sender는 IPC send op를 호출한 상태이고, Receiver는 receive operation(sending message에 대한)을  호출하지 않은 상태일때이다.
 d. A thread is in a sending state during the transfer of data that occurs after it has issued an IPC send opertaion and the receiver of the message has issued a corresponding IPC receive operation.
 (IPC Send OP가 호출(issued)된 후에 일어나는 Data 전송동안에 쓰레드는 sending 상태이다. 그리고, 메세지 수신자는 적합한(send message에) IPC receive OP를 호출한다.
 e. A thread is in a waiting to receive state after it has issued a blocking IPC receive operation to a thread that has not yet issued a corresonding IPC send operation, except when it is waiting for notification as described blow
 (쓰레드는 적합한 IPC send OP를 아직까지 호출하지 않은 Thread를 향해 블럭킹 IPC receive OP를 호출한 후에는 waiting 상태이다. 아래 waiting for notification 상태를 제외하고,)
 f. A thread is in a waiting for notification state, when it has issued a blocking IPC receive operation requeseting the reception of an asynchronous notification message.
 (쓰레드는 비동기 Notification 메세지 수신을 요청하는 블럭킹 IPC receive OP를 호출했을 때 waiting for notification 상태이다.)
 g. A thread is in a waiting on mutex state after it has issue a blocking Mutex lock operation on a mutex is currently locked
 (쓰레드는 현재 잠긴 Mutex에 블럭킹 Mutex lock OP를 호출했을 때는 waiting mutex 상태이다.)
 h. A thread is in a receiving state during the transfer of data that occurs after it has issued an IPC receive operation and the receiver of the message has issued a corresponding IPC send operation.
 (쓰레드는 메세지의 sender(오타인듯)는 적합한(메세지에 맞는) IPC Send OP를 호출했고, IPC receive OP이 호출된 후 Data가 전송되는 동안은 receiving 상태이다.)

2. Thread identifiers
 Each thread in the system, regardless of its state, is associated with a thread number which allows each thread in the system to be uniquely identified.
 (시스템의 각 Thread는 시스템상의 Thread들을 유니크하게 구분되어질 수 있게 하는 하나의 Thread number로 구성된다.)

3. Exceptions
 The OKL4 microkernel enables the implementation of such operating system personalities by associating each thread in the system with an exception handler entrusted with performing any required error recovery procedure on behalf of the thread.
 (OKL4 마이크로 커널은 쓰레드를 대신하여 에러 복구 처리를 위임받은 Exception handler를 가지는 시스템상의 각 쓰레드로 구성되어서 이러한 OS(예외처리방법)의 특징들을 구현을 가능하게 한다.)

4. Virtual Registers
 a. Each thread is a finite state machine whose state is contained in its registers.
 (각 쓰레드는 register에 저장되는 유한 상태 머신이다.)
 b. OKL4 defines a number of virtual register that are implemented as thread-local varialbles stored in the UTCB entry of the thread.
 (OKL4는 thread의 UTCB entry에 저정된 thread-local variable들처럼 구현되어진 다수의 가상 register를 정의한다.)
 c. Virtual registers come in four variants identified by their access type: none, read-only, write-only and read/write.
 (가상 레지스터들은 그들의 access type에 따라서 4개의 상태(접근금지(설명되어 있음), 읽기전용, 쓰기전용, 읽기/쓰기)안에서 변한다.)
 Register with an access type of none are said to be inaccessible.
 d. Any attempt by the thread to modify the value of an inaccessible or read-only register or to obtain the content of an inaccessible or write-only register will render the state of the corresponding address space undefined.
 (엑세스가 되지 않는 값 또는 읽기전용 레지스터를 수정하려고 하거나 엑세스가 되지 않는 컨텐츠 또는 쓰기전용 레지스터를 획득하려고 하는 쓰레드의 어떤 시도는 (register에) 상응하는 address space를 불확정하게 만든다.)
 f. The OKL4 API defines three groups of transient registers : parameters, result and message registers. For performance
reasons, transient registers may be mapped to the general-purpose registers of the underlying architecture during certain system calls.
 (OKL4 API는 3개의 일시적인 레지스터-파라메터, 결과값 그리고 메세지- 그룹을 정의한다. 수행능력의 이유로, 확실한 시스템중에 일시적인 레지스터는 아키텍처 기반의 일반목적 레지스터에 매핑될 수도 있다.)
 * 일시적인 레지스터는 암묵적으로 예측할 수 없는 방법으로 수정될 수 있기 때문에 레지스터의 값이 유지될 것이라고 가정하면 안된다. - 물론 메뉴얼에 기술된 방법을 사용하는 것은 제외하고.
 g. The remaining virtual registers contain various thread control parameters. Their values are always preserved except when explicitly modified by the user or a system call.
 (남아 있는 가상 레지스터(다른 것들)는 여러가지 쓰레드 제어 파라메터를 포함한다. 이들의 값은 명백하게 사용자나 시스템 콜에 의해서 수정될 때를 제외하고는 항상 유지된다.)

댓글 없음:

댓글 쓰기