프로세스와 스레드 관리 1
프로세스관리의 주요 목적
- CPU자원 관리
- CPU스케줄링 (=프로세스 스케줄링)
중앙처리장치 스케줄링 (CPU Scheduling)
- 정의 : 준비 완료된 상태에 있는 프로세스를 CPU에 할당 시키는 정책
- 목적 : CPU처리 효율을 위함
프로세스란?
- 실행 중인 프로그램 (=프로세스)
- PCB (Process Control Block)
n 프로세스를 실행시킬 때 필요한 정보를 모아둔 집합체
n 주로 RAM(메인 메모리)에 저장시킴
n 프로그램 카운터를 가지고 있음 (지금 현제 실행중인 프로그램의 위치 = 포인터)
u PC라고 함
u Main( )함수를 가리킴
- 능동적인 개체로, 순차적으로 수행하는 프로그램
- 프로세스와 프로그램의 차이
n 프로그램 = 설치된 프로그램
n 프로세스 = 실행중인 프로그램
프로세스 관리
- 프로세스에 관련된 모든 것
- 프로세스 일시 중지, 재 수행
- 프로세스 스케줄링
- 프로세스 동기화
- 프로세스 간 통신
- 교착상태 처리
프로세스 구성 요소
- 임의의 프로그램이 실행되기위해 반드시 실행되기 전에 주 기억장치에 저장되어야 한다.
- 크게 프로그램의 코드영역(Code) 과 변수영역(데이터, 스택, 힙 영역)이 된다.
- 코드(Code) 영역
n 프로그램의 코드 (=Source Code)
- 데이터 영역
n 전역 변수와 정적 변수의 할당
n 정적 변수(static) : 프로그램이 실행될 때 만들어지는 변수
n 데이터 전체에서 Access 할 수 있는 정보
- 스택 영역
n FILO
n 지역 변수 할당과 함수 호출 시 전달되는 인수 값
n 일시적으로 필요한 변수들을 사용할 때 할당되는 부분
n 함수의 지역변수를 관리
- 힙(Heap) 영역
n 동적 할당
n 객체 지향 언어에서 많이 사용됨
n 배열과 같은 부분을 동적으로 할당할 때 사용됨
n 메모리를 차지하는 부분
프로세스의 상태
- New → (Ready) ↔ (Run) → Quit
↖ (Wait) ↙
- Ready : 프로그램을 더블클릭 해서 실행시킨 상태
n Queue : FIFO
n First In First Out
- Run : CPU를 잡고있는 상태 (=CPU가 할당된 상태)
n 입출력을 하는 도중에는 Wait상태로 들어간다.
n CPU스케쥴에 따라서 Ready상태로 돌아갈 수 있다
.
- Wait : 인터럽트가 걸리면 해당 프로세스는 CPU를 놓고 Wait상태로 빠짐 그 후에 인터럽트가 끝나게 되면 Ready상태로 돌아 감
프로세스 제어 블록(PCB)
- 프로세스를 제어하기 위해 필요한 모든 정보들
- Ready Q 시에 저장되는 전체 데이터 : PCB
- PCB
n 프로세스 상태 : Ready, Run, Wait
n 프로세스 ID(번호)
u 중간에 프로세스가 종료되면 해당 번호를 주는 것이 아닌 최종 번호의 다음 번호를 준다.
u 같은 프로세스라도 해당 프로세스를 실행 시킬 때 마다 항상 바뀐다.
u 마지막 번호가 되면 중간에 비어 있는 번호를 부여한다.
n 프로그램 카운터
u 프로그램이 실행되는 순서
n 레지스터
u Run상태에 있을 때 실행시키기 위해 변수가 잠시 저장되는 부분
u 프로세스 위치 저장
u 함께 사용된 프로그램 저장
u 그렇게 해야 Run상태에서 Wait상태로 갔다가 Ready상태가 되었을 때 레지스터에 저장된 상태 그대로 저장시키는 부분
PCB교환
- Context Switch
- 모든 정보는 Queue에 저장 되어있음
'3학년 > 운영체제' 카테고리의 다른 글
Chapter4-1 (0) | 2018.04.17 |
---|---|
Chapter3 (0) | 2018.04.13 |
Chapter2-3 (0) | 2018.04.12 |
Chapter2-2 (0) | 2018.03.28 |
Chapter1 (0) | 2018.03.15 |