Process VS Thread

Noah·2022년 7월 31일
0

OS Study

목록 보기
8/16

저번 포스팅까지 프로세스 CPU 스케쥴링에 대해서 알아보았습니다.

CPU 스케쥴링에 대해서 공부하게 되면서 Thread에 대해서 간략하게 알아보았는데 확실한 개념을 잡아야할 것 같습니다.

그래서 이번 포스팅의 주제는 Thread와 Process에 대한 총 정리 입니다!

Program

  • 프로그램

  • 정의 : 어떤 작업을 위해 실행하는 파일

  • HDD / SSD에 존재하는 단순한 실행 파일을 의미

Process

  • 프로세스

  • Program이 실행되어서 돌아가고 있는 상태

  • Program에서 Process가 되는 과정

    1. HDD / SSD에 저장된 프로그램이 메인 메모리에 올라감

      • 메인 메모리 영역의 종류

        1. Code : 실행 명령을 포함하는 코드

        2. Data : Static 변수 or Global 변수

        3. Heap : 동적 메모리 영역

        4. Stack : 지역 변수, 매개 변수, 반환 값 등 일시적인 데이터

  1. PCB 생성

    • Process Control Block
    • 특정한 프로세스를 관리하는 정보를 가지고 있는 자료 구조
    • 프로세스에 대한 정보?
      1. 프로세스에 대한 상태 정보
      2. 번지 정보
      3. 다른 레지스터에 대한 정보
      4. MMU
      5. 현재까지 프로세스 사용량
      6. PID : 프로세스 번호
      7. 어떤 파일에 대한 정보
    • OS 안의 Process Management 부분에 들어있다.
    • 구조

Thread

  • 경량화된 프로세스

    • 하나의 프로세스 안에 다수의 쓰레드가 존재 시, 공유되는 자원이 있기 대문
      • 공통된 자원?
        • Code / Data / Heap
  • 하나의 프로세스는 여러개의 쓰레드로 구성 가능

  • 프로세의 실행 단위

  • 종류

    • 사용자 스레드
    • 커널 스레드

Multi Process

  • 두 개 이상의 프로세서(CPU)가 협력적으로 하나 이상의 작업을 동시에 처리
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용
  • 정리
    1. 각 프로세스는 독립적
    2. IPC를 사용한 통신
    3. 자원 소모적 -> 개별 메모리 차지
    4. Context Switching 비용 큼
    5. 동기화 작업 미 필요

Multi Thread

  • 하나의 프로세스에 여러 스레드로 자원을 공유하여 작업을 나누어 수행
  • 정리
    1. 공유된 자원으로 통신 비용 절감
    2. 공유된 자원으로 메모리가 효율적
    3. Context Switching 비용 적음
    4. 공유 자원 관리를 해야함

추가 정보! Multi Core

  • 위에서 보았던 멀티프로세스랑 멀티쓰레드는 처리 방식의 일종인 반면에
  • 멀티 코어는 물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한 순간에 처리
profile
BackEnd 개발자가 되기 위해 공부중입니다!

0개의 댓글