본문 바로가기

학교 공부/분산 및 병렬처리10

[분산 및 병렬처리 시스템] Client-Server 가상화 앞 전 글에는 운영체제 가상화(Operating system Virtualization)을 공부했다. 이번엔 Client-Server Architecture에서 가상화를 위한 고려 사항을 알아보자. Virtualization(가상화)란? 대표적인 가상화는 CPU가 하나만 존재하지만, 여러 프로세스를 운영하는 것처럼 환상을 주는 것이다. Client-Server 가상화 그림 3-8(a)는 socket 통신으로 생각할 수 있다. 웹 서비스 프로토콜(HTTP)를 통해 client와 server가 통신할 수 있도록 한다. 동일한 프로토콜을 사용하기 위해서 middle ware를 통해 상호작용하거나 통일화시킨다. 그림 3-9은 XWindow System이 존재한다. 현재는 존재하지 않는, 유닉스 계열의 분산 시스.. 2020. 11. 20.
[분산 및 병렬처리 시스템] 운영체제 가상화 Virtualization(가상화)란? 대표적인 가상화는 CPU가 하나만 존재하지만, 여러 프로세스를 운영하는 것처럼 환상을 주는 것이다. 운영체제에서 가상화 그림 3-5(a)는 일반적인 프로그램, 인터페이스, 시스템 조직도를 나타낸 그림이다. hardware/software System A는 운영체제 플랫폼이고, OS에서 제공하는 Interface는 system을 의미하는 것이다. 인터페이스가 API 아녜요? 라고 생각할 수는 있지만, Program 부분이 API를 기반으로 만들어진 application이라고 생각하자. 따라서 프로그램에서 명령을 받아와 인터페이스에서 시스템 콜을 호출하고, 하드웨어/소프트웨어를 사용할 수 있다. 그림 3-5(b)는 시스템 B 상위에서 운영되는 시스템 A 구조를 가상화시.. 2020. 11. 15.
[분산 및 병렬처리 시스템] 스레드 구현 일반 시스템에서 스레드를 어떻게 구현할 수 있을까? : Thread Implementation -> thread package Thread Package 구현 방식 1) User Level Thread 우리가 자바 언어를 사용할 때 이클립스에 있는 라이브러리를 import 해서 사용하는데, 이클립스에서는 Thread Package가 라이브러리로 구현되어 있는 것이다. 이처럼 user level에 있는 스레드 하나를 사용할 때, user process는 스레드를 생성/소멸시킬 수 있는 형태로 구현된 것이 User Level Thread이다. - 장점 : 하나의 프로세스 안에서 스레드 간에 context switching이 일어날 때, CPU 상에 register 값을 스택에 옮겨둘 때 굉장히 가볍다. (=.. 2020. 11. 15.
[분산 및 병렬처리 시스템] 프로세스란? 분산 시스템의 "전체적인 숲"을 보면서, 분산 시스템에서 주로 많이 사용하는 소프트웨어 아키텍처나 시스템 아키텍처를 배웠다. 혹은 구조적인 측면(client-server, p2p, hybrid architecture)을 보았다. 이번엔 수행하고자 하는 실제 애플리케이션에서 기본 동작하기 위해서 "프로세서"라는 개념을 배워보겠다. ** 프로세서는 통상적으로 하드웨어를 뜻하고, process는 소프트웨어라고 의미하는 것을 기억하자. 분산 시스템이 아닌 시스템에서 스레드를 사용하는 것은 단순한 프로그램을 수행하는 것과 같다. 즉, 컴퓨터는 하나의 CPU를 가지고 프로세서가 프로그램을 하나씩 돌리는 것이다. 우리도 알다시피 하나의 프로세서에는 하나의 프로그램만 수행할 수 있는데, 그럼 우리가 멀티적으로 움직일 .. 2020. 10. 23.
[분산 및 병렬처리 시스템] Adaptive Software 적응형 소프트웨어(Adaptive Software)를 알아보기 전에 분산 시스템에서의 Interceptor에 관해서 알아보고 가자. // 앞으로 "변경된 데이터"에 대해서 말할 텐데, 이에 대한 해석은 "갑자기 변경된 데이터(변화)"으로 받아들이면 좋을 것이다. Distributed System(분산 시스템)에서 기본적인 동작 과정을 자바 소프트웨어에 대입시키면, 자바 소프트웨어의 객체들을 분산 시스템의 여러 machine들로 나눠 배치한다. 이때, A객체가 B객체를 사용하기 위해 Method Invocation Call을 한다. (B객체는 A객체와 같은 machine에 존재하지 않으므로 Remote Object이다.) middle ware에서 A객체와 value를 파라미터로 전달해주면서, B객체는 mi.. 2020. 10. 9.
[분산 및 병렬처리 시스템] 시스템 아키텍쳐 - Hybrid Architecture Centralized와 Decentralized 아키텍쳐가 혼합된 형태가 Hybrid Architecture이다. 이 아키텍쳐의 종류로는 Edge-Server System, Collaborative Distributed System과 Globe System이 있다. 1) Edge-Server System : 엣지에 네트워크(서버)를 두어 원래라면 긴 거리의 응답 시간을 가졌어야 했던 처리를 줄일 수 있다. 2) Collaborative Distributed System (상호협력 분산 시스템) : 분산 시스템의 컴포넌트들 간에 상호협력하여 P2P 서비스를 유지한다. 대표적인 예로는 BitTorrent System이 있으며, 노드들 간에 파일의 일부분 혹은 파일 전체를 전달하면서 현재 노드가 필요한 파일을.. 2020. 10. 9.