프로세스
프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 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 |
댓글