[운영체제] 6. 프로세스의 연산과 스레드
1. 프로세스의 연산
프로세스의 구조
• 코드 영역: 프로그램의 본문이 저장되며 읽기 전용
• 데이터 영역: 실행 중 사용하는 변수 및 파일 등의 데이터 저장, 읽기/쓰기 가능
• 스택 영역: 함수 호출 시 반환 주소 저장, 운영체제에서 관리하며 사용자에게 보이지 않음
프로세스의 생성과 복사
• fork( ) 시스템 호출: 실행 중인 프로세스를 복사하여 새로운 프로세스 생성
- 부모 프로세스: 기존 실행 중인 프로세스
- 자식 프로세스: 복사된 새로운 프로세스
• fork( ) 호출 동작 과정
- 부모 프로세스의 대부분을 자식 프로세스에 복사
- PID, PPID, CPID 등 프로세스 구분자 변경
• fork( ) 시스템 호출의 장점
- 빠른 프로세스 생성
- 자원 상속 가능
- 효율적인 시스템 관리
프로세스의 전환
• exec( ) 시스템 호출: 기존 프로세스를 새로운 프로세스로 전환 (재사용)
- 코드 영역을 새로운 코드로 변경
- 데이터 영역과 스택 영역 리셋
- 프로세스 제어 블록(PCB)의 PID, PPID, CPID 등은 유지됨
프로세스의 계층 구조
• 유닉스의 프로세스 계층 구조: 모든 프로세스는 init 프로세스의 자식으로 트리 구조 형성
• 장점
- 동시 작업 가능
- 프로세스 재사용 용이
- 자원 회수 용이
고아 프로세스와 좀비 프로세스
• 고아 프로세스: 부모 프로세스가 먼저 종료된 프로세스
• 좀비 프로세스: 자식 프로세스가 종료되었지만 부모가 정리하지 않은 프로세스
• exit( ) 및 return( )을 사용해 부모에게 종료 상태 전달 가능
부모 프로세스 종료 시
• 커널이 자식 프로세스를 init 프로세스에게 입양
• 일부 운영체제에서는 모든 자식 프로세스 강제 종료
2. 스레드
스레드의 개념
• 프로세스를 실행 단위로 하는 멀티 태스킹의 문제점
- 커널에 과부하 발생
- 시스템 속도 저하
• 스레드의 특징
- 프로세스보다 작고 빠르게 생성/소멸
- 컨텍스트 스위칭 속도가 빠름
- 프로세스 내에서 코드, 데이터, 힙을 공유하며 스택은 개별적으로 가짐
• 스레드 제어 블록(TCB)
- 스레드 실행 상태, 스케줄링 정보, 계정 정보 포함
- 프로세스 제어 블록(PCB)과 연결됨
프로세스와 스레드의 차이
• 프로세스: 스레드들의 컨테이너
• 스레드: 프로세스 내에서 실행 단위
• 비유: 프로세스(회사)와 스레드(직원)
- 직원이 많을수록 동시에 많은 작업 수행 가능
- 프로세스 내 여러 스레드가 동작 가능
스레드 관련 용어
• 멀티 스레드: 하나의 프로세스를 여러 스레드로 분할하여 운영
• 멀티 태스킹: CPU가 여러 작업을 처리하는 기법
• 멀티 프로세싱: 여러 개의 CPU가 여러 개의 스레드를 동시에 실행
멀티 스레드의 장단점
• 장점
- 병렬 실행 가능
- 사용자 및 서버 프로그램 응답성 향상
- 메모리 및 자원 사용 효율적
- 코드 유지보수 용이
• 단점
- 한 스레드의 문제 발생 시 전체 프로세스에 영향
- 예: 인터넷 익스플로러 창 하나가 멈추면 전체 브라우저 종료
멀티 스레드 모델
• 사용자 스레드 (1:N 모델)
- 한 개의 커널 스레드가 여러 사용자 스레드를 관리
- 문맥 교환 없음, 멀티 CPU 사용 불가능
• 커널 스레드 (1:1 모델)
- 하나의 사용자 스레드가 하나의 커널 스레드와 연결
- 독립적 실행 가능, 보안 강함, 하지만 문맥 교환 비용 증가
• 멀티 레벨 스레드 (M:N 모델)
- 사용자 스레드와 커널 스레드를 혼합하여 유연하게 처리
- 커널 스레드를 사용하여 안정성 유지
3. 동적 할당 영역과 시스템 호출
프로세스의 동적 할당 영역
• 프로세스 구조
- 코드 영역: 프로그램 본체 저장
- 데이터 영역: 변수 및 데이터 저장
- 스택 영역과 힙 영역: 실행 중 동적으로 변하는 영역
• 스택 영역: 함수 실행 시 메모리 할당 및 해제
• 힙 영역: 프로그램 실행 중 동적 메모리 할당
exit( )와 wait( ) 시스템 호출
• exit( ) 시스템 호출: 작업 종료 시 부모 프로세스에 상태 전달
- 0: 정상 종료, -1: 비정상 종료
• wait( ) 시스템 호출: 부모 프로세스가 자식 프로세스 종료를 기다림
- 부모-자식 프로세스 간 동기화 역할 수행
이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.