# 1. Process
프로세스란 무엇인가 ??
- 정의:
- 실행 중인 프로그램
- 컴퓨터에서 실행 중인 프로그램의 인스턴스(프로그램은 프로세스라고 할 수 없다 ..)
- 프로세서에 할당되고 실행될 수 있는 엔티티
- 활동의 단위로서 특징화됨:
- 일련의 명령어를 실행함
- 현재 상태를 가짐
- 관련된 시스템 명령어 집합을 가짐
- 프로세스를 생성하는 주체:
- 사람에 의해: 프로그램 실행
- 그래픽 사용자 인터페이스(GUI) 또는 명령 줄
- 프로세스에 의해:
- 운영 체제 프로세스
- 사용자 프로세스
- 사람에 의해: 프로그램 실행
-
3가지 구성 요소:
- 실행 가능한 프로그램 (코드 또는 텍스트)
- 프로그램에서 사용되는 데이터
- 프로그램의 실행 컨텍스트
- 스택 및 CPU 레지스터의 값
- 운영 체제가 프로세스를 관리하기 위해 필요한 정보
위 그림을 보면 메인 메모리(주 기억 장치)에 여러 프로세스 리스트들이 들어있다.
각 프로세스들의 컨텍스트를 읽어서 해당하는 프로세스의 내용을 실행하는데 이때 프로세서(CPU)가 프로세스를 실행하는 것이다.
다음 그림들을 살펴 보자 ..
디스패처(dispatcher)는 커널 함수로, 프로세서를 한 프로세스에서 다른 프로세스로 전환하는 역할을 한다. 이것은 멀티태스킹 환경에서 여러 프로세스가 동시에 실행되도록 하는 데 중요한 역할을 한다. 디스패처는 프로세스 전환을 관리하고 프로세스의 실행을 스케줄링하여 각 프로세스에 적절한 시간을 할당한다.

디스패처는 메인 메모리의 주소 100부터 담겨 있었다는 것을 기억하자.
프로세스 A가 5000부터 담겨 있었고 실행 중 5005에서 Time out 후 7번째 줄에서 100으로 바뀌었다. 디스패처가 개입된 것이다. 디스패처의 코드를 실행하고 주소 8000의 프로세스 B를 실행하도록 CPU를 할당했다.
이후 17번째 줄에서 I/O request(system call)로 인해서 다시 디스패처가 개입했다. 시스템 콜은 유저 컨텍스트이다.
디스패처 실행 후 주소 12000의 프로세스 C가 실행되는 것을 알 수 있다.
이렇게 각 프로세스에게 OS의 커널 함수인 디스패처가 프로세서(CPU)를 할당하고 프로세스는 실행된다. 중간중간 디스패처의 위치를 보면 그 역할을 알기 조금 더 쉬워질 것이다.
# 2. Two-State Precess Model
두 상태 프로세스 모델은 프로세스가 두 가지 상태 중 하나에 속할 수 있음을 나타낸다.
- Running (실행 중): 현재 프로세서에서 실행 중인 상태이다. 프로세스는 실행되고 있으며 CPU를 사용하여 작업을 수행한다.
- Not-running (비실행 중): 현재 프로세서에서 실행되지 않는 상태이다. 이 상태에는 여러 하위 상태가 있을 수 있다. 대기 중인 상태, 중단된 상태 등 다양한 상태가 있을 수 있으며, 이 상태에 있는 프로세스는 CPU를 사용할 수 없거나 실행 대기 상태이다.
이러한 간단한 모델을 사용하면 운영체제가 프로세스를 관리하고 상태 전이를 추적하기 쉽다. 하지만 실제 시스템에서는 보다 복잡한 다양한 상태가 있고 이를 사용한다.

# 3. Reasons for Process Creation
프로세스 생성의 이유는 여러 가지가 있다.
- 서비스 제공을 위해 OS에 의해 생성됨: 운영 체제는 사용자 프로그램이 기다리지 않고도 기능을 수행하기 위해 프로세스를 생성할 수 있다. 예를 들어, 프린팅을 제어하는 프로세스를 생성할 수 있다.
- 기존 프로세스에 의해 생성됨: 사용자 프로그램은 운영 체제에게 자식 프로세스를 생성하도록 요청할 수 있다. 또는 사용자가 터미널에 로그인하는 경우에도 프로세스가 생성될 수 있다.
- 사용자 명령에 의해 생성됨: 프로세스는 사용자가 대화형 모드(프로그램을 직접 실행하는 방식) 또는 배치 모드(프로그램을 배치하여 실행하는 방식)로 실행하는 데에 의해 생성될 수 있다. 배치 모드에서는 운영 체제가 프로그램 실행을 지연시킬 수 있습니다. 간단하게 명령 프롬프트로 생성하거나, GUI상에서 생성하는 방식이 있다는 것을 의미한다.
# 4. Reasons for Process Termination
프로세스가 종료되는 이유는 여러 가지가 있습니다.
- 정상적인 완료: 프로세스는 실행이 완료되었음을 운영 체제에 알리기 위해 OS 시스템 호출을 실행한다.
- 보호 오류: 프로세스가 허용되지 않는 파일과 같은 리소스를 사용하려고 시도하거나, 읽기 전용 파일에 쓰려고 시도하는 등 부적절한 방식으로 사용하려고 할 때 발생한다. 또는 프로세스가 허용되지 않는 메모리 위치에 액세스하려고 시도하는 경우에도 발생할 수 있다.
- 부모 프로세스 요청: 부모 프로세스는 자식 프로세스를 종료하도록 운영 체제에 요청할 수 있다.
- 산술 오류, I/O 실패, 잘못된 명령어 등: 프로세스가 0으로 나누기와 같은 금지된 계산을 시도하거나, I/O 작업이 실패하는 등의 이유로 프로세스가 종료될 수 있다.
프로세스 종료는 이러한 이유 중 하나로 발생할 수 있으며, 이는 운영 체제의 관리 하에 있다.
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 상태도 (0) | 2024.07.29 |
---|---|
[운영체제] Operating System Architecture (0) | 2024.04.23 |
[운영체제] 분산 시스템과 Command-Interpreter System (0) | 2024.04.23 |
[운영체제] Multi-programming과 Timesharing (1) | 2024.04.23 |
[운영체제] 운영체제란 무엇인가 ? (0) | 2024.04.22 |