정보처리기사 제3과목 운영체제 – 제2장 프로세스 관리

정보처리기사 제3과목 운영체제 – 제2장 프로세스 관리

요약 정리

Ⅰ. 프로세스의 개념
1. 프로세스(Process)의 정의
– CPU에 의해서 현재 실행되고 있는 프로그램.
– 프로세스 제어 블록(PCB, Process Control Block)의 존재로서 명시되는 것.
– 프로세서(Processor)가 할당되는 개체로서 디스패치(Dispatch)가 가능한 단위.
– 지정된 결과를 얻기 위한 일련의 계통적 동작.
– 목적 또는 결과에 따라 발생되는 사건들의 과정.
– 비동기적 행위를 일으키는 주체.
– 프로시저(Procedure)가 활동 중인 것.
– 실행중인 프로시저(Procedure)의 제어 궤적(軌跡).
– CPU가 할당되는 실체.

2. 프로세스(Process) 상태

  • 생성(New) 상태: 프로세스(Process)가 새롭게 생성된 상태.
  • 준비(Read) 상태: 실행하기 위해 준비하고 있는 상태.
  • 실행(Run) 상태: 프로세스(Process)가 CPU를 차지하고 있는 상태.
  • 대기(Block) 상태: 처리 속도가 느린 I/O 작업중인 상태.
  • 종료(Exit) 상태: 모든 수행가능 프로세스(Process)가 종료된 상태.

3. 프로세스(Process) 상태 전이

프로세스 상태 전이도

  • 디스패치(Dispatch): 준비(Read) 상태에서 대기 하고 있는 프로세스 중 하나가 CPU를 할당 받아 실행(Run) 상태로 변하는 시점. (준비 → 실행)
  • 할당 시간 종료(Time Run Out): 자신에 할당된 시간만큼 CPU를 사용하고 준비(Read) 상태로 변하는 시점. (실행 → 준비)
  • I/O 발생: 프로세스가 CPU를 사용 중에 I/O 행위가 필요하여 대기(Block) 상태로 이동하는 시점. (실행 → 대기)
  • I/O 완료(Wake Up): I/O 작업이 완료되어 준비(Read) 상태로 이동하는 시점. (대기 → 준비)

용어 설명
– 강제적 일시 중지(Suspend)
 대기(Block) 상태에서 운영체제에 의해 일시적으로 벗어나는 상태.

– 재동작(Resume)
 강제적 일시 중지(Suspend)에서 프로세스 활성화 상태로 다시 복귀

– 스풀(Spool)
 I/O 장치와의 속도 차를 극복하기 위한 장치로 대부분 하드디스크가 중재.

– 버퍼링(Buffering)
 CPU와 I/O 장치와의 속도차를 줄이기 위해 메모리가 중재. 주기억장치 이용.

– 스풀링(Spooling)
 출력할 데이터를 직접 프린터에 보내지 않고 디스크에 모아 두었다가 나중에 한꺼번에 출력함으로써 프린터 장치 공유 및 프린터 처리 속도를 보완한 기법. 보조기억장치 이용.

– 채널(Channel)
 I/O 출력만을 담당하는 소형 컴퓨터로 간단한 명령 구조와 레지스터(Register), I/O 장치와 통신하기 위한 간단한 장치로 구성.

4. 프로세스 자원 이용 순서
요청 → 사용 → 해제

5. 인터럽트 처리(Interrupt Processing)
가. 인터럽트(Interrupt)의 정의
프로세스(Process)가 수행 중에 다른 프로세스(Process)를 수행하기 위하여, 현재 수행 중인 프로세스(Process)를 중단하거나 외부 입력장치에 의해 프로세스(Process)가 중단되는 상태를 인터럽트(Interrupt)라 한다.

나. 인터럽트 처리(Interrupt Processing)를 위한 작업 순서
① 인터럽트(Interrupt)가 발생하면 운영체제가 제어권을 받는다.
② 운영체제는 인터럽트(Interrupt) 받은 현재의 프로세스 상태를 기억한다.
③ 운영체제는 인터럽트(Interrupt)의 정보를 분석하여 지정된 루틴(Routine)으로 제어권을 넘겨준다.
④ 인터럽트 처리(Interrupt Processing) 루틴(Routine)이 인터럽트(Interrupt)를 처리한다.
⑤ 인터럽트(Interrupt)가 걸렸던 이전 프로세스의 상태로 복귀
⑥ 인터럽트(Interrupt)가 걸렸던 시점 이후부터 프로세스가 실행된다.

다. 인터럽트(Interrupt)의 종류

  • SVC 인터럽트(Supervisor Interrupt): I/O 수행 루틴 호출. 기억 장치 할당 루틴. 오퍼레이터와 대화.
  • 입 ・ 출력 인터럽트(I/O Interrupt): I/O 요구가 발생 되었을 때 하드웨어가 인터럽트를 발생시키며 CPU에 채널이나 I/O 기기의 상태 변화를 알려준다. I/O 종료, 오류 발생시 발생.
  • 외부 인터럽트(External Interrupt): 인터럽트 시계 – 시스템 타이머 – 에서 일정한 시간이 만료된 경우나 오퍼레이터가 콘솔(Console)상의 인터럽트 키를 입력한 경우 발생.
    인터럽트 시계에 의해 프로세스가 시간 할당량이 종료된 경우 발생.

  • 재시작 인터럽트(Restart Interrupt): 오퍼레이터가 콘솔(Console)에서 재시작 버튼(Ctr + Alt + Del or Reset)을 눌렀을 경우 발생.
  • 프로그램 검사 인터럽트(Program Check Interrupt): 오버플로우(Overflow)나 언더플로우(Underflow) 상태 시, 나눗셈에서 분모가 ‘0’인 경우 발생.
  • 기계검사 인터럽트(Machine Check Interrupt): 컴퓨터 시스템 고장이 생겼을 때 발생.

6. 프로세스 제어 블록(PCB, Process Control Block)
가. 프로세스 제어 블록(PCB)의 정의
 프로세스 제어 블록(PCB)은 운영체제 내에서 한 프로세스(Process)의 존재를 정의한다. 즉, 여러 개의 프로세스를 수행하는 다중 프로그래밍(Multi Programming) 환경하에서 각 프로세스를 구분하기 위한 프로세스 정보 블록이다. 프로세스 생성시에 하나의 프로세스 제어 블록(PCB)이 할당되며, 프로세스 소멸시에는 프로세스 제어 블록(PCB)의 내용도 소멸된다.

나. 프로세스 제어 블록(PCB)의 내용
– 프로세스 식별자(Process Identifier): 프로세스 생성시 부여되는 고유 번호.
– 프로세스 상태: 준비(Read), 실행(Run), 대기(Block), 종료 등의 프로세스 상태 정보.
– 프로그램 카운터(PC, Program Counter): 프로세스가 다음에 실행할 명령어의 주소.
– 프로세스 우선순위 정보.
– 프로세스가 적재된 기억 장치 부분을 가리키는 포인터.
– 프로세스에 할당된 자원을 가리키는 포인터.
– 처리기 레지스터 정보.
– CPU의 각종 레지스터 상태를 가리키는 포인터.
– 계정 정보: CPU 사용 시간. 프로세스 번호.
– 기억 장치 관리 정보.
– I/O 정보.
– 부모/자식 프로세스를 가리키는 포인터.

7. 문맥 교환(Context Switching)
 다중 프로그래밍(Multi Programming) 시스템에서 운영체제에 의하여 CPU가 할당되는 프로세스(Process)를 변경하기 위하여 현재 CPU가 사용하여 실행되고 있는 프로세스(Process)의 상태 정보를 저장하고, 앞으로 실행될 프로세스(Process)의 상태 정보를 설정한 다음에 CPU를 할당하여 실행되도록 하는 작업. 단, 멀티 테스킹(Multi Tasking)과는 다른 개념으로 멀티 테스킹(Multi Tasking)에서는 CPU가 여러 개의 프로그램 사이를 빠르게 전환하며 처리함으로써, 모든 프로그램들이 마치 동시에 실행되는 것처럼 보이게 하지만, 문맥 교환(Context Switching)에서는 CPU가 여러 프로그램 사이를 빠르게 전환하는 대신, 한번에 오직 하나의 프로그램만을 실행시킨다.

Ⅱ. 병행 프로세스
1. 병행 프로세스(Concurrent Process) 처리
가. 상호 배제(Mutual Exclusion)
 임계 구역(Critical Section)을 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 다른 프로세스가 현재 사용 중인 임계 구역(Critical Section)에 대하여 접근하려고 할 때 이를 금지하는 행위를 말한다.

나. 동기화(Synchronization)
 여러 개의 프로세스를 동시에 처리할 수 없기 때문에, 이들 프로세스에 대한 처리 순서를 결정하는 것을 말한다.

다. 임계 구역(Critical Section)
– 임계 구역(Critical Section)의 개념
다중 프로그래밍(Multi Programming) 기법에서 두 개 이상의 프로세스가 운영될 때 서로 공유하게 되는 자원을 말한다. 프로세스 간의 통신을 할 수 있는 매개 변수 역할을 할 수 도 있다.

– 임계 구역(Critical Section)의 원칙

  • 두 개 이상의 프로세스가 동시에 사용할 수 없다.
  • 순서를 지키면서 신속하게 사용한다.
  • 하나의 프로세스가 독점하게 해서는 안 된다.
  • 사용 중에 중단, 무한 반복되어서는 안 된다.

라. 세마포어(Semaphore)
– 세마포어(Semaphore)의 개념
 다이크스트라(E.J. Dijkstra)가 제안한 방법으로 반드시 상호 배제(Mutual Exclusion)의 원리가 지켜져야 하는 공유 영역에 대하여 각각의 프로세스들이 접근하기 위하여 사용되는 두 개의 연산 P – 임계 구역(Critical Section) 진입 – 와 V – 임계 구역(Critical Section) 해제 – 라는 연산을 통해서 프로세스 사이의 동기를 유지하고 상호 배제(Mutual Exclusion)의 원리를 보장하는 알고리즘을 말한다.

– 세마포어(Semaphore)의 종류

  • 이진 세마포어(Binary Semaphore): 세마포어 변수가 오직 ‘0’과 ‘1’값을 가지며 하나의 임계 구역(Critical Section)만을 상호 배제(Mutual Exclusion)하기 위한 알고리즘. 인터럽트 봉쇄, 엄격한 교대 TSL등이 있다.
  • 산술 세마포어(Counting Semaphore): 세마포어 변수가 ‘0’과 ‘양의 정수’를 값으로 가지며 임계 구역(Critical Section)을 여러 개 관리하기 위한 상호 배제(Mutual Exclusion) 알고리즘.

– 세마포어(Semaphore)의 특징

  • 상호 배제(Mutual Exclusion)의 원리를 보장하는데 사용된다.
  • 여러 개의 프로세스가 동시에 그 값을 수정하지 못한다.
  • 세마포어(Semaphore)에 대한 연산은 처리 중에 인터럽트(Interrupt) 되어서는 안 된다.
  • 세마포어(Semaphore)에 대한 연산은 소프트웨어나 하드웨어로 구현 가능하다.
  • 이진 세마포어(Binary Semaphore)는 오직 ‘0’과 ‘1’의 두 값을 가지며, 산술 세마포어(Counting Semaphore)는 ‘0’과 ‘양의 정수’를 값으로 가질 수 있다.
  • 세마포어(Semaphore) 알고리즘은 프로세스 사이의 동기를 유지하게 한다.
  • P 연산은 임계 구역을 사용하려는 프로세스들의 진입 여부를 결정하는 조작으로 대기(Wait) 동작이라 한다.
  • V 연산은 블록 큐에 대기 중인 프로세스를 깨우는 신호(Wake-Up)로서 시그널(Signal) 동작이라 한다.

마. 모니터(Monitor)
– 두 개 이상의 프로세스들이 특정한 공유 자원을 순차적으로 할당하는데 필요한 데이터 와 프로시저를 포함하는 병행성 구조.
– 모니터(Monitor) 내의 자원을 원하는 프로세스는 반드시 해당 모니터(Monitor)의 프로시저를 호출해야 한다.
– 모니터(Monitor) 외부의 프로세스는 모니터(Monitor) 내부의 데이터를 직접 액세스 할 수 없다.
– 자료 추상화와 정보 은폐(Information Hiding)의 개념을 기초적으로 사용한다.
– 스위치 개념을 사용하여 한 순간에 하나의 프로세스만이 모니터(Monitor)에 진입할 수 있다.
– 모니터(Monitor)에서 사용되는 연산은 대기(Wait)와 시그널(Signal)이 있다.
– 모니터(Monitor)의 경계에서 상호 배제(Mutual Exclusion)가 시행된다.

Ⅲ. 교착 상태
1. 교착 상태(Deadlock)의 정의
 다중 프로그래밍(Multi Programming) 시스템에서 복수의 프로세스(Process)가 수행할 수 없는 상태를 무한정 기다리고 있는 상태를 말한다. 두 개 이상의 프로세스가 하나의 자원을 공유하여 사용하고 있을 때, 서로가 사용 중인 자원을 요구하지만 요구를 영원히 들어줄 수 없는 상태를 말한다.

2. 교착 상태의 필요 조건(Deadlock Necessary Condition)
– 상호 배제(Mutual Exclusion) 조건
– 점유 대기(Hold & Wait) 조건
– 비선점(Non Preemption) 조건
– 환형 대기(Circular Wait) 조건

3. 교착 상태(Dead Lock) 해결 방안
가. 교착 상태의 예방(Deadlock Prevention)
– 교착 상태의 필요 조건(Deadlock Necessary Condition) 4가지 중 하나를 제거함으로써 절대로 교착 상태(Dead Lock)가 일어나지 않게 하는 것을 말한다.

– 교착 상태의 예방(Deadlock Prevention)의 종류

  • 상호 배제(Mutual Exclusion) 부정: 상호 배제를 하지 않는 시스템으로 구축한다. 공유 자원을 동시에 접근할 수도 있다.
  • 점유 대기(Hold & Wait) 부정: 각 프로세스는 한번에 자신에게 필요한 모든 자원을 요구해야 하며, 이 요구가 만족 되지 않으면 작업을 진행할 수 없다. 어떤 자원을 갖고 있는 프로세스가 더 이상 요구가 수용되지 않으면, 원래 갖고 있던 자원을 일단 반납하고 필요하다면 다시 그 자원이나 다른 자원을 요구해야 한다.
  • 비선점(Non Preemption) 부정: 언제든 실행 중인 프로세스나 공유 자원을 중단하거나 빼앗을 수 있게 한다.
  • 환형 대기(Circular Wait) 부정: 모든 자원들을 선형 순서(Linear Order)로 분류한다. 프로세스는 자신이 가지고 있는 자원의 앞 또는 뒤의 순서에 있는 자원들을 자유롭게 요청하게 하지 못하게 한다. 모든 프로세스에 각 자원 유형별로 할당 순서를 부여한다. 즉, 만일 한 프로세스가 주어진 유형의 자원을 할당 받았으면 그 프로세스는 순서에 따라 나중에 위치하는 유형의 자원만을 요구할 수 있게 한다.

나. 교착 상태의 회피(Deadlock Avoidance)
 프로세스가 자원을 요구할 때 시스템이 안전 상태를 유지할 수 있는 프로세스의 자원 요구만을 할당해 주는 방안으로 자원 분배를 교착 상태(Dead Lock)가 발생하지 않는 범위 내에서 하는 방안이다. 알고리즘에는 다이크스트라(Dijkstra)가 제안한 은행원 알고리즘(Banker’s Algorithm)이 있다.

다. 교착 상태의 탐지(Deadlock Detection)

라. 교착 상태의 회복(Recovery From Deadlock)
① 선점(Preemption)을 통한 교착 상태 회복(Recovery From Deadlock)

  • 우선순위가 낮은 프로세스의 자원을 선점하여 프로세스를 일시 중단시킨다.
  • 처리된 진행 상태가 적은 프로세스의 자원을 선점(Preemption)하여 프로세스를 일시 중단시킨다.
  • 자원을 적게 사용하고 있는 프로세스의 자원을 선점(Preemption)하여 프로세스를 일시 중단시킨다.

② 복구(Rollback)를 통한 교착 상태 회복(Recovery From Deadlock)
교착 상태(Dead Lock)가 발생하기 이전 상태로 복귀하여 다시 실행하는 방법이다.

③ 제거(Kill)을 통한 교착 상태 회복(Recovery From Deadlock)

  • 우선순위가 낮은 프로세스를 선택하여 제거
  • 처리된 진행 상태가 적은 프로세스를 선택하여 제거.
  • 자원을 적게 사용하고 있는 프로세스를 선택하여 제거.
  • 기아 상태나 문제가 있는 프로세스를 선택하여 제거.
  • 정상 수행이 불가능한 모든 프로세스를 제거하고 다시 시작.

Ⅳ. 스케줄링
1. 프로세스 스케줄링(Process Scheduling)의 목적
프로세스 스케줄링은 CPU나 자원을 효과적이며 생산성 있게 사용하기 위한 소프트웨어적 계획이다.

  • 모든 프로세스들에게 공정하게 배정해야 한다.
  • 단위 시간당 가능한 최대의 처리가 될 수 있도록 해야 한다.
  • 처리 응답 시간이 신속해야 한다.
  • 같은 종류의 작업은 거의 같은 시간과 비용으로 실행될 수 있어야 한다.
  • 오버헤드(Overhead)를 최소화해야 한다.
  • 시스템 내의 자원이 사용하지 않는 시간이 없도록 유지해야 한다.
  • 응답 시간과 자원의 활용 가느이 적절한 균형이 유지 되도록 해야 한다.
  • 프로세스가 무한정 기다리게 하는 것을 피해야 한다.
  • 프로세스의 상태를 파악하여 우선순위를 부여한다.
  • 중요 자원을 차지하고 있는 프로세스에게 서비스를 많이 제공해야 한다.
  • 부하가 많은 경우에 체증이 갑자기 발생하지 않도록 조절해야 한다.

2. 스케줄링 기준(Scheduling)

  • CPU 이용률(CPU Utilization): CPU를 쉬지 않고 몇 퍼센트(범위 40%~90%)를 이용하는가의 기준.
  • 처리율(Throughput): 단위 시간당 처리할 수 있는 CPU의 작업량.
  • 반환 시간(Turn Around Time): 작업을 지시하고 그 결과가 되돌아오는 시간.
  • 대기 시간(Waiting Time): 준비(Ready) 상태에서 대기하는 시간.
  • 응답 시간(Response Time): 입력에 대해 처음 반응하는 시간.

3. 비선점 스케줄링(Non Preemptive Scheduling)과 선점 스케줄링(Preemptive Scheduling)

  • 비선점 스케줄링(Non Preemptive Scheduling): CPU를 점유하고 있을 때에는 다른 프로세스가 현재 실행 중인 프로세스를 중단시킬 수 없으며 실행이 완료될 때까지 CPU를 독점하는 방식으로 이 방식에는 선입 선출(FIFO), SJF, HRN, 우선순위, 기한부(Deadline) 스케줄링(Scheduling) 방식 등이 있다. 비선점(Non Preemptive) 방식들은 모든 프로세스를 관리하는데 공정하다. 우선순위가 높은 작업들이 중간에 입력되어도 영향을 받지 않고 정해진 시간을 모두 사용하므로 응답 시간(Response Time)을 예측하기 어렵다.
  • 선점 스케줄링(Preemptive Scheduling): 하나의 프로세스가 CPU를 점유하고 있을 때에는 다른 프로세스가 현재 사용중인 프로세스를 중단 시키고 CPU를 차지할 수 있는 방식으로 이 방식에는 RR, SRT 등이 있다. 선점(Preemptive) 방식들은 높은 우선순위의 프로세스들이 긴급을 요할 때 유용하다. 또한 대화식 시분할 시스템에서도 선점(Preemptive)은 빠른 응답 시간(Response Time)을 유지하는데 매우 유용하다. 이러한 이유에서 응답 시간(Response Time)을 예측하기가 비선점(Non Preemptive) 보다 용이하다.
비선점(Non Preemptive) 선점(Preemptive)
프로세스가 한번 할당되면 빼앗을 수 없다. 프로세스를 빼앗을 수 있다.
일괄 처리(Batch Processing) 방식에 적당하다. 시분할 처리(Time-Sharing Processing) 방식에 적당하다.
대화형 시스템에 부적당. 대화형 시스템에 적당.
선입 선출(FIFO), SJF, HRN, 우선순위, 기한부(Deadline) RR, SRT, 다단계 피드백 큐(MFQ)

<표 1, 비선점(Non Preemptive)과 선점(Preemptive)의 비교>

4. 스케줄링 알고리즘(Scheduling Algorithm)
가. 비선점 – 선입 선출(FIFO, First Input First Output) or FCFS(First Come First Served)
– 알고리즘이 가장 간단하고 구현하기가 쉽다.
– 작업이 짧은 작업이나 중요한 작업을 오래 동안 기다리게 할 수 있다.
– 평균 반환 시간(Turn Around Time)이 길다.

나. 비선점 – SJF(Shortest Job First)
– 작업이 끝나기까지의 실행 시간 추정치가 가장 작은 작업을 먼저 실행시켜는 방식.
– 선입 선출(FIFO, First Input First Output)보다 평균 대기 시간(Turn Around Time)이 작지만, 긴 작업의 경우 선업 선출(FIFO, First Input First Output) 보다 더 크고 예측이 더욱 어렵다.
– 실행 시간이 많은 작업일 경우 무한 연기 현상이 발생될 수 있다.
– 무한 연기 현상을 방지하기 위해 에이징(Aging) 기법을 사용하여 해결한다.

용어 설명
– 에이징(Aging)
 무한 연기 현상이란 어떠한 시스템이든지, 자원 할당 스케줄링 및 CPU 스케줄링 결정에 의해서, 특정 프로세스가 무한정 기다리는 현상을 말한다. 이를 해결하기 위해서 자원이 할당되기를 오랜 시간 동안 기다린 프로세스에 대하여 기다린 시간에 비례하는 높은 우선순위를 부여하여 가까운 시간 안에 자원이 할당되도록 하는 기법을 말한다.
다. 비선점 – HRN(Highest Response Ratio Next)

– 우선순위 = (대기 시간(Waiting Time) + 서비스 시간) / 서비스 시간

라. 비선점 – 기한부(Deadline)
– 작업이 주어진 특별한 시간이나 만료 시간 안에 완료되도록 하는 기법이다.
– 프로세스들이 마감 시간 내에 처리되지 않으면 폐기되거나 처음부터 다시 실행해야 한다.
– 기한부 스케줄링에 필요한 집약적 자원 관리는 많은 오버헤드(Overhead)를 일으킬 수 있다.
– 동시에 다수의 기한부 작업이 수행되면 스케줄링은 매우 어려워진다.
– 사용자는 그 작업에 필요한 자원에 관한 정확한 정보를 시스템에 제시하여야 한다.

마. 선점 – RR(Round Robin)
– 시간 할당량이 크면 비선점의 선입 선출(FIFO, First Input First Output)와 동일하다.
– 시간 할당량이 작으면 문맥 교환(Text Switching) 수와 오버헤드(Overhead)가 커지게 된다.
– 적절한 응답 시간(Response Time)을 보장해주는 대화식 사용자와 동일한 시간을 사용하는 시분할 시스템에 효과적이다.

바. 선점 – SRT(Shortest Remaining Time)
– 작업이 끝나기까지 남아 있는 실행 시간의 추정치가 가장 작은 프로세스를 먼저 실행하는 방식이다.
– 서비스 받은 시간을 기록해야 하기 때문에 오버헤드(Overhead)가 증가한다.
– 평균 대기 시간(Waiting Time)과 대기 시간(Waiting Time)의 분산도 크다.
– 임계치(Threshold Value)를 사용한다.

사. 선점 – 다단계 피드백 큐(MFQ, Multilevel Feedback Queue)
– 선점 방식이다.
– 짧은 작업이나 I/O 위주의 작업에 우선권을 부여하기 위해 개발된 방식이다.
– 큐(Queue) – 대기 리스트 – 가 여러 개이며 우선순위가 있다.
– 각 큐(Queue)마다 시간 할당량(Quantum)이 존재하며, 낮은 큐(Quantum)일수록 시간 할당량은 커진다.
– 각각의 큐(Queue)들은 종속적으로 연결되어 있다.
– CPU를 시간 할당량만큼 사용한 프로세스는 낮은 큐(Queue)로 이동한다.
– 맨 마지막 단계의 큐(Queue)는 RR(Round Robin)을 사용한다.

아. 혼합 – 다단계 큐(MQ, Multilevel Queue)
– 선점, 비선점 방식이다.
– 대기 리스트 – 큐(Queue) – 를 특성 별로 여러 개 갖는다.
– 대기 리스트에 우선순위가 있다.
– 대기 리스트마다 독립적인 스케줄링을 갖는다.
– 대기 리스트 간에 프로세스 이동이 안 된다.
– 우선순위가 가장 높은 큐(Queue)에서는 비선점으로 사용된다.

참고 자료
正益社 – 전산학 개론
한올출판사 – C언어로 구성한 자료구조
가메출판사 – 정보처리기사 필기 7년간 기출문제 총정리
정보통신용어사전

Leave a Reply