[운영체제] - 프로세스 & 스레드

유현민·2022년 3월 3일
0

CS

목록 보기
14/17

1. 프로세스

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

  • 기본적으로 프로세스마다 최소 1개의 스레드 소유

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

  • code : 코드 자체를 구성하는 메모리 영역

  • Data : 전역변수, 정적변수, 배열 등
    • 초기화 된 데이터는 data 영역에 저장
    • 초기화 되지 않은 데이터는 bss 영역에 저장

  • Heap : 동적 할당 시 사용

  • stack : 지역변수, 매개변수, 리턴 값(임시 메모리 영역)

  • 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성

2. 멀티프로세스

하나의 컴퓨터에 여러 CPU 장착 -> 하나 이상의 프로세스들을 동시에 처리

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

3. Context Switching

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

3. 스레드

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

4. 멀티 스레드

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

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

  • 장점 : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소, 전역 변수와 정적 변수에 대한 자료 공유 가능

  • 단점 : 안전성 문제, 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드가 작동 불능 상태가 된다.

  • 멀티 스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함

    하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정

profile
smilegate megaport infra

0개의 댓글