프로세스의 정의
- 실행중인 프로그램
- 작업의 단위
- 프로세스는 작업을 완료하기 위해 특정 리소스들을 필요로 한다.
- CPU 시간
- 메모리
- 파일, I/O 디바이스
프로세스의 메모리 영역
- 텍스트 영역
- 코드 관리/실행
- 데이터 영역
- 전역 변수
- 힙 영역
- 프로그램 런타임에 동적으로 할당되는 메모리
- 스택 영역
- 함수 실행에 사용하는 일시적인 데이터 저장소
- 함수 파라미터, 반환 주소, 지역 변수 등
프로세스의 상태(생명주기)
- New: 프로세스가 생성됨.
- Running: 명령어가 실행중인 상태
- Waiting: 프로세스가 이벤트 대기. I/O 인풋과 같은 이벤트
- Ready: 프로세스가 프로세서가 할당되는 것을 기다리는 상태
- Terminated: 프로세스가 실행을 마침.
PCB(Process Control Block) / TCB(Task Control Block)
- 프로세스를 관리하는 방법
- 프로세스에 관련된 정보를 담고 있다
- 프로세스의 상태
- 프로그램 카운터(메모리 번지수)
- CPU 레지스터
- CPU 스케줄링 정보
- 메모리 관리 정보
- 계정 정보
- 입출력 상태 정보
프로세스 스케줄링
- 멀티프로그래밍의 목적
- 프로세스를 항상 실행되게 하기 위해서
- CPU를 가장 효율적으로 사용하기 위해서
- 타임 쉐어링의 목적
- CPU 코어를 프로세스 사이에서 자주 바꾸기 위해서
- 각 프로그램이 돌아가는 동안에도 끊김을 못 느끼고 각 프로그램에 접근할 수 있게 할 수 있다
- 스케줄링 큐
- 프로세스가 시스템에 들어올 때 레디큐(ready queue)에 먼저 들어가야 한다.
- 입출력을 기다릴 경우에는 웨잇큐(wait queue)에 들어가야 함.
- 문맥 교환(Context Switch)
- PCB 정보를 문맥이라고 함.
- CPU 코어를 다른 프로세스에 넘길 때 현재 상태를 저장하는 것.
- 그리고 다른 프로세스의 상태를 불러옴.
프로세스의 작동
- 프로세스는 새로운 프로세스를 생성할 수 있다.
- 부모 프로세스
- 자식 프로세스
- 실행의 두가지 가능성
- 부모 프로세스가 자식 프로세스와 동시에 실행된다
- 부모 프로세스가 자식 프로세스가 끝날 때까지 기다린다
- 주소 공간의 두가지 가능성
- 자식 프로세스가 부모 프로세스의 주소 공간을 그대로 같이 쓴다.
프로세스의 종료
- 마지막 선언문까지 실행을 마쳤을 때(return)
- exit() 시스템콜이 호출했을 때: OS에게 삭제할 지 물어봄
- OS가 모든 자원을 비할당시켜버림.
좀비(Zombie) 프로세스, 고아(Orphan) 프로세스
- 좀비: 부모 프로세스가 wait()를 콜하지 않아서 자식 프로세스가 종료된 케이스
- 고아: 부모 프로세스가 wait()를 호출하지 않고 부모 프로세스가 종료된 케이스
'Computer Science > 운영체제' 카테고리의 다른 글
프로세스간 통신의 실제 (IPC) (0) | 2022.12.01 |
---|---|
프로세스간 통신(IPC) (0) | 2022.12.01 |
운영체제의 개념과 구조 (0) | 2022.11.15 |
운영체제란? (0) | 2022.11.15 |
연속 할당, 불연속 할당 (0) | 2022.07.26 |