검색 여닫기
검색
메뉴 여닫기
519
228
4
2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Shim 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Shim
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류: 전산용어]] == 개요 == 컴퓨터 프로그램, [[컴퓨터 시스템]]에서 shim이란, 특정 API에 대한 요청을 [[transparent]]하게 intercept해서 실행시키는 [[라이브러리]]를 의미한다. Shim은 오래된 API에 대한 지원이나, 새로운 API를 오래된 Application에서 사용하기 위해서 사용된다. 예를 들어서,[[LD_PRELOAD]]는 libc라이브러리와 같은 Shared library에 대한 API를 중간에서 가로채서 새로운 API에 제공한다. 이를 통해서 LD_PRELOAD를 통해서 Loading되는 Application은 Binary patch없어도, 새로운 API를 사용할 수 있다. Docker에서 shim을 통해서, runC (Docker container을 생성하는 프로그램)에 대한 API요청을 contained-shim이 가로채서, containerd는 containerd-shim을 통해서 runC를 호출하고, containerd-shim은 생성된 Container을 계속해서 관리시킬 수 있도록 하였다. Shim은 [[Level of indirection]]의 한 예시로 볼수 있다. Libc <- LD_PRELOAD -> Application나, runC <- Containerd-shim -> Containerd처럼 중간 레이어에 해당하는 새로운 API재정의 라이브러리를 통해서, Shim을 사용할 수 있도록 하는 것이다. (직접 접근이 아니라 새로운 계층을 통해서 접근)
Shim
문서로 돌아갑니다.