CS

[CS] 프로세스와 스레드

5kiran 2023. 4. 13.
반응형

프로세스

프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업

프로세스의 메모리 구조

운영체제는 프로세스에 적절한 메모리를 할당합니다.

스택, 힙, 데이터 영역, 코드 영역으로 나눠집니다.

스택과 힙

스택과 힙은 동적 할당이 되며, 동적 할당은 런타임 단계에서 메모리를 할당받는 것을 의미합니다.

스택은 지역 변수, 매개변수, 실행되는 함수에 따라 늘어나거나 줄어드는 메모리 영역입니다. 함수가 호출될 때 환경 등 특정 정보가 스택에 계속해서 쌓이게 됩니다.

힙은 동적으로 할당되는 변수들을 저장합니다.

동적으로 관리되는 자료 구조의 경우 힙 영역을 사용합니다.

데이터 영역과 코드 영역

정적 할당이 되는 영역이며 정적 할당은 컴파일 단계에서 메모리를 할당하는 것을 의미합니다.

멀티프로세싱

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

IPC

멀티프로세스는 IPC가 가능하며 IPC는 프로세스끼리 데이터를 공유하고 관리하는 것을 의미합니다.

스레드

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

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

그 외의 스택 영역은 각각 생성됩니다.

멀티스레딩

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

공유 자원

시스템 안에서 각 프로세스, 스레드가 접근할 수 있는 모니터, 프린트, 메모리, 파일 등의 자원이나 변수를 의미합니다.

공유 자원을 두 개 이상의 프로세스가 동시에 사용하는 상황을 경쟁 상태라고 합니다.

임계 영역

임계 영역은 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서등의 이유로 결과가 달라지는 코드 영역을 말합니다. 

반응형

'CS' 카테고리의 다른 글

[CS] 선언형과 함수형 프로그래밍  (0) 2023.04.18
[CS] REST API  (0) 2023.04.17
[CS] 데이터베이스의 기본  (0) 2023.04.07
[CS] 디자인 패턴  (0) 2023.02.20
[CS] HTTP, HTTPS  (0) 2023.02.20

댓글