정보보호론/시스템 보안

프로세스 관리

retro_blue 2020. 10. 13. 01:30
반응형

■ 프로세스 (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 위치 : 보호된 메모리 영역(커널 부분)에 위치한다

반응형