주제 : 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는 작업 완료후 결과를 처리하는 방식까지 포함한다.