멀티 프로세스란
>> 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것
장점 : 안정성 (메모리 침범 문제를 OS차원에서 해결할 수 있음)
단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 Context Switching으로 인한 성능 저하가 발생함, 캐쉬 메모리를 초기화 하는 부분에서 오버헤드가 발생할 수 있음.
IPC(Inter Process Communication)
IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻함.
IPC의 종류로는 공유 메모리, 파일, 소켓, 익명 파이프, 명명 파이프. 메세지 큐가 있음. 이들은 모두 메모리가 완전히 공유되는 스레드보다 속도가 떨어짐(스레드는 스택을 제외한 나머지 영역을 전부 공유하기 때문에 오버헤드에 대한 우려가 적음)
1. 익명 PIPE
- 한쪽 방향으로만 통신이 가능한 단방향 통신, FIFO방식으로 읽히며 양쪽으로 모두 송/수신을 하고 싶으면 2개의 파이프를 만들어야함.
- 매우 간단하게 사용할 수 있는 장점이 있고 전이중 통신을 하기 위해선 2개를 만들어야함
- 부모, 자식 프로세스 간에만 사용할 수 있으며 다른 네트워크 상에서는 사용이 불가능함
2. Name PIPE(FIFO)
- 부모-자식 간 통신처럼 명확히 알 경우 뿐 아니라, 전혀 모르는 상태의 프로세스들 사이에 통신에 사용됨
- 부모 프로세스와 무관한 다른 프로세스와도 통신이 가능함 (통신을 위해 이름 있는 파일을 사용)
- 익명 파이프와 같이 읽기/쓰기 동시에 불가능함
3. 메세지 큐
- 파이프처럼 데이터의 흐름이 존재하는 것이 아닌, 메모리 공간으로 사용됨
- 메세지를 큐 데이터 구조 형태로 관리하며 커널의 전역 변수 형태 등 커널에서 전역적으로 관리되며 사용방법이 매우 직관적이고 간단함.
4. 공유 메모리
- 데이터 자체를 공유하도록 지원하는 설비.
- 여러 프로세스에 동일한 메모리 블록에 대한 접근 권한이 부여되어 프로세스가 서로 통신할 수 있도록 공유 메모리를 생성해서 통신하는것을 말함
- 기본적으로 각 프로세스의 메모리를 다른 프로세스가 접근 할 수 없지만, 공유 메모리를 통해 여러 프로세스가 하나의 메모리를 공유 할 수 있음
- 불필요한 오버헤드가 발생하지 않아 가장 빠르며 같은 메모리 영역을 여러 프로세스가 공유하기 때문에 동기화가 필요함
5. 파일
- 파일을 메모리에 맵핑시켜 공유하는 방식
6. 소켓
- 네트워크 소켓 통신을 통해 데이터를 공유함 TCP와 UDP가 있음
이러한 IPC 통신에서 프로세스간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용함 (공유된 자원에 한번에 하나의 프로세스만 접근을 시킬 때)
Context Switching이란?
프로세스의 상태 정보를 저장하고 복원하는 일련의 과정임
즉, 동작 중인 프로세스의 상태를 저장하고 로드시키는 과정을 말함. 한 프로세스가 할당 된 시간이 끝나거나 인터럽트에 의해 발생함.
이때 PCB를 기반으로 프로세스의 상태를 가져오며 이전에 보관했던 프로세스 상태를 복구하는 과정도 포함됨
이때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐스 클리어 과정을 겪게 되고, 이 때문에 캐시미스가 발생할 수 있음
캐시미스는 컨텍스트 스위칭에 드는 비용임.
PCB(Process Control Block)
PCB는 운영체제에서 프로세스의 메타데이터를 저장한 '데이터'를 말함. 프로세스 제어 블록이라고도 불림. 프로세스가 생성되면 운영체제는 해당 PCB를 생성함.
프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 앞서 설명한 스택, 힙 등의 구조를 기반으로 메모리가 할당됨. 이 프로세스의 메타데이터들이 PCB에 저장되어 관리 됨. 이 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리됨. 이때 PCB는 Linked List 방식으로 관리됨.
PCB의 구조
PCB는 프로세스 스케줄링 상태, 프로세스 ID 등의 다음과 같은 정보로 이뤄져 있음
- 프로세스 스케줄링 상태
- 프로세스 ID
- 프로세스 권한
- 프로그램 카운터
- CPU 레지스터
- CPU 스케줄링 정보
- 계정 정보
- I/O 상태 정보
'CS 전공지식 > Operating System' 카테고리의 다른 글
[운영체제] 메모리와 캐시 (0) | 2024.06.03 |
---|---|
[운영체제] CPU 스케줄링과 알고리즘 (1) | 2024.06.03 |
[운영체제] Mutex(뮤텍스), Semaphore(세마포어), Deadlock(데드락) (0) | 2024.06.02 |
[운영체제] 멀티 스레드와 임계영역(Critical Section) (0) | 2024.06.02 |
[운영체제] 프로세스 & 스레드 (0) | 2024.06.02 |