프로그램과 프로세스
프로그램과 프로세스는 컴퓨터 시스템에서 자주 사용되는 용어이지만, 두 용어는 서로 다른 개념을 나타냅니다. 이 두 용어의 차이와 프로그램이 프로세스가 되기까지의 과정을 아래에서 설명하겠습니다.
프로그램(Program): 프로그램은 저장 장치에 저장되어 있는, 실행 가능한 코드의 정적인 집합입니다. 프로그램은 디스크와 같은 비휘발성 메모리에 저장되며, 사용자가 요청할 때까지 실행되지 않습니다. 프로그램은 소프트웨어 개발자에 의해 작성되고, 컴퓨터에서 실행될 수 있는 명령어들과 데이터를 포함합니다.
프로세스(Process): 프로세스는 실행 중인 프로그램의 인스턴스입니다. 프로세스는 운영체제에 의해 할당된 메모리 공간과 시스템 자원을 사용하며, 동적인 상태를 유지합니다. 프로세스는 프로그램 카운터, 스택, 데이터 섹션 등 실행에 필요한 다양한 정보를 포함하며, 운영체제가 관리합니다.
프로그램이 프로세스가 되기까지의 과정
프로그램이 프로세스가 되는 과정을 '프로그램의 로딩'이라고 할 수 있으며, 이는 다음과 같은 단계로 진행됩니다:
프로그램 실행 요청: 사용자가 프로그램을 실행시키기 위해, 예를 들어 명령어를 입력하거나 아이콘을 클릭하는 등의 행동을 취합니다.
프로그램의 로딩: 운영체제는 사용자의 요청을 받고, 프로그램의 코드와 데이터를 디스크로부터 메모리로 로드합니다. 이때, 프로그램의 실행에 필요한 주소 공간이 메모리에 생성됩니다.
자원 할당: 운영체제는 프로세스의 실행에 필요한 CPU 시간, 메모리 공간, I/O 장치 등의 자원을 할당합니다. 프로세스의 상태가 생성되며, 프로세스 제어 블록(Process Control Block, PCB)이 초기화됩니다.
실행 상태로 전환: 자원이 할당되고 초기화가 완료되면, 프로세스는 준비 상태(Ready 상태)로 전환되어 CPU에서 실행될 준비를 마칩니다. CPU 스케줄러에 의해 프로세스가 선택되면, 프로세스의 상태가 실행 상태(Running 상태)로 변경되고, 프로그램 카운터가 프로세스의 첫 번째 명령어를 가리키게 됩니다.
실행: 프로세스가 CPU를 할당받으면, 운영체제는 프로세스의 코드를 실행하기 시작합니다. 프로세스는 필요한 계산을 수행하고, 필요에 따라 추가적인 자원을 요청하며, 입출력 작업을 수행할 수 있습니다.
이 과정을 통해, 프로그램은 디스크 상의 정적인 코드에서 메모리 상의 동적인 실행 단위인 프로세스로 변환됩니다. 이 변환 과정은 운영체제의 핵심 기능 중 하나이며, 멀티태스킹과 시스템 자원의 효율적 관리를 가능하게 합니다.
프로세스 정보
프로그램이 실행되게 되면 프로세스가 되고, 프로세스가 되면 운영체제의 관리를 받게 됩니다. 운영체제는 프로세스를 관리하기 위해 프로세스에게 고유한 ID (Process ID, PID)를 부여하고, 그 외에 관리에 필요한 정보들을 각 프로세스 별로 PCB(Process Control Block)의 형태로 메모리에 유지, 관리하게 됩니다.
PCB(Process Control Block)는 운영 체제가 프로세스를 관리하기 위해 사용하는 자료 구조입니다. 프로세스의 상태, 메모리 관리 정보, 스케줄링 정보 등 프로세스를 실행하는 데 필요한 모든 정보가 PCB에 저장됩니다.
PCB에 일반적으로 저장되는 정보는 다음과 같습니다.
1. 프로세스 식별 정보:
- 프로세스 ID (PID): 프로세스를 고유하게 식별하는 번호
- 프로세스 이름: 프로세스를 식별하는 이름
2. 프로세스 상태 정보:
- 프로세스 상태 (실행, 대기, 종료 등)
- 프로그램 카운터 (PC): 다음에 실행할 명령어의 주소
- 레지스터 값: CPU 레지스터의 값
3. 메모리 관리 정보:
- 메모리 주소 공간: 프로세스가 사용할 수 있는 메모리 영역
- 가상 메모리 정보: 가상 메모리와 실제 메모리의 매핑 정보
4. 스케줄링 정보:
- 우선 순위: 프로세스의 실행 우선 순위
- CPU 사용 시간: 프로세스가 CPU를 사용한 시간
- 입출력 대기 정보: 프로세스가 입출력 작업을 완료할 때까지 대기해야 하는 정보
5. 기타 정보:
- 부모 프로세스 ID: 프로세스를 생성한 프로세스의 ID
- 자식 프로세스 ID: 프로세스가 생성한 프로세스의 ID
- 사용자 ID: 프로세스를 실행하는 사용자의 ID
- 파일 정보: 프로세스가 사용하는 파일 목록
- 보안 정보: 프로세스의 접근 권한 정보
PCB는 운영 체제가 프로세스를 관리하는 데 매우 중요한 역할을 합니다. PCB에 저장된 정보를 통해 운영 체제는 프로세스의 상태를 추적하고, 스케줄링을 수행하고, 메모리를 관리할 수 있습니다.
'운영체제' 카테고리의 다른 글
[OS] 프로세스 스케줄링 (0) | 2024.08.29 |
---|---|
[OS] 시스템 콜(System Call) (0) | 2024.08.24 |
[OS] 문맥 교환(Context Switch), PCB (0) | 2024.08.24 |
[OS] 프로세스 상태 전이 (0) | 2024.08.24 |