[정처기 필기] 「4」 | 응용 SW 기초 기술 활용 - (3.4) 스케줄링, 주요 스케줄링 알고리즘, 환경 변수
「1」 소프트웨어 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
> 「4」 프로그래밍 언어 활용
- 서버 프로그램 구현, 프로그래밍 언어 활용, > 응용 SW 기초 기술 활용
「5」 정보시스템 구축 관리
1 운영체제의 개념
2 Windows
3 UNIX / LINUX / MacOS
4 기억장치 관리의 개요
5 가상기억장치 구현 기법 / 페이지 교체 알고리즘
6 가상기억장치 기타 관리 사항
7 프로세스의 개요
> 8 스케줄링
> 9 주요 스케줄링 알고리즘
> 10 환경 변수
11 운영체제 기본 명령어
12 인터넷
13 OSI 참조 모델
14 네트워크 관련 장비
15 TCP / IP
8. 스케줄링
스케줄링(Scheduling)의 개요
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 생성되어 완료될 때까지 여러 종류의 스케줄링 과정을 거침
장기 스케줄링
: 어떤 프로세스가 시스템의 자원을 차지하도록 할 것인가 결정하여 준비상태 큐로 보내는 작업,
: == 작업 스케줄링, 상위 스케줄링
: 작업 스케줄러에 의해 수행
중기 스케줄링
: 어떤 프로세스들이 CPU를 할당받을지 결정하는 작업
: CPU를 할당받을 프로세스가 많은 경우, 프로세스를 일시 보류시킨 후 활성화하여 일시적으로 부하 조절
단기 스케줄링
: CPU를 할당받는 시기, 특정 프로세스를 지정하는 작업
: == 프로세서 스케줄링, 하위 스케줄링
: 프로세서 스케줄링 / 문맥 교환은 프로세서 스케줄러에 의해 수행
>문맥 교환(Context Switching)<
하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생, 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태정보를 저장, 새로운 프로세스의 상태정보를 설정한 후 CPU를 할당하여 실행
프로세스 스케줄링의 기법
비선점(Non-Preemptive) 스케줄링
: 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
: CPU를 할당받으면, 해당 프로세스가 완료될 때까지 CPU 사용
: 모든 프로세스에 대한 요구를 공정하게 처리
: 응답 시간의 예측 용이, 일괄 처리 방식에 적합
: 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있음
: FCFS(First Come First Sevice), SJF(Shortest Job First), 우선순위, HRN, 기한부 알고리즘
선점(Preemptive) 스케줄링
: CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 강제로 빼앗아 사용하는 스케줄링 기법
: 우선순위가 높은 프로세스를 빠르게 처리
: 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용
: 많은 오버헤드 초래
: 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요
: RR(Round Robin), SRT(Shortest Remaining Time), 선점 우선순위, 다단계 큐, 다단계 피드백 큐 알고리즘
9. 주요 스케줄링 알고리즘
FCFS(First Come First Service, 선입 선출) = FIFO(First In First Out)
준비상태 큐(대기 큐, 준비 완료 리스트, 작업준비 큐, 스케줄링 큐)에 도착한 순서에 따라 차례로 CPU 할당, 가장 간단
- 공평성은 유지, 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다림
ex)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
진행시간 | 0 | 10 | 20 | 30 |
P1 | |--------------------------------------------------------------| 0 20 실행 20 도착 완료 실행 |
|||
P2 | |--------------------------------------------------------------|-----------| 0 20 대기 20 4 실행 24 도착 실행 완료 |
|||
P3 | |--------------------------------------------------------------------------|-----------------| 0 24 대기 24 6 실행 30 도착 실행 완료 |
// 평균 실행 시간 : (20 + 4 + 6) / 3 = 10
// 평균 대기 시간 : (0 + 20 + 24) / 3 = 14.6
// 평균 반환 시간 : (20 + 24 + 30) / 3 = 24.6
SJF(Shortest Job First, 단기 작업 우선)
준비상태 큐에서 기다리고 있는 프로세스들 중 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당
: 가장 적은 평균 대기 시간
: 실행 시간이 긴 프로세스는 무기한 연기 상태가 발생될 수 있음
ex)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
진행시간 | 0 | 10 | 20 | 30 |
P1 | |------------| 0 4 실행 4 도착 완료 실행 |
|||
P3 | |------------|------------------| 0 4 대기 4 6 실행 10 도착 실행 완료 |
|||
P2 | |-------------------------------|------------------------------------------------------------| 0 6 대기 10 20 실행 30 도착 실행 완료 |
// 평균 실행 시간 : (4 + 6 + 20) / 3 = 10
// 평균 대기 시간 : (0 + 4 + 10) / 3 = 4.6
// 평균 반환 시간 : (4 + 10 + 30) / 3 = 14.6
ex)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 7 | 4 |
제출 시간 | 0 | 1 | 2 |
진행시간 | 0 | 10 | 20 | 30 |
P1 | |-------------------------------------------------------------| 0 20 실행 20 도착 완료 실행 |
|||
P3 | |------------------------------------------------------|------------| 2 18 대기 20 4 실행 24 도착 실행 완료 |
|||
P2 | |-----------------------------------------------------------------------|---------------------| 1 23 대기 24 7 실행 31 도착 실행 완료 |
// 평균 실행 시간 : (20 + 4 + 7) / 3 = 10.3
// 평균 대기 시간 : (0 + 18 + 23) / 3 = 13.6
// 평균 반환 시간 : (20 + 22 + 30) / 3 = 24
HRN(Hightest Response-ratio Next)
실행 시간이 긴 프로세스에 불리한 SJF 기법 보완, 대기 시간과 실행 시간을 이용
- 우선순위 계산 공식, 실행 시간이 짧은 프로세스나 대기 시간이 긴 프로세스에게 우선순위 주어 CPU 할당
- 서비스 실행 시간이 짧거나 대기 시간이 긴 프로세스일 경우 우선순위 높아짐
- 숫자가 가장 높은 것부터 낮은 순으로 우선순위 부여
우선순위 계산식 = (대기 시간 + 실행 시간) / 실행 시간
ex)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
대기 시간 | 10 | 20 | 10 |
우선순위 계산 | (20 + 10) / 20 = 1.5 | (4 + 20) / 4 = 6 | (6 + 10) / 6 = 2.6 |
우선순위 | P2 > P3 > P1 |
10. 환경 변수
환경 변수(Environment Variable)의 개요
시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
- 변수명과 값으로 구성
- 시스템의 기본 정보
- 자식 프로세스에 상속
- 시스템 전반에 걸쳐 적용되는 시스템 환경 변수, 사용자 계정 내에서 적용되는 사용자 환경 변수
Windows의 주요 환경 변수
%ALLUSERPROFILE% : 모든 사용자의 프로필이 저장된 폴더
%APPDATA% : 설치된 프로그램의 필요 데이터가 저장된 폴더
%ComSpec% : 기본 명령 프롬프트로 사용할 프로그램명
%HOMEDRIVE% : 로그인한 계정의 정보가 저장된 드라이브
%HOMEPATH% : 로그인한 계정의 기본 폴더
%LOGONSERVER% : 로그인한 계정이 접속한 서버명
%PATH% : 실행 파일을 찾는 경로
%PATHEXT% : cmd에서 실행할 수 있는 파일의 확장자 목록
%PROGRAMFILES% : 기본 프로그램의 설치 폴더
%SYSTEMDRIVE% : Windows가 부팅된 드라이브
%SYSTEMROOT% : 부팅된 운영체제가 들어있는 폴더
%TEMP% 또는 %TMP% : 임시 파일이 저장되는 폴더
%USERDOMAIN% : 로그인한 시스템의 도메인명
%USERNAME% : 로그인한 계정 이름
%USERPROFILE% : 로그인한 유저의 프로필이 저장된 폴더명
UNIX / LINUX의 주요 환경 변수
환경 변수를 사용하려면 변수명 앞에 '$'를 입력해야 함, set, env, printenv, setenv 중 하나 입력하면 모든 환경 변수와 값 표시
$DISPLAY : 현재 X 윈도 디스플레이 위치
$HOME : 사용자의 홈 디렉터리
$LANG : 프로그램 사용 시 기본적으로 지원되는 언어
$MAIL : 메일을 보관하는 경로
$PATH : 실행 파일을 찾는 경로
$PS1 : 쉘 프롬프트 정보
$PWD : 현재 작업하는 디렉터리
$TERM : 로긴 터미널 타입
$USER : 사용자 이름
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)