본문 바로가기

기타/공부하기

[정보보안기사] SECTION 13 운영체제 주요 구성기술

SECTION 13 운영체제 주요 구성기술

1. 프로세스 관리

프로세스 개념

실행 중인 프로그램

구성 : 함수의 매개 변수, 프로세스 스택 - 임시적인 자료 저장(복귀 주소, 로컬 변수 등), 데이터 섹션 – 전역변수, 동적으로 할당된 메모리 힙

프로세스 상태

보류(pending) : 작업이 일시 중지되거나 디스크에 수록된 상태. New 라고도 함

준비(ready) : CPU가 사용할 수 있는 상태, 즉 CPU를 할당받을 수 있는 상태로 CPU가 자신을 처리해 주기를 기다림

실행(running) : CPU를 차지한 상태, CPU에 의해 수행되고 있는 상태

대기(blocked) : CPU를 차지하고 있다가 입출력처리와 같은 사건이 발생하면, CPU를 양도하기 입출력 처리가 완료될 때 까지 대기 큐에서 대기 하고 있는 상태

완료(Terminated) : CPU를 할당 받아 주어진 시간 내에 완전히 수행을 종료한 상태

프로세스 상태 전이

디스패치(Dispatch) : 준비상태 → 실행상태

-준비상태의 프로세스 중 우선순위가 가장 노은 프로세스를 선정하여 CPU를 할당

할당시간 초과(Time Run out) : 실행상태 → 준비상태

-CPU의 지정된 할당 시간을 모두 사용하였음에도 완료되지 못한 프로세스는 다시 준비 상태로 돌아감

대기(Block) : 실행상태 → 대기상태

-실행 중인 프로세스가 입출력 명령을 만나면 인터럽트가 발생하여 CPU를 양도하고 스스로 대기 상태로 전환

깨움(Wake up) : 대기상태 → 준비상태

-입출력 완료를 기다리가 입출력이 완료 되면, 준비상태로 전환

프로세스 제어 블록(PCB)

OS가 프로세스를 관리하는데 필요한 모든 정보를 유지하는 자료구조 테이블

프로세스가 생성할 때 만들어 짐

모든 프로세스는 각각 고유한 프로세스 디스크립터(Process descriptor, PCB의 다른말)을 가짐

OS가 CPU를 다른 프로세스에 넘겨 주고자 할 때, 프로세스의 모든 정보를 PCB에 저장하고 다시 실행할 때 보관된 PCB의 정보를 활용

PCB에 포함된 정보

-프로세스 상태

-프로그램 카운터 : 다음에 실행할 명령어 주소

-CPU 레지스터

-CPU 스케줄링 정보 : 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수 등을 포함

-메모리 관리 정보

-회계(accounting) 정보 : CPU 사용시간, 경과 시간, 시간 제한, 계정번호, 프로세스 번호 등

-입출력 상태 : 할당된 입출력 장치와 열린 파일 목록 등

프로세스 간 통신(IPC, Interprocess Communication)

독립 프로세스와 병행 프로세스

-독립프로세스 : 프로세스가 실행 중인 다른 프로세스에 영향을 주거나 받지 않는 프로세스

-병행(협력적인) 프로세스 : 프로세스가 실행 중인 다른 프로세스에게 영향을 주거나 받는 프로세스

공유 메모리 방법

-협력 프로세스에 의해 공유되는 메모리 영역을 구축

-협력 프로세스들은 공유 영역에 데이터를 읽고 씀으로서 정보를 교환

메시지 전달

-협력 프로세스 사이에 교환되는 메시지를 통하여 통신

클라이언트 서버 환경에서 통신

소켓

-IP주소와 포트번호를 이용하여 통신

파이프(Pipes)

-두 프로세스가 통신할 수 있게 하는 전달자

지명 파이프(Named Pipes)

2. 스레드

스레드(Threads) 개념

프로세스 내에서 실행 제어만 분리한 흐름의 단위

일반적으로 한 프로그램은 하나의 스레드를 가지고 있으나, 경우에 따라 다수의 스레드를 가질 수 도 있음

스레드와 프로세스의 차이

프로세스는 OS로부터 자원을 할당받은 작업의 단위이고, 스레드는 프로세스가 할당받은 자원을 실행하는 단위임

스레드는 프로세스 보다 작은 단위 임

스레드는 자원 할당에는 관여하지 않고, 프로세서 스케줄링의 단위로서 사용됨

다중 스레드

동시에 여러개의 스레드를 갖는 형태

장점

-빠른 응답성

-자원 공유(공유 메모리)

-경제성

-다중 처리기 구조의 활용

3. CPU 스케줄링

CPU 스케줄링 개념

CPU 자원을 언제 어느프로세스에게 배당할 것인지 결정하는 작업

스케줄링 기준

CPU이용률(Utilization)과 처리량(Throughput)을 최대화

-처리량 : 단위 시간당 완료되는 프로세스의 개수

총 처리시간(Turnaround time), 대기시간, 응답시간을 최소화

-총처리시간 : 프로세스의 제출시간과 완료시간의 간격

-대기시간 : 프로세스가 준비큐에서 대기하면서 보낸 시간의 합

-응답시간 : 대화식 시스템에서 사용

프로세스 스케줄링 분류

선점 스케줄링

-한 프로세스가 CPU를 차지하고 있을 때 다른 프로세스가 현재 프로세스를 중지시키고 CPU를 차지하는 기법

-RR, SRT, MLQ, MFQ

비선점 스케줄링

-한 프로세스가 CPU를 할당 받으면 다른 프로세스는 그 CPU를 뺏을 수 없는 기법

-FIFO, SJF, HRN

프로세스 스케줄링 알고리즘

FIFO(First Come First Out)

-먼저 요청한 프로세스가 먼저 처리 되는 방식

SJF(Shortest job first)

-가장 짧은 CPU 처리시간을 가진 프로세스가 먼저 처리되는 방식

-긴 처리시간을 가진 프로세스는 무한정 대기할 수 있음

HRN(Highest Response Ratio Next)

-(대기시간 + 서비스 받을 시간) / 서비스 받을 시간 으로 계산한 방법

-무한정 대기하는 것을 보안하기 위해서 만들어짐

RR(Round Robin)

-시간할당량을 두어서, 일정 시간이 지나면 CPU 자원을 다른 프로세스에게 양도하는 방식

-시간의 크기에 따라 매우 많은 문맥 교환을 하거나 FIFO와 동일하게 됨

SRT(Shortest Remaining Time)

-SJF와 같이 가장 짧은 소요시간이 드는 프로세스를 먼저 수행하는 방식

-단, 시간할당량을 두어서 일정시간이 니가면 CPU 자원을 놓고 대기큐로 돌아감

다단계 큐(MLQ, Multi Level Queue)

-프로세스는 메모리 크기, 프로세스 우선순위, 프로세스 유형 등 프로세스의 특성에 따라 한 개의 큐에 영구적으로 할당

-각 5개의 큐(시스템 프로세스, 대화형 프로세스, 대화형 편집 프로세스, 일괄처리 프로세스, 학생프로세스)는 자신의 스케줄링 알고리즘을 갖음

다단계 피드백 큐(MFQ)

-입출력 위주와 CPU 위주인 프로세스의 특성에 따라 서로 다른 타임 슬라이스를 부여

-큐 사이를 이동하는 기법

-RR방식으로 처음 프로세스가 들어오면 높은 우선 순위에 할당하고, 점차 낮은 우선 순위를 부여하여 단계 n에 이르러 완료하는 방식

-CPU 사용시간이 짧은 입출력 중신의 프로세스와 대화형 프로세스가 높은 우선 순위에서 실행

-계산 위주의 작업은 낮은 단계의 큐에 머무르면서 충분한 시간동안 CPU를 할당 받음

4. 프로세스 동기화

기본개념

임계영역

-하나의 프로세스가 수정 가능한 공유 자원을 액세스 하고 있을 때, 그 프로세스에 의해 참조되는 다른 프로그램의 부분

-하나의 프로세스가 공유 데이터에 접근하면 다른 프로세스는 그 공유 데이터에 접근하면 안됨

-특정 프로세스가 독점할 수 없으며, 입계구역에 대한 진입을 요청하면 일정 시간애에 진입을 허락해야함

상호배제

-한 프로세스가 공유 기억장치나 공유 파일을 사용하고 있을 때, 다른 프로세스가 사용하지 못하도록 배제시키는 방법

경쟁조건

-2개 이상의 프로세스가 공유 메모리에 읽기/쓰기를 할 때 어떤 프로세스를 먼저 실행시키는지 결정하는 방법

상호 배제 기법

세마포어

-세마포어의 S 는 정수 값을 가지는 변수로서, 공유자원에 접근하기 위해서는 S를 얻어야함

-한 프로세스가 S를 변경하는 동안에 다른 프로세스가 동시에 S 값을 변경해서는 안된다는 원칙

-연산 P : 입계 구역에 들어가기 전에 수행(Wait). S를 얻는 행위로 S가 0과 같지 않으면 대기큐에 추가

-연산 V : 임계 구역에 나올 때 수행. S를 반납하는 행위로 한 개 이상의 프로세스가 대기 중이면 한 개의 프로세스만 진행

모니터

-모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호풀해야 하는 방법

-모니터 내부는 정보의 은폐 기법임??

정보은폐 : 현재 모듈 설계를 다른 계층의 모듈로부터 보이지 않게 하는 것

불필요한 정보를 감추고, 계층마다 인터페이스가 명확해 짐

시스템의 유연성, 이해성 증가, 모듈 독립성도 높아짐

- 모니터 외부에서 임계영역에 집입할 때 Wait 연산을 수행하여 대기 하고, 임계영역을 사용한 후 벗어 날 때 Signal 연산을 수행하여 사용이 끝났다는 것을 알림

교착상태

다중 프로그래밍에서 아무리 기다려도 결코 일어나지 않을 사건을 기다리는 상태

둘 이상의 서로 다른 프로세스가 자신이 요구한 자원을 할당 받아 점유하고 있으면서, 상호간에 상대방 프로세스에 할당되어 있는 자원을 요구하는 경우 발생

교착상태의 4가지 필요조건

상호배제 : 프로세스가 자원을 배타적으로 점유하고 있어, 다른 프로세스가 자원을 사용할 수 없게 함

점유와 대기 : 최소한 하나의 자원을 점유하고 있는 프로세스가 존재해야 하며, 이 프로셋는 다른 프로세스에 할당된 자원을 추가로 점유하기 위해 대기

비선점 자원 : 점유한 프로세스로부터 벗어나지 못함

환형대기 : 프로세스와 자원이 원형을 이루며, 각 프로세스가 자신에게 할당된 자원을 가지면서 상대방 프로세스의 자원을 상호 요청하는 경우

5. 메모리 관리

메모리 관리 개요

기억장치의 어느 부분이 사용 중인지 아닌지 여부를 조사하고, 프로세스가 요구할 때 마다 기억장치를 할당하고 사용이 끝나면 회수

스와핑(Swapping)

프로세스가 실행 중에 메모리(주기억장치)에서 예비 저장장치(가상기억장치)로 내보내지거나 메모리로 돌아오는 것

모든 프로세스의 물리 주소 공간 크기의 실제 물리 메모리 크기보다 큰 경우에도 사용

메모리 할당

고정분할

-메모리를 똑같은 고정된 크기로 분할

-다중 프로그래밍 정도 : 한 프로세스가 가지고 있는 분할 개수

가변 분할

-메모리의 어떤 부분이 사용되고, 어떤 부분이 사용되지 않는가를 파악할 수 있는 테이블을 유지

-각 프로세스가 메모리를 얼마나 요구하며, 사용가능한 메모리 공간이 어디에 얼마나 있는지 고려하여 공간을 할당

메모리 관리 정책

반입정책

-언제 가져올 것인가를 결정하는 문제

-요구 반입 정책 : 어떤 프로그램이나 자료가 참조되는 시점에 옮기는 기법

-예상 반입 정책 : 현 프로그램 수행 중에 앞으로 요구될 가능성이 큰 자료 또는 프로그램을 예상하여 미리 옮기는 방법

배치 정책

-어디에 위치시킬 것인가 결정하는 정책

-최초 적합 : 첫 번째 사용 가능한 공간 할당

-최적 적합 : 사용 가능한 공간들 중 가장 작은 공간에 할당

-최악 적합 : 사용 가능한 공간 들 중 가장 큰 공간에 할당

교체 정책

-어떤 프로그램이나 자료를 주기억 장치에서 저거 할 것인가를 결정하는 정책

-페이지 부재가 발생하면, 제거할 페이지를 선택하는 정책

페이지 교체 기법

선입선출(FIFO)

-먼저 올라와서 오래된 페이지를 교체

최적 교체

-최적의 페이지를 교체하는 방식

-모순의 발생으로 사용하지 않음

LRU(Least Recently Used)

-가장 널리 사용하는 방법

-페이지마다 카운터를 두어 현 시점에서 가장 오랫동안 사용되지 않은 페이지를 제거

-블러왔던 시간을 기록해야 하여 시간 오버헤드가 발생, 실제로 구현이 어려움

2차 기회 알고리즘(SCR, Second Chance Replacement)

-FIFO 방식에서 LRU 결합

-불러왔던 시간이 아닌 참조 비트를 두는 방법으로, 프로세스가 수행되면서 참조한 페이지의 비트를 변경

-참조비트가 0이면서, 가장 오래된 페이지를 교체하는 방식

NUR(Not Used Recently)

-LRU처럼 가장 오래 사용되지 않은 페이지를 교체하면서, LRU의 단점인 시간 오버헤드를 적게 하는 방식

-참조비트와 변경비트를 둠

-프로세스가 쑤행되면서 참조하거나 변경한 페이지의 비트를 변경하는 방식

-참조비트 0 과 변경비트 0 인 페이지 중에서 교체하는 방식

계수기반 페이지 교체

-페이지를 참조할 때 마다 계수하는 기법

-LFU : 참조횟수가 가장 작은 페이지를 교체하는 방식

-MFU : 가장 작은 참조횟수를 가진 페이지가 가장 최근에 참조된 것이라는 판단에 근거

스레싱과 워킹세트

스레싱(Thrashing)

-너무 자주 페이지 교체가 일어나는 현상

-프로세스의 처리시간보다 페이지 교체 시간이 더 많아 지는 현상

페이지 부재 빈도(PFF, Page –Fault Frequency)

구역성(Locality, 지역성)

-하나의 기억장소가 참조되면, 그 근처의 기억장소가 계속 참조될 가능성이 높다는 것

워킹세트(Working Set)

-실행 중인 프로세스가 일정 시간동안 참조하는 페이지이의 집합

6. 가상 기억장치

기본 개념

프로그램, 데이터, 스택의 결합된 크기가 이용할 수 있는 물리적인 기억장치를 초과 하는 경우 사용

정기적으로 실행되는 프로그램의 일부는 1차 주기억장치에 유지하고, 나머지는 2차 가장기억장치에 유지

동작원리

가상기억공간과 실기억 공간을 연결하는 주소 매핑 과정이 필요

논리 어드레스 공간을 블록으로 나누어 놓고, 실제 주기억 장치에는 용량에 맞는 블록만 로드 함

가상기억 장치의 분류

구현 방법에 따라 : 페이징(고정블록), 세그멘테이션(가변블록), 혼용기법

사상표 색인을 찾은 방법에 따라 : 집접 사상 방법, 연관 사상 방법, 혼용기법

7. 세그멘테이션

개념

8. 저장장치 관리

ㅇㅁㄴㅇㄹ