Operation System - 2. 프로세스와 스레드 편

Perdy·2023년 7월 26일
0

CS

목록 보기
2/20

프로세스와 스레드

프로세스 : 컴퓨터에서 실행되고 있는 프로그램, CPU 스케줄링의 대상이 되는 작업.
스레드 : 프로세스 내 작업의 흐름

프로세스

프로그램이 메모리에 올라가 인스턴스화 된 것을 말합니다. 즉 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말합니다.

1. 프로세스 상태

생성 상태 : 프로세스가 생성된 상태를 의미하며, fork() 함수나 exec() 함수를 통해 생성하며, 이때 PCB가 할당됩니다.

  • fork() 함수 : 부모 프로세스의 주소 공간을 그대로 복사하고, 새로운 자식 프로세스를 생성하는 함수. 주소 공간만 복사하고 비동기 작업 등은 상속하지 않습니다.
  • exec() 함수 : 새롭게 프로세스를 생성하는 함수

대기 상태 : 메모리 공간이 충분하면 메모리를 할당받고 아니면, 아닌 상태로 대가하고 있으며 CPU 스케줄러부터 CPU 소유권이 넘어오기를 기다리는 상태입니다.

대기 중단 상태 : 메모리 부족으로 일시중단된 상태입니다.

실행 상태 : CPU 소유권과 메모리를 할당받고 해당 프로세스를 실행중인 상태를 의미합니다.

중단 상태 : 어떤 이벤트가 발생한 이후, 기다리며 프로세스가 차단된 상태입니다.

일시 중단 상태 : 대기 중단과 유사한 상태로, 중단된 상태에서 프로세스가 실행되려고 했지만 메모리 부족으로 일시 중단된 상태입니다.

중료 상태 : 메모리와 CPU 소유권을 반납하고 종료된 상태입니다. 자연스럽게 종료되는 경우도 있지만 강제로 종료되는 비자발적 종료가 있습니다.

2. 프로세스의 메모리 구조

스택과 힙 :
스택은 지역 변수, 매개 변수, 실행되는 함수에 의해 늘어나거나 줄어드는 메모리 영역으로, 함수가 호출될 때마다 특정 정보가 스택에 저장됩니다.
힙에는 동적으로 할당되는 변수들을 저장합니다.

데이터 영역과 코드 영역
BSS segment 영역에는 전역 변수 또는 static, const로 선언되었지만 0으로 초기화가 되었거나 초기화가 되지 않은 변수들을 저장합니다.
Data Segment는 다 똑같지만, 0이 아닌 값으로 초기화 된 변수를 저장합니다.
Code Segment에는 프로그램의 코드가 들어갑니다.

3. 멀티 프로세싱

멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말합니다. 이를 통해 하나 이상의 일을 병렬로 처리할 수 있으며, 특정 프로세스의 메모리나 프로세스 중 문제가 발생할 경우에도 다른 프로세스를 이용하여 처리할 수 있으므로 신뢰성이 높습니다.

IPC
멀티 프로세싱은 IPC가 가능하며, IPC는 프로세스끼리 데이터를 주고 받고 공유 데이터를 관리하는 메커니즘을 뜻합니다.

종류로는 공유 메모리, 파일, 소켓, 익명 파이프, 명명 파이프, 메시지 큐 등이 있습니다.

스레드

프로세스의 실행 가능한 가장 작은 단위로, 프로세스는 여러 스레드를 가질 수 있습니다.

코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와는 달리 스레드는 이를 스레드끼리 공유합니다. 그 외 영역은 각각 생성합니다.

1. 멀티스레딩

프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법으로 스레드끼리 자원을 공유하기 때문에 효율성이 높습니다. 또한, 한 스레드가 중단되어도 다른 스레드가 실행 상태일 수 있기 때문에 빠른 처리가 가능합니다. 동시성에도 큰 장점을 보이지만, 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로스세 영향을 줄 수 있는 단점이 있습니다.

  • 동시성 : 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것
profile
영원한 뉴비. 꾸준히 한다면 언젠가는 높은 곳에 도달할지도?

0개의 댓글