프로세스 & 스레드

김민성·2023년 3월 4일
0

Operating System

목록 보기
2/7
post-thumbnail

프로세스 & 스레드

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

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

기본적으로 프로세스마다 최소 1개의 스레드 소유(메인 스레드 포함)

프로세스는 각각 별도의 주소공간 할당(독립적)

  • Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
  • Data : 전역 변수, 정적 변수, 배열 등
    • 초기화된 데이터는 Data 영역에 저장
    • 초기화 되지 않은 데이터는 bss 영역에 저장
  • Heap : 동적 할당 시 사용(new(), malloc() 등)
  • Stack : 지역 변수, 매개 변수, 리턴 값(임시 메모리 영역)

→ 스레드는 Stack 영역만 할당 받고 나머지 영역은 서로 공유

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

프로세스의 상태

: 프로세스는 상태가 변경되며 수행된다

  • Running : CPU를 잡고 instruction을 수행중인 상태
  • Ready : CPU를 기다리는 상태
  • Blocked :
    CPU를 주어도 당장 instruction을 수행할 수 없는 상태
    Process에 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태
  • New : 디스크에서 메모리로 프로그램이 올라가 실행 준비
  • Terminated : 수행이 끝난 상태

PCB(Process Control Block)

: 운영 체제가 프로세스를 표현한 자료구조. 특정 프로세스에 대한 정보를 가짐. 각 프로세스 생성 시 고유의 PCB 생성, 프로세스 완료 시 PCB 제거
프로세스 간 문맥 교환
-> 프로세스는 진행하던 작업들을 PCB에 저장
-> 이후 자신의 순서가 왔을 때 이어서 처리

  • OS가 관리상 사용하는 정보
    - Process state, Process ID
    - Scheduling information, priority
  • CPU 수행 관련 하드웨어 값
    - Program counter, register
  • 메모리 관련
    - Code, Data, Stack, Heap
  • 파일 관련
    - open file descriptors

멀티 프로세스

: 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것

  • 장점 : 안정성(메모리 침범 문제를 OS 차원에서 해결)
  • 단점
    • 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을수록 오버헤드 발생

    • Context Switching으로 인한 성능 저하

      Context Switching?

      : 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정

      하나의 프로세스가 이미 CPU 를 사용중인 상태에서 다른 프로세스가 CPU 를 사용하기 위해 이전 프로세스의 상태를 저장하고 새로운 프로세스의 상태를 적재하는 것.

      → 프로세스는 각 독립된 메모리 영역을 할당받아 사용하므로 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드(문맥 교환에 필요한 시간, 메모리)가 발생할 문제

멀티 스레드

: 하나의 응용 프로그램에서 여러 스레드를 구성하여 각 스레드가 하나의 작업을 처리하는 것

스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하게 해줌

  • 장점
    • 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소
    • 전역 변수와 정적 변수에 대한 자료 공유 가능
  • 단점 : 안정성 문제. 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드가 작동 불능
    → 이 단점은 Critical Section 기법으로 대비
    → 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 발생하는 문제를 해결하기 위한 동기화 과정 ( 상호 배제, 진행, 한정된 대기를 충족해야 함)

0개의 댓글