본문 바로가기
License/정보처리기사_실기

161-170

by jaunnnngs21 2022. 3. 28.

SEC 161) 예외 처리(C)

* 예외처리(Exception Handling)

- 예외 처리는 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴이 수행되도록 하는 것

- 예외가 발생했을 때 일반적인 처리 루틴은 프로그램을 종료시키거나 로그를 남기는 것

- C++, Ada, Java, 자바스크립트와 같은 언어에는 예외 처리 기능이 내장되어 있음

- 필요한 경우 조건문을 이용해 예외 처리 루틴을 작성함.

>> Java의 예외 처리

- JAVA는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java,lang 패키지에서 제공

- JAVA에서는 try~catch 문을 이용해 예외를 처리함

- try 블록 코드를 수행하다 예외가 발생하면 예외를 처리하는 catch블록으로 이동해 예외 처리 코드를 수행하므로 예외가 발생한 이후의 코드는 실행되지 않음.

- catch 블록에서 선언한 변수는 해당 catch 블록에서만 유효

- try ~ catch 문 안에 또 다른 try ~ catch 문을 포함할 수 있다.

- try ~ catch 문 안에서는 실행 코드가 한 줄이라도 중괄호({ })를 생략할 수 없음

 

* JAVA의 주요 예외 객체

예외 객체 발생 원인
ClassNotFoundException 클래스를 찾지 못한 경우
NoSuchMethodException 메소드를 찾지 못한 경우
FileNotFoundException 파일을 찾지 못한 경우
InterruptedIOException .출력 처리가 중단된 경우
ArithmeticException 0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우
IIIegalArgumentException 잘못된 인자를 전달한 경우
NumberFormatException 숫자 형식으로 변환할 수 없는 문자열을 숫자형식으로 변환한 경우
ArrayIndexOutOfBoundsException 배열의 범위를 벗어난 접근을 시도한 경우
NegativeArraySizeException 0보다 작은 값으로 배열의 크기를 지정한 경우
NullPointerException 존재하지 않는 객체를 참조한 경우

 

SEC 162) 운영체제의 개념(B)

필기 20.8

* 운영체제(OS; Operating System)

- 운영체제는 컴픁 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임

- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종

- 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해줌

- 운영체제는 프로세스, 기억장치, 주변장치, 파일 등을 관리하는 기능을 수행함

- 운영체제의 종류: Windows, UNIX, LINUX, MacOS, MS-DOS

 

* 운영체제의 목적

- 운영체제의 목적에는 처리 능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등이 있음

처리 능력(Throughput) 일정 시간 내에 시스템이 처리하는 일의 양
반환시간(Turn Around Time) 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도(Availability) 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도(Reliability) 시스템이 주어진 문제를 정확하게 해결하는 정도

 

필기 20.8

* 운영체제의 기능

- 프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), .출력장치, 파일 및 정보 등의 자원을 관리함

- 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공

- 사용자와 시스템 간의 편리한 인터페이스를 제공함

- 시스템의 각종 하드웨어와 네트워크를 관리.제어함

- 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공

SEC 163) 운영체제의 종류(A)

* Windows

- Windows1990년대 마이크로소프트(Microsoft) 사가 개발한 운영체제임

>> Windows 주요특징

특징 설명
그래픽 사용자 인터페이스
(GUI; Graphic User Interface)
키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택해 모든 작업을 수행하는 방식
선점형 멀티태스킹
(Preemptive Multi-Tasking)
동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
PnP(Plug and Play, 자동 감지 기능) 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능
OLE(Object Linking and Embedding) 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체(Object)를 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능
255자의 긴 파일명 / * ? “ < > |를 제외한 모든 문자 및 공백을 사용하여 최대 255자까지 파일 이름을 지정할 수 있음
Single-User 시스템 컴퓨터 한 대를 한 사람만이 독점해서 사용함

 

20.11

* UNIX

- UNIX1960년대 AT&T (Bell) 연구소, MIT, General Electric이 공동 개발한 운영체제

- 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제임

- 소스가 공개된 개방형 시스템(Open System)

- 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높음

- 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원함

- 트리(Tree)구조의 파일 시스템을 갖음

 

필기 20.9, 20.6

* UNIX 시스템의 구성

구성 요소 설명
필기 20.9
커널(Kernel)
하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당
UNIX의 가장 핵심적인 부분임
프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일관리, .출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 가지 기능을 수행함
필기 20.6
(Shell)
사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기임
시스템과 사용자 간의 인터페이스를 담당함
종류: Bourne Shell, C Shell, Korn Shell
유틸리티 프로그램
(Utility Program)
일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용함
DOS에서의 외부 명령어에 해당됨
종류: 에디터, 컴파일러, 인터프리터, 디버거 등

 

* LINUX

- LINUX1991년 리누스 토발즈(Linus Torvalds)UNIX를 기반으로 개발한 운영체제

- 프로그램 소스코드가 무료로 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가할 수 있음

- 다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능함

- UNIX와 완변하게 호환됨

- 대부분의 특징이 UNIX와 동일

 

* MacOS

- MacOS1980년대 애플(Apple)사가 UNIX를 기반으로 개발한 운영체제

- 아이맥(iMac)과 맥북(MacBook) 등 애플 사에서 생산하는 제품에서만 사용이 가능

- 드라이버 설치 및 installuninstall의 과정이 단순함

 

20.7

* Android

- Android는 구글(Google)사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제임

- 모든 코드가 공개된 개방형 소프트웨어

- 자바와 코들린으로 애플리케이션을 작성함

- 스마트폰 등의 휴대용 장치에서 주로 사용됨

 

* iOS

- iOS는 애플(Apple)사에서 개발한 유닉스 기반의 모바일 운영체제

- 아이폰, 아이팟 터치, 아이패드 등에 내장됨

- 애플사 고유의 모바일 운영체제로 타사 제품은 iOS를 탑재할 수 없음

 

SEC 164) 기억장치 관리(A)

* 기억장치의 관리 전략: 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 위치 등을 지정해 한정된 주기억장치의 공간을 효율적 사용을 위한 것

>> 종류: 반입(Fetch)전략, 배치(Placement)전략, 교체(Replacement)전략

 

* 반입(Fetch) 전략 : 보조기억장치에 보관중인 프로그램이나 데이터를 주기억장치로 적재할 시기를 결정하는 전략

기법 내용
요구 반입
(Demand Fetch)
실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
예상 반입
(Anticipatory Fetch)
실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법

필기 20.8

* 배치(Placement) 전략 : 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치 시킬 것인지를 결정하는 전략

기법 내용
최초 적합
(First Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 적합
(Best Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
필기 20.8
최악 적합
(Worst Fit)
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

 

* 교체(Replacement) 전략

- 교체 전략은 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략

>> 종류: FIFO, OPT, LRU, LFU, NUR, SCR

 

SEC 165) 주기억장치 할당 기법(C)

* 주기억장치 할당

- 주기억장치 할당 기법은 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용

>> 주기억장치 할당 기법의 분류

연속 할당 기법 프로그램을 주기억장치에 연속으로 할당하는 기법
종류: 단일 분할 할당 기법, 다중 분할 할당 기법
분산 할당 기법 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
종류: 페이징 기법, 세그먼테이션 기법

* 단일 분할 할당 기법

- 단일 분할 할당 기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나우어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법

- 가장 단순한 기법으로 초기의 운영체제에서 많이 사용하던 기법

- 운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 운영체제영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용도미

- 프로그램의 크기가 작을 경우 사용자 영역이 낭비될 수 있음

>> 종류

오버레이(Overlay) 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
스와핑(Swapping) 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법

 

* 다중 분할 할당 기법

고정 분할 할당 기법
= 정적 할당 기법
프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법
가변 분할 할당 기법
= 동적 할당 기법
주기억장치를 미리 분할해 놓지 않고 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법
고정 분할 할당 기법의 단편화를 줄이기 위해 사용됨

 

SEC 166) 가상기억장치 구현 기법(A)

* 가상기억장치(Virtual Memory)

- 가상기억장치는 보조기억장치의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법

- 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리

- 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.

- 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다.

- 가상기억장치의 일반적인 구현 방법: 페이징 기법, 세그먼테이션 기법

 

* 페이징(Paging) 기법

- 페이징 기법은 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법

- 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 한다.

- 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.

- 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요하다.

- 페이지 맵 테이블 사용으로 비용이 증가하고, 처리 속도가 감소된다.

 

* 세그먼테이션(Segmentation) 기법

- 세그먼테이션 기법은 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법

- 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 가짐.

- 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위해서이다.

- 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요

- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있음

 

SEC 167) 페이지 교체 알고리즘(A)

 

* 페이지 교체 알고리즘

- 페이지 부재(Page Fault)가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택해 교체할 것인지를 결정하는 기법이 페이지 교체 알고리즘

- 종류: OPT, FIFO, LRU, LFU, NUR, SCR

 

* OPT(OPTimal replacement, 최적 교체)

- OPT는 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법

- 벨레이디(Belady)가 제안한 것이다.

- 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

 

* FIFO(First In First Out)

- FIFO는 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저들어와서 가장 오래있었던 페이지를 교체하는 기법

- 이해하기 쉽고, 프로그래밍 및 설계가 간단

 

* LRU(Least Recently Used)

- LRU는 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법

- 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래전에 사용된 페이지를 교체한다.

 

* LFU(Least Frequently Used)

- LFU는 사용 빈도가 가장 적은 페이지를 교체하는 기법

- 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되는 않고 사용됨

 

* NUR(Not Used Recently)

- NURLRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법

- 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 LRU에서 나타나는 시간적니 오버헤드를 줄일 수 있음.

- 최근의 사용 여부를 확인하기위해서 각 페이지마다 두 개의 비트, 즉 참조비트(Reference Bit)와 변형비트(Modified Bit, Dirty Bit)가 사용됨.

- 다음과 같이 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정됨

참조 비트 0 0 1 1
변형 비트 0 1 0 1
교체 순서 1 2 3 4

 

* SCR(Second Chance Replacement, 2차 기회 교체)

- SCR은 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법

- FIFO 기법의 단점을 보완하는데 사용됨.

SEC 168) 가상기억장치 기타 관리 사항(B)

* 페이지 크기

- 페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다름.

페이지 크기가 작을 경우 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동시키는 시간이 줄어듦
불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지할 수 있음
페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐
디스크 접근 횟수가 많아져서 전체적인 입.출력 시간은 늘어남
페이지 크기가 클 경우 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑속도가 빨라짐
디스크 접근 횟수가 줄어들어 전체적인 입.출력의 효율성이 증가됨
페이지 단편화가 증가되고, 한 개의 페이지를 주기억장치로 이동시키는 시간이 늘어 남

 

* Locality

- Locality(국부성, 지역성, 구역성, 국소성)는 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조되는 성질이 있다는 이론

- 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 됨

- 가상기억장치 관리와 캐시 메모리 시스템의 이론적인 근거

- 데닝(Denning) 교수에 의해 Locality의 개념이 증명되었다.

>> Locality의 종류

시간 구역성
(Temporal Locality)
프로세스가 실행되면서 하나의 페이지를 일정시간동안 집중적으로 액세스하는 현상
공간 구역성
(Spatial Locality)
프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스 하는 현상

 

* 워킹 셋(Working Set)

- 워킹 셋은 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

- 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용함

- 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정됨

 

* 스래싱(Thrashing)

- 스래싱은 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

- 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중에 자주 페이지 부재(Page Fault)가 발생함으로써 나타나며, 전체 시스템의 성능이 저하됨

- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 됨.

 

SEC 169) 프로세스의 개요(A)

* 프로세스(Process)

- 프로세스는 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미

>> 프로세스의 정의들

- PCB를 가진 프로그램

- 실기억장치에 저장된 프로그램

- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위

- 프로시저가 활동중인 것

- 비동기적 행위를 일으키는 주체

- 지정된 결과를 얻기 위한 일련의 계통적 동작

- 목적 또는 결과에 따라 발생되는 사건들의 과정

- 운영체제가 관리하는 실행 단위

 

* PCB(Process Control Block, 프로세스 제어 블록)

- PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳

- 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다

>> PCB에 저장되어 있는 정보

- 프로세스의 현재 상태

- 포인터

- 프로세스 고유 식별자

- 스케줄링 및 프로세스의 우선순위

- CPU 레지스터 정보

- 주기억장치 관리 정보

- .출력 상태정보

- 계정 정보

 

* 프로세스 상태 전이

- 프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미

- 프로세스의 상태는 다음과 같이 상태 전이도로 표시할 수 있음

 

상태 내용
제출(Submit) 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold) 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
준비(Ready) 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
실행(Run) 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
대기(Wait),
블록(Block)
프로세스에 입.출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, .출력 처리가 완료될 때까지 대기하고 있는 상태
종료(Terminated, Exit) 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상대

 

* 프로세스 상태 전이 관련 용어

용어 내용
Dispatch 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up .출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이 되는 과정
Spooling .출력장치의 공유 및 상대적으로 느린 입.출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기위해 입.출력할 데이터를 직접 입.출력장치에 보내지 않고 나중에 한꺼번에 입.출력하기 위해 디스크에 저장하는 과정
교통량 제어기
(Traffic Controller)
프로세스의 상태에 대한 조사와 통보 담당

 

* 스레드(Thread)

- 스레드는 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위 또는 프로세스 내에서의 작업 단위로 사용

- 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나이상의 스레드가 존재하는 경우에는 다중 스레드라고 함

- 프로세스의 일부 특성을 갖고 있기 때문에 경량(Light Weight) 프로세스라고 함

- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소단위로서 프로세스의 역할을 담당

 

SEC 170) 스케줄링(B)

* 스케줄링(Scheduling)

- 스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미

- 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 됨

>> 스케줄링의 종류

장기 스케줄링 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정해 준비상태 큐로 보내는 작업
중기 스케줄링 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
단기 스케줄링 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업

 

* 스케줄링의 목적

목적 내용
공정성 모든 프로세스에 공정하게 할당함
처리율 증가 단위 시간당 프로세스를 처리하는 비율을 증가시킴
CPU 이용률 증가 CPU가 순수하게 프로세스를 실행하는 데 사용되는 시간 비율을 증가시킴
우선순위 제도 우선순위가 높은 프로세스를 먼저 실행함
오버헤드 최소화 오버헤드를 최소화함
응답시간 최소화 작업을 지시하고, 반응하기 시작하는 시간을 최소화함
반환시간 최소화 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간을 최소화함
대기 시간 최소화 프로세스가 준비상태 큐에서 대기하는 시간을 최소화함
균형 있는 자원의 사용 메모리, .출력장치 등의 자원을 균형있게 사용함
무한 연기 회피 자원을 사용하기 위해 무한정 연기되는 상태를 회피함

 

* 비선점(Non-Preemptive) 스케줄링

- 비선점 스케줄링은 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용

- 프로세스 응답시간의 예측이 용이함

- 일괄 처리 방식에 적합함

- 종류: FCFS, SJF, 우선순위, HRN, 기한부 등

 

* 선점(Preemptive) 스케줄링

- 선점 스케줄링은 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

- 우선순위가 높은 프로세스를 빠르게 처리할 수 있음

- 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용됨

- 많은 오버헤드(Overhead)를 초래함

- 종류: Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등

 

'License > 정보처리기사_실기' 카테고리의 다른 글

171-180  (0) 2022.03.31
정처기 실기 예제(8장)_추후 업데이트 할 예정  (0) 2022.03.29
151-160  (0) 2022.03.28
141-150  (0) 2022.03.25
131-140  (0) 2022.03.23