OS: Process

yxnsx·2022년 6월 3일
0

ComputerScience

목록 보기
2/2
post-thumbnail

Process

  • 동시 실행 가능한 여러개의 스레드로 구성됨
  • 디스크에 파일로 저장된 컴퓨터 프로그램이 메모리로 적재되어 실행된 것을 말함
  • 프로그램 실행의 인스턴스 - 하나의 프로그램에 여러 프로세스가 있을 수 있음
  • 현재 어떤 자원을 사용하는지에 대한 관련 정보가 들어있는 동적인 개체
  • 사용자 관점에서의 프로세스는 주소 공간을 가지고 실행하는 프로그램임

Process의 메모리 구조

Stack

  • 데이터를 일시적으로 저장하는 영역
  • 지역변수에 사용하고, 변수가 범위 밖으로 이동하면 공간을 해제함
  • 호출한 함수의 반환 주소, 반환 값, 매개변수 등에 사용함
  • 힙과 인접한 방향으로 점점 커져 스택 포인터와 힙 포인터가 만나면 메모리가 소진되었다는 의미임

Heap

  • 코드 영역과는 별도로 유지되는 자유 영역
  • 메모리 동적 할당을 위해 프로그램 실행 중 시스템 호출을 사용했다 해제하는 방법으로 활용
  • 동적 메모리 할당이 발생하면 위쪽으로 커짐

Data

  • 프로그램의 가상 주소 공간
  • 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전 초기화함
  • 읽기 전용 영역은 아니지만 읽기 전용 또는 읽기와 쓰기 영역으로 초기화할 수 있음
  • 초기화하지 않은 데이터는 데이터 영역의 끝에서 시작함

Text

  • 실행 명령을 포함하는 메모리 또는 목적 파일에 있는 프로그램 영역
  • 일기 전용이므로 프로그램이 코드 영역을 침범하여 쓰기를 시도하면 오류가 발생하고 프로그램을 종료함

Process의 종류

역할별 구분

  • 시스템(커널) 프로세스
    → 모든 시스템 메로리와 프로세서의 명령에 액세스할 수 있는 프로세스
    → 프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(OS) 영역을 침범하지 못하게 감시함
    → 사용자 프로세스를 생성하는 기능을 함

  • 사용자 프로세스
    → 사용자 코드를 수행하는 프로세스

병행 수행 방법별 구분

  • 독립 프로세스
    → 다른 프로세스에 영향을 주지 않거나 다른 프로세스의 영향을 받지 않으면서 수행하는 병행 프로세스

  • 협력 프로세스
    → 다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스

Process의 상태

New (Create) - 생성

  • 보조기억장치에서 실행할 프로그램을 선택하여 생성 진행

Ready - 준비

  • 프로세스가 생성된 후 준비 상태로 전환함
  • CPU에 실행되기 위해 대기하는 상태
    → 보조기억장치에서 주기억장치로 적재됨

Running - 실행

  • CPU에 의해 선택된 프로세스가 실행됨

Waiting (blocked) - 대기

  • 프로세스가 I/O에 대한 액세스를 요청하거나, 사용자의 입력이 필요하거나, 잠금 영역에 대한 액세스가 필요할 때 대기 또는 차단 상태가 됨
  • 프로세스는 주기억장치에서 대기하며 이 때 CPU는 필요하지 않음
  • I/O 작업이 완료되면 준비상태로 전환함

Suspend ready - 지연 준비

  • 프로세스가 처음엔 준비 상태였으나 주기억장치에서 교체되어 외부 저장소에 배치됨
  • 프로세스가 기억장치를 제외한 다른 모든 필요 자원들을 보유한 상태
  • 주기억장치로 다시 프로세스를 가져올 때마다 준비 상태로 다시 전환됨

Suspend waiting (Suspend blocked) - 지연 대기

  • Suspend ready와 유사하지만, I/O 작업을 수행하던 프로세스가 주기억장치의 메모리 부족으로 인해 보조기억장치로 이동됨
  • 작업이 완료되면 대기 상태로 전환될 수 있음

Terminated (Completed)

  • 프로세스가 실행을 완료하고 종료됨

Process의 상태전이

Dispatch (Ready → Running)

  • 우선순위가 높은 프로세스를 선정하여 CPU 할당

Block (Running → Waiting)

  • 실행 상태의 프로세스가 I/O 작업 또는 자원을 필요로 하는 경우, 이를 기다리기 위해 프로세스가 CPU를 스스로 반납하고 대기 상태로 전환되는 것
  • I/O 작업은 CPU가 아닌 I/O 프로세서가 담당하기 때문에 발생

Wake up (Waiting → Ready)

  • I/O 작업 종료 또는 필요 자원이 할당되는 등 기다리던 사건이 일어났을 때, 다시 실행을 시작하기 위해 대기 상태에서 준비 상태로 넘어가는 것

Timeout (Running → Ready)

  • 실행 상태 프로세스의 할당된 시간이 지나면 Time interrupt가 발생하여 CPU를 다른 프로세스에게 양도하고 준비 상태로 전환되는 것
  • 프로세스가 일정 시간 동안만 프로세서를 점유할 수 있게 하여 프로세서를 독점해서 사용하지 못하게 함

Swap-out (Ready → Suspended ready)

  • 프로세스 생성 후 메모리가 부족하거나 준비 상태의 프로세스가 주기억장치를 잃은 경우, 준비 상태에서 커널에 의해 메모리가 회수되고 보조기억장치로 이동되어 지연 준비 상태로 전환되는 것

Swap-in (Suspended ready → Ready)

  • 지연 준비 상태에서 기억장치가 다시 할당되는 경우, 보조기억장치에서 주기억장치로 재할당되고 준비 상태로 전환되는 것


📝 References

0개의 댓글