Process: 두 판 사이의 차이

youngwiki
편집 요약 없음
편집 요약 없음
20번째 줄: 20번째 줄:
# 실행에 대한 다음 프로세스를 스케쥴링함
# 실행에 대한 다음 프로세스를 스케쥴링함
# 저장된 register를 로드하고 address space를 전환함 (context switch)
# 저장된 register를 로드하고 address space를 전환함 (context switch)
===The (Modern) reality===
[[파일:Multiprocess.png|테두리|프레임없음|300x300픽셀]]
* 하나의 칩에 여러 CPU가 존재함
* CPU들은 메인 Memory와 몇몇 cashes들을 공유함
* 각각의 CPU들은 커널에 의해서 스케쥴링 되어 병렬적으로 각각의 프로세스들을 실행함
==Logical Control Flow==
프로세스는 여러 프로그램이 동시에 실행되고 있음에도 각 프로그램이 CPU를 독점적으로 사용하고 있는 것처럼 보이도록 한다.
프로그램의 진행을 디버거를 이용하여 추적할 경우에 program counter를 관찰할 수 있는데 이러한 PC의 흐름을 logical control flow(Logical flow)라고 한다. 이때 Logical flow는 예외 처리기, 프로세스, 쓰레드 등의 여러가지 형태로 존재한다.
오른쪽 그림에서처럼 세개의 프로세스가 실행될 경우 세개의 Logical flow로 진행되며, 이는 프로세스들이 번갈아 가면서 CPU를 이용한다는 것을 의미한다. 이때 각 프로세스들은 자신의 흐름의 일부를 실행한 후에 타 프로세스의 차례가 되면 해당 실행을 중지한다.


==각주==
==각주==


[[분류:컴퓨터 시스템]]
[[분류:컴퓨터 시스템]]

2025년 3월 11일 (화) 17:57 판

개요

Process(프로세스)란 실행하고 있는 프로그램의 객체를 의미한다. 프로세스를 실행하는 프로세서(CPU)나 프로세스가 실행하는 대상인 프로그램과는 구별되는 개념이다. 프로그램을 실행할 경우 프로세스에는 메모리와 CPU를 할당하며 이를 통해 프로세스가 탄생한다. 우리의 관점에서는 프로세스를 실행하면 두가지 마법같은 일이 일어난다.

  • 해당 프로세스가 모든 메모리를 독점적으로 사용하는 것처럼 보임
  • 해당 프로세스가 중단되는 일 없이 하나씩 연속적으로 명령어를 실행하는 것 처럼 보임

컴퓨터의 메모리는 다음과 같이 구성된다.

Multiprocessing

시스템의 각 프로그램은 어떤 프로세스 내의 Context(맥락)[1][2] 내에서 실행된다. 사용자가 프로그램을 실행할 때마다 새로운 프로세스를 생성하고 해당 프로세스의 Context에서 실행 파일 객체를 생성한다. 이때 각각의 프로세스는 모든 메모리를 독점적으로 사용하는 것 처럼 보이며, 해당 프로세스가 중단되는 일 없이 하나씩 연속적으로 명령어를 실행하는 것 처럼 보인다. 이는 프로세스 개념에 의해서 다음과 같이 구현된다.

  • An independent logical control flow: 각 프로그램이 CPU를 독점적으로 사용하는 것처럼 보이게 함
    • context switching이라는 커널의 메커니즘에 의해서 구현됨
  • A private address space: 각 프로그램이 메모리를 독점적으로 사용하는 것처럼 보이게 함
    • virtual memory라는 커널의 메커니즘에 의해서 구현됨

The (Traditional) Reality

하나의 프로세서(CPU)가 concurrently하게 다수의 프로세스를 처리한다.

  1. 현재의 register들을 메모리에 저장함
  2. 실행에 대한 다음 프로세스를 스케쥴링함
  3. 저장된 register를 로드하고 address space를 전환함 (context switch)

The (Modern) reality

  • 하나의 칩에 여러 CPU가 존재함
  • CPU들은 메인 Memory와 몇몇 cashes들을 공유함
  • 각각의 CPU들은 커널에 의해서 스케쥴링 되어 병렬적으로 각각의 프로세스들을 실행함

Logical Control Flow

프로세스는 여러 프로그램이 동시에 실행되고 있음에도 각 프로그램이 CPU를 독점적으로 사용하고 있는 것처럼 보이도록 한다. 프로그램의 진행을 디버거를 이용하여 추적할 경우에 program counter를 관찰할 수 있는데 이러한 PC의 흐름을 logical control flow(Logical flow)라고 한다. 이때 Logical flow는 예외 처리기, 프로세스, 쓰레드 등의 여러가지 형태로 존재한다. 오른쪽 그림에서처럼 세개의 프로세스가 실행될 경우 세개의 Logical flow로 진행되며, 이는 프로세스들이 번갈아 가면서 CPU를 이용한다는 것을 의미한다. 이때 각 프로세스들은 자신의 흐름의 일부를 실행한 후에 타 프로세스의 차례가 되면 해당 실행을 중지한다.

각주

  1. 메모리에 저장된 프로그램의 코드와 데이터와 스택, 범용 레지스터의 내용, 프로그램 카운터, 환경 변수, 열린 파일 디스크립터 집합 등
  2. 프로그램 카운터란 현재 실행중인 명령어의 메모리 주소를 저장하는 레지스터이다. 환경 변수란 OS가 프로세스에 전달하는 문자열 기반의 값이며, OS 및 사용자의 설정 정보를 제공한다. 열린 파일 디스크립터 집합이란 현재 프로세스에서 열어둔 파일을 관리하는 정수 값 목록을 의미한다.