1 minute read

운영체제

프로세스와 스레드

프로세스

실행중인 프로그램이다. 디스크에서 메모리로 적재되어, CPU 자원의 할당을 받을 수 있는 것을 말한다. 프로세스에 할당되는 메모리 안에는 스택, 힙, 데이터, 코드 영역을 포함한다.

PCB (Process Control Block) 프로세스 제어 블록

프로세스에 대한 중요한 정보를 저장하고 있다. 운영체제가 프로세스를 표현한 것이라고도 한다. 프로세스 생성시 만들어지며, 주기억장치에 유지된다. 문맥전환 등 다른 프로세스를 처리해야 할 때, PCB에 현재 상태를 저장함으로써 나중에 그 작업 상태를 불러와 작업재개가 가능해진다. PID, 상태, 다음 명령어 주소 등의 정보가 저장된다.

PC (Program Counter)

다음에 실행될 명렁어의 주소가 들어있는 레지스터이다. 명령어가 인출되면, 자동으로 다음 명령어를 가리키도록 주소값이 증가된다.

캐시메모리

CPU의 레지스터와 메모리 사이에서 캐싱을 통해 병목 현상을 완화하는 것을 말한다.

스레드

프로세스의 작업 실행 단위이다. 멀티스레드라는 것은 한 프로세스 내에 여러개의 프로그램의 흐름을 말한다. 스레드간에는 프로세스의 주소나 자원을 공유할 수 있다. 스레드는 스레드 ID, PC, 레지스터 집합, 스택으로 구성된다. 스레드 간에는 각자 독립적으로 작업을 수행해야 하기 때문에, 각각 스택과 PC 레지스터를 받는다.

멀티 스레드 환경

하나의 프로세스에서 다수의 실행 단위로 구분하여 자원의 생성과 관리의 중복성을 최소화하여 효율을 높이는 것

장점

 - 펄티 프로세스에 비해 메모리와 자원의 소모가 줄어든다.
 - 힙 영역을 사용하면 프로세스간 통신에 비해 스레드간 통신이 훨씬 간단해진다.
 - 스레드의 문맥전환은 캐시메모리를 비울 필요가 없어 프로세스의 문맥전환에 비해 더 빠르다.
 - 시스템의 처리량은 늘고, 공간/시간/자원은 절약된다.

단점

 - 힙 영역을 공유하므로 해당 자원을 사용할 때 동기화를 해줘야 한다.
 - 동기화를 위해 과도한 lock 사용시 병목 현상으로 성능이 저하될 수 있다.

멀티 스레드 vs 멀티 프로세스

이 두가지는 실행 단위를 구분한다는 점은 같지만 멀티 스레드는 자원을 덜 소모하는 대신 하나의 스레드가 비정상적인 오류를 일으키면 다른 스레드도 같이 종료될 수 있고, 동기화 문제가 있다.

멀티 프로세스는 자원을 공유하지 않아서 서로간 통신이 멀티 스레드보다 불편하고, CPU자원소모가 심하다.

멀티 프로세싱, 멀티 프로그래밍, 멀티 태스킹

CPU 코어의 관점

  • 멀티 프로세싱: CPU 코어 여러개로 프로세스 여러개 수행
  • 멀티 프로그래밍: CPU 코어 하나로 프로세스 여러개 수행
  • 멀티 태스킹: CPU 코어 몇 개를 쓰던 간에 작업수행

(출처: https://naldo627.github.io/2019/06/03/techinterview-prepare-wm/ )

Comments