함량 100%

함지의 개발일기

Computer Science/운영체제

Process & Thread

Haamjee 2021. 7. 6. 22:19

 

 

키워드

  1. 실행단위 : CPU Core 에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념
  2. 프로세스 : 하나의 스레드만 가지고 있는 단일 스레드 프로세스. 운영체제 위에서 실행 중인 프로그램. 프로그램 명령어와 데이터들이 메모리에 올라오고 실행 중 또는 실행 대기중인 상태
  3. 동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
  4. 프로그램 : 어떤 작업을 위해 운영체제 위에서 실행할 수 있는 파일 (ex. 웹 브라우저, 워드 프로세서, 카카오톡 등)
  5. 프로세서 : 프로세스가 동작될 수 있도록 하는 하드웨어(=CPU)
  6. PCB(Process Control Block) : 프로세스를 제어하기 위한 정보 모음
    • 프로세스 식별자, 프로세스 상태, 다음에 실행할 명령어의 주소, 이전에 작업하던 작업 내용(레지스터), CPU 스케줄링 정보(우선순위, 최종 실행시각, CPU 점유시간 등), 프로세스의 주소 공간 등
  7. 프로세스 구조
  • stack : 호출된 함수, 지역변수 등 임시 데이터
  • heap : 동적으로 생긴 데이터 (ex. new Object(), malloc())
  • data : 전역변수 (ex. static, global)
  • code : 프로그램 코드

 

Process & Thread

- 프로세스 : 프로그램을 메모리 상에서 실행 중인 작업

- 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위

- 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용

  • 쓰레드는 경량화된 프로세스이다.
  • 프로세스가 동시에 실행하는 것처럼 보이기 위해서 Context Switching을 한다.
  • 컨텍스트 스위칭 과정에서 많이 비용이 든다.
  • 비용을 줄이기 위해서 쓰레드 나왔다.
  • 쓰레드는 부모 프로세스와 Code, Data, Heap 영역을 공유함으로써 Context Switching 비용을 줄일 수 있다.

 

Multi-Process & Multi-Thread

  • 멀티 프로세스와 멀티 쓰레드는 한 어플리케이션에 대한 처리방식
  • Multi Process
    • 한 프로세스는 매번 하나의 처리만 할 수 있기 때문에 동시에 처리할 수 없다. 이를 처리하기 위해서 부모프로세스는 부모와 별개의 메모리 영역을 가진 자식 프로세스를 fork()한다.
    • 각 프로세스는 독립적이다.
    • IPC를 사용한 통신한다.
    • 자원 소모적, 개별 메모리 차지한다.
    • Context Switching 비용이 크다.
    • 동기화 작업이 필요하지 않다.

 

  • Multi-Thread
    • 스레드는 한 프로세스에서 구분된 실행단위이다. 스레드를 여러개로 나뉘어진게 멀티 쓰레드이다.
    • Thread끼리 긴밀하게 연결되어 있다.
    • 공유된 자원으로 통신 비용 절감할 수 있다.
    • 공유된 자원으로 메모리가 효율적이다.
    • Context Switching 비용이 적다.
    • 공유 자원 관리를 해야한다.

'Computer Science > 운영체제' 카테고리의 다른 글

[운영체제] 데드락(Dead Lock, 교착상태)  (0) 2023.05.30
01. 컴퓨터 구조  (0) 2021.04.13