728x90
반응형
프로세스와 메모리 구조, IPC 통신 정리
운영체제에서 프로세스, 메모리 구조, 프로세스 상태, 문맥 교환, 그리고 프로세스 간 통신(IPC)은 시스템 프로그래밍의 핵심 개념입니다.
📌 포그라운드 / 백그라운드 / 데몬 프로세스
- 포그라운드 프로세스: 사용자와 상호작용하며 실행되는 프로세스
- 백그라운드 프로세스: 사용자 눈에 보이지 않는 곳에서 실행
- 데몬(Daemon): 별다른 상호작용 없이 작업만 수행하는 특별한 백그라운드 프로세스 (Windows에서는 '서비스'라고 부름)
🧠 프로세스를 구성하는 메모리 구조
커널 영역
- PCB(Process Control Block): 프로세스 관리 정보가 저장된 구조체
사용자 영역
- 코드 영역: 실행 가능한 명령어 저장 (읽기 전용)
- 데이터 영역: 전역 변수, 정적 변수 저장
- 힙 영역: 동적 메모리 할당 공간 (프로그래머가 관리)
- 스택 영역: 함수 실행 중 생기는 지역 변수, 매개변수, 반환 주소 저장
🧪 스택 트레이스(Stack Trace): 스택에 저장된 함수 호출 정보를 기반으로 문제 발생 지점 추적 가능
📋 PCB와 문맥 교환(Context Switching)
PCB에 저장되는 정보
- PID (프로세스 ID)
- 프로세스 상태
- 레지스터 값
- CPU 스케줄링 정보
- 메모리 정보
- 파일 및 입출력 정보 등
struct task_struct {
pid_t pid;
int prio;
unsigned int_state;
struct mm_struct * mm;
void * stack;
struct files_struct * files;
};
- 프로세스 테이블: 실행 중인 PCB들의 집합
- 좀비 프로세스: 종료됐지만 정리되지 않은 PCB
문맥 교환 과정
- 타이머 인터럽트 발생 → PCB에 문맥 저장 → 새로운 PCB 로드 → 프로세스 전환
문맥 교환은 과도하게 발생 시 오버헤드 초래 → 성능 저하 가능
🔁 프로세스 상태 전이
[생성] → [준비] → [실행] → [종료]
↓
[대기]
- 생성: 메모리에 적재되고 PCB 생성됨
- 준비: CPU 할당 대기
- 실행: CPU를 받아 명령어 수행
- 대기: 입출력 등으로 인해 대기 상태
- 종료: 실행 완료 후 메모리와 PCB 정리
⌨ 블로킹 vs 논블로킹 I/O
방식 | 설명 |
---|---|
블로킹 I/O | 입출력 작업 중 실행이 멈춤 (대기 상태) |
논블로킹 I/O | 입출력 요청 후 곧바로 다음 명령어 실행 |
🤹 멀티프로세스 vs 멀티스레드
항목 | 멀티프로세스 | 멀티스레드 |
---|---|---|
실행 단위 | 프로세스 단위 | 스레드 단위 |
자원 공유 | 안함 | 공유함 |
안정성 | 높음 | 낮음 (문제 발생 시 전체 영향) |
성능 | 낮음 | 높음 |
웹 브라우저 탭 = 각각의 프로세스 예시
🧵 스레드 Join
join()
을 호출하면, 해당 스레드가 종료될 때까지 기다림- 스레드 간의 작업 동기화를 위해 사용
📨 프로세스 간 통신 (IPC: Inter Process Communication)
프로세스 간 자원을 공유하거나 데이터를 주고받는 방식
공유 메모리 방식
- 공통 메모리 공간을 설정하여 직접 읽고 쓰기
- 빠르지만 동기화 문제 고려 필요
메시지 전달 방식
- 커널을 통해 메시지를 송수신
- 커널 개입이 많아 느리지만 안정성 높음
주요 방식
- 파이프 (Pipe): 익명/지명 파이프 (단방향 통신)
- 시그널 (Signal): 이벤트 알림 (예: SIGINT, SIGKILL)
- 소켓 (Socket): 네트워크 기반 IPC
- RPC (Remote Procedure Call): 원격 함수 실행
🚨 시그널과 시그널 핸들러
- 시그널: 프로세스에게 발생한 이벤트를 알리는 비동기적 신호
- 시그널 핸들러: 시그널 발생 시 실행될 사용자 정의 함수
시그널 | 설명 |
---|---|
SIGINT |
인터럽트 (Ctrl+C) |
SIGKILL |
강제 종료 |
SIGSEGV |
세그먼트 오류 |
시그널을 IPC 방식으로 활용할 수도 있음
🧱 코어 덤프(Core Dump)
- 비정상 종료된 프로그램의 메모리 상태를 저장한 파일
- 디버깅 시 유용하게 사용
728x90
반응형
'CS전공지식' 카테고리의 다른 글
[CS 전공지식] 동기화와 교착상태 (0) | 2025.03.29 |
---|---|
[CS전공지식] 운영체제 시스템 콜과 이중모드 (0) | 2025.03.26 |
[CS전공지식] 운영체제 (0) | 2025.03.26 |
댓글