[OS] 프로세스

김형주·2021년 9월 3일
0

Backend Study

목록 보기
12/19

프로세스

  • 현대 운영체제의 기본 요구조건은 프로세스 관리
  • 운영체제는 프로세스에게 자원을 할당하고(인터리빙, 세마포어), 프로세스들이 정보를 공유하고 교환, 각 프로세스의 리소스를 다른 프로세스로부터 보호하고, 프로세스들간에 동기화(세마포어) 시킨다.
    • 이러한 요구조건을 만족시키기 위해, 운영체제는 각 프로세스에 대해 그 프로세스의 상태리소스 소유권을 표시하고, 프로세스 제어를 가능케하는 자료구조(PCB : Process Control Block, 프로세스 제어 블록)를 유지해야 한다.
  • 인터리빙(Interleaving) vs. 동시 수행(execute simultaneously)
    • 병행성
    • 단일 처리기상에서 다중 프로그래밍을 지원하는 경우, 여러 프로세스의 수행은 시간적으로 번갈아 수행, 즉 인터리빙(Interleaving)이 될 수 있다.
    • 다중 처리기상에서는 프로세스 수행이 인터리빙될 뿐 아니라, 여러 프로세스가 동시에 수행될 수 있다.
  • 쓰레드 개념의 도입으로 인해 프로세스의 관리가 더욱 어려워졌다.
    • 다중 쓰레드 시스템에서 프로세스는 리소스 소유권에 대한 속성(attribute)를 보유한 반면, 여러 병행수행 스트림(execution stream)의 속성은 한 프로세스 내에서 수행되는 쓰레드의 특성(property)이다.

프로세스 배경지식

컴퓨터 플랫폼은 하드웨어 자원들의 집합으로 구성되어있다. 컴퓨터 프로그램은 어떤 업무를 수행하기 위해 개발된 것인데, 주어진 하드웨어 플래폼 상에서 직접 응용을 작성하는 것은 비효율적이다. 공통 루틴 그리고 리소스 공유를 위해 소프트웨어가 필요해졌다. 그렇기 때문에 이러한 내부 리소스를 보호하는 기법을 필요로 한다. OS는 프로그램이 사용할 수 있는 편리하고, 풍부하고, 안전하고, 일관성있는 인터페이스를 제공한다. OS는 리소스에 대해 균일하고 추상화된 표현을 제공한다. 프로그램은 해당 리소스를 요청하고 접근 가능하다.

프로세스란?

프로세스는 멀티프로그래밍과 시분할 시스템의 메인 컨셉으로, 응용프로그램 실행 모델을 이야기한다. 실행중인 프로그램, 컴퓨터 상에서 실행중인 프로그램의 인스턴스, 처리기에 할당되어 수행될 수 있는 개체(entity), 명령들의 순차 수행, 현재 상태, 연계된 시스템 자원들의 집합 등에 의해 특징지어지는 활성화 단위(a unit of activity) 이 모든 것이 프로세스라고 부를 수 있다. 간단하게 실행중인 프로그램이라고 이해하는 것이 편할 것 같다.

프로세스의 필수 요소

1. 프로그램 코드

동일 프로그램을 수행하는 서로 다른 프로세스들이 공유할 수 있는 부분)

  • 그 코드와 연계된 데이터의 집합과 스택(User Stack, Kernel Stack)
  • 프로그램이 수행 중 특정 시점에, 프로세스는 여러가지 요소들에 의해 유일하게 식별되어야 한다.

2. PCB(Process Control Block)

  • 식별자(Process ID)
  • 상태(Process State)
  • 우선순위
  • 프로그램 카운터
  • CPU 카운터
  • 메모리 포인터
  • 문맥 데이터(Context data)
  • 입출력 상태 정보
  • accounting data (아이디 & 비밀번호)

PCB의 주요 역할

  • 수행하는 프로세스를 인터럽트한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 것
  • 다수의 프로세스를 지원하고 다중처리를 제공할 수 있게 해주는 주요 도구
    • Context Switching
      어떤 프로세스가 인터럽트될 때, 프로그램 카운터 및 처리기 레지스터들(하드웨어의 Context Data)의 현재 값이 해당 프로세스 제어블록(PCB)의 적절한 필드에 저장되고, 그 프로세스의 상태가 (이후 설명될) 블록 또는 준비 등과 같은 값으로 변경
      • OS는 다른 프로세스 선택해서 수행 상태로 만들고, 그 프로세스의 프로그램 카운터와 문맥 데이터를 처리기 레지스터로 적재해서 새로운 프로세스를 수행(CPU는 한번에 한개의 프로세스만 수행한다.)
      • 단일 처리기 컴퓨터에서는 임의 시점에 단 하나의 프로세스만이 수행된다.

프로세스 상태 (수행 / 비수행)

  • 프로그램을 실행하기 위해 그 프로그램에 대한 프로세스 또는 태스크가 생성된다.
  • 처리기 관점에서 볼 때, 처리기는 프로그램 카운터 레지스터(PC Register)값에 의해 결정된 순서에 따라 명령어들을 수행한다.
  • 프로그램 카운터는 시간이 흐름에 따라 다른 프로세스들을 표현하는 다른 프로그램 내의 코드를 가리킬 수 있다
  • 개별 프로그램의 관점에서 프로그램의 수행은 자신에 속한 일련의 명령어들을 수행한다.
  • 개별 프로세스 행위의 특성은 그 프로세스를 위해 수행되는 일련의 명령어 리스트로 표현한다.
  • 이러한 리스트를 프로세스의 trace라고 부른다.
  • 처리기 행위의 특징은 다양한 프로세스 트레이스이 어떻게 인터리빙되는지를 보임으로써 표현될 수 있다.

2상태 프로세스 모델

  • 상태 종류
    • 수행(Running, 실행)
    • 비수행(Not Running, 비실행)
   
profile
만물에 관심이 많은 잡학지식사전이자, 새로운 도전을 꿈꾸는 주니어 개발자 / 잡학지식에서 벗어나서 전문성을 가진 엔지니어로 거듭나자!

0개의 댓글