재학습/OS

[운영체제] 프로세스란?

재이든 2022. 11. 28. 20:14
반응형

프로세스

-실행중인 프로그램

 

Ps -ef를 통해 확인했을 때

사용자가 볼 수 있는 공간에서 실행되는 프로세스

-포워드 프로세스

사용자가 보지못하는 공간에서 실행되는 프로세스

-백그라운드 프로세스

 

사용자와 소통하지는 않지만 묵묵히 자기일을하는 백그라운드 프로세스

-데몬 프로세스

 

프로세스가 생성된다.

-커널영역에는 PCB

-사용자영역에는 코드,데이터,힙,스택

 

프로세스 제어 블록

-프로세스는 CPU자원을 필요로한다.

-그렇지만 모든 프로세스에게 CPU가 할당되지않는다.

-순사대로 돌아가며 할당받는다.

-자기차례가 되면 타이머 인터럽트를 통해 다음차례를 기다린다.

-이 때, 다음차례에서 원활히 수행되기 위해 프로세스 관련 정보를 저장하는 자료구조를 프로세스제어블록(PCB)라고 한다.

 

 

-PCB는 커널영역에서 생성된다.

-프로세스 생성 시 만들어지고, 끝나면 폐기된다.

-PID, 레지스터값, 프로세스상태, CPU스케줄링정보, 메모리관리정보, ㅅ사용한파일과 입출력장치 정보 ..

-이것들을 문맥이라고 하고, CPU를 할당받는 프로세스가 교환되어 PCB에 저장되고 다음 프로세스의 PCB를 사용해 CPU할당을 받는 과정을 문맥교환이라고 함

 

반응형

 

프로세스 메모리 영역

-프로세스가 생성되면 커널에는 PCB, 사용자영역에는 코드,데이터,힙,스택 영역으로 나뉘어 저장된다.

 

-코드영역은 기계어롤 이루어진 명령어가 저장된다.

-데이터영역은 잠깐썼다없앨데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 존재 ( ex 전역변수 )

위 두 영역(코드, 데이터)는 크기가 변하지않는다. - 정적할당영역

반면 나머지 영역(힙, 스택)은 그 크기가 변한다 - 동적할당영역

 

-힙영역은 프로그래머가 직접할당할 수 있는 공간이다. 힙 영역에 메모리를 할당하여 사용한다면 반드시 반환해야하며, 이것이 안될 시 메모리누수가 발생된다.

 

-스택영역은 데이터를 일시적으로 저장하는 공간. 데이터영역과 다르게 일시적인 저장공간이다. (Ex 지역변수)

 

-그래서 힙영역은 메모리의 낮은 주소에서 높은주소로 할당

스택영역은 메모리의 높은 주소에서 낮은 주소로 할당된다

=> 메모리가 서로 겹칠일이 없게

반응형