1. 분산 운영체제의 개요
분산 시스템 : 크기나 성능이 다를 수 있는 여러 대의 컴퓨터가 네트워크로 연결되어 이루어진 시스템
장점:
- 자원 공유
- 성능 향상
- 신뢰성 향상
- 통신의 편리성
자원 공유
- 각 컴퓨터의 자원을 네트워크로 연결된 컴퓨터가 공유
- 예: 프린터 공유, 1000대 컴퓨터의 각 256GB 저장장치 등
성능 향상
- 여러 대의 프로세서에 작업을 분할하여 병렬적으로 동시 수행
- 많은 클라이언트가 동시에 작업을 요청할 때 복수의 서버가 처리
신뢰성 향상
- 한 대가 고장나더라도 다른 컴퓨터가 작업을 계속 수행
- 하드웨어나 데이터의 중복을 통한 해결 가능
통신의 편리성
- 단일 시스템 내부에서 동작하는 서비스와 같은 서비스 제공
- 예: A 위치의 파일을 B 위치로 복사
분산시스템의 네트워크 구성
- 네트워크 연결 방법 : 완전 연결, 부분 연결
분산 시스템 구축시 고려사항
- 망 구축비용: 사이트들을 물리적으로 연결하는 비용
- 통신비용: 메시지를 보내는 데 필요한 비용
- 신뢰성: 링크나 사이트 고장시 정상적 동작 가능 정도
부분연결 네트워크의 구성 형태
근거리 통신망(LAN)
- 빠른 속도
- 좁은 담당 면적
- 적은 비용
- 낮은 혼잡, 작은 지연
원거리 통신망(WAN)
- 느린 속도
- 넓은 담당 면적
- 많은 비용
- 높은 혼잡, 큰 지연
분산 운영체제
- 분산 시스템을 관리하기 위한 운영체제
- 투명성 제공: 로컬 자원과 원격 자원의 구분을 없애줌, 원격 자원 접근에 필요한 일들을 분산 운영체제가 대신 해 줌
- 분산 운영체제에 적용할 수 있는 방법
-> 데이터 이주, 계산 이주, 프로세스 이주
데이터 이주
- 원격 데이터를 로컬로 전송해 와서 사용하는 방식
계산 이주
- 계산을 원격지에서 처리하고 결과를 전송받는 방식
- 원격 프로시저 호출 RPC 이용
프로세스 이주
- 프로세스 자체를 원격지로 이주
- 작업량 분산, 목적에 부합한 곳에서 프로세스 실행시켜 성능 향상
2. 분산 파일 시스템
분산파일 시스템: Distributed File System(DFS)
- 클라이언트가 원격 파일을 로컬 파일처럼 사용할 수 있게 해 줌
DFS의 네이밍 방식
- 호스트 이름과 로컬 이름을 조합 (host: local name)
- 원격 디렉터리를 로컬 디렉터리에 마운트 (mount -t nfs 10.10.10.10:/backups /var/backups)
원격 파일에 대한 요청 처리
- RPC를 통해 구현
-> 네트워크 사용량이 많아지면 효율성 문제
캐시를 이용한 분산 파일 시스템
전체 시스템의 성능을 높임
고려할 문제: 캐시 교체 정책, 캐시 일관성 문제
3. 분산 메모리
원격 시스템의 메모리를 효율적으로 접근할 수 있게 함
널리 사용되는 두 가지 모델
- 원껴 메모리, 분산 공유 메모리
원격 메모리
- API를 이용
- 예:<(net#, host#, port#), block, offset>
분산 공유 메모리(DSM: Distributed Shared Memory)
- 물리적으로 분리도니 메모리를 하나의 주소공간을 통해 접근할 수 있게 해줌
장점:
- 노드 개수가 늘어나도 잘 확장됨
- 실제로 메모리를 공유하기 위해 해야 할 일들을 프로그래머가 신경 쓸 필요 없음
- 복잡하고 큰 데이터 처리에 유리
- 멀티프로세서 시스템에 비해 저렴
- 큰 가상 메모리 공간 제공
단점:
- 분산되지 않은 공유 메모리에 비해 접근속도 느림
- 공유 메모리에 동시에 둘 이상이 접근할 때 보호 메커니즘 필요
- 성능이 떨어질 수 있음
- 프로그래머가 분산 공유 메모리를 직접 제어하는 것이 쉽지 않음
NUMA: Non-Uniform Memory Access
- 각 프로세스가 로컬 메모리를 갖는 분산 공유 메모리
4. 원격 프로시저 호출
Remote Rrocedure Call (RPC)
프로세스가 네트워크로 연결된 다른 컴퓨터에 있는 프로시저를 실행시키는 것
마치 다른 컴퓨터에 있는 것처럼 이용할 수 있게 함
원격 프로시저 호출의 동작
- 클라이언트는 같은 주소 공간에 있는 프로시저(스텁 루틴)를 호출
- 스텁 루틴은 매개변수나 결과를 메시지로 만든 후 네트워크를 통해 전달
=> 단순 로컬에서 호출하는 것처럼 하지만 네트워크 상에선 원격
=> 사용자 입장에서는 로컬인지 원격인지 모르도록
고려사항
- 이상적으로는 RPC 사용과 로컬 프로시저 사용이 구별되지 않아야 함
- 서로 다른 주소공간에 속하기 때문에 메모리 주소를 리턴하는 참조 호출은 의미 없음
- RPC 수신자는 호출이 생성된 곳과 유사한 환경에서 실행해야 함(e.g. 전역 변수가 있으면 그것도 가져와야 함)
'CS > 운영체제' 카테고리의 다른 글
운영체제 Linux, Windows, Android (0) | 2023.06.16 |
---|---|
운영체제 보안, 보안정책 및 보안 메커니즘, 운영체제 보안 모델, 보안 커널 (0) | 2023.06.16 |
저장장치의 종류, 디스크 스케줄링 알고리즘, FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK, SLTF(회전시간최적화), 파일 관리 (0) | 2023.06.16 |
장치 관리, 장치의 개념, 장치의 구성, 입출력 처리 유형, 입출력 관리 (0) | 2023.06.15 |
페이지 교체 알고리즘, 프로세스별 페이지 집합관리 (0) | 2023.06.15 |