동시성 실행 - Multi Threading, Event-driven, co-routine, 분산 시스템, 자원 공유 기법

Summu·2023년 4월 19일
0

CS 개념 정리

목록 보기
1/1

동시성 실행

Multi-threading

여러 개의 Thread를 사용해, 동시에 여러 작업 처리

  • 자원 공유, 동기화 문제 고려 필요
  • 시스템 성능 증가
💡 

Multi Processing과의 차이

Multi-Thread는 하나의 Process 안에서 작동되는 개념이고, Multi-Processing은 여러 Process가 동시에 돌아가는 개념이다.

Event-driven(이벤트 기반) 및 callback

event 발생시 → Handler 호출

  • 비동기 : 작업이 끝날때까지 기다리지 않음
  • callback을 이용하여 Handler를 작성해 준다.

Co-routine

Thread와 유사하나, 여러 execution-context를 가진 단일 Thread에서 동작.

  • 분할 처리 : 동시성 실행에 유용

분산 시스템 (Distributed Systems)

여러 대의 컴퓨터가 하나의 시스템으로 동작하도록 구성된 시스템.
(feat. 네트워크 연결)

  • 분산 처리 : 동시성 실행이 필요한 대규모 시스템에서 유용

자원 공유 기법 (Resource sharing techniques)

Multi-Thread 혹은 Multi-Processes가 동시에 접근하는 자원을 관리하는 기법.

  • 충돌, 교착 상태 등의 문제 예방
  • 성능 최적화 가능

구성

  • Mutual Exclusion
    두 개 이상의 Process의 공유자원 접근(=충돌)을 막는 기법
    ex) Mutex, Semaphore
  • Deadlock Avoidance
    두 개 이상의 Process가 점유되지 않은 자원을 요청할 때
    교착상태(Deadlock) 발생을 방지하는 방법.
    - 순서 조정
    - 자원 요청에 대한 우선순위 부여
  • Sharing Algorithms
    공유 자원의 사용 방식 관리를 위한 알고리즘.
    ex) CPU Scheduling Algorithm
  • Spooling
    대용량 데이터 출력 제어. 입력 데이터 저장 후 일정량 씩 출력 장치로 전송

알다가도 모르겠는 처리 방법

비동기 처리(Asynchronous Processing)

작업의 실행 결과를 기다리지 않고 다음 작업을 수행한다. (동시에 실행하지 않는다.)

비동기 처리가 효과적인 경우
IO Blocking 등 시간이 오래 걸리는 작업 execute
→ 백그라운드에서 run 하는 동안 다음 작업 실행 → 나중에 결과 취합

  • 자원의 효율적인 관리 - CPU 사용률 증가
  • 작업 처리 시간 감소
💡 

IO 작업이 백그라운드로 돌아갈 수 있는 이유

IO 작업은 CPU가 아니라 **하드웨어가 담당**하기 때문!!

분할 처리(Parallel Processing)

한 작업(단일 시스템)여러 개의 작업으로 작업 단위를 분할 및 병렬화고, 동시에 처리한다.

  • 유의 사항
    각각의 작업은 독립적으로 실행 가능해야 한다.

ex) DBMS, 컴파일러 등

분산 처리(Distribution Processing)

한 개 이상의 작업여러 시스템분산시켜 처리하는 방법.
한 시스템으로 처리하기 힘든 대규모 시스템에 적합하다.

  • 여러대의 컴퓨터 연결 : 장애 대응 및 확장성

ex) 대규모 서버, 클라우드 등의 분산형 서버, 검색엔진

profile
퇴사한 햇병아리 웹 개발자, 타직무로 이직을 꿈꾸다?!

0개의 댓글