부가 제목 추가
지난 시간에는 가상 기억장치에 대해 배웠습니다. 가상기억장치는 보조기억 장치를 마치 주기억 장치처럼 사용하는 것을 말합니다. 고정 분할 방식의 페이징(내부단편화), 가변 분할 방식의 세그멘테이션(외부단편화)을 활용합니다. 지역성(공간,시간), 워킹셋, 스레싱에 대한 내용과 반입(요구, 예상), 배치(최초, 최적, 최악), 교체방식방식들에 대한 내용은 개념들을 알아두셔야합니다.
정보처리기사에서 많이 출제된다기보다 하나씩은 꼭 나오는 파트이니, 프로그래밍 언어를 익히시면서 한번씩 확인해보시면 좋습니다.
프로세스란 실행 중인 프로그램을 말합니다.프로그램은 보조장치에 저장되어 있는 소프트웨어를 말합니다. 프로그램을 실행하면 주기억 장치 RAM으로 상주를 시키는 로더를 하게 됩니다. CPU가 프로세스들을 처리하게 됩니다. 여러개의 프로세스들을 어떻게 처리할지에 대해 배우게 됩니다.
목차
프로세스란?
보조기억 장치의 프로그램이 주기억 장치로 로딩되면 이를 프로세스라고 합니다. 작업 관리자에서 볼 수 있으며, 다르게 말하면 프로그램에 대한 컴퓨터의 활성화된 인스턴스를 의미합니다.
즉, 현재 실행중인 프로그램을 이야기합니다.
실행 가능한 프로세스를 제어블록(PCB, Process Control Block)에 가진 프로그램
스레드란?
하나의 프로세서 안에 있는 작은 단위
스레드(thread)는 프로세스 내에서 실행되는 흐름의 단위를 가리키는 용어입니다.
카카오톡이란 프로그램이 실행 중이면, 각각 톡방은 스레드라고 볼 수 있습니다., Slack에서는 직관적으로 스레드란 말을 쓰기도 합니다.
한 프로세스에는 하나 이상의 스레드가 존재할 수 있습니다. 스레드는 프로세스의 코드, 데이터 및 시스템 자원을 공유하면서 실행됩니다.
이는 여러 스레드가 동시에 실행되어 프로세스의 작업을 병렬로 처리할 수 있음을 의미합니다.
스레드 공유자원
영역 | 코드 | 데이터 | 힙 | 스텍 |
역할 | 코드 | 정적, 전역 | 지역 | 동적 |
공유여부 | 공유 | 공유 | 공유 | 비공유 각가의 스레드가 가짐 |
스레드 특징
그냥 읽고 지나가셔도 되는 부분입니다.
- 경량성
- 스레드는 프로세스 내의 리소스를 공유하기 때문에 프로세스를 생성하는 것보다 생성 및 관리 비용이 낮습니다.
- 공유 메모리
- 스레드는 프로세스 내의 메모리 공간을 공유하므로 데이터를 쉽게 공유할 수 있습니다.
- 작업 분할
- 스레드는 여러 작업을 동시에 실행할 수 있어 병렬 처리 및 성능 향상에 유리합니다.
- 응답성 향상
- 다중 스레드 프로그램은 한 스레드가 블록되어도 다른 스레드가 계속 실행되므로 응답성이 향상될 수 있습니다.
- 프로그램의 일부분이 중단되어도 전체 프로그램의 실행은 계속될 수 있습니다.
스레드 분류
- 사용자 수준의 스레드(User-level Thread)
- 사용자 수준의 스레드는 운영 체제가 아닌 응용 프로그램에서 관리됩니다. 스레드 스케줄링, 동기화 및 관리는 응용 프로그램에 의해 제어됩니다.
- 커널 수준의 스레드(Kernel-level Thread)
- 커널 수준의 스레드는 운영 체제에 의해 직접 관리됩니다. 스레드 스케줄링, 동기화 및 관리는 운영 체제에 의해 수행됩니다.
프로세스와 스레드 차이
항목 | 프로세스 | 스레드 |
정의 | 운영 체제에서 실행되는 프로그램의 인스턴스로, 독립적인 메모리 영역을 가짐 | 프로세스 내에서 실행되는 실행 흐름의 단위로, 공유된 메모리를 사용함 |
메모리 및 자원 공유 | 독립적인 주소 공간을 가짐 | 해당 프로세스의 메모리 및 자원을 직접 공유 |
생성 및 관리 비용 | 상당한 비용이 들며, 운영 체제에 의해 독립적으로 관리됨 | 상대적으로 낮은 비용이 들며, 하나의 프로세스 내에서 관리됨 |
병렬성 및 동시성 | 여러 프로세스가 동시에 실행될 수 있음 | 해당 프로세스의 자원을 공유하면서 병렬로 실행될 수 있음 |
문맥 전환 | 상태 및 주소 공간을 저장하고 복원해야 함 | 상태만 저장하고 복원하면 됨 |
메모리상의 프로세스 영역
영역 | 설명 |
코드 영역 | 프로그램의 실행 코드가 저장되는 영역으로, CPU가 명령어를 수행하기 위해 필요한 명령어들이 저장됩니다. 읽기 전용 메모리이며, 프로그램의 코드 부분이 위치합니다. 함수, 제어문, 상수 등이 지정 |
데이터 영역 | 전역 변수와 정적 변수가 할당되는 영역으로, 프로그램의 전역 변수 및 정적 변수가 저장됩니다. 프로그램이 시작될 때 할당되고, 프로그램이 종료될 때까지 유지됩니다. 전역변수와 정적변수(Static) |
스택 영역 | 함수의 호출과 관련된 지역 변수 및 매개변수가 저장되는 영역으로, 함수가 호출될 때마다 생성되고 함수의 실행이 종료될 때 사라집니다. 후입선출(LIFO) 구조를 가지고 있습니다. 지역변수와 함수의 매개변수 각각의 스레드 |
힙 영역 | 동적으로 할당된 메모리가 저장되는 영역으로, 프로그램 실행 중에 동적으로 메모리를 할당하고 해제할 수 있는 영역입니다. 프로그래머가 직접 관리해야 합니다. 동적할당 |
프로세스 전이상태(중요)
항목 | 상태 | 설명 |
상태 | 생성 (New) |
프로세스가 생성되고, 운영 체제에 의해 초기화됨 |
상태 | 준비 (Ready) |
프로세스가 실행 준비를 마치고 CPU를 할당받을 준비가 되었음을 나타냄 |
상태 | 대기 (Wait) |
프로세스가 CPU나 입출력 장치와 같은 자원을 기다리고 있는 상태 |
상태 | 실행 (Run) |
프로세스가 CPU에서 명령어를 실행하고 있는 상태 |
상태 | 종료(Exit) | 프로세스의 실행이 완료되어 메모리에서 해제됨 |
전이 과정 | Despatch | 디스패치는 프로세스를 준비 상태에서 실행 상태로 옮기는 것을 의미합니다 . 일반적으로 CPU 스케줄러에 의해 선택된 프로세스가 준비 상태에서 실행 상태로 전환될 때 발생합니다. 디스패치는 프로세스가 CPU를 할당받아 실행될 때, CPU의 제어권이 해당 프로세스에게 넘어가는 과정을 말합니다. |
전이 과정 | Wakeup | 대기 상태에 있는 프로세스를 활성화하는 과정을 말합니다. 프로세스가 대기 상태에서 특정 이벤트를 기다리는 경우, 해당 이벤트가 발생하여 프로세스를 깨워서 실행 가능한 상태로 전환됩니다. 일반적으로 입출력 작업이 완료되었을 때, 해당 프로세스를 깨워서 실행할 수 있도록 합니다. |
전이 과정 | time run out | 실행에서 준비상태로 옮기는 것 특정 작업이나 연산이 일정 시간 내에 완료되지 않을 때 발생하는 현상을 가리킵니다. 이는 주로 네트워크 통신이나 데이터베이스 조회와 같은 작업에서 사용됩니다. |
전이 과정 | Spooling | 스풀링은 병렬 처리를 위해 입출력 장치와 CPU 사이에서 데이터를 일시적으로 저장하는 기술 일반적으로 입출력 장치의 속도가 CPU의 처리 속도보다 느리기 때문에, 스풀러(Spooler)라는 별도의 소프트웨어를 사용하여 입출력 작업을 처리합니다. 스풀링은 프린터 출력과 같은 입출력 장치의 병렬 처리를 효율적으로 관리하기 위해 사용됩니다. |
프로세스 상태 전이 절차
- 제출 (Submission): 프로세스가 시스템에 제출되었지만 아직 실행 준비가 되지 않은 상태입니다.
- 접수 (Acceptance): 시스템이 프로세스를 접수하고, 프로세스를 실행할 준비를 시작하는 단계입니다.
- Spool 공간에 저장
- 준비 (Ready): CPU를 할당 받을 수 있는 상태로, 실행될 준비가 된 프로세스를 의미합니다.
- 할당을 기다리는 상태
- 실행 (Execution): CPU를 할당 받아 실제로 코드가 실행되는 상태입니다.
- 할당받아 처리
- 대기 (Waiting): 프로세스가 어떤 이벤트를 기다리는 동안 대기하는 상태입니다. 예를 들어 입출력 작업이 완료되기를 기다리는 등의 상황입니다.
- I/O처리가 필요하여 대기 중인 상태
- 종료 (Termination): 프로세스의 실행이 완료되어 종료되었음을 나타내는 상태입니다.
PCB
운영체제가 프로세스를 관리하기 위해 대한 정보를 저장해 놓는 공간
각 프로세스가 생성될 때마다 고유한 PCB가 생성되고, 프로세스가 완료되면 해당 PCB는 제거
교체될 때의 정보를 저장하거나 다음 프로세스를 실행하기위해 필요함
- PCB에 저장되는 정보
- 프로세스의 현재 사애
- 포인터
- 프로세스 고유 식별자
- 스케줄링, 프로세스 우선순위
- CPU 레지스터 정보
- 주기억장치 관리 정보
- I/O 상태 정보
- 계정 정보
문맥교환(Context Switching)이란?
문맥교환(Context Switching)은 CPU가 현재 실행 중인 프로세스에서 다른 프로세스로 전환되는 과정을 말합니다.
이 과정에서는 현재 실행 중인 프로세스의 상태를 저장하고, 대기 중인 프로세스의 상태를 불러와 실행합니다.
PCB가 있기 떄문에 가능한 과정
현재 실행 중인 프로세스의 상태(Context)는 제어블록(PCB)에 저장되고 새로운 프로세스의 상태는 PCB에서 읽어 CPU 레지스터에 적재된다.
- 프로세스 스케줄링: CPU가 다른 프로세스로 전환될 때 발생합니다.
- 인터럽트 발생: 하드웨어 인터럽트나 소프트웨어 인터럽트(예: 타이머 인터럽트)가 발생하여 CPU가 인터럽트 서비스 루틴을 실행할 때 발생합니다.
- 시스템 호출: 프로세스가 시스템 호출을 통해 커널 모드로 전환되거나 사용자 모드로 복귀할 때 발생합니다.
문맥교환은 현재 실행 중인 프로세스의 레지스터 값, 프로그램 카운터(PC), 스택 포인터(SP) 등의 상태를 저장하고, 다음에 실행될 프로세스의 상태를 복원하는 작업을 수행합니다. 이러한 과정은 일반적으로 오버헤드가 발생하므로, 효율적인 문맥교환 알고리즘이 필요합니다.
프로세스 스케줄링이란?
메모리에 올라온 프로세스들 중 어느 프로세스를 먼저 처리할지 순서를 정하는 것
프로세스 스케줄링은 컴퓨터 시스템에서 실행할 프로세스를 관리하고, 이를 어떤 순서로 CPU에 할당할지 결정하는 작업을 말합니다. 시스템에는 여러 프로세스가 동시에 실행될 수 있지만, CPU는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 스케줄링이 필요합니다.
스케줄링의 목적
- 공평성(Fairness): 모든 프로세스에 대해 공정한 실행 시간을 제공하여 각 프로세스가 공평하게 CPU 자원을 이용할 수 있도록 합니다.
- 효율성(Efficiency): 시스템 자원을 효율적으로 활용하여 CPU, 메모리, 입출력 장치 등을 최대한 빠르고 효과적으로 활용합니다.
- 안정성(Stability): 시스템이 안정적으로 동작(주요 프로세스)하고 프로세스들이 적절히 관리되어 예상 가능한 시스템 동작을 유지합니다.
- 반응 시간 보장(Guaranteed Response Time): 대화형 시스템에서는 사용자의 입력에 빠르게 반응하여 즉각적인 결과를 제공합니다. 스케줄링 알고리즘이 이를 보장해야 합니다.
- 무한 연기 방지(Prevention of Indefinite Postponement): 우선 순위가 낮은 프로세스가 항상 대기 상태로 머무르지 않도록, 스케줄링 알고리즘이 무한 연기를 방지합니다.
- 모든 프로세스에게 실행 기회를 부여하여 시스템의 정상적인 작동을 보장합니다.
- 기아현상
스케줄링 성능척도
프로세서 차원
성능 척도 | 설명 |
CPU 사용률 | CPU가 놀지 않고 활용되는 비율을 나타냅니다. |
처리량 | 단위 시간당 처리되는 프로세스의 수를 의미합니다. |
프로세스 차원
성능 척도 | 설명 |
응답시간 | 사용자 요청에 대한 응답이 시작될 때까지의 시간을 의미합니다. |
반환시간 | 프로세스가 시스템에 진입하여 종료될 때까지 걸리는 전체 시간을 의미합니다. |
대기시간 | 준비 큐나 대기 큐에서 대기하는 시간을 의미합니다. |
스케줄링 기법
모든 프로세스를 바로바로 처리해줄 수 없기 때문에 어떤 식으로 관리할지를 정하는 것이 스케줄링입니다.
프로세스를 교환하면서 처리하다보면, 주기억장치에 올라오지 않은 프로세스를 보조기억장치로부터 올리기 위해 페이징이 필요해지는 데, 이 시간이 길어지면 기아현상이 발생합니다.
이 기아현상을 줄이기 위해 에이징 기법을 사용하게 됩니다.
이를 앞으로 공부할 선점형 스케줄링 , 비선점형 스케줄링의 기법들 중 기아현상이 빈번히 발생하는 기법들로 구분해볼 수 있습니다.
기아현상과 에이징 기법
- 기아현상 (Thrashing)
- 기아현상은 시스템에서 지속적으로 페이지 부재(Page Fault)가 발생하여 대부분의 CPU 시간이 페이지 교체 작업에 사용되는 상황을 말합니다.
- 이러한 상황은 페이지 부재가 지속적으로 발생하여 실제 작업보다 페이지 교체 작업이 더 많은 시간을 차지할 때 발생합니다.
- 일반적으로 이는 시스템에 할당된 물리적 메모리 양이 부족하여 발생하며, 이를 해결하기 위해 페이지 교체 알고리즘이나 메모리 관리 기법을 개선해야 합니다.
- SJF, 우선순위, SRT, MLQ
- 에이징 기법 (Aging)
- 기아현상을 해결하기 위한 기법
- 에이징 기법은 페이지 교체 알고리즘에서 사용되는 기법 중 하나로, 최근에 참조되지 않은 페이지를 대상으로 선택하는 데 사용됩니다.
- 이 기법은 각 페이지가 메모리에 머무른 시간을 추적하고, 오래된 페이지에 대해 우선순위를 높여줍니다.
- 즉, 페이지가 오래된 만큼 해당 페이지가 교체될 가능성이 높아지는 것을 고려하여 페이지 교체를 수행합니다.
- 에이징 기법은 간단하면서도 효율적인 방법으로, 예를 들어 LRU(Least Recently Used) 알고리즘의 구현에 사용됩니다.
- HRN, MLFQ
스케줄링 기법과 기아현상이 발생하는 이유
선정 방식 | 스케줄링 기법 | 기아현상 발생 여부 |
설명 |
선점 | Round Robin (RR) |
X | 각 프로세스에게 동일한 할당량 부여 |
SRT (Shortest Remaining Time) |
O | 실행시간이 늦은 건 기아 현상 | |
다단계 큐 (MLQ) |
O | 우선 순위가 높은 큐가 반복될 수 있기 때문에 기아현상 | |
다단계 피드백 큐 (MFBQ) |
X | 에이징 기법 도입으로 발생하지 않음 | |
비선점 | FCFS (First Come First Out) |
X | |
SJF (Shortest Job First) |
O | 실행 시간이 긴 프로세스가 짧은 프로세스에게 계속해서 밀리게 됨 실행시간이 늦은 건 기아 현상 |
|
HRN (Highest Response Ratio Next) |
X | 에이징 기법 도입으로 발생하지 않음 | |
우선순위 (Priority) |
O | 우선순위가 낮은 프로세스가 항상 우선순위가 높은 프로세스에 밀려 대기 | |
기한부 (Deadline) |
X |
선점형 스케줄링이란?
선점형 스케줄링(Preemptive Scheduling)은 운영 체제에서 사용되는 스케줄링 방식 중 하나로, 현재 실행 중인 프로세스가 다른 프로세스에 의해 중단될 수 있는 방식을 의미합니다.
즉, 운영 체제가 CPU를 현재 실행 중인 프로세스로부터 강제로 빼앗아 다른 프로세스에 할당할 수 있는 기능을 갖추고 있습니다.
1. Round Robin(RR)
시간 단위(Time Quantum/Slice)를 정해서 프로세스를 순서대로 CPU를 할당하는 방식
컴퓨터 자원을 사용할 수 있느 기회를 프로세스들에게 공정하게 부여하기 위한 방법
하나씩 시간 슬라이스 할당
프로세스 | 도착시간 | 실행시간 | 반환시간 | 평균반환시간 |
P1 | 0 | 8 | 20 | 17.67 |
P2 | 1 | 4 | 10 | |
P3 | 2 | 9 | 23 |
2. SRT(Shortest Remaining Time)
비선점 스케줄링인 SJF 기법을 선점 형태로 변경한 기법
CPU 점유 시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 방식
비선점의 SJF랑 유사함.
프로세스 | 진행 시간 |
도착 시간 |
실행 시간 |
수행 시간 |
남은 실행시간 |
프로세스 교체 이유 |
반환 시간 |
평균반환 시간 |
P1 | 0 | 0 | 8 | 2 | 6 | P1 (시작) | 17-0=17 | 28/4=7 |
P2 | 2 | 2 | 4 | 2 | 2 | P2 실행시간 4초와 비교 P2실행 |
7-2=5 | |
P3 | 4 | 4 | 1 | 1 | 0 | 실행 종료 P3 수행 완료 |
5-4=1 | |
P4 | 5 | 6 | 4 | 남은 프로세스 중 비교 가장 짧은 시간은 2초가 남은 P2 |
11-6=5 | |||
P2 | 5 | 4 | 2 | 2 | 0 | 가장 짧은 실행시간을 가진 P2 수행 P2 수행 완료(7초) |
||
P4 | 7 | 7 | 4 | 4 | 0 | 다시 P4가 가장 빠른지 확인 남은실행시간은 P1이 6초 P4가 4초로 P4가 실행 P4 수행 완료 |
||
P1 | 11 | 11 | 6 | 6 | 0 | 마지막으로 P! 수행 P1 수행 완료 |
||
완료시간 | 17 |
3. 다단계 큐(MLQ, Multi-Level Queue)
프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 주비 상태 큐를 사용하는 기법
특정 그룹의 준비 상태 큐에 있는 프로세스를 실행하는 도중이라도 상위 준비 상태 큐에 프로세스가 들어오면 상위 프로세스에게 CPU를 할당
아래 준비 상태 큐 리스트에서 편집 프로세스가 먼저 CPU에서 실행되고 있어도, 시스템 프로세스가 접근하면 바로 비켜주는 방식입니다.
FCFS 순서로 CPU에서 실행
적응기법 (Adaptive mechanism) 적용
준비 상태 큐 우선 순위 예시 (1번이 가장 높음, 4번이 가장 낮음)
- 시스템 프로세스
- 대화형 프로세스
- 편집 프로세스
- 일괄처리 프로세스
4. 다단계 피드백 큐(MUlti-Level Feedback Queue)
프로세스 생성시 가장 높은 우선순위 준비 큐에 등록되며 등록된 프로세스는 FCFS 순서로 CPU를 할당받아 실행되고, 할당된 사간이 끝나면 다음 단계의 준비큐로 이동단계가 내려갈수록 시간 할당량이 증가하고, 가장 하위 큐는 Round Robin 방식으로 운영하는 방식
비선점형 스케줄링이란?
비선점형 스케줄링(Non-preemptive Scheduling)은 프로세스가 CPU를 점유하고 있는 동안 다른 프로세스가 강제로 CPU를 빼앗지 않는 스케줄링 방식입니다.
이 방식에서는 한 프로세스가 실행을 완료하거나 대기 상태로 들어가야만 CPU가 다음 프로세스에게 할당됩니다.
강제로 뻇지 않아 오버헤드가 적지만 처리율이 떨어짐
1. FCFS(First Come First Serve)
[선입선출] 먼저 도착한 프로세스를 먼저 처리하는 스케줄링 알고리즘
작업의 중요성을 따지지 않기 때문에 우선순위의 작업들이 뒤로 밀릴 수 있음
실행시간이 긴 프로세스가 먼저 도착하게 되면, 효율성이 떨어지는 현상 발생
최대평균반환시간 - 실행시간이 긴순서로 배열후 반환시간 계산
최소평균반환시간 - 실행기산이 짧은 순서로 배열후 반환시간 계산
프로세스 | 실행시간 |
p1 | 9 |
p2 | 3 |
p3 | 12 |
최대 평균 반환 시간 | 최소 평균 반환시간 | |
1번 | 12 | 3 |
2번 | 9 | 9 |
3번 | 3 | 12 |
평균반환시간 | (12+21+24)/3=19 | (3+11+12)/3=13 |
2. SJF(Shortest Job First)
짧은 실행시간을 가진 프로세스부터 먼저 CPU에 할당될 수 있게 해주는 방식
기아현상이 발생할 수 있음
프로세스 | 실행시간 | 수행순서 | 대기시간 | 반환시간 |
P1 | 6 | 2 | 3 | 두번째 실행으로 3초 대기 후 6초실행 9초 |
P2 | 3 | 1 | 0 | 첫번째 실행으로 실행시간 3초 3초 |
P3 | 8 | 4 | 16 | 네번째 실행으로 16초 대기 후 8초 수행 24초 |
P4 | 7 | 3 | 9 | 세번째 실행으로 9초 대기 후 7초 수행 16초 |
평균 | 7 | (9+3+24+16)/4=13 |
3. HRN(Highest Response ratio Next) 대실실
SJF(짧은 실행시간 먼저) 기법에서 비교적 실행시간이 긴 프로세스가 가질 수 있는 불리함을 보완한 스케줄링 방식
우선순위를 계산하여 순서를 부여
공식 : 우선순위 = (대기시간+실행시간)/실행시간
프로세스 | 도착시간 | 실행시간 | SJF 활용 대기시간 |
HRN 계산 | 우선순위 |
p1 | 0 | 8 | 4 | (4+8)/4=3 | 3 |
p2 | 2 | 4 | 0 | (0+4)/4=1 | 1 |
p3 | 4 | 9 | 8 | (8+9)/9=1.88 | 2 |
4. 우선순위(Priority)
프로세스마다 우선순위를 부여하여 높은 우선순위를 가진 프로세스에게 먼저 자원을 할당
우선순위가 낮을 경우 기아상태가 일어날 수 있음
5. 기한부(Deadline)
프로세스에게 일정한 시간을 주어 그 시간 안에 완료하도록 하는 기법
주어진 시간 내에 완료되지 못한 경우, 해당 프로세스는 제거되거나 처음부터 다시 실행되어야 하므로 부담이 매우 큰 기법
'정보처리기사' 카테고리의 다른 글
6. 디스크 스케줄링 & 환경변수 - 3과목 운영체제 (1) | 2024.04.07 |
---|---|
[정처기 실기] 5. 병행프로세스 - 3과목 운영체제 (2) | 2024.04.07 |
3. 가상기억 장치 - 3과목 소프트웨어 (0) | 2024.04.06 |
[정보처리기사] 2. 메모리 관리 - 3과목 운영체제 (0) | 2024.04.06 |
1. 운영체제 기초 - 3과목 운영체제 (0) | 2024.04.05 |
댓글