초코딩(chocoding)

[혼공컴운] 10-1 / 프로세스 개요 본문

[혼공컴운] 혼자 공부하는 컴퓨터 구조와 운영체제

[혼공컴운] 10-1 / 프로세스 개요

sweetychocoding 2023. 7. 31. 09:38
728x90

프로세스란?

프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억 장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간의 프로그램

 

포그라운드 프로세스

사용자가 보는 앞에서 실행되는 프로그램

 

백그라운드 프로세스

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

 

사용자와 직접 상호작용할 수 있느 백그라운드 프로세스

 

사용자와 상호작용하지 않고 그저 묵묵히 정해진 일만 수행하는 백그라운드 프로세스

- 데몬(daemon) : 유닉스 체계의 운영체제에서 부르는 말

- 서비스(service) : 윈도우 운영체제에서 부르는 말

 

프로세스 제어 블록(Process Control Block, PCB)이란?

프로세스와 관련된 정보를 저장하는 자료구조

 

운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분한다. 이를 위해 프로세스 제어 블록을 이용한다.

 

수많은 프로세스들 사이에서 PCB로 특정 프로세스를 식별하고 해당 프로세스를 처리하는 데 필요한 정보를 판단한다.

PCB는 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기된다.

 

PCB에는 레지스터의 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력 장치 목록 등을 저장한다.

 

프로세스 ID(Process ID, PID)란?

특정 프로세스를 식별하기 위해 부여하는 고유한 번호

 

같은 일을 수행하는 프로그램을 두 번 실행하면 PID가 다른 두 개의 프로세스가 생성된다.

 

 

 

문맥(context)이란?

A 프로그램을 실행하다가 B 프로그램을 실행할 시 지금까지의 중간 정보를 백업해야 한다. 그래야 다음 차례가 왔을 때 이전까지 실행했던 내용에 이어 다시 실행을 재개할 수 있다. 이러한 중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 문맥이라고 한다.

 

문맥교환(context switching)

기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것

 

 

프로세스의 메모리 영역

1. 코드영역

2. 데이터 영역

3. 힙 영역

4. 스택 영역

 

 

1. 코드영역 (code segment)

코드영역은 텍스트 영역이라고도 하며 기계어로 이루어진 명령어를 저장된다. 데이터가 아닌 CPU가 실행할 명령어가 담겨있기 때문에 쓰기가 금지되어 있으며, 읽기 전용 공간이다.

 

2. 데이터 영역 (data segment)

프로그램을 실행할 동안 사용할 데이터가 저장되는 공간으로 전역변수가 이에 해당된다.

 

3. 힙 영역 (heap segment)

프로그래머가 직접 할당 가능한 공간으로 언젠가는 해당 공간을 반환해야만 한다. 반환하지 않을 시에 메모리가 낭비되어 메모리 누수가 발생한다.

 

4. 스택 영역 (stack segment)

데이터가 일시적으로 저장되는 공간으로 매개변수, 지역변수가 이에 해당된다.

 

 

크기가 고정되어 있는 코드영역과 데이터 영역을 정적 할당 영역이라고 하며,

크기가 변하는 힙 영역과 스택 영역을 동적 할당 영역이라고 한다.

728x90