따..딱히 공부하려고 포스팅하는 건 아니니까..!
프로세스(Process) 본문
1. 프로세스(Process)
1) 정의
실행중이거나 실행 준비 중인 프로그램 개체
CPU 시간이나 메모리 등, 시스템 자원이 할당되는 독립적인 개체
2) 특징
별도의 주소 공간에서 실행된다.
다른 프로세스의 변수나 자료구조에 접근할 수 없다.
2. 프로세스의 구성요소
코드영역 | 함수, 제어문, 상수 등 프로그램 명령이 존재하는 곳 | 하위 |
데이터영역 | Data : 초기화된 전역, 정적 변수 |
|
힙 영역 (↓) | 동적 할당 시 할당되는 메모리 영역. 메모리 주소 값에 의해 창조된다. |
|
. . . | ||
스택영역 (↑) | 지역, 매개 변수, 리턴값 등 임시 할당시 할당되는 메모리 영역. 프로그램 도중 얼마나 사용될 지 몰라 거꾸로 채워나간다. | 상위 |
3. 프로세스 스케쥴링
1) 프로세스 상태 전이도
2) 프로세스 스케쥴링 시 고려사항
- 프로세스의 속성
: 입출력 위주 vs 연산 위주
-> 입출력은 우선권 획득에 유리하여 소요시간이 적다. 그러므로 빠르게 처리하고 CPU가 다른 일을 할 수 있다는 장점이 있다. 그에 비해 연산 위주는 계속 CPU를 써야하는 단점이 있다.
- 응답시간의 중요성
- 프로세스의 우선순위
- 페이지 부재
: 프로그램이 페이지 단위로 나뉘어 일부만 올라와 있는 경우
4. 프로세스 스케쥴링 알고리즘
<비선점>
프로세스가 일단 실행되면 CPU가 자발적으로 놓을 때까지 뺴앗기지 않는다.
1) FCFS(First Come First Served)
먼저 온 프로세스부터 처리한다
2) STF(Shortest Job First), SPN(Shortest Process Next)
기다리고 있는 프로세스 중에서, 처리시간이 가장 짧은 것부터 처리한다.
3) HRN(Highest Response Next)
'(대기시간 + 처리시간) / 처리시간'이 가장 큰 프로세스를 다음으로 처리한다.
<선점>
현재 실행중인 프로세스라도 운영체제에 의해 인터럽트가 걸려 준비 큐로 이동시킬 수 있다.
1) Round-Robin
일정 시간을 넘기면 해당 프로세스를 준비 큐의 맨 뒤에 저장하고, 다음에 오는 프로세스를 강제로 넘긴다. (일부 FCFS 방식)
장점 : 모든 프로세스가 정당하게 실행하고 끝낼 수 있다.
단점 : 인터럽트 문맥교환이 일어나는 횟수가 많아 오버헤드가 크다.
2) SRT(Shortest Remaining Time)
SPN의 선점 형태로, 남아있는 실행 시간이 가장 짧은 프로세스를 선점한다.
ex) P1 실행 도중에 P2가 도착했는데, P2 time < P1 time이면 바로 P2를 선점한다.
단점 : 긴 프로세스의 기아상태를 초래한다.
: 매 스케쥴링마다 시간을 평가해야하므로 비현실적이다.
3) MLQ(Multi Level Queue, 다단계 큐)
프로세스들을 여러 그룹으로 나누고, 여러개의 큐를 이용하여 각자의 스케쥴링을 진행한다. 단, 다른 큐로 이동할 수 없다.
4) MFQ(Multi Level Feedback Quere, 다단계 피드백 큐)
MLQ에서 각 큐마다 우선순위를 부여하여 큐의 순서를 바꿀 수 있는 기법이다.
너무 뒤로 연기되면 상대적으로 더 높은 우선순위를 부여하거나, 하위 단계를 처리할 때 더 오랜 시간을 할당해주면서 무기한 연기를 방지한다.
<선점/비선점>
우선순위 스케쥴링
내부적/외부적 우선순위를 두어 우선순위가 높은대로 프로세스를 처리하는 방법으로, 선점/비선점 방식 모두 가능하다.
선점일 경우 : 새로 도착한 프로세스의 우선순위와 비교하여 선점 여부를 결정한다.
비선점일 경우 : 새로 도착한 프로세스의 우선순위와 비교하여 순위가 더 높으면 준비 큐의 맨 앞에 놓아 다음에 처리한다.
단점 : 기아상태와 무한 블록을 초래할 수 있다. (= CPU를 사용하지 못하는 프로세스는 CPU가 봉쇄된 걸로 간주할 수 있다)
해결방법 : 에이징 기법(대기시간이 길어질 수록 우선순위를 높임)을 사용한다.
'시스템|서버|네트워크' 카테고리의 다른 글
쓰레드(Thread) (0) | 2017.05.04 |
---|---|
버퍼(Buffer) (0) | 2017.05.03 |
운영체제(OS, Operating System) (0) | 2017.05.03 |
VisualSVN과 iptime을 이용한 로컬 svn 네트워크 만들기 (0) | 2016.07.10 |
(링크) 가상 메모리(Virtual Memory) (0) | 2016.06.15 |