개발세발

08. 프로세스의 개요 본문

코딩공부/OS

08. 프로세스의 개요

뉼👩🏻‍💻 2022. 12. 30. 12:17
728x90
반응형
SMALL

 

📍 프로세스 

: 실행을 위해 메모리에 올라온 동적인 상태 ( 운영체제에서 프로세스는 하나의 작업 단위 )

- 프로그램으로 작성된 작업 절차를 실제로 실행에 옮긴다는 뜻으로, 누군가가 작성한 프로그램이 실행되면 프로세스가 된다 

↔️ 프로그램 : 저장장치에 저장되어 있는 정적인 상태 

- 어던 데이터를 사용하여 어떤 작업을 할지 그 절차를 적어 놓은 것 

 

 

📍 태스크 task

: 컴퓨터 시스템의 작업 단위 

 

📍 프로세스 제어 블록 Process Control Block, PCB 

: 하나의 프로세스를 실핼ㅇ하기 위한 여러 정보를 보관하는 데이터 구조 

- 운영체제가 해당 프로세스를 위해 관리하는 데이터 구조이기 때문에 운영체제 영역에서 만들어짐 

- 프로세스가 종료되면 프로세스가 메모리에서 삭제되고, 프로세스 제어 블록도 폐기됨 

 

* PCB에 있는 대표적인 정보 

 

◼️ 프로세스 구분자 Process IDentification, PID 

: 프로세스를 구분하기 위한 구분자 

 

◼️  메모리 관련 정보 

: 프로세스의 메모리 위치 정보  (CPU는 실행하려는 프로세스가 메모리의 어디에 저장되어있는지 알아야 작업을 할 수 있음)

 

◼️ 각종 중간값 

: 프로세스가 사용했던 중간값 

- 시분할 시스템에서는 여러 프로세스가 번갈아가며 실행되기 때문에 각 프로세스는 일정 시간 작업을 한 후 다른 프로세스에 CPU를 넘겨줌

 

 

 

📍프로그램과 프로세스 

- 프로그램 ➡️ 프로세스 : 운영체제로부터 프로세스 제어 블록을 얻음 

- 프로세스가 종료 : 해당 프로세스 제어 블록이 폐기 

* 프로세스 = 프로그램 + 프로세스 제어블록

* 프로그램 = 프로세스 - 프로세스 제어블록 

 

* 부트스트랩

운영체제 프로세스를 메모리에 올리는 프로그램인 부트스트랩이 많은 운영체제 관련 프로세스를 실행한 후 일반 프로세스가 실행됨 

➡️ 컴퓨터에는 일반 사용자의 사용자 프로세스 user process와 운영체제의 커널 프로세스 kernel process가 섞여서 실행됨 

 

 

 

📍프로세스 상태 process status

*  일괄 작업 시스템의 프로세스 상태는 생성 create, 실행 run, 완료 terminate

 

 

📍 활성상태 active status

: 생성, 준비, 실행, 대기, 완료 상태 

 

 

◼️생성상태 create status

: 프로세스가 메모리에 올라와 프로세스 제어 블록을 할당받아 실행 준비를 완료한 상태 

- 프로세스를 관리하는 데 필요한 프로세스 제어 블록이 생성됨 

- 생성된 프로세스는 바로 실행되는 것이 아니라 준비 상태에서 자기 순서를 기다리며 프로세스 제어 블록도 같이 준비 상태로 옮겨짐 

 

 

◼️ 준비 상태 ready status 

: 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태 

- 프로세스 제어 블록은 준비 큐 ready queue에서 기다리며 CPU 스케쥴러에 의해 관리됨 

-CPU 스케쥴러는 준비 상태에서 큐를 몇 개 운영할지, 큐에 있는 어떤 프로세스의 프로세스 제어 블록을 실행 상태로 보낼지를 결정함 

* dispatch(PID) : CPU 스케줄러가 어떤 프로세스 제어 블록을 선택하는 작업을 dispatch명령으로 처리 

- PID : 프로세스 구분자 

- CPU 스케쥴러가 dispatch(PID)를 실행하면 해당 프로세스가 준비 상태에서 실행 상태로 바뀌어 작업이 이루어짐 

 

 

◼️ 실행 상태 running status

: 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태 (execute status) 

- 실행 상태에 들어간 프로세스는 일정 시간 동안 CPU를 사용할 권리를 가짐

- 주어진 시간동안 작업을 끝내지 못했다면 준비 상태로 돌아온 후 다음 차례를 기다림 

➡️ 자신의 작업을 끝낼 때까지 준비/실행 상태를 왔다 갔다 함 

 

- 시간을 다 사용하면 timeout(PID)가 실행됨 

* timeout(PID) : 프로세스 제어 블록을 실행상태에서 준비 상태로 옮김

 

- 실행 상태 동안 작업이 완료되면 exit(PID)가 실행되어 프로세스가 정상 종료됨 

 

- block(PID) 

: 실행 상태에 있는 프로세스가 입출력을 요청하면 CPU는 입출력 관리자에게 입출력을 요청하고 block(PID)를 실행함 

- block(PID)는 입출력이 완료될 때까지 작업을 진행할 수 없어서 해당 프로세스를 대기 상태로 옮김 

- CPU 스케쥴러는 새로운 프로세스는 실행 상태로 가져옴(디스패치)

 

 

* 준비 상태에 있는 프로세스 중 실행 상태에 들어가는 프로세스 = CPU의 개수

 

◼️ (new) 대기 상태 blocking status [wait status] 

: 입출력을 요구한 프로세스가 입출력이 완료될 때까지 기다리는 상태 

: 작업의 효율성을 높이기 위해 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기 상태로 옮기는 것 

- 대기 상태의 프로세스는 입출력장치별로 마련된 큐에서 기다림 

 

* wakeup(PID)

: 입출력이 완료되면 인터럽트가 발생하고, 대기 상태에 있는 여러 프로세스 중 해당 인터럽트로 깨어날 프로세스를 찾는 것 

- 찾은 프로세스의 프로세스 제어 블록이 준비 상태로 이동하게 됨 

 -- 인터럽트 : 입출력 또는 어떤 이벤트 발생에 의해 생겨남 

 

 

 

◼️ 완료 상태 terminate status 

: 프로세스 제어 블록이 사라진 상태

- 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료 상태로 진입. 

- 완료 상태에서는 코드와 사용했던 데이터를 메모리에서 삭제하고 프로세스 제어 블록을 폐기함 

- exit() : 정상적인 종료

- abort : 비정상적으로 강제 종료

            - 디버깅을 위해 강제 종료 직전의 메모리 상태를 저장장치로 옮김 (코어 덤프 core dump)

            :  코어 덤프는 종료 직전의 메모리 상태를 확인함으로써 오류를 수정할 수 있게 해줌 

 

 

📍 휴식 상태 pause status

: 프로세스가 작업을 일시적으로 쉬고 있는 상태 

- 사용하던 데이터가 메모리에 그대로 있고, 프로세스 제어 블록도 유지되므로 프로세스는 멈춘 지점에서부터 재시작resume 할 수 있다 

 

* fg : foreground job 

* bg : background job 

- stop 상태의 작업을 전면(fg) 혹은 후면 (bg)에서 다시 시작하라는 명령어 

- 후면에서 작동하는 명령어는 끝에 &가 붙음 

 

 

📍 보류상태 suspend status

 : 프로세스가 메모리에서 잠시 쫓겨난 상태. 

- 휴식상태와 다르며, 보류상태의 반댓말이 활성상태이다. 

 

* 보류 상태인 경우 

- 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때 

- 프로그램에 오류가 있어서 실행을 미루어야 할 때

- 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때

- 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 큰 문제가 없을 때 

- 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때 

 

 

* 스왑 영역 swap area 

: 보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑여역에 보관됨 

- 메모리에서 쫓겨난 데이터가 임시로 보관되는 곳 

보류상태 휴식상태
스왑영역에 있는 상태 프로세스가 메모리에 있으나 멈춘 상태 
보류 대기 상태
block suspend status
➡️ 입출력 완료시 보류 준비 상태로 
보류 준비 상태 
ready suspend status
 
각 상태에서 재시작하면 원래의 활성 상태로 들어감   

 

 

 

 

 

 

 

728x90
반응형

'코딩공부 > OS' 카테고리의 다른 글

10. 프로세스의 연산  (0) 2023.01.06
09. 프로세스 제어 블록과 문맥 교환  (0) 2023.01.02
07. 병렬 처리  (0) 2022.12.29
06. 컴퓨터 성능 향상 기술  (0) 2022.12.28
05. CPU와 메모리  (0) 2022.12.27