
나는 Multics 운영 체제를 읽었습니다. 세그먼트 설명자 단어(책)에는 세그먼트의 게이트 수에 대한 부분이 하나 있습니다. 문은 무슨 뜻인가요? 게이트가 허용하는 경우(유효한 세그먼트 게이트 중 하나를 진입점으로 사용) 프로세스가 더 높은 권한의 링에 들어갈 수 있다는 것을 알고 있지만 게이트가 무엇을 의미하는지 정확히 모르겠습니다.
감사해요.
답변1
게이트는 단순히 특별히 선언된 진입점입니다. 진입점은 오늘날의 언어로 루틴, 함수 또는 프로시저라고 합니다. 컴파일러나 어셈블러는 게이트인 진입점에 대한 추가 정보를 생성합니다. 게이트 진입점은 게이트보다 권한이 낮은 링에서 실행되는 코드로 호출할 수 있습니다. 비게이트 진입점은 더 높은 번호의(권한이 낮은) 링에서 실행되는 코드에서 호출할 수 없습니다.
자세한 내용은 AL-39 매뉴얼의 섹션 8과 call6 명령어 설명을 참조하세요. 다음은 스니핏입니다.
게이트는 특정 링에 상주하는 프로시저이며 링에 대한 제어된 액세스를 제공하기 위한 것입니다. 링 R에 있는 프로그램은 내부 링 r과 관련된 게이트 프로시저 중 하나를 호출해야만 내부 링 r에 들어갈 수 있습니다. 게이트는 신중하게 코딩되어야 하며 권한이 낮은 링에서 호출자가 제조하거나 수정한 데이터를 신뢰해서는 안 됩니다. 특히 게이트는 내부 링에 있는 세그먼트의 보호를 손상시키지 않도록 호출자가 전달한 모든 인수의 유효성을 검사해야 합니다.
답변2
참고로 Multics에서 사용된 것과 매우 유사한 링 전환용 콜 게이트 메커니즘은 "보호 모드"를 지원하는 모든 Intel x86 시스템에서도 사용할 수 있으므로 80286부터 사용할 수 있습니다.