프로세스 & 스레드

다혜·2022년 3월 22일
0

Computer Science

목록 보기
4/4
post-thumbnail
post-custom-banner

✅ 프로세스

✔ 메모리에 올라와 실행되고 있는 프로그램의 인스턴스.(독립적인 개체)
✔ 운영체제로 부터 시스템 자원을 할당받는 작업의 단위.
✔ 동적인 개념으로는 실행된 프로그램을 의미함.

💿 프로그램과 프로세스


프로그램의 정의

✔ 어떤 작업을 실행할 수 있는 파일.
✔ 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태.

  • 프로그램을 실행하기 전의 파일은 그저 코드 덩어리이다.

프로그램 실행

  • 프로그램을 실행하면 파일은 컴퓨터 메모리에 올라가게 된다.
  • 이 상태를 동적인 상태라고 하며, 이 상태의 프로그램을 프로세스라고 한다.

📌 특징

✔ 최소 1개의 스레드(메인 스레드)를 가지고 있다.
✔ 프로세스마다 각각 독립된 메모리 영역을 Code / Data / Stack / Heap 의 형식으로 할당받는다.

  • Code : 코드 자체를 구성하는 메모리 영역
  • Data : 전역변수, 정적변수, 배열 등
  • Heap : 동적 할당 시 사용 (new(),malloc() 등)
  • Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

✔ 프로세스는 각각 독립된 메모리 영역을 할당받기 때문에 다른 프로세스의 변수나 자료에 접근 불가능.



✅ 스레드

프로세스 내에서 실행되는 여러 흐름의 단위.
✔ 프로세스의 특정한 수행 경로.
✔ 프로세스가 할당받은 자원을 이용하는 실행의 단위.

📀 프로세스와 스레드

작은 실행 단위

  • 프로세스 내의 작은 실행 단위 개념
  • 코드 내에 선언된 함수들에 비유

📌 특징

✔ 프로세스가 할당받은 메모리 영역 내에서 Stack 형식으로 할당된 메모리 영역은 따로 할당 받는다.
✔ Code / Data / Heap 형식으로 할당받은 메모리 영역은 공유한다.
✔ 각각의 스레드는 별도의 Stack을 가지고 있지만 Heap 메모리는 서로 읽고 쓸 수 있다.



✅ 멀티프로세스

하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 것.

  • 장점 :
    하나의 프로세스에 문제가 생겨도 확산되지 않고 프로그램은 동작한다.

  • 단점 :
    각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을수록 오버헤드가 발생한다.
    Context Switching으로 인한 성능 저하.


Context Switching

✔ CPU에서 여러 프로세스를 돌아가며 작업을 처리하는 과정.
✔ 즉, 프로세스의 상태(Context) 정보를 보관하고 대기하고 있던 다음 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 과정.
✔ 너무 잦으면 오버헤드 발생.



✅ 멀티스레드

프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하는 것.

  • 장점 :
    메모리 공유로 인한 시스템 자원 소모 감소, 처리 비용 감소, 실행 속도 향상.

  • 단점 :
    메모리 공간 공유로 인한 동기화 문제 발생.
    하나의 스레드에 문제가 생기면 전체 프로세스에 문제가 생김.
    주의 깊은 설계가 필요하고 디버깅이 까다로움.

profile
봉식이를 위한 개발을 하고 싶오
post-custom-banner

0개의 댓글