CS지식 쌓기

스레드와 프로세스

류도토리 2024. 1. 2. 17:22
  1. 스레드
    1. 프로세스를 구성하는 실행 흐름의 단위
    2. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다
    3. 프로세스의 자원을 공유할 수 있다
  2. 멀티 스레드 프로세스
    1. 실행 흐름이 여러 개인 프로세스
    2. 프로세스를 이루는 여러 명령어 동시 실행 가능
  3. 스레드의 구성 요소
    1. 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보
  4. 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 VS 하나의 프로세스를 여러 스레드로 실행 어떤 차이가 있을까? (멀티 프로세스와 멀티 스레드)
    1. 멀티 프로세스
      1. 프로세스를 fork하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨
      2. 저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재
      3. fork를 세 번 네 번 하면 메모리에는 프로세스가 세 개 네 개 적재됨
      4. 독립적으로 실행됨
    2. 멀티 스레드
      1. 스레드들은 각기 다른 스레드 ID, 프로그램 카운터 값을 포함한 레지스터 값, 스택을 가질 뿐
      2. 프로세스가 가지는 자원을 공유
      3. 협력과 통신에 유리함
     
  5. 프로세스 끼리는 자원을 공유하지 않는다
    1. 프로세스 간에도 자원을 주고 받을 수 있다 : 프로세스 간 통신 (IPC)
    2. 파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신
  6. 스레드는 프로세스의 자원을 공유한다

 

 

 

'CS지식 쌓기' 카테고리의 다른 글

CPU 스케줄링 알고리즘  (0) 2024.01.02
CPU 스케줄링  (1) 2024.01.02
프로세스 상태와 계층 구조  (0) 2024.01.02
프로세스  (0) 2024.01.02
운영체제  (0) 2024.01.02