■ 프로세스 (Process)
- 컴퓨터 내에서 CPU에 의해 실행 중인 프로그램을 일컫는 용어
- 여러 분야에서 과정 또는 처리라는 뜻으로 사용되는 용어로, 컴퓨터 분야에서는 '실행 중인 프로그램' 이라는 뜻으로 쓰임
- 프로그램 또는 그 일부를 뜻하기도 하며, 데이터의 입력이나 출력 등을 조작하거나 처리하는 것을 말하기도 한다
- 부모프로세스(Parent Process)라는 상위계층과 자식프로세스(Child Process)라는 하위계층이 존재한다
- 부모프로세스는 프로그램이나 명령어에 의해 시작되며, 자식프로세스는 부모프로세스에 의해 만들어지는 것을 말한다
- 하나의 부모프로세스는 여러 개의 자식프로세스를 관리하는데, 여러 개의 자식프로세스가 하나의 CPU에서 동시에 처리되는 것처럼 보이는 것을 멀티태스킹(Multitasking)이라고 한다
- 실행 중인 프로그램 / 프로시저가 활동 중인 것 / 비동기적인 행위를 일으키는 주체 / PCB의 존재로서 명시되는 것
★ 프로세스 특징
- 프로세스는 프로세스 제어블록(PCB)으로 나타내며 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 저장소를 의미
- 하나의 프로세스는 생성, 실행, 준비, 대기, 보류, 교착, 종료의 상태 변화를 거치게 된다
- 프로세스란 스스로 자원을 요청하고 이를 할당받아 사용하는 능동적인 개체를 의미
- 운영체제가 해야 하는 논리적 작업이 프로세스라면, 스레드는 그 작업을 성취하는 데 필요한 많은 하위 작업 중의 하나이다
- 하나의 프로세스는 하나의 스레드로 구성될 수 있고, 여러 개의 스레드로 구성될 수 있다. 따라서 스레드는 프로세스보다 작은 단위이며, 자원의 할당에는 관계하지 않고 프로세서 스케줄링의 단위로써 사용하게 된다
★ 프로세스 상태
① Running State(실행상태) : CPU에 의해 실행되고 있는 상태(State)를 의미한다. 즉 CPU가 Process를 수행하고 있는 상태이다
② Ready State(준비상태) : 말 그대로 Ready, 즉 준비하고 있는 상태이다. 'Ready State'에 있는 Process들은 아래 그림에서 볼 수 있듯 CPU allocation, 즉 CPU 할당을 받으면 바로 Running State로 들어가 실행을 할 수 있는 상태이다 (CPU를 사용하지 않고 있다)
③ Block State(대기상태) : 'Block State'는 Event를 기다리고 있는 State이다. 간단한 예를 들어 C언어로 프로그램을 짤 때 scanf 함수를 만나면 사용자가 키보드를 통해 값을 입력하고 엔터를 치기 전까지 그 프로그램은 아무런 일도 하지 않고 사용자의 응답을 기다리게 된다. 이러한 이벤트적인 행동을 기다리는 상태를 'Block State'라고 한다
④ Pending State(보류상태) : 작업이 일시중지(suspend)되거나 디스크에 수록된 상태이다
⑤ Terminated State(완료상태) : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태이다. 종료된 프로세스는 시스템에서 제거되고 그 프로세스와 관련된 PCB도 삭제된다
★ 프로세스 상태 전이
① 디스패치 (Dispatch) : 준비상태(Ready State)→실행상태(Running State)
- 준비상태의 프로세스가 CPU를 할당받아 실행상태로 전환된다
② 할당시간 초과 (Timer Run Out) : 실행상태(Running State)→준비상태(Ready State)
- CPU의 지정된 할당시간을 모두 사용한 프로세스는 다른 프로세스를 위해 다시 준비상태로 되돌아간다
③ 대기 (Block) : 실행상태(Running State)→대기상태(Block State)
- 실행 중인 프로세스가 입ㆍ출력 명령을 만나면 인터럽트가 발생해 입ㆍ출력 전용 프로세서에게 CPU를 양도하고 자신은 대기상태로 전환된다
④ 깨움 (Wake Up) : 대기상태(Block State)→준비상태(Ready State)
- 대기상태에 있던 프로세스가 기다리던 이벤트가 완료되어 다시 나머지 부분의 실행을 위해 준비상태로 전환된다
■ 프로세스 제어 블록 (PCB : Process Control Block)
- 모든 프로세스는 PCB(Process Control Block)을 가진다
- 프로세스 제어 블록(PCB : Process Control Block)은 프로세스를 관리할 때 필요한 정보를 포함하는 운영체제 커널의 자료 구조이다. 작업 제어 블록(TCB : Task Control Block) 또는 작업구조라고도 한다
- PCB는 운영체제가 프로세스를 표현한 것이다
- PCB는 운영체제가 프로세스를 관리하는 데 필요한 모든 정보를 유지하는 자료구조 테이블이다
- PCB는 프로세스 디스크립터(Process Descriptor)라 하며 프로세스가 생성될 때 만들어지며, 모든 프로세스는 각각의 고유한 프로세스 디스크립터를 가진다
- 운영체제가 CPU를 다른 프로세스에 넘겨주고자 할 때 프로세스에 관한 모든 정보를 PCB에 저장시키고 다시 실행하고자 할 때에는 PCB에 보관된 정보를 재사용한다
★ PCB 포함정보
- 운영체제에 따라 PCB에 포함되는 항목이 다를 수 있지만, 일반적으로는 다음과 같은 정보가 포함되어 있다
필드 | 설명 |
프로세스 식별자 (Process ID) |
- 프로세스 번호이다 (PID) - Alt+Ctrl+Del → 작업관리자 → 세부정보에서 PID를 확인할 수 있으며, 프로그램을 종료하고 다시 실행하면 PID가 바뀌어 있는 것을 확인할 수 있다 |
포인터 | 다음 실행될 프로세스의 포인터 |
프로세스 상태 (Process State) |
생성(Create), 준비(Ready), 실행(Running), 대기(Waiting), 완료(Terminated)상태가 있다 |
프로그램 카운터 (Program Counter) |
이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다 |
CPU 레지스터 일반 레지스터 |
레지스터 누산기(Accumulator), 인덱스 레지스터, 스택 레지스터, 범용 레지스터, 상태 코드 정보 등이 포함된다. 컴퓨터의 구조에 따라 그 수와 타입이 다양하다 |
CPU 스케줄링 정보 | 우선순위, 최종 실행시각, CPU 점유시간 등이 포함된다 |
메모리 관리 정보 | 해당 프로세스의 주소 공간 등이 포함된다 |
프로세스 회계 (Accounting) 정보 |
CPU의 사용시간과 경과된 시간, 시간제한, 계정 번호, Job 또는 프로세스 번호 등이 포함된다 |
입ㆍ출력 상태 정보 | 프로세스에 할당된 입ㆍ출력 장치 목록, 열린 파일 목록 등이 포함된다 |
- PCB 위치 : 보호된 메모리 영역(커널 부분)에 위치한다
'정보보호론 > 시스템 보안' 카테고리의 다른 글
메모리(기억장치) 관리 (0) | 2020.10.14 |
---|---|
프로세스 동기화 (0) | 2020.10.14 |
CPU 스케줄링 (CPU Scheduling) (0) | 2020.10.13 |
운영체제의 기술 발전 흐름과 입ㆍ출력 방식 (0) | 2020.09.16 |
운영체제(Operating System) 의 정의와 구조 (0) | 2020.09.16 |