체인 로딩

Chain loading

체인 로딩(chain loading)은 컴퓨터 프로그램이 현재 실행 중인 프로그램을 새로운 프로그램으로 대체하기 위해 사용하는 방법으로, 공통 데이터 영역을 사용하여 현재 프로그램의 정보를 새 프로그램으로 전달한다.그것은 컴퓨팅의 몇 가지 영역에서 발생한다.

체인 로딩은 오버레이의 사용과 유사하다.그러나 오버레이와는 달리 체인 로딩은 현재 실행 중인 프로그램 전체를 대체한다.오버레이는 일반적으로 실행 중인 프로그램의 일부만 대체한다.오버레이의 사용과 마찬가지로, 체인 로딩의 사용은 애플리케이션의 I/O 로드를 증가시킨다.

부트 관리자 프로그램에서 체인 로드

운영 체제 부트 관리자 프로그램에서 체인 로딩은 부트 관리자에서 부트 섹터로 제어권을 전달하는 데 사용된다.대상 부트 섹터는 디스크에서 로드되어 부트 관리자 자체가 부트스트랩되어 실행된 메모리 내 부트 섹터를 대체한다.

Unix의 체인 로드

Unix(및 Unix 유사 운영 체제)에서는 system call을 사용하여 체인 로딩을 수행한다.현재 프로세스의 프로그램 이미지는 완전히 새로운 이미지로 대체되고 현재 스레드는 해당 이미지의 실행을 시작한다.공통 데이터 영역은 프로세스의 환경 변수로 구성되며, 시스템 호출에 걸쳐 보존된다.

Linux에서 체인 로드

게다가() 프로세스 레벨 체인 로딩 리눅스는 전체 운영 체제 커널을 다른 버전으로 대체하기 위해 kexec() 시스템 호출을 실행한다.새 커널은 마치 전원을 켠 상태에서 시작된 것처럼 부팅되며 실행 중인 프로세스가 보존되지 않는다.

BASIC 프로그램의 체인 로딩

BASIC 프로그램에서 체인 로딩은CHAIN성명서(또는, Commodore BASIC에서, Commodore BASIC에서는,LOAD문)은 현재 프로그램이 종료되고 체인으로 연결된 프로그램이 로드 및 호출되도록 한다(이를 지원하는 BASIC의 방언에서는 새 프로그램의 첫 번째 행의 기본값 대신 실행이 시작될 라인 번호를 지정하는 선택적 매개 변수).공통 데이터 영역은 사용 중인 BASIC의 특정 방언에 따라 달라진다.예를 들어 BBC BASIC에서는 모든 변수의 특정 부분 집합만이 체인에 걸쳐 보존된다.다른 BASIC에서는COM문장은[1] 와 함께 사용할 수 있다.CHAIN체인 작업에서 공통 데이터로 보존할 변수를 지정한다.

체인 로딩은 BASIC 프로그램이 이용 가능한 프로그램과 가변 메모리에 들어갈 수 있는 것보다 더 많은 프로그램 코드를 실행할 수 있게 해준다.따라서 BASIC으로 작성된 애플리케이션은 다음과 같은 일련의 협력 프로그램을 통해 작업 메모리의 크기보다 훨씬 클 수 있다.CHAIN프로그램 흐름이 전체 애플리케이션 내에서 이동함에 따라 그들 사이에서 앞뒤로 움직인다.

FORTRAN 프로그램의 체인 로드

Fortran의 많은 버전에는CALL CHAIN또는CALL LINKCONMANY 스토리지의 내용을 보존하면서 체인 로딩을 수행하는 문장.[2]이것은 관련이 없는 것과 같지 않다.LINKGNU 포트란의 서브루틴.[3]

OS/360의 체인 로딩

OS/360후속 작업자는XCTL("전송 제어"의 경우) 매크로 체인 로딩.운영체제의 메모리 관리 때문에 이것은 메모리에 있는 호출 프로그램의 코드를 교체하거나 교체하지 않을 수 있다.

참고 항목

참조

  1. ^ "HP 2000/Access BASIC" (PDF). bitsavers.trailing-edge.com. HP. pp. 11–25. Retrieved 16 January 2020.
  2. ^ IBM Corporation (1974). IBM 1130/1800 Basic FORTRAN IV Language (PDF). p. 14.
  3. ^ "The GNU Fortran Compiler". Retrieved Oct 27, 2013.