프로그램(Program), 프로세스(Process)
프로그램 (Program)
- 컴퓨터가 수행할 명령어들의 집합으로, 특정 작업을 수행하도록 설계된 컴퓨터 소프트웨어
- 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리
프로세스 (Process)
: 프로그램이 메모리에 적재되고실행되면프로세스가 됨.- 포그라운드 프로세스 (foreground process)
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스 (background process)
- 사용자가 볼 수 없는 공간에서 실행되는 프로세스
사용자와 직접 상호작용이 가능한 백그라운드 프로세스
상호작용 하지 않고 자기일만 하는 백그라운드 프로세스는 데몬, 서비스라고 함
프로세스 제어 블록 (PCB)
- 프로세스와 관련된 정보를 저장하는 자료구조
- 프로세스 생성 시 커널 영역에 생성, 종류 시 폐기
- 상품 태그라고 생각하셈
PCB가 왜 필요?
- 모든 프로세스는 실행되기 위해 CPU가 필요
- CPU는 한정적이기 때문에 관리가 필요
- 자신의 차례에 정해진 시간만큼 CPU 사용
- 타이머 인터럽트가 발생하면 차례 양보
- 이를 관리하기 위해 PCB 사용
PCB에 담기는 대표적인 정보 (운영체제마다 차이가 있음)
- 프로세스 ID (=PID)
특정 프로세스를 식별하기 위해 부여하는고유한 번호- 레지스터 값
- 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원한다
(전에 실행했던 작업을 이어서 하려고)- 프로그램 카운터, 스택 포인터 ...
- 프로세스 상태
- CPU 스케줄링 정보
- 메모리 정보
프로세스가 어느 주소에 저장되어 있는지에 대한 정보- 사용한 파일과 입출력장치 정보
할당된 입출력장치, 사용 중인(열린) 파일 정보
문맥 교환 (context switch)
과정
1. 기존에 실행된던 프로세스 A의중간 정보를 백업
2. 다음으로 실행할 프로세스 B의문맥을 복구중간 정보
- 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
- 문맥 (context)
- PCB에 기록된 정보들을 문맥이라고 생각해도 됨
프로세스의 메모리 영역
- 코드 영역 (=텍스트 영역)
- 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
- 명령어를 저장하기 때문에 read-only
- 데이터 영역
- 프로그램이 실행되는 동안 유지할 데이터 저장
- 전역 변수
- 힙 영역
- 프로그래머가 직접 할당할 수 있는 저장공간
- 동적할당
- 메모리 공간 할당했다면 반환도 해야 됨. (Garbage Collection)
그렇지 않으면 Memory Leak 발생- 스택 영역
- 데이터가 일시적으로 저장되는 공간
- 매개변수, 지역변수
정적 할당 영역
코드 영역,데이터 영역동적 할당 영역
힙 영역,스택 영역
<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.04.07)
책과 강의를 통해 학습한 내용을 요약 정리했습니다.