개요(overview)
오늘은 지난 포스팅에 이어서 분산 처리 시스템에서 사용되는 네트워크의 위상과 분산 시스템에 대해서 알아보도록 하겠습니다.
1.3. 네트워크 위상(Topology)과 안전성
분산 처리 시스템 내의 노드들은 여러 가지 물리적인 방법으로 연결될 수 있는데, 이러한 물리적 연결 형태를 위상(topology)라고 합니다.
분산 시스템은 네트워크 관점에서 그 연결 상태에 따라 여러 형태의 그래프로 묘사될 수 있는데 다음과 같은 기준에 의하여 각각의 구조에 대하여 평가할 수 있습니다.
- 기본 비용 : 시스템 내의 노드를 연결하는데 드는 비용
- 통신 비용 : 한 노드로부터 다른 노드에게로 메시지를 전달하는 데 걸리는 시간 및 비용
- 신뢰성 : 시스템 내의 통신 회선이나 노드 중 하나가 고장이 발생하더라도 나머지 노드들이 계속 통신할 수 있는지 여부
1) 완전 연결 구조(fully connected)
각 노드가 시스템 내의 다른 모든 노드와 직접 연결된 형태입니다.
이 형태는 모든 노드 간의 직접통신을 하기 위한 회선이 모두 필요하므로 기본 비용은 노드 숫자의 제곱에 비례합니다.
그러므로 이러한 환경 내에서는 어떤 두 노드를 연결하 하나의 회선을 사용할 때 그 속도가 매우 빠릅니다.
이런 시스템은 많은 통신회선들이 모두 고장 나지 않는 한
통신 불가능한 두 개의 서브 시스템으로 분할되지 않으므로 신뢰성이 높습니다.

2) 부분 연결 구조(partially connected)
모든 노드 쌍에 대하여 직접 연결이 존재하는 형태가 아닌 구조로 기본 비용이 완전 연결 네트워크보다 저렴합니다.
그러나 한 노드로부터 다른 노드로 가는 메시지에서 중간 여러 노드를 경유해야 할 수도 있으므로 통신 속도가 늦어질 수 있으며, 한 회선의 고장으로 네트워크의 분할이 일어날 수도 있기 때문에 신뢰성이 떨어질 수 있습니다.

위 그림과 같이 설계된 부분 연결 구조에서는 노드 B와 C의 연결이 끊긴다면 서로 다른 두개의 네트워크로 분할될 수 있습니다.
3) 계층 구조(hierachy)
계층 구조는 기본 비용은 일반적으로 부분 연결 기본 보다 낮아지지만, 만약 한 부모 노드(parents node)가 고장 나면 자식 노드(child node)도 통신할 수 없게 될 수 있습니다.
따라서 리프 노드를 제외한 상위 노드들의 고장은 여러 서브 네트워크 시스템의 분할을 초래할 수 있습니다.

4) 성형 구조(星形, Star)
성형 구조는 하나의 중심 노드를 기준으로 서로 연결되어 있어서
이 중심 노드를 제외한 노드는 모두 서로 연결되지 않는 다는 특징을 갖고 있습니다.
이러한 형태에서 기본 비용은 노드의 수에 비례하나, 일반적으로 통신 비용은 낮다는 특징을 가지고 있습니다.

예컨대 위 그림에서 노드 A에서 노드 B로 통신할 때에는 단 두개의 회선(Edge)만을 거치면 되므로 통신 비용이 낮아집니다.
그러나, 이 경우 중심 노드에서 병목 현상이 발생하기 쉽고, 이로 인해 통신 속도가 저하될 수 있습니다.
그래서 일반적으로 성형 구조에서 중심 노드는 단순히 ‘메시지의 교환’ 이라는 단일 작업만을 담당하게 하는 것이 일반적입니다.
5) 환형 구조(ring)
환경 구조는 각 노드가 정확하게 서로 다른 두 개의 노드와 연결된 형태입니다.
이러한 환형 구조에서 통신은 한 방향만으로 진행하는 단방향 통신과, 양쪽 모두 진행하는 양방향으로 구성될 수 있습니다.
양 방향 구조에서는 한 노드는 이웃한 양쪽 노드에 정보를 모두 전달할 수 있습니다.

양방향 구조에서 네트워크가 분할되려면 두 개의 회선이 고장나야 하고,
단방향에서는 한 노드 또는 한 회선의 고장이 네트워크를 분할할 수 있습니다.
이러한 문제를 해결하기 위하여 위 그림의 (b) 이중 연결 처럼 환형 구조를 확장하는 방법이 적용될 수 있습니다.
6) 다중 액세스 버스 구조
다중 액세스 버스 구조는 네트워크에서 공유되는 하나의 버스를 통해 시스템의 모든 노드가 직선 또는 환형 구조를 가지게 됩니다.
이 네트워크의 기본 비용은 노드의 수에 비례하며 통신 회선 자체가 병목 현상을 일으키지 않는 한 통신 비용은 낮은 편입니다. 그러나 버스 회선이 고장 나면 네트워크가 완전히 분할될 수 있습니다.

1.4. 분산시스템
컴퓨터의 개발이 시작된 이후 반도체 기술이 발전함에 따라 가격이 저렴한 소형 컴퓨터의 보급이 활발해지면서 이러한 기기를 사용해 보다 효율적으로 여러 프로세서(processor)를 사용해 작업을 처리하려는 경향이 나타나게 되었습니다.
이에 따라 보통 온프로미스 환경에서 하나의 고사양 컴퓨터가 작업을 처리하던 것에서 여러 개의 컴퓨터 즉, 노드의 집합으로 작업을 처리하여 시스템의 효율을 높인 분산처리(distributed processing) 시스템이 등장하게 되었고, 이러한 컴퓨터 시스템을 연결하는 컴퓨터 통신망이 필요하게 되었습니다.
따라서, 분산 처리 시스템은 이러한 배경 속에서 데이터 처리 장치 및 데이터 베이스가 지역적으로 분산되어 하나의 조직 또는 회사와 같은 규모에서 고유한 조직 내 업무를 수행하고 효율적으로 정보를 교환하기 위해 네트워크로 연결된 시스템을 의미합니다.
분산된 노드를 통해 얻게 되는 이점은 여러 가지가 있을 수 있는데, 그중 가장 대표적인 것은 여러 컴퓨터가 노드로 구성되어 네트워크를 통해 상호 연결되므로 중앙에서 하나의 컴퓨터가 모든 일을 처리하던 것에 비하여 더 효율적으로 업무를 처리할 수 있다는 것입니다.
또한 기존의 중앙 집중식 방식의 경우 중앙 컴퓨터의 고장이 발생하면 모든 업무가 마비될 수 있는 단점이 존재했는데, 분산 시스템의 경우 하나의 노드가 고장 나더라도 다른 노드들이 이를 감당할 수 있게 함으로써 시스템 전체에 대한 안정성을 높일 수 있게 되었습니다.
이러한 분산처리 시스템의 주요한 특징은 아래와 같습니다.
- 사용자에게 동적으로 할당 가능한 일반적 용도의 자원이 각 노드에 분산되어 있다.
- 분산된 노드들은 통신 네트워크를 통하여 메시지를 주고 받아 정보를 교환한다.
시스템을 구성하는 노드는 개별적인 자율성(autonomy)를 가진다. - 사용자는 특정 자원의 물리적 위치를 모르더라도 그 자원을 사용할 수 있도록 한다.
- 각 노드의 자율성을 어느정도 보장하면서도 시스템 전체의 결정할 수 있는 통합 제어 시스템이 존재해야 한다.
분산 시스템은 세부적인 구현 방식에 따라 크게 두 가지로 나뉠 수 있는데,
하나는 기억 장치와 클럭(clock)을 공유하는 단단히 결합된(tightly-coupled) 시스템, 다른 하나는 기억장치와 클럭 대신 국소(local) 기억 장치를 통해 고속 버스(bus)등을 통하여 통신 회선을 통해 통신하는 느슨히 결합된(loosely-coupled) 시스템이 있습니다.
특히 이처럼 느슨히 결합된 시스템을 항상 분산 시스템이라고 합니다.
이와 같이 분산 시스템을 사용하는 주된 목적은 다음과 같이 네 가지가 있습니다.
1) 자원 공유
분산 시스템에서는 특정 자원에 접근하기 위해 사람이 직접 해당 장치가 있는 곳으로 이동하는 등의 수고를 들일 필요가 없습니다. 네트워크 기술을 통해 먼 거리에 있는 데이터베이스 등도 쉽게 사용 및 처리할 수 있다는 이점을 가집니다.
2) 계산 속도 증가
컴퓨터는 기본적으로 0과 1로 이루어진 이진수로 계산을 처리합니다. 또한, 이러한 계산의 수행은 CPU가 처리하게 되는데 아무리 성능이 좋은 CPU라고 할지라도 한 번에 하나씩 굉장히 빠른 속도로 처리할 수밖에 없는 한계가 있습니다.
그렇기 때문에 이러한 CPU를 실제로 물리적으로 ‘여러 개’로 나누어 하나의 작업을 위해 필요한 연산을 처리하도록 분업한다면 이는 고성능 CPU보다 효율적일 수 있습니다. 그리고 이처럼 연산 과정에 필요한 작업을 상대적으로 여유로운 호스트로 이동시키는 작업을 부하 공유(load shareing)이라고 합니다.
그리고 이때 특정 노드에 일시적으로 많은 부하가 걸리게 되면, 상대적으로 여유로운 다른 노드로 해당 작업을 이동시키는 작업을 로드 밸런싱(load balancing)이라고 합니다.
3) 신뢰성
분산 시스템에서는 어떤 작업이 서로 다른 컴퓨터 장치에서 나누어 처리되기 때문에 더 높은 신뢰성을 보장할 수 있습니다.
왜냐하면 분산 시스템은 기본적으로 부분 장애 가능성을 고려하여 설계되므로, 소프트웨어에 내결함성 메커니즘을 포함하게 됩니다. 이로 인하여 일부 구성 요소에 오류가 발생하더라도 전체 시스템이 계속 작동할 수 있으므로, 오류에 대한 대처 능력이 높아집니다.
또한, 분산 시스템에서는 여러 노드에 데이터를 복제하여 저장함으로써, 일부 노드에 장애가 발생하더라도 데이터의 가용성과 내구성을 유지할 수 있습니다.
많은 분산 시스템에는 자동 백업 메커니즘이 구현되어 있어, 정기적으로 데이터를 백업하고 필요시 복원할 수 있습니다. 그리고 데이터의 여러 복사본을 만들어 저장함으로써, 일부 데이터가 손실되더라도 다른 복사본을 통해 복원할 수도 있습니다.
하지만 그럼에도 불구하고, 분산 시스템에서도 항상 부분 실패의 가능성을 고려해야 합니다.
왜냐하면 신뢰성은 상대적인 개념이기 때문에, 중앙 컴퓨터 시스템보다 높은 수준의 신뢰성을 제공할 수 있지만 분산 시스템이더라도 한계점이 존재하기 때문입니다.
4) 통신
분산 시스템은 여러 컴퓨터나 노드 간에 정보를 교환하는 과정, 즉 통신이 필요합니다.
분산 시스템에서 노드 간의 통신은 다음과 같이 세 가지 특징이 있습니다.
첫째, 메시지 지향 통신 (Message-oriented Communication)
노드 간에 어떤 작업이나 자원의 공유 등의 사건이 발생할 때 이를 처리하도록 하는 매개체는 메세지입니다.
이는 적절한 큐잉 정책에 의해 관리되며, 각 노드별로 우편함 같은 장치가 마련되어 이를 통해 처리해야할 업무가 분배됩니다.
둘째, RPC (Remote Procedure Call)
원격 시스템의 프로시저를 로컬에서 호출하는 것처럼 사용할 수 있습니다.
이는 분산 컴퓨팅을 중앙 집중식처럼 보이게 하여 투명성 제공할 수 있습니다.
셋째, 스트림 지향 통신 (Stream-oriented Communication)
연속적인 데이터 스트림을 전송하는 방식입니다. 이러한 방식에는 다음과 같은 프로토콜이 적용될 수 있습니다.
- TCP/IP: 인터넷의 기본 구조를 제공하는 가장 일반적인 네트워크 프로토콜
- UDP: 비연결형 프로토콜로, 빠른 데이터 전송에 사용
- HTTP: 웹 기반 통신에 사용되는 프로토콜
이외에도 데이터를 전송 가능한 형태로 변환하기 위한 직렬화 (Serialization) 기술이나
비동기 통신을 위한 메시지 저장 및 전달 시스템 즉, 메시지 큐가 적용될 수 있습니다.
분산 시스템은 네트워크의 다양한 유형 중에서 주로 한 건물 정도의 규모에서 일어나는 근거리 통신망,
즉 LAN 규모 정도에서 구축됩니다.
1.5. 분산 처리의 필요성
오늘날 컴퓨터 시스템은 중앙 집중형에서 분산 시스템으로 발전하게 되었습니다. 이러한 시스템으로의 전이는 다음과 같은 이점이 존재하기 때문입니다.
- 중앙 집중 방식의 대형 컴퓨터보다 마이크로 컴퓨터 수준에서 나누어 처리하는 것이 더 경제적이고 효율적일 수 있다.
- 중앙 집중식은 하나의 컴퓨터에 고장이 발생하지 않도록 유의해야 하는 반면에, 분산 시스템은 하나의 노드 정도가 고장 나더라도 업무를 수행함에 장애가 없다.
- 각 자원이 지역적으로 분산되어 저장되므로 통신 자체에 드는 비용이나 작업에 대한 부하를 줄일 수 있다.
- 기존에 있는 시스템에 영향을 주지 않고도 쉽게 시스템을 확장하거나 재구성할 수 있다.
- 여러 개의 노드에서 별도의 자료 처리가 가능하다면 고도의 대응성을 통해 시스템 성능을 높이는 것이 용이하다.
이와 같은 이유로 인해 분산 처리 시스템은 시간이 지날수록 중요성이 커지고 있습니다.
그리고 이를 위해 필요한 주요 과제는 다음과 같이 네 가지로 정리할 수 있습니다.
- 자원 공유(resouce sharing)
- 연산 속도 향상(computation speed-up)
- 신뢰성(reliability)
- 통신(communication)
1.6. 분산 시스템과 동기화
분 산시스템에서는1개 이상의 독립적인 컴퓨터 시스템 즉, 노드가 작업을 처리하게 되므로 이로 인하여 동기화 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위하여 분산 시스템에서는 분산 세마포아를 구현할 수 있도록 메커니즘을 제공합니다.
분산 시스템에서 구체적으로 동기화 문제를 해결하기 위한 방법으로는 다음과 같은 세 가지를 적용해볼 수 있습니다.
1) 중앙 집중식 방법
상호 배제(mutual exclusion)를 통해 문제를 해결할 수 있도록
프로세스 중 하나가 임계 구역(CS, Critical Section)을 설정하여 상호 배제를 설정하게 됩니다.
따라서 프로세스는 응답(reply)을 받을 때에만 임계 구역으로 진입할 수 있으며,
한 프로세스가 임계 구역을 빠져나올 때에는 해방(release) 메시지를 전달함으로써 연속적으로 작업이 진행될 수 있도록 합니다.
프로세스가 처리해야 하는 작업을 위한 스케줄링 방법으로는 큐와 같은 FCFS(First Come First-Served) 정책을 적용할 수 있습니다. 이와 같은 정책을 통해 특정 프로세스에 대한 기아 현상을 방지할 수 있습니다.
2) 완전히 분산된 방법
다음으로는 Lamport에 의해서 제안된 방식으로 시스템 전체를 통해 의사 결정을 분산시키는 방법입니다.
이 방식에서는 프로세스가 작업을 처리하는 일, 즉 각각의 사건에 대하여 순서를 매겨 먼저 온 것이 먼저 처리될 수 있도록 프로세스들을 처리하며 임계구역의 모든 요청들을 전체적으로 순서를 정하는 방식입니다.
이때 임계 구역의 엔트리당 3 x (n-1) 개의 메시지가 요구됩니다.
또한, Richart와 Agrawala는 2 x (n-1)개의 메시지를 요구하는 분산 알고리즘을 제안하였는데, 이러한 방식은 프로세스 P가 임계구역에 진입하길 윈할 때 새로운 타임 스탬프(TS)를 방생시키고 시스템에서 다른 모든 프로세스에게 request를 발송하게 됩니다.
이러한 메시지를 받은 후에 프로세스는 즉시 응답하거나 혹은 응답을 다시 보내지 않습니다. 이때 시스템의 다른 모든 프로세스로부터 응답 메시지를 받은 프로세스는 임계 구역에 들어갈 수 있으며, 이후에 프로세스는 그것이 요구된 메시지를 받은 것을 기점으로 다른 프로세스들에게 응답 메시지를 보내게 됩니다.
이때, 응답 메시지에 대한 수신 여부는 다음과 같은 요인에 의해 수락 또는 거절될 수 있습니다.
- 만약 프로세스가 임계 구역 내에 존재하면 답을 받지 않는다.
- 프로세스가 임계 구역에 들어가길 거부하면 그 응답이 즉시 보내진다.
- 프로세스가 임계구역에 들어가길 희망하는 경우, 그러나 아직 들어가지 못한 경우 이를 유지시키기 위한 요청 목록과 프로세스를 분석하게 된다. 그 결과 요청 큐에서 타임 스탬프를 기준으로 모든 스탬프가 과거에 형성된 것이라면 즉시 메시지가 보내지고 그렇지 않은 경우에는 메시지가 요청 목록에 추가된다.
3) 토큰 전달(Token Parsing) 방법
분산 시스템에서 동기화 문제를 해결하기 위해 토큰을 전달하는 방법도 적용될 수 있습니다.
만약 어떤 분산 시스템에 환형 형태로 구성되어 있다면 토큰이 링 주위를 전달하게 할 수 있습니다.
어떤 프로세스가 이러한 토큰을 수신할 때, 그 토큰을 유지하고 있는 임계 구역에 들어가길 원치 않는다면 해당 토큰은 이웃 토큰으로 전달됩니다.
즉, 분산 시스템에서 임계 구역으로의 진입이 필요한 프로세스에게 토큰(Token)이라는 단일 열쇠를 제공하는 것입니다. 이로 인하여 임계 구역에는 단일 프로세스만 존재한다는 것을 보장할 수 있습니다.
1.7. 분산 시스템의 계층 구조
분산 시스템의 계층 구조와 비교하기 위하여 분산 운영체제에 대해 잠시 설명하도록 하겠습니다.
분산 운영체제는 아래와 같이 네트워크로 연결된 각 노드들이 독자적인 운영체제를 가지고 시스템 내에 하나의 운영체제가 존재할 때 분산 운영체제라고 합니다.

이러한 방식은 네트워크 운영체제(NOS) 보다 더 많은 노력이 필요하지만,
전체 시스템에 대한 일관된 설계가 가능하므로 운용적 측면에서 유리한 점이 있습니다.
또한 시스템 내부의 자원을 global하게 보는 것이 특징입니다.
분산 운영체제가 네트워크 운영체제와 다른 점은 네트워크 운영체제는 기존 컴퓨터 시스템에 통신을 위한 운영체제가 추가된 것이라면 분산 운영체제는 처음부터 이러한 통신 기능을 염두에 두고 설계한 점에서 서로 차이가 있습니다.
또한 분산 운영체제 중에도 신뢰도의 개선이라는 목적에 관심이 둔 것을 별도로 분산 처리 운영 체제(DPOS, Distributed Processing Operating System)라고 하는데 이는 데이터뿐만 아니라 제어 기능 및 처리 능력 까지도 가 노드에 분산하여 하나의 노드의 고장에도 시스템 전체에 장애가 발생하도록 설계된 운영체제입니다.
컴퓨터 시스템에서 운영체제는 일반적으로 각자의 계층 구조를 갖도록 설계됩니다.
그리고 이러한 컴퓨터 시스템들을 네트워크로 연결하면서도 상호 협력할 수 있도록 구축한 시스템을 분산 시스템이라고 하는데 분산 시스템에서도 통신 기능의 존재 위치가 중요한 의미를 가집니다.
왜냐하면 통신기능이 존재하는 계층을 포함하여 하위 계층에 있는 자원들은 다른 노드들에 의하여 공유될 수 있기 때문입니다.
그리고 통신 기능의 위치는 시스템의 특성인 신뢰도와 투명성(transparency)그리고 자율성(autonomy)에 영향을 주기 때문에 매우 중요합니다.
분산 시스템은 아래와 같은 계층 구조를 갖습니다.

분산 시스템에서는 메시지를 통하여 서로 다른 노드 간에 작업을 주고받을 수 있습니다.
그런데 이때 처리해야 할 작업의 세부 과제로 특정 노드의 자원을 사용하는 것이 포함될 수 있습니다.
그렇다면 이때 분산 시스템에서는 통신 기능이 위치한 계층에 따라 접근 가능한 작업의 범위가 달라질 수 있습니다.
분산 시스템에서 하나의 노드에 존재할 수 있는 계층은 다음과 같이 다섯 계층이 존재합니다.
1) 하드웨어 계층
컴퓨터 시스템에서 기본적인 처리 및 저장을 제공하는 계층으로 통신 기능이 이 계층에 존재한다면 이는 분산 시스템이라고 하기 어렵습니다.
또한 이러한 시스템은 일종의 다중 처리시스템으로 각 노드 간에 통신 네트워크 및 메시지를 매개체로 통신하는 것이라고 보기 어려우며 사실상 단일 시스템에 속한 것이라고 볼 수 있습니다.
2) 기억장치 계층
기억장치 관리자는 시스템의 기억 장치를 관리하고 필요시 할당하는 역할을 담당합니다. 이러한 계층에서 통신이 가능하다는 것은 전체 시스템의 기억장치가 글로벌하고 한 노드의 프로세스가 다른 프로세스의 노드의 공간을 할당 받을 수 있음을 시사하기도 합니다.
그러나 이러한 계층에서 통신 기능이 위치한다는 것은 특별한 하드웨어 매커니즘을 필요로 하기에 신뢰성 문제와 통신 네트워크라는 것을 고려했을 때 실용적이지 못합니다.
3) 프로세스 계층
이 계층은 프로세스의 생성, 종료, 문맥 교환(Context Switching)뿐만 아니라 프로세스 간의 동기화를 위한 기본적인 세마포어와 같은 기능을 제공합니다.
이러한 환경을 고려했을 때 통신 기능은 분산 처리나 노드 간의 로드 밸런싱 및 다른 노드에 존재하는 프로세스와의 동기 문제를 쉽게 해결할 수도 있습니다.
따라서 분산 처리 운영체제는 이 계층에서 통신기능을 가지는 것이 바람직합니다.
그러나 실제로 분산 처리 운영체제를 구성할 때에는 각 노드의 하드웨어 및 소프트웨어적 환경의 차이가 문제를 일으킬 수 있어서 이 계층에서 통신 기능을 갖게 하려면 각 노드들이 동질적(homogeneous)인 컴퓨터로 구성해야 합니다.
4) 파일 시스템 계층
파일은 데이터를 영구히 저장해 둘 수 있는 기억 공간을 의미합니다.
사용자 측에서 컴퓨터 시스템을 볼 때에는 사용자가 일차적으로 접하게 되는 시스템의 대상으로서 분산의 대상이 되는 중요한 요소가 되기도 합니다.
이 계층해서 매니저들 간의 통신 기능은 시스템 전체에 대한 디렉토리 계층을 가지게 하여 사용자는 어떤 파일이 존재하는 실제 위치를 모르더라도 해당 파일을 이용할 수 있도록 해주고 또 파일의 중복 및 분산을 투명하게 해줄 수 있습니다.
또한 분산 시스템의 큰 장점 중 하나인 자원의 공유 및 신뢰도의 향상은 파일의 분산 및 중복을 통해 실현될 수 있으므로 이 계층에서의 통신 기능은 분산 시스템에서 반드시 필요하다고 할 수 있습니다.
5) 사용자 프로그램 계층
이 계층에만 존재하는 통신 기능은 사용자로 하여금 다른 노드에 대한 액세스를 가능하게 할 수 있지만, 분산 시스템의 장점을 충분히 발휘할 수 없습니다.
시스템 내에는 글로벌한 자원이 없으며 따라서 사용자는 원하는 위치를 정확히 알아야 그 자원을 이용할 수 있습니다.
그러나 이러한 경우에 각 노드의 자율성은 최대로 보장할 수 있습니다.
1.8. 분산 시스템의 설계
오늘날 분산 시스템을 위한 분산 운영체제를 구현하는 방법은
① 관리 기능을 수행하는 기능, ② 동기화 문제를 해결하는 구현 매커니즘에 따라 두 가지로 분류할 수 있습니다.
전자는 프로세스 지향 모델(Process Oriented Model)이고, 후자는 객체 지향 모델(Object Oriented Model)입니다.
이 두 모형은 개념적으로 분리되지만 실질적으로는 서로 같은 것으로서
프로세스 지향 모델에서 ‘프로세스’와 객체 지향 모델에서의 ‘객체’로 상호 대응하여 볼 수 있습니다.
따라서, 어떤 방식을 적용하던지 수행하는 매커니즘에서만 차이가 존재합니다.
1) 프로세스 지향 모델
프로세스 지향 모델은 분산 시스템에서 프로세스 간의 동기화 및 시스템 상태와
사용자 프로세스의 제어를 위해 프로세스 간의 메시지 교환(Message Passing)을 사용합니다.
이 모델에서는 어떻게 하면 프로세스 간에 메시지를 쉽고 효율적으로 주고받느냐는 문제와 큐잉 메커니즘이 주된 관심사입니다.
또한 이러한 메시지를 관리 및 검사하기 위한 프리미티브(Primitive)를 가집니다.
이러한 구조에서 각 프로세스는 포트(PORT), 채널(Channel), 소켓(Socket), 링크(Link) 또는 프로세스 간의 링크를 위한 매커니즘과 같은 통신 경로를 가지고 있습니다.
이러한 매커니즘은 시스템 내의 동기화된 프로세스나 비동기 프로세스 간에 특정한 형태의 통신 수단을 설정하는데 사용됩니다.
2) 객체 지향 모델
객체 지향 모델은 시스템이 여러 개의 객체(object)로 구성되어 있다고 보고 객체에 대한 capability(처리 능력)를 할당하는 과정을 통해 제어 및 동기화 문제를 해결하는 방식을 일컫습니다.
이때 객체란 그 자신이 지역적인 환경에서 소수의 작업(Operation)을 수행하는 처리 단위라고 할 수 있습니다.
이러한 모형은 자원을 제어함에 있어서 동일한 형태의 정책을 금지하고 있습니다.
즉, 자원은 글로벌한 관점과 지역적인(local) 관점으로 관리됩니다.

위 그림을 살펴보면 자원은 글로벌(global)한 부분과 지역적인(local) 부분으로 나뉘게 되는데,
글로벌한 부분은 해당 객체 밖으로 노출되는 데이터 구조 또는 작업(Operation)이고,
지역적인 부분은 해당 객체 내부에서만 사용하는 부분으로서 해당 객체가 제어하는 영역을 나타냅니다.
객체는 제한된 범위의 일을 하며 특정한 인터페이스를 가지는 하나의 처리 주체로 볼 수 있는데,
이러한 인터페이스는 사용자에게 그 객체가 수행 가능한 또는 명령할 수 있는 operating을 제공하게 됩니다.
다시 말하자면 이는 모든 데이터와 명령문이 세마포어나 모니터 등과 같이
보호된 영역 내에서 캡슐화(encapsulation) 된 것을 의미합니다.
객체에 대한 액세스는 해당 객체에 대한 capability를 얻음으로써 가능하므로
이것을 얻는 과정에서 동기화 문제를 해결할 수 있습니다.
참고 자료
- 김완규, 고정국, 진광윤, 최신형, 하성권, 허덕행 | 핵심 운영 체제론 | 두양사
'CS BASIC > 운영체제(Operation System)' 카테고리의 다른 글
[운영체제] 네트워크 운영체제와 프리미티브 (0) | 2025.01.06 |
---|---|
[운영체제] 교착 상태(Dead Lock)의 관리 기법 (1) | 2024.12.31 |
[운영체제] 교착 상태(Dead Lock)와 필요 조건 (0) | 2024.12.30 |
[운영체제] 세마포어(Semaphore) (1) | 2024.12.24 |
[운영체제] 병행 프로세스와 Dekker 알고리즘 (0) | 2024.12.23 |