공부한거 정리하는 노트에요

[OS] 프로세스

by 구설구설
프로세스는 보호의 기본 단위로서, 제한된 접근 권한을 가진 실행 중인 프로그램의 인스턴스이다.

프로세스

프로세스의 정의

  • 프로그램 실행의 인스턴스
  • 보호의 기본 단위
  • 프로세스는 고유한 ~프로세스 ID(PID)~로 식별됨.

프로세스에 포함되는 요소

  • CPU 컨텍스트: 레지스터에 저장된 값
  • 운영 체제 자원: 주소 공간, 열려 있는 파일
  • 기타 정보: PID, 상태, 소유자 등

CPU의 가상화

운영 체제는 각 프로세스가 마치 독립적으로 CPU를 소유하고 있는 것처럼 보이게 한다.

실제로는 CPU가 프로세스들을 순차적으로 실행한다.

 

프로세스 실행 중단 조건

  1. 프로세스가 종료되거나 ~yield()~를 호출하는 경우
  2. 프로세스에 할당된 시간이 끝나 Timer Interrupt가 발생한 경우
  3. ~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

블로그의 정보

공부중임

구설구설

활동하기