[OS] 프로세스
by 구설구설프로세스는 보호의 기본 단위로서, 제한된 접근 권한을 가진 실행 중인 프로그램의 인스턴스이다.
프로세스
프로세스의 정의
- 프로그램 실행의 인스턴스
- 보호의 기본 단위
- 프로세스는 고유한 ~프로세스 ID(PID)~로 식별됨.
프로세스에 포함되는 요소
- CPU 컨텍스트: 레지스터에 저장된 값
- 운영 체제 자원: 주소 공간, 열려 있는 파일
- 기타 정보: PID, 상태, 소유자 등
CPU의 가상화
운영 체제는 각 프로세스가 마치 독립적으로 CPU를 소유하고 있는 것처럼 보이게 한다.
실제로는 CPU가 프로세스들을 순차적으로 실행한다.
프로세스 실행 중단 조건
- 프로세스가 종료되거나 ~yield()~를 호출하는 경우
- 프로세스에 할당된 시간이 끝나 Timer Interrupt가 발생한 경우
- ~read()~와 같은 I/O 호출로 OS에 제어가 넘어가는 경우
프로세스의 상태
- Ready: 실행 준비 상태
- 스케줄러에 의해 실행 순서가 결정되며, 실행되면 Running 상태로 전환됨.
- Running 상태에서 Timer Interrupt가 발생하면 다시 Ready 상태로 돌아감.
- Running: 실행 중인 상태
- 동시에 최대 1개의 프로세스만 실행 가능.
- 정상적인 운영체제에서는 항상 하나의 프로세스가 Running 상태에 있음.
- Blocked: I/O 요청이나 특정 이벤트를 기다리는 상태
- 대기 작업이 완료되면 다시 Ready 상태로 전환됨.
PCB (Process Control Block)
PCB는 각각의 프로세스를 나타내며, 해당 프로세스에 관한 모든 정보를 포함하고 있다.
컨텍스트 스위치
컨텍스트 스위치는 CPU가 한 프로세스에서 다른 프로세스로 전환하는 작업을 의미한다.
컨텍스트 스위치 과정
하드웨어 단계:
- 타이머 인터럽트 발생
- 현재 프로세스(A)의 레지스터를 커널 스택에 저장
- 커널 모드로 전환 및 트랩 핸들러 실행
커널 단계:
- 트랩 처리 및 ~switch()~ 루틴 호출
- 현재 프로세스(A) 레지스터를 PCB에 저장
- 새 프로세스(B) 레지스터를 PCB에서 복원
- 커널 스택 전환 및 트랩 복귀
프로세스 단계:
- 프로세스 B로 전환 및 실행 시작
관리 오버헤드
관리 오버헤드는 컨텍스트 스위치 과정에서 발생하는 부하를 의미하며, 다음과 같은 작업들로 인해 발생한다:
- 레지스터 및 메모리 맵 저장 및 복원
- 메모리 캐시 플러시 및 재로드
- 다양한 테이블 및 목록 업데이트
프로세스 종료
자발적
- Normal - ~exit(0)~에 의해 ~return 0~으로 종료되는 경우
- Error: 0이 아닌 값으로 return 또는 exit하는 경우
비자발적
- Fatal Error
- Segmentation Fault: 적절하지 않은 메모리 접근
- Protection Fault: 메모리 한도 초과
- 다른 프로세스에 의해 종료
좀비 프로세스
종료되었지만, 자원을 해제하지 않은 상태로 남아 있는 프로세스를 좀비 프로세스라고 한다.
좀비 프로세스는 시스템 자원을 계속 점유하므로, 다음과 같은 문제가 발생할 수 있다:
- 시스템 자원 낭비: 제한된 시스템 자원을 불필요하게 차지하여 새로운 프로세스 생성에 영향을 준다.
- 성능 저하: 프로세스 테이블 등 운영 체제의 관리 구조에 부담을 준다.
'CS > OS' 카테고리의 다른 글
[OS] 인터럽트 (Interrupt) (0) | 2024.12.12 |
---|---|
[OS] 듀얼 모드 (Dual Mode, 이중 모드) (0) | 2024.12.12 |
[OS] 운영체제란? (0) | 2024.12.11 |
[OS] SSD (0) | 2024.05.24 |
[OS] 하드 디스크 (0) | 2024.05.23 |
블로그의 정보
공부중임
구설구설