10-1. 프로세스 개요
1. 프로세스 직접 확인하기
- 포그라운드 프로세스(foreground process) : 사용자가 보는 앞에서 실행되는 프로세스
- 백그라운드 프로세스(background process) : 사용자가 보지 못하는 뒤에서 실행되는 프로세스
- 데몬(daemon) - 유닉스, 서비스(service) - 윈도우 : 백그라운드 프로세스 중 사용자와 상호작용하지 않고 정해진 일만 수행
2. 프로세스 제어 블록
3. 문맥 교환
- 문맥 : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
- 문맥 교환 : 기존 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구해 새로운 프로세스를 실행하는 것
4. 프로세스의 메모리 영역
1) 코드 영역(code segment)
- 텍스트 영역이라고도 부름
- 기계어로 이루어진 명령어 저장
- 읽기 전용 공간(쓰기 금지)
2) 데이터 영역
- 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- 전역 변수(global variable)가 대표적
- 프로그램이 실행되는 동안 유지, 프로그램 전체에서 접근 가능한 변수
(+) 코드 영역, 데이터 영역 = 정적 할당 영역(크기가 고정된 영역)
3) 힙 영역
- 프로그래머가 직접 할당할 수 있는 저장 공간. 할당한 공간은 언젠가 반환해야 함.
- 메모리 누수 : 메모리 공간 반환하지 않으면 할당한 공간은 메모리 내에 계속 남아 메모리 낭비를 초래
4) 스택 영역
(+) 힙, 스택 영역 = 동적 할당 영역(실시간으로 크기 변동 가능)
/
10-2. 프로세스 상태와 계층 구조
1. 프로세스 상태
- 프로세스가 가지는 대표적인 상태
- 생성 상태(new) : 막 메모리에 적재되어 PCB를 할당 받은 상태
- 준비 상태(ready) : 차례를 기다리는 상태
- 디스패치(dispatch) : 준비에서 실행 상태로 전환되는 것
- 실행 상태(running) : CPU를 할당받아 실행 중인 상태
- 대기 상태(blockes) : 입출력장치의 작업을 기다리는 상태
- 종료 상태(terminated) : 프로세스 종료 상태
/
- 프로세스 상태 다이어그램
2. 프로세스 계층 구조
3. 프로세스 생성 기법
-
부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행됨
-
부모 프로세스는 fork를 통해 자신의 복사본 -> 자식 프로세스로 생성
-
자식 프로세스는 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체
-
fork, exec : 시스템 호출
- fork : 자기 자신 프로세스의 복사본을 자식 프로세스로 생성하는 시스템 호출
- exec : 자신의 메모리 공간을 새로운 프로그램을 덮어쓰는 시스템 호출
4주차 기본 과제
Q1. 프로세스 상태 다이어그램의 빈칸의 알맞은 상태를 적으시오.
A.
1) 생성 상태
2) 준비 상태
3) 실행 상태
4) 종료 상태
5) 대기 상태
10-3. 스레드
1. 프로세스와 스레드
- 스레드(thread) : 실행의 단위, 프로세스를 구성하는 실행의 흐름 단위
- 단일 스레드 프로세스 : 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행되는 프로세스
2. 멀티프로세스와 멀티스레드
- 멀티프로세스(multiprocess) : 여러 프로레스 동시에 실행
- 멀티스레드(multithread) : 여러 스레드로 프로세스 동시에 실행
- 프로세스끼리는 기본적으로 자원 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원 공유