728x90
CS
프로세스와 스레드
프로세스
- 프로세스는 ‘실행중인 프로그램’으로 정의한다. 즉 실행되고 있는 각각의 프로그램이 (심지어 같은 프로그램을 여러 개 실행시켰더라도) 모두 프로세스이다.
- 프로세스는 각자 고유한 가상 메모리를 가지고 있기 때문에, 실제 물리 메모리 사용량과는 상관없이 프로세스 자신이 전체 메모리를 전부 가진 것처럼 작동하며, 이러한 착각을 지원하기 위해 가상 메모리 할당과 페이징 같은 기능들을 제공한다.
- 다른 프로세스와 통신하려면(IPC : Interprocess Communication) 메시지 패싱이나 공유 메모리(Shared Memory) 같은 방식을 사용해야 하며, 스레드보다 비교적 무겁다. 프로세스를 생성 → 제거하는 일련의 사이클에서 OS는 가상 메모리 범위를 잡고, 프로세스를 세팅하고, 제거 시엔 가상메모리를 다시 풀어주고 하는 과정에서 쓰레드보다 더 연산 부담을 가지게 된다.
스레드
- 스레드는 각각의 프로세스의 실행 흐름이다. 하나의 프로세스에서 여러 개 스레드를 만들 수 있다.
- 레지스터와 스택 메모리를 제외한 힙, 데이터 공간을 공유한다. 이로 인해 빠른 스레드 간 통신을 할 수 있다.
- 메모리를 공유하기 때문에 그에 따른 Data Race, Deadlock 문제를 피할 수 없어서 Lock이나 Atomic을 사용하여 잘 회피해야 한다.
가상 메모리
- 가상 메모리는 가상의 메모리 공간이다. 가상의 메모리 체계를 만들어서, 실제로 사용되는 물리 메모리 공간에 1:1 대응시킨다.
- 주요 개념
- 가상 주소와 물리 주소
- 가상 주소(Virtual Address) : 프로세스가 접근하는 메모리 주소
- 물리 주소(Physical Address) : 실제 RAM에서의 주소
- 페이지(Page)
- 가상 메모리 시스템은 메모리를 일정한 크기의 블록으로 나눈다. 이 블록을 페이지라고 한다.
- 페이지 테이블(Page Table)
- 가상 주소와 물리 주소를 매핑하는 데이터 구조이다.
- 페이지 테이블은 가상 주소를 물리 주소로 변환하는 역할을 한다.
- 페이지 부재(Page Fault)
- 프로세스가 접근하려는 가상 주소가 현재 물리 메모리에 없는 경우 발생하는 이벤트다.
- 가상 주소와 물리 주소
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.06.17 서버 (5) | 2024.06.17 |
---|---|
24.06.16 CS (1) | 2024.06.17 |
24.06.14 C++ (0) | 2024.06.16 |
24.06.13 C++ (0) | 2024.06.13 |
24.06.12 C++ (0) | 2024.06.12 |