[2023.03.22]Daily Posting

HeeJun·2023년 3월 22일
0

Operating System

목록 보기
3/9

이 블로그의 목적은 학습한 내용의 정리와 더 나아가 다양한 기술들에 대한 정리와 정보 공유가 목적입니다.

혹시 글의 내용 중 틀린 부분이 있다면 댓글 남겨주세요!!!

프로세스(Process) & 스레드(Thread) [2]

오늘의 포스팅은 어제에 이어 프로세스와 스레드에 관한 내용이다.

오늘은 멀티 프로세스 & 스레드

멀티 프로세스

  • 정의

    • 하나의 프로그램을 다수의 프로세스로 구성. 각 프로세스가 하나의 작업(Task)을 처리
  • 장점

    • 안정성이 좋다. 각 프로세스는 독립적인 메모리 공간을 할당받아 동작하기에 한 프로세스의 장애는 다른 프로세스의 장애로 이어지지 않는다
  • 단점

    • 모든 프로세스가 독립적인 메모리 공간을 소유해 메모리 사용량이 많다
    • Context Switching 발생 시 CPU 레지스터와 캐시 데이터를 초기화, Code / Data / Heap, Stack 메모리 모든 영역 처리에 대한 오버헤드(overhead) 발생
    • 프로세스 간 통신을 위해 IPC를 사용하기에 이 또한 오버헤드를 발생시킨다

멀티 스레드

  • 정의

    • 하나의 프로세스 내에 둘 이상의 스레드를 구성해 작업을 처리
  • 장점

    • Stack 영역을 제외한 다른 메모리 영역을 공유해 별도의 통신없이 데이터 공유 가능
    • 메모리 영역의 사용량이 적다
  • 단점

    • 한 스레드의 장애가 전체 프로세스의 장애로 이어질 수 있다
    • 스레드가 공유 자원을 손상시킬 가능성이 있고, 이로인해 스레드가 작동 불능 상태가 될 수 있다
    • 스레드 간의 공유 자원에 대한 안정성을 위해 임계구역(Critical Section)을 활용하는데 이로인해 메모리 접근 동기화 문제가 발생
  • Critical Section과 메모리 접근 동기화 (아주 간략한 설명)

    • 둘 이상의 스레드가 같은 메모리 공간(공유 자원)에 접근하는 코드 블럭을 임계 영역이라 한다.
    • 둘 이상의 스레드가 공유 자원에 동시에 접근하면서 발생하는 문제들이 많은데 이를 메모리 접근 동기화(혹은 상호 배제 mutual exclusion)를 통해 해소한다.
    • 예를 들어 설명하면, 한 차선에 차가 두 대가 동시에 들어가면 사고가 난다. 이를 해소하기 위해 급한 차를 먼저 들어가게 한다던가 하는 방식으로 해소한다.
    • 동기화 매커니즘이 다양하지만 그중 가장 일반적인 방법이 lock이다

오늘은 몸 상태가 좋지 않아 공부한 양이 적다.
다음 포스팅에는 이어서 시대별로 발전한 프로세스 스케줄링과 동시성 & 병렬성에 대한 내용을 다루겠다

profile
내가 작성한 코드 한 줄로 누군가를 편하게

0개의 댓글