ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] - Process vs Thread
    CS/면접준비 2022. 9. 29. 15:23

    Process


    Program을 Memory 상에서 실행 중인 작업

     

    • Process마다 최소 1개의 Thread가 존재한다. ( Main Thread )
    • Process는 각각의 Process마다 별도의 주소 공간을 할당한다. ( 독립적 )

     

    Memory

    1. Code

    • 코드 자체를 구성하는 Memory

     

    2. Data 

    • static , global , 배열 등
    • Init된 Data들은 Data Area ( static a = 10 )
    • Init되지 않은 Data들은 BSS Area ( static b )
      • global = life cycle = Program이 죽을 때 까지 / 다른 File에서 접근하여 사용 가능
      • static = life cycle = Program이 죽을 때 까지 / 다른 File 및 함수에서 접근하여 사용 불가
      • Init하지 않은 Static 변수는 사용하지 않는다면 Memory에 올라오지 않는다.
      • Init을 처리하여 주지 않는다면 이전 flow에서 사용했던 변수 값이 사용될 수 있다(Middleware에 의한 Process가 통제 )

     

    3. Heap

    • 동적 할당 시 사용 ( new() , malloc() )

     

    4. Stack

    • 지역변수 , Paramenter , Return  ( 임시 메모리 영역 )

     

    Thread


    Process 안에서 실행되는 여러 흐름 단위

     

    • Thread는 Stack영역만 별도로 할당 받고 나머지 Data, Code, Heap 영역은 공유한다.
    • 하나의 Process가 생성되면 최소 하나의 Thread 생성
    • Process는 자신만의 Resource,space을 할당 받아 사용하는 반면 Thread는 Resource, space를 Share하면서 사용한다.

     

    Multi Process


    하나의 Program은 Multi Process로 구성하여 각 Process가 병렬적으로 작업 수행
    • 안정성 ( 별도의 Memory 공간을 할당 받기 때문에 )
    • 독립된 Memory 공간으로 인하여 작업량이 많을 수록 Overhead가 발생한다.
    • Context Switching으로 인한 성능 저하

     

    Context Swithcing

    • Process의 state 정보 저장 및 복원하는 과정
    • Process Run -> wait -> Queue에 대기 중인 Process를 Run하기 위해 이전에 상태를 복구하는 과정
    • Process는 각 독립된 영역의 메모리 영역을 할당 받기 때문에 Cache Memory 초기화가 된다면, Overhead가 발생한다.

     

    Multi Thread


    하나의 Program에서 여러 Thread를 구성해 Thread가 하나의 작업을 처리
    • Shared Memory를 통해 다수의 작업을 동시에 처리
    • Shared Memory만큼 time, resoure 손실이 감소한다.
    • 전역, 전역 변수를 통하여 Shared 가능하다.
    • 안정성 문제 -> 하나의 Thread가 data를 망치게 된다면 나머지도 영향을 받는다.
    • 하지만, 이를 막기 위하여 Critical Section이 나오게 되었고 Shared Memory를 변경하기 위해서는 여러 조건이 필요하다.
      • Mutual Exclusion = 하나의 Process가 임계구역을 수행하고 있다면, 다른 누구도 수행 불가
      • Progress = Critical Section을 수행하는 Process가 없다면, 어떤 Process라도 들어가서 resource를 수행할 수 있다.
      • Bounded waiting = Mutual Exclusion으로 인해 무한정 대기하지 않아야 한다.

    'CS > 면접준비' 카테고리의 다른 글

    [OS] - System call / PCB  (0) 2022.09.29
    [OS] - Interrupt  (0) 2022.09.29
    [Database] - Join  (1) 2022.09.21
    [Database] - Key  (0) 2022.09.20
    캐시 메모리  (1) 2022.09.20

    댓글

Designed by Tistory.