본문 바로가기

컴퓨터/OS

[OS] Process에 관하여 (추가)

반응형

* Process란?

일반적으로 사용하는 프로그램 (Kakao talk, Excel)들을 디스크에서 메인 메모리로 적재(보통 실행 파일을 더블클릭하는 행위)하여 운영체제의 관리를 받는 상태 -> 실행 중인 프로그램

 

- 프로그램 -> 어떤 문제를 처리하기 위해 실행순서나 처리방법등 을 모아 놓은 명령어 모음

- 적재 -> 운영체제(로더)가 프로그램을 보조 기억장치(디스크)에서 주 기억장치(메모리)로 할당하는 행위

 

* Process 상태

출처 - https://itwiki.kr/w/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%83%81%ED%83%9C

생성 (New) - 프로세스가 생성되고 있는 상태, PCB를 생성 (주 메모리로 적재하고있는? 상태)

준비 (Ready) - 프로세스 생성을 마치고 실행에 필요한 모든 자원을 할당 받은상태(메모리 등? CPU 자원은 제외)

                         CPU 자원을 받으면 실행 가능

실행 (Run) - 대기 중 인 프로세스가 CPU를 할당 받아서 실행되는 상태 (할당 받는 행위를 Dispatching 이라고함)

                     실행 중 인 프로세스가 CPU 할당 시간 내에 끝내지 못하고 운영체제에 의해 CPU 자원을 뺏기고 (독점방지)

                     다시 준비 상태로 돌아감 (Context Switching이 일어난다)

                     운영체제의 스케줄러에 의해 실행 순서가 정해지는데 여러 스케줄링 알고리즘 존재

대기 (Wait) - 프로세스가 운영체제에 Blocking IO를 요청(디스크, 네트워크, 콘솔 입출력 등)을 하고 응답을 기다린다.

                     이때, 프로세스는 대기 상태가 되고, 해당 프로세스 응답이 올때까지 실행이 되지 않음.

                     응답이 오면 다시 준비 상태로 돌아가고 실행을 기다린다.

종료 (Exit) - 실행 중인 프로세스가 정상적으로 종료되고, CPU를 반환한다.

 

* PCB (Process Control Block)

프로세스 생성 시 해당 프로세스의 정보(ID, 상태 등)를 저장하기 위한 데이터 구조

출처 - https://www.scaler.com/topics/operating-system/process-control-block-in-os/

Process ID -> 프로세스 고유 식별자

Process State -> 프로세스 상태

Accounting information -> 프로세스 처리 시간에 대한 정보

Program counters -> 현재 실행 중인 명령어의 위치?

CPU registers -> CPU 레지스터 데이터

PCB pointers -> 부모/자식 프로세스 포인터, 자원에 대한 포인터 등

List of open files -> 프로세스를 위해 열려있는 파일 목록

Process I/O status Information -> 프로세스 IO 정보

 

* Process 메모리 영역

출처 : https://onecoin-life.com/m/30

코드 영역 (.text) - 기계어로 번역된 코드가 저장되어 있다. 읽기 전용이라 변조 되면 세그먼테이션 오류가 발생

 

데이터 영역(.data, .bss) - 전역 변수, 정적 변수가 저장되어 있는 공간 전역, 정적 변수는 변경 될 수 있으므로 읽기/쓰기 가능

 

힙 영역 - 런타임 환경에서 동적으로 할당되는 데이터를 저장

자바에선 인스턴스화 (= new ArrayList<>())를 하고 객체를 저장 하는 공간 - 프로그래머의 공간?

 

스택 영역 - 프로세스가 메모리 공간을 관리하기 위한 자료구조 Stack(LIFO, 후입선출)

함수 호출 시 하나의 공간이 생기며 지역변수, 매개변수,  값, 함수를 종료하고 돌아올 메모리 주소 등

 

반응형