본문 바로가기

기술 용어 검색

재진입코드 (Reentrant Code)

1. 공통프로그램 동시처리를 위한 재진입코드(Reentrant Code)의 개요
  가. 재진입코드의 정의
    - 메모리내의 동일한 사본이 다중 사용자들에 의해 공유될 수 있도록 작성된 프로그램이나 루틴
    - 공통기능이나 시스템 프로그램에서 사용하는 변수, 데이터의 메모리 영역은 손상가능성이 크기 때문에 별도의
      Address Space을 부여하여 보호하며 퇴출 시 회수한다.
    - 멀티쓰레드 개념에서는 Local변수가 쓰레드별로 정의되고 끝나면 GC에 의해 회수되는 것과 유사한 개념이다
  나. Reentrant Code의 필요성
    - 다중 사용자 환경에서 자원의 공유
    - 실시간 OS등에서 제한된 환경에 적응위한 기법으로 필요
    - 시스템프로그램, 유티러티, 공통마크로 등은 반드시 Reentant coding
    - 응용프로그램내에서도 공통Routine의 변수는 재진입코드로 작성함
    - 공통프로그램의 재진입을 허용하기 때문에 기능과 변수의 일관성 유지

2. Reentrant Code 의 작성 시 유의사항
  가. Reentrant Code의 작성 방법
    1) 전역변수는 사용 불가
    2) 프로그램내의 메모리 설정은 Address Space개념으로 접근
    3) 공통 Area의 사용 시 주변 환경 정보를 Save하고 공통Area를 벗어날 때 Restore한다.
    4) 재진입이 필요한 Code는 자원을 공유하지 않토록함
    5) 공유해야할 경우 상호배제 알고리즘를 구현해야 한다.
    6) 동일한 우선순위를 갖는 타스크는 Round-robin을 하지 않아야함
    7) Local 변수를 사용하고 멀티쓰레드를 사용한다.
  나. 프로그램 언어에 따라 재진입 코드 작성 방법
    1) 객체지향 프로그램언어 JAVA는 개발자가 어드레싱을 하지 않기 때문에 Thrread기법을
      사용하여 재진입코드를 구현하거나 ejb에 설정하고 컨텐이너가 빈을 호출한다.
    2) 어셈블리어 언어는 직접 레지스터를 이용하여 메모리영역을 설정하고 해제한다.
    3) 재진입 코드를 지워하는 API을 이용한다.(공통 매크로, 라이브러리 등)
    4) reentrant code generation 이용
      FORTRAN이나 BASIC 컴파일러에 의해 자동으로 어셈블리어 목적 코드와 호환성이 있는 재진입 코드를 만들어 냄

3. Reentrant Code 와 일반코드의 차이점'

사용자 삽입 이미지


4. 공통프로그램 동시처리에 필요한 주요 기법 및 활용
가. 공통프로그램 동시처리에 필요한 주요 기법
 - 문맥교환(Context Swiching)
 - 우선순위 역전
 - 상호배제(Mutual exclusion)
 - 멀티쓰레드

나. Reentrant Code 의 활용
  1) RTOS가 활성화되면서 응용프로그램의 다중 사용자 환경 구현
    - JAVA의 경우 Reentrant Code를 위한 표준 제시
  2) 기능적으로 Reentrant Code 을 요구하는 경우
    - 업무 프로그램에서 Controller 또는 조정자 역할을 하는 프로그램
  3) 다중처리기 구조에서 재진입이 필요없는 경우
    - Master/Slave 다중처리기 구조

'기술 용어 검색' 카테고리의 다른 글

데드락 (Deadlock)  (0) 2008.06.19
MPLS (Multiprotocol Label Switching)  (0) 2008.06.19
IPv6  (0) 2008.06.19