프로세스란?

  • 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램이나 시스템 프로그램을 의미한다.
  • 프로세스는 각종 자원을 요구한다.

  • 다음과도 같은 의미이다.
    1 . 실행 중인 프로그램
    2 . 비동기적 행위
    3 . 실행 중인 프로시저
    4 . 운영체제가 한개의 PCB로 한개의 프로세스 관리
    • PCB란?
      Process control block의 약자로
      운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳.
      • 각 프로세스가 생성될 때마다 고유의 PCB가 생성
      • 프로세스가 완료되면 PCB가 제거

    5 . 프로세서에 할당하여 실행할수 있는 개체
    6 . Dispatch가 가능한 대상

프로세스 vs 프로그램

프로그램 : 보조기억장치에 저장된 프로그램
프로세스 : 실행하기 위해 주기억장치로 로드된 프로그램

프로세스의 메모리 구조

  • 스택
    1) 데이터를 일시적으로 저장하는 영역
    2) 지역변수 , 매개변수, 복귀주소, 레지스터등에 사용한다.
    3) 함수를 호출할수록 커지고 반환하면 줄어든다.


  • 1) 코드 영역과는 별도로 유지되는 자유영역이다.
    2) 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 사용한다.
    3) 동적메모리할당에 사용된다.

  • 데이터
    1) 프로그램의 가상주소 공간이다.
    2) 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전에 초기화한다.

  • 코드
    1) 실행 명령을 포함하는 메모리이거나 목적 파일에 있는 프로그램 영역이다.
    2) 프로그램 시작할 때 프로세서가 디스크에서 읽어 실행하는 컴파일한 프로그램을 저장한다.

프로세스 상태

  • 1. 생성

    프로세스의 작업 공간이 메인 매모리에 생성되고 운영체제 내부에 프로세스의 실행정보를 관리하기 위한 프로세스 제어 블록(PCB)이 만들어지는 상태

    • 프로세스 생성 시 필요한 세부작업
      • 1 . 새로운 프로세스에 프로세스 식별자를 할당한다.
      • 2 . 프로세스의 모든 구성 요소를 포함할 수 있는 주소 공간과 PCB를 할당한다 = 메모리공간할당
      • 3 . PCB를 초기화한다(=생성). 프로세스 상태, PC 등 초기화, 자원 요청, 프로세스 제어 정보 등을 포함한다.
      • 4 . 해당 준비큐에 삽입한다.
  • 2. 준비

    프로세스에게 할당되기를 기다리는 상태

  • 3. 실행

    프로세스를 점유하여 명령어들이 실행되는 상태

  • 4. 대기

    프로세서가 어떤 이벤트나 외부 신호가 일어나기를 기다리는 상태

  • 5. 완료

    프로세스의 수행이 끝난상태

프로세스 상태 변환

  • 준비 -> 실행(디스패치)
    • 준비상태의 프로세스는 Dispatcher에 의해 프로세스가 부여되면 실행상태가 된다.
  • 실행 -> 준비(time run out)
    • 어떤 프로세스가 프로세서를 계속 독점하는 방지하기 위해 운영체제는 인터럽트 클록(time slice)을 두어서 지정된 시간 동안만 프로세스가 프로세서를 점유하도록 한다. =문맥교환
  • 실행 -> 대기(block)
    • 실행상태의 프로세스가 지정된 시간 이전에 입출력 연산 등을 필요로 할 경우 그 프로세스는 스스로 프로세서를 양도한다.
  • 대기 -> 준비(wake up)
    • 입출력 작업이 끝났을 때 대기상태의 프로세스는 준비상태로 변환

문맥교환

Context Switching이라 하며 프로세스를 다른 프로세스로 전환하기 위해
이전의 프로세스 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터들을 적재하는 과정

  • 프로세스가 Dispatch, Block, run time error 중 일 경우 발생한다.
  • 문맥교환은 모두 과부하가 발생한다.
  • OS에서 문맥교환때문에 가능한 효율적 구현을 위해 thread를 사용한다.

댓글 쓰기