[분산 시스템] 8강 - Process (Threads)

드림보이즈·2024년 12월 30일
0

주제 : Process, Thread

1. Overview

주제 : 분산 시스템에서 프로세스의 역할

Process : 실행중인 프로그램

운영체제 관점에서 이슈 : 프로세스 관리, 스케쥴링

분산 시스템에서 이슈 : 멀티스레딩 기술, 클라이언트-서버 구조를 효율적으로 구성하는 등

Virtualization

역할 : App 및 환경(OS)가 다른 App과 동시에 실행 가능
이점 : 기본 하드웨어 및 플랫폼에 독립적, 높은 Portability 제공

아래에선 싱글 코어 CPU를 가정하고 멀티 스레드를 설명한다.

2. Execution of program

  • OS는 여러 가상 프로세서를 생성하고, 각각 다른 프로그램을 실행
  • OS는 프로세스 테이블을 유지하여 여러 항목을 관리
    - CPU 레지스터
    -메모리맵
    -열린 파일
    -우선순위
    -기타정보

프로세스란 현재 실행중인 프로그램

  • 운영체제는 각 프로세스가 독립적으로 동작하며, 다른 프로세스의 실행에 영향을 미치지 않도록 보장
  • 프로세스는 동일한 CPU, 하드웨어를 공유할 수 있지만, 사용자에게 모르도록 함.

분산시스템에서 Granularity 필요성

  • OS가 제공하는 프로세스 단위로 충분하지 않을 수 있음.
  • 스레드 단위 세분화는 분산 어플 개발을 쉽게 할 수 있음.

3. Threads

정의

  • 자신의 코드조각을 독립적으로 실행
  • 최소한의 정보만 유지하여 여러 스레드가 CPU를 공유할 수 있도록 허용
  • 스레드 컨텍스트는 CPU 상태 및 기타정보로 구성

싱글 스레드

Blocking system call
- 호출시 전체 프로세스가 차단됨
- 예시 : Excel
- 사용자가 입력을 하는 동시에 관련 셀들이 업데이트 되어야 하는경우, 하나가 끝날 떄 까지 기다려야 함.

멀티 스레드

  • 사용자와 상호작용 처리하는 스레드 / 스프레드시트 계산해 업데이트 스레드 둘로 나눠서 동시에 처리

클라이언트- 서버 구조에서 멀티 스레드

클라이언트 쪽

웹 브라우저
이미지, 텍스트를 서버로 부터 받을 때,
가져오는 스레드가 있고, 뿌려주는 스레드가 있어서 가능.

혹은, 여러 서버가 있어서 각각의 데이터를 각 스레드로 연결해 받아오기

서버 쪽 예시 : 파일 서버

  • Dispatcher : 클라로부터 요청을 기다리는, 항상 돌고 있는 스레드
  • Worker : 실제 작업 수행할 스레드, 일 없으면 놈.

싱글 스레드 : non-blocking, async

Non-blocking

호출된 작업이 즉시 결과를 반환, 작업 완료시 까지 기다리지 않는 방식

예시 :
파일 읽기, 네트워크 요청이 시작되면, 호출자는 기다리지 않고 다음 코드 실행

Async

작업이 별도의 흐름 (이벤트 루프) 등을 통해 처리되며, 완료시 결과를 알리는 방식.
논블로킹의 동작을 포함하여, 작업 완료 후 실행할 로직을 정의

Non-blocking은 작업이 대기하지 않는데 초점을,
Async는 작업 완료후 결과를 처리하는 방식까지 포함한다.

profile
시리즈 클릭하셔서 카테고리 별로 편하게 보세용

0개의 댓글