Chapter 03. 프로세스와 스레드


01 프로세스의 개념과 상태 변환

1 프로세스의 개념

가장 일반적인 프로세스 정의는 '실행 중인 프로그램 '

프로그램이 실행 중이라는 의미는? → 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 되었다는 것인데, 이는 자신만의 메모리 영역(주소 공간)이 있음을 의미

                  그림1 프로그램과 프로세스 : 프로그램이 메모리로 적재되면 프로세스가 됨

프로그램 : 컴파일한 코드와 초기화 전역변수, 문자열과 문자열 상수 등 정적 데이터를 포함하는 정적인 개체

프로세스 : 아래 그림과 같이 메모리 구조를 이루고, PC(프로그램 카운터)나 레지스터처럼 현재 어떤 자원을 사용하는지 관련 정보가 들어 있는 동적인 개체

프로세스 메모리 구조

스택

  • 스택은 데이터를 일시적으로 저장하는 영역
  • 지역변수에 사용하고, 변수가 범위 밖으로 이동하면 공간 해제
  • 호출한 함수의 반환 주소, 반환 값, 매개변수 등에 사용

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

데이터

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

코드

  • 실행 명령을 포함하는 메모리

프로세스의 종류

시스템(커널) 프로세스 : 모든 시스템 메모리와 프로세서의 명령에 엑세스 할 수 있는 프로세스이다.

프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(운영체제) 영역을 침범하지 못하게 감시하고, 사용자 프로세스를 생성하는 기능을 한다.

사용자 프로세스 : 사용자 코드를 수행하는 프로세스이다.

2 프로세스의 상태 변환와 상태 정보

2.1 프로세스의 상태 변화

실행상태와 비실행 상태로 구분

  1. 운영체제가 프로세스를 생성하면 비실행 상태로 초기화해서 실행을 기다린다.
  2. 실행중인 프로세스를 종료하거나 인터럽트가 발생하면 비실행 프로세스 중에서 선택한 프로세스를 실행 상태로 바꾼다(디스패치)
  3. 이때 인터럽트된 프로세스는 비실행 상태가 된다.
  4. 실행 중인 프로세스는 새로운 자원을 할당받으려고 프로세스를 기다리는 비실행 상태로 바뀌기도 한다.

+ Recent posts