[클라우드컴퓨팅/CloudComputing] 3. Processes
Single Thread & Multi Thread
- 단일 스레드는 block system call을 할 때마다 프로세스 전체가 차단됨
- 멀티 스레드는 병렬성 제공
large applications의 context
- IPC : 커널의 개입 필요, 한 컴퓨터 내에 여러 프로세스들이 영역 침범하지 않도록 커널이 제어
- thread간 같은 영역 공유 시 공유 메모리 통한 통신 가능, 프로세스들과의 통신과 달리 전적으로 유저 스페이스에서 스위칭 됨
스레드 라이브러리가 전체가 user mode에서 실행될 때 특징 (스레드 본연의 장점)
- 스레드를 만들고 파괴하는데 값이 저렴하다
- 몇가지 적은 명령어로 실행된 스레드 context 전환
- 차단 시스템 호출 시 전체 프로세스 차단 (단점)
light weight process
- 유저와 커널의 하이브리드
- 원래의 스레드와 다른 점은 스레드 operation하는 것은 유저모드(user-level)에서 되지만, 스레드 간의 커뮤니케이션이나 스케쥴링은 커널이 개입(kernel-level)
- 일반 사용자 thread보다 느리고 비쌈
client와 server관점에서의 Multithread
- client : 커뮤니케이션 지연시간을 숨기고, 복제 투명성
- server : dispatcher
서버를 construct하는 3가지 방법
- Threads : 병렬적, blocking system call 있음
- Single-Threaded process : 병렬적X, blocking system call 있음
- Finite-state machine(유한상태기계) : 병렬적, blocking system call X, 사전에 결정해 blocking예방
분산시스템에서 가상화
- portability(이동성)과 flexbility(유연성) 높이기 위함이다.
- 예를 들어 리눅스 기계에서 윈도우 OS를 흉내내는 인터페이스를 두는 것이 가상화 솔루션이라고 볼 수 있다.
- 리소스 가상화 : 한정된 자원이지만 실질적으로 더 많이 있는 것처럼 보이게 함
클라이언트 측면에서 분배 투명성
- stub가 복제 서버에 개별적으로 나누어 줘서 여러번 주는 것을 몰라도 되게 하는 것
서버에서 서비스 포트를 이용하는 두가지 방법
- 서비스 포트 번호를 데몬에게 물어보고, 클라이언트가 end point를 알아내 보내는 방식은 클라이언트에게 부담을 준다
- 슈퍼서버에 리퀘스트를 보내면 맞는 actual server에게 보내주어 클라이언트의 부담이 적다.
서버의 stateless vs stateful
- stateless란 클라이언트 상태 정보를 저장하지 않는 것으로, 일반적인 webserver가 이런 방식
- stateful이란 클라이언트에 대한 지속적 정보를 저장해 서버 부담이 간다. 서버 충돌 시 항목 테이블을 복구해야한다.
- soft state는 서버가 클라이언트 조금만 저장하는 걸 말함