ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기술 면접 - 운영체제 (3)
    기술 면접 2021. 4. 19. 03:14

    스레드

    • Light Weight Process
    • 프로세스
      • 프로세스 간에는 각 프로세스의 데이터 접근이 불가 ( IPC 사용 )
    • 스레드
      • 하나의 프로세스에 여러 개의 스레드 생성 가능
      • 스레드들은 동시에 실행 가능
      • 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능 ( IPC 사용할 필요가 없다 )

    imageimage

    • Code 영역, Data 영역, Heap 영역은 다 같이 공유함
    • Stack 영역만 스레드마다 각각 유지

    멀티 프로세싱과 스레드

    • 멀티 태스킹과 멀티 프로세싱
      • 멀티 태스킹 : 하나의 CPU가 여러 프로세스를 동시에 실행하도록 보이게 하는 기술
      • 멀티 프로세싱 : 프로세스를 여러개의 CPU로 병렬 실행하여 CPU 속도를 높이는 것
    • 멀티 프로세싱 원리
      • 스레드를 여러개 만들면 가능!!

    image

    스레드 장점

    1. 사용자에 대한 응답성 향상

    image

    • 멀티 태스킹, 멀티 프로세싱처럼 동시에 실행되는 것처럼 느껴진다
    1. 자원 공유 효율
      • IPC 기법과 같이 프로세스간 자원 공유를 위해 번거로운 작업이 필요없음
      • 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
    • 만약 동시 실행을 위해 스레드가 아닌 프로세스들을 만든다면 heap, code, data 영역들을 프로세스마다 새로 만들어줘야 함, 엄청난 메모리 낭비 -> 스레드는 프로세스 하나에서 자원들을 공유

    스레드 단점

    1. 스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음

    image

    1. 스레드를 많이 생성하면, 컨텍스트 스위칭이 많이 일어나서 성능이 저하됨
      • 스레드를 많이 생성하면, 모든 스레드를 스케쥴링해야 함, 컨텍스트 스위칭이 빈번하다

    스레드 vs 프로세스

    • 프로세스는 독립적, 스레드는 프로세스의 서브셋
    • 프로세스는 각각 독립적인 자원을 가진다, 스레드는 프로세스 자원 공유
    • 프로세스는 자신만의 주소영역을 가진다, 스레드는 주소 영역 공유
    • 프로세스간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음

    동기화

    동기화 이슈

    • 동기화
      • 작업들 사이에 실행 시기를 맞추는 것
    • 여러 스레드가 동일한 자원 접근 시 동기화 이슈 발생
      • 동일 자원을 여러 스레드가 동시 수정 시, 각 스레드 결과에 영향을 준다

    해결 방안

    • Mutual Exclusion(상호 배제)
    • 스레드는 프로세스 모든 데이터를 접근할 수 있으므로
      • 여러 스레드가 변경하는 공유 변수에 대해 Exclusive Access가 필요함
      • 어느 한 스레드가 공유 변수를 갱신하는 동안 다른 스레드가 동시 접근하지 못하도록 막는다
    • 임계 영역
    • 임계 자원

    Mutex와 Semaphore

    • 임계 구역에 대한 접근을 막기 위해 Locking 메커니즘이 필요함
    • Mutex (binary semaphore)
      • 임계 구역에 하나의 스레드만 들어갈 수 있음
    • Semaphore
      • 임계 구역에 여러 스레드가 들어갈 수 있음
      • counter를 두어서 동시에 리소스에 접근 할 수 있는 허용 가능한 스레드 수를 제어

    바쁜 대기(busy waiting)

    • 세마포어 카운터 값이 0이라면 임계 영역에 들어가기 위해, 계속 반복문을 실행한다
    • 의미 없는 반복문 실행으로 성능 저하

    대기큐 (Waiting Queue)

    • 바쁜 대기를 피하기 위해서 세마포어 카운터 값이 음수가 된다면, 그 이후 스레드들을 대기 큐에 넣는다
    • 카운터 값이 1 이상이 되면 대기 큐에 있던 스레드들을 깨운다

    교착 상태 ( Deadlock )

    • 무한 대기 상태
      • 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에. 다음 상태로 진행하지 못하는 상태

    image

    배치 처리 시스템에서는 일어나지 않는 문제!

    프로세스, 스레드 둘 다 이와 같은 상태가 일어날 수 있음

    기아 상태( Starvation )

    • 특정 프로세스의 우선순위가 낮아서 원하는 자원을 할당 받지 못하는 상태
    • 교착 상태와 기아 상태
      • 교착 상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
      • 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우 발생
    • 기아 상태 해결 방안
      • Aging
        • 오래 기다린 프로세스의 우선순위를 높여준다

    '기술 면접' 카테고리의 다른 글

    기술 면접 - 데이터 베이스 (2)  (0) 2021.04.20
    기술 면접 - 데이터 베이스 (1)  (0) 2021.04.20
    기술 면접 - 운영체제 (4)  (0) 2021.04.19
    기술 면접 - 운영체제 (2)  (0) 2021.04.19
    기술 면접 - 운영체제 (1)  (0) 2021.04.19

    댓글

Designed by Tistory.