728x90
프로세스 직업 확인하기
- 포그라운드 프로세스
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스
- 사용자가 볼 수 없는 공간에서 실행되는 프로세스
프로세스 제어 블록(PCB)
- 모든 프로세스는 실행을 위해 CPU가 필요하다
- 하지만 CPU의 자원은 한정되어 있다
- 프로세스들은 돌아가며 한정된 시간 만큼만 CPU 이용
- 자신의 차례에 정해진 시간만큼 CPU 이용
- 타이머 인터럽트가 발생하면 차례 양보 - 빠르게 번갈아 수행되는 프로세스들을 관리해야 함
- 이를 위해 사용하는 자료구조가 프로세스 제어 블록(PCB)
- 프로세스 관련 정보를 저장하는 자료구조
- 마치 상품에 달린 택과 같은 정보
- 프로세스 생성 시 커널 영역에 생성, 종료시 폐기
프로세스 제어 블록(PCB)에 담기는 대표적인 정보
- 프로세스 ID (=PID)
- 특정 프로세스를 식별하기 위해 부여하는 고유의 번호 (학교의 학번, 회사의 사번...) - 레지스터 값
- 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원 후, 실행을 다시 시작한다
- 프로그램 카운터, 스택포인터... - 프로세스 상태
- 입출력 장치를 사용하기 위해 기다리는 상태, CPU를 사용하기 위해 기다리는 상태, CPU 이용 중인 상태 - CPU 스케줄링 정보
- 프로세스가 언제, 어떤 순서로 CPU를 할당 받을지에 대한 정보 - 메모리 정보
- 프로세스가 어느 주소에 저장되어 있는지에 대한 정보
- 페이지 테이블 정보 - 사용한 파일과 입출력장치 정보
- 할당된 입출력장치, 사용 중인(열린) 파일 정보
문맥 교환
한 프로세스(A)에서 다른 프로세스(B)로 실행 순서가 넘어가면?
- 기존에 실행 되던 프로세스A는 지금까지의 중간 정보를 백업
- 뒤이어 실행할 프로세스 B의 문맥을 복구(자연스럽게 실행 중인 프로세스가 바뀜)
이처럼 기존의 실행 중인 프로세스 문맥을 백업하고 새로운 프로세스 실행을 위해 문맥을 복구하는 과정을 말한다
프로세스의 메모리 영역
크게 코드 영역(=텍스트 영역),데이터 영역,힙 영역, 스택 영역이 있다
코드 영역 (텍스트 영역)
- 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
- 데이터가 아닌 CPU가 실행할 명령어가 담기기에 쓰기가 금지된 영역
데이터 영역
- 잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터 저장
- ex ) 전역 변수
코드 영역과 데이터 영역은 크기가 고정된 영역이라는 점에서 정적 할당 영역 이라고도 부른다
힙 영역
- 프로그램을 만드는 사용자, 즉 프로그래머가 직점 할당할 수 있는 저장공간
- 프로그래밍 과정에서 힙 영역 메모리 공간을 할당했다면 언젠가는 해당 공간을 반환해야 함
- 메모리 공간을 반환하지 않는다면 할당한 공간은 메모리 내에서 계속 남아 메모리 낭비를 초래한다 -> 메모리 누수 라고 한다
스택 영역
- 데이터가 일시적으로 저장되는 공간
- 데이터 영역에 담기는 값과는 달리 잠깐 쓰다가 말 값들이 저장되는 공간
- ex ) 매개 변수, 지역 변수힙 역역과 스택 영역은 실시간으로 그 크기가 변할 수 있기 때문에 동적 할당 영역 이라고 부른다
- 힙 영역과 스택 영역의 크기는 가변적
- 힙 영역은 낮은 주소 -> 높은 주소로 할당
- 스택 영역은 높은 주소 -> 낮은 주소로 할당
- 그래야만 힙 역역과 스택 영역에 데이터가 쌓여도 새롭게 할당되는 주소가 겹칠일이 없다
'운영체제' 카테고리의 다른 글
CPU 스케줄링 및 알고리즘 (0) | 2023.02.05 |
---|---|
스레드 : 멀티프로세스와 멀티 스레드 (0) | 2023.02.04 |
프로세스 상태와 계층 구조 (0) | 2023.02.04 |
운영체제란(OS : operating system)!? (0) | 2023.02.04 |