베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 토비스프링
    • jpa
    • BFS
    • 자바8
    • 스프링시큐리티
    • 스레드
    • leetcode
    • 운영체제
    • 알고리즘
    • Spring
    • 자바
    • java
    • 코드업
    • 함수형인터페이스
    • 백준
    • C++
    • 이펙티브자바
    • 데이터베이스
    • 스프링
    • dfs

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    [운영체제] 원격 프로시저 호출(RPC)
    운영체제(OS)/공룡책

    [운영체제] 원격 프로시저 호출(RPC)

    2021. 3. 29. 14:36

    네트워크에 연결된 두 시스템 사이의 통신을 위해 RPC(Remote Procedure Calls)를 이용할 수도 있다.

     

    두개의 서로 다른 객체가 있을 때 RPC의 과정은 다음과 같다.

     

    1 ) 객체1은 stub을 호출하여 다른 기계에 있는 포트번호를 알아낸다.

     

    2 ) 포트 번호를 찾으면 데이터를 보내기 좋은 형태롤 정돈(marshall)한다. 

     

    3 ) 객체2의 stub은 메세지를 받고 정돈된 데이터를 읽는다.

     

     

    [정돈(marshall)]

    marshall은 왜 필요한가?

    클라이언트와 서버 기기의 데이터 표현 방식의 차이를 생각해볼 수 있다. 어떤 기계(big-endian)는 최상위 바이트를 먼저 저장하고, 어떤 기계(little_endia)는 최하위 바이트를 먼저 저장할 수 있다. 이와 같은 차이를 해결하기 위해 RPC는 기종 중립적인 데이터 표현 방식을 정의한다.(XDR : external data representation)

     

     

    RPC에서 생길 수 있는 2가지 문제를 생각해보자

    1 ) 네트워크를 기반으로 한 RPC는 네트워크 오류 때문에 실패할 수도 있고, 메세지가 중복되어 호출이 여러 번 실행될 수 있다. 

     

    이를 해결하기 위해선 최대 한 번 실행되는 것이 아니라 정확히 한번 처리되도록 보장해야한다.

    이를 위해서 각 메세지에 타임스탬프를 매기는 방법을 생각할 수 있다.

     

    2 ) 포트 번호를 알아내기 힘들다.

     이를 해결하기 위해 고정된 포트 주소 형태로 미리 정해 놓는 방법이 있다.

     또 다른 방법으로 디먼(matchmaker)를 이용할 수도 있다.

     

      '운영체제(OS)/공룡책' 카테고리의 다른 글
      • [운영체제] 다중 코어 프로그래밍
      • [운영체제] 스레드
      • [운영체제] 소켓
      • [운영체제] 파이프
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바