1. 운영체제의 개념
•
컴퓨터 시스템의 자원들을 효율적으록 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
•
컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종
•
다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
•
운영체제는 프로세스, 기억장치, 주변 장치, 파일 등을 관리하는 기능을 수행한다.
•
종류 : Windows, UNIX, Linux, MacOS, MS-DOS emd
운영체제의 목적
•
처리능력의 향상, 사용 가능도 향상, 신뢰도 향상, 반환시간 단축
•
처리 능력 (Throughtput)
◦
일정 시간 내에 시스템이 처리하는 일의 양
•
반환 시간 (Turn Around Time)
◦
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
•
사용 가능도 (Availability)
◦
시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
•
신뢰도 (Reliability)
◦
시스템이 주어진 문제를 정확하게 해결하는 정도
운영체제의 기능
•
프로세서 (처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입출력 장치, 파일 및 정보 등의 자원을 관리한다.
•
자원을 효율적으로 관리하기 위해 자원의 스케쥴링 기능을 제공한다.
•
사용자와 시스템 간의 편리한 인터페이스를 제공한다.
•
시스템의 각종 하드웨어와 네트워크를 관리, 제어 한다.
•
데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공한다.
2. 운영체제의 종류
Windows
•
1990년대 마이크로소프트사가 개발한 운영체제
UNIX
•
1960년대 AT&T 벨 연구소, MIT, Gerneral Electronic이 공동 개발한 운영체제
•
시분할 시스템(TIme Sharing System)을 위해 설계된 대화식 운영체제
•
소스가 공개된 개방형 시스템 (Open System)
•
대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
•
Multi-User, Multi-Tasking 을 지원한다.
•
트리 구조의 파일 시스템을 갖는다.
UNIX 시스템의 구성
•
커널 (Kernel)
◦
하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.
◦
UNIX의 가장 핵심적인 부분
◦
프로세스(CPU 스케쥴링) 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행함.
•
쉘 (Shell)
◦
사용자의 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기
◦
시스템과 사용자 간의 인터페이스를 담당함
◦
Bourne Shell, C Shell, Korn Shell
•
유틸리티 프로그램 (Utility Program)
◦
일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용함
◦
DOS에서의 외부 명령어에 해당됨.
◦
에디터, 컴파일러, 인터프리터, 디버거 등
Linux
•
1991년 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
•
프로그램 소스코드가 무료로 공개되어 있기 떄문에 프로그래머가 원하는 기능을 추가할 수 있다.
•
다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능하다.
•
UNIX와 완벽하게 호환된다.
•
대부분의 특징이 UNIX와 동일하다.
MacOS
•
1980년대 애플사가 UNIX를 기반으로 개발한 운영체제
•
아이맥과 맥북 등 애플 사에서 생산하는 제품에서만 사용이 가능하다.
•
드라이버 설치 및 install 과 uninstall의 과정이 단순하다.
Android
•
구글사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
•
모든 코드가 공개된 개방형 소프트웨어
•
자바와 코틀린으로 애플리케이션을 작성한다.
•
스마트폰 등의 휴대용 장치에서 주로 사용된다.
iOS
•
애플사에서 개발한 유닉스 기반의 모바일 운영체제
3. 기억장치 관리
기억장치의 관리 전략
•
보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것
•
종류
◦
반입(Fetch) 전략
◦
배치(Placement) 전략
◦
교체(Replacement) 전략
반입(Fetch) 전략
•
보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
•
요구 반입 (Demand Fetch)
◦
실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
•
예상 반입 (Anticipatory Fetch)
◦
실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
배치(Placement) 전략
•
새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
•
최초 적합(First Fit)
◦
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 첫 번째 분할 영역에 배치시키는 방법
•
최적 적합(Best Fit)
◦
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
•
최악 적합(Worst Fit)
◦
프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
*단편화 : 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간
교체(Replacement) 전략
•
주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
•
FIFO, OPT, LRU, LFU, NUR, SCR 등
4. 주기억장치 할당 기법
주기억장치 할당
•
프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
•
주기억장치 할당 기법의 종류
◦
연속 할당 기법
▪
프로그램을 주기억장치에서 연속으로 할당하는 방법
▪
종류 : 단일 분할 할당 기법, 다중 분할 할당 기법
◦
분산 할당 기법
▪
프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
▪
종류 : 페이징 기법, 세그먼테이션 기법
단일 분할 할당 기법
•
주기억장치를 운영체제 영역과 사용자 영역으로 나어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
•
가장 단순한 기법, 초기의 운영체제에서 많이 사용하던 기법
•
운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용된다.
◦
경기 레지스터 (Boundary Register)
▪
사용자 영역에 있는 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 보호하는 레지스터
▪
사용자 영역이 시작되는 주소를 기억하고 있다.
•
프로그램의 크기가 작을 경우, 사용자 영역이 낭비될 수 있다.
•
오버레이 (Overlay) 기법
◦
주기억장치 보다 큰 사용자 프로그램을 실행하기 위한 기법
•
스와핑 (Swapping) 기법
◦
하나의 프로그램 전체를 주기억장치에 할당하여 사용하다가 필요에 따라 다른 프로그램과 교체하는 기법
다중 분할 할당 기법
•
고정 분할 할당 기법 = 정적 할당 기법
◦
프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고, 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법
•
가변 분할 할당 기법 = 동적 할당 기법
◦
주기억장치를 미리 분할해 놓지 않고, 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분리하는 기법
◦
고정 분할 할당 기법의 단편화를 줄이기 위해 사용됨
5. 가상기억장치 구현 기법
가상기억장치 (Virtual Memory)
•
보조기억장치의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법
•
프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리한다.
◦
블록 : 보조기억장치와 주기억장치 간에 전송되는 데이터의 최소 단위
•
주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.
•
블록 단위로 나누어 사용하므로, 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다.
페이징(Paging) 기법
•
가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법
•
프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 한다.
◦
일반적으로 페이지의 크기는 1~4KB 이다.
•
외부 단편화는 발생하지 않으나, 내부 단편화는 발생할 수 있다.
◦
페이지의 크기가 4KB이고, 사용할 프로그램이 17KB라면, 프로그램은 페이지 단위로 4KB씩 나누어지게 된다.
◦
이때, 마지막 페이지의 실제 용량은 1KB(17KB - 16KB)가 되고, 이것이 주기억장치에 적재되면 3KB의 내부 단편화가 발생된다.
•
주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 데이블 (Page Map Table)이 필요하다.
◦
주소 변환
▪
가상기억장치에 있는 프로그램이 주기억장치에 적재되어 실행될 때, 논리적인 가상주소를 물리적인 실기억주소로 변환하는 것
▪
주소 사상 또는 주소 매핑(Mapping)이라고도 한다.
▪
이때, 연속적인 가상 주소가 반드시 연속적인 실기억주소로 변환되지 않아도 되는데, 이를 인위적 연속성(Artificial Contiguity)라고 한다.
•
페이지 맵 테이블 사용으로 비용이 증가하고, 처리 속도가 감소한다.
세그멘테이션 (Segmentation) 기법
•
가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후, 주기억장치에 적재시켜 실행시키는 기법
•
프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.
•
세그멘테이션 기법을 이용하는 궁극적인 이유는 기억 공간을 절약하기 위해서이다.
•
주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블 (Segment Map Table)이 필요하다.
•
내부 단편환느 발생하지 않으나, 외부 단편화는 발생할 수 있다.
6. 페이지 교체 알고리즘
페이지 교체 알고리즘
•
페이지 부재(Page Fault)가 발생하면, 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이라면 어떤 페이지 프레임을 선택하여 교체해야 할 것인지를 결정하는 기법
•
OPT, FIFO, LRU, LFU, NUR, SCR 등
OPT (OPTional replacment, 최적 교체)
•
앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
•
벨레이디가 제안
•
페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
FIFO (First In First Out)
•
각 페이지가 주기억장치에 적재딜 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
•
이해하기 쉽고, 프로그래밍 설계가 간단하다.
LRU (Least Recently Used)
•
최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
•
각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래전에 사용된 페이지를 교체한다.
◦
계수기 (Counter)
▪
각 페이지 별로 존재하는 논리적 시계 (Logical Clock)
▪
해당 페이지가 사용될 때마다 0으로 클리어 시킨 후, 시간을 증가시켜서 시간이 가장 오래된 페이지를 교체한다.
LFU (Least Frequently Used)
•
사용 빈도가 가장 적은 페이지를 교체하는 기법
•
활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용된다.
LUR (Least Used Recently)
•
NRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법
•
최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.
•
최근의 사용 여부를 확인하기 위해서 각 페이지마다 2개의 비트, 즉 참조 비트(Reference Bit)와 변형 비트(Modeified Bit)가 사용된다.
◦
참조 비트
▪
페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1로 지정됨.
◦
변형 비트
▪
페이지 내용이 변경되지 않았을 때는 0, 변경되었을 떄는 1로 지정됨.
•
다음과 같이 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정된다.
SCR (Second Chance Replacement, 2차 기회 교체)
•
가장 오랫동안 주기억장치에 있던 페이지 중, 자주 사용되는 페이지의 교체를 방지하기 위한 기법
•
FIFO 기법의 단점을 보완하는데 사용된다.
7. 가상기억장치 기타 관리 사항
페이지 크기
•
페이징 기법을 사용하려면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다르다.
•
페이지 크기가 작을 경우
◦
페이지 단편화가 감소되고, 1개의 페이지를 주기억장치로 이동시키는 시간이 줄어든다.
◦
불필요한 내용이 주기억장치에 적재될 확률이 적으므로, 효율적인 워킹 셋을 유지할 수 있다.
◦
페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어진다.
◦
디스크 접근 횟수가 많아져서 전체적인 입출력 시간은 늘어난다.
•
페이지 크기가 클 경우
◦
페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라진다.
◦
디스크 접근 횟수가 줄어들어 전체적인 입출력의 효율성이 증가된다.
◦
페이지 단편화가 증가되고, 1개의 페이지를 주기억장치로 이동시키는 시간이 늘어난다.
Locality
•
Locality(국부성, 지역성 구역성, 국소성)은 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 함조하는 성질이 있다는 이론이다.
•
스레싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다.
•
가상기억장치 관리와 캐시 메모리 시스템의 이론적인 근거이다.
•
데닝 교수에 의해 Locality의 개념이 증명되었다.
•
종류
◦
시간 구역성 (Temporal Locality)
▪
프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
▪
한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음
◦
공간 구역성 (Spatial Locality)
▪
프로세스 실행 시, 일정 위치의 페이지를 집중적으로 액세스하는 현상
▪
어느 하나의 페이지를 참조하면, 그 근처의 페이지를 계속 참조할 가능성이 높음
워킹 셋 (Working Set)
•
프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
•
데닝이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용한다.
•
자주 참조되는 워킹 셋을 주기억장치에 상주시키으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정된다.
스레싱 (Thrashing)
•
프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
•
다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중에 자주 페이지 부재(Page Fault)가 발생함으로써 나타나며, 전체 시스템의 성능도 저하된다.
◦
페이지 부재 (Page Fault)
▪
프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상
▪
페이지 부재가 일어나는 횟수를 페이지 부재 빈도(PFF)라고 한다.
•
다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU 이용률은 급격히 감소하게 된다.
◦
다중 프로그래밍의 정도
▪
얼마나 많은 프로그램이 동시에 수행되는가를 나타내는 것
▪
다중 프로그래밍의 정도를 높인다는 것은 동시에 수행하는 프로그램의 수를 늘리는 것을 의미한다.
8. 프로세스의 개요
프로세스 (Process)
•
일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미한다.
•
프로세스는 다음과 같이 여러가지로 정의할 수 있다.
◦
PCB를 가진 프로그램
◦
실기억장치에 저장된 프로그램
◦
프로세서가 할당된 실체로서, 디스패치가 가능한 단위
◦
프로시저가 활동중인 것
▪
프로시저 : 한 프로그램은 여러 개의 작은 프로그램으로 분할될 수 있는데, 이 때 분할된 작은 프로그램
◦
비동기적 행위를 일으키는 주체
◦
지정된 결과를 얻기 위한 일련의 계통적 동작
◦
목적 또는 결과에 따라 발생되는 사건의 과정
◦
운영체제가 관리하는 실행 단위
PCB (Process Control Block, 프로세스 제어 블록)
•
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
•
각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.
•
PCB에 저장되어 있는 정보
◦
프로세스의 현재 상태
◦
포인터 (Pointer)
▪
부모 프로세스에 대한 포인터
▪
자식 프로세스에 대한 포인터
▪
프로세스가 위치한 메모리에 대한 포인터
▪
할당된 자원에 대한 포인터
◦
프로세스 고유 식별자
◦
스케쥴링 및 프로세스의 우선순위
◦
CPU 레지스터 정보
◦
입출력 상태 정보
◦
계정 정보
프로세스 상태 전이
•
프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것
•
프로세스의 상태는 다음과 같이 상태 전이도로 표시할 수 있다.
프로세스 상태 전이 관련 용어
•
Dispatch
◦
준비 상태에서 대가히고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
•
Wake Up
◦
입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
•
Spooling
◦
입출력 장치의 공유 및 상대적으로 느린 입출력 장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력 장치에 보내지 않고, 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
•
교통량 제어기 (Traffic Controller)
◦
프로세스의 상태에 대한 조사와 통보 담당
스레드 (Thread)
•
시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위 또는 프로세스 내에서의 작업 단위로 사용된다.
•
하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라 한다.
•
프로세스의 일부 특성을 갖고 있기 때문에 경량(Light Weight) 프로세스 라고도 한다.
•
스레드 기반 시스템에서 스레드는 독립적인 스케쥴링의 최소 단위로서 프로세스의 역할을 담당한다.
9. 스케쥴링
스케쥴링 (Scheduling)
•
프로세스가 생성되어 실행이 될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
•
프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케쥴링 과정을 거치게 된다.
•
종류
◦
장기 스케줄링
▪
어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
◦
중기 스케줄링
▪
어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
◦
단기 스케줄링
▪
프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
스케줄링의 목적
•
공정성
•
처리율 증가
•
CPU 이용률 증가
•
우선순위 제도
•
오버헤드 최소화
•
응답시간 최소화
•
반환시간 최소화
•
대기시간 최소화
•
균형 있는 자원의 사용
•
무한 연기 회피
비선점 (Non-Preemptive) 스케줄링
•
이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
•
프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
•
프로세스 응답 시간의 예측이 용이하다.
•
일괄 처리 방식에 적합하다
•
FCFS, SJF, 우선순위, HRN, 기한부 등
선점 (Preemptive) 스케줄링
•
하나의 프로세스가 CPU를 할당 받아 실행하고 있을 때, 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링
•
우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
•
주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용된다.
•
많은 오버헤드를 초래한다.
•
Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐
10. 주요 스케줄링 알고리즘
FCFS (First Come First Service, 선입선출) = FIFO (First In First Out)
•
준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
•
가장 간단한 알고리즘
1.
실행 시간을 이용하여 다음과 같이 각 프로세스의 대기 시간과 반환 시간을 구한다.
•
대기 시간 : 프로세스가 대기한 시간으로, 바로 앞 프로세스까지의 진행 시간으로 계산
•
반환 시간 : 프로세스의 대기시간과 실행시간의 합
2.
실행 시간, 대기 시간, 반환 시간의 평균은 ‘각 프로세스 시간의 합 / 프로세스의 개수’ 를 이용한다.
SJF (Shortest Job First, 단기 작업 우선)
•
준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법
•
가장 적은 평균 대기 시간을 제공하는 최적 알고리즘
HRN (Highest Response-ratio Next)
•
대기 시간과 서비스(실행) 시간을 이용하는 기법
•
실행 시간이 긴 프로세스에 불리는 SJF 기법을 보완하기 위한 것
•
우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위가 부여된다.
•
우선순위 계산식
11. 환경 변수 (Environment Variable)
•
시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
•
변수명과 값으로 구성된다.
•
시스템의 기본 정보를 저장한다.
•
자식 프로세스에 상속된다.
•
시스템 전반에 걸쳐 적용되는 시스템 환경 변수와 사용자 계정 내에서만 적용되는 사용자 환경 변수로 구분된다.
◦
시스템 환경 변수는 적용되는 범위가 모듈이나 실행 프로세스 내인 경우 내부 환경 변수, 모듈 외인 경우 외부 환경 변수로 구분한다.
Windows의 주요 환경 변수
UNIX / Linux의 주요 환경 변수
12. 운영체제 기본 명령어
Windows 기본 명령어
DIR의 옵션
•
/P : 목록을 한 화면 단위로 표시
•
/W : 목록을 가로로 나열하여 표시
•
/O : 지정한 정렬 방식으로 파일 목록 표시
•
/S : 하위 디렉터리의 정보까지 표시
•
/A : 지정한 속성이 설정된 파일 목록 표시
속성의 종류
•
R : 읽기 전용 속성
•
A : 저장/백업 속성
•
S : 시스템 파일 속성
•
H : 숨김 파일
UNIX / Linux 기본 명령어
13. 인터넷
인터넷
•
TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망
•
인터넷에 연결된 모든 컴퓨터는 고유한 IP 주소를 갖는다.
IP 주소 (Internet Protocol Address)
•
인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
•
8비트씩 4부분, 총 32비트로 구성되어 있다.
•
IP 주소는 네트워크 부분의 길이에 따라 다음과 같이 A 클래스에서 E 클래스까지 총 5단계로 구성되어 있다.
서브네팅 (Subnetting)
•
할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것
•
4바이트의 IP 주소 중, 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크(Subnet Mask)라고 하며, 이를 변경하여 네트워크 주소를 여러개로 분할하여 사용한다.
•
서브넷 마스크는 각 클래스마다 다르게 사용된다.
IPv6 (Internet Protocol version 6)
•
현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발되었다.
•
128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 있다.
•
IPv4에 비해 자료 전송 속도가 빠르다.
•
인증성 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결할 수 있다.
◦
인증성 : 사용자의 식별과 접근 권한 검증
◦
기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
◦
무결성 : 시스템 내의 정보는 인가된 사용자만 수정 가능
•
주소의 확장성, 융통성, 연동성이 뛰어나다.
•
실시간 흐름 제어로 향상된 멀티미디어 기능을 지원한다.
•
패킷 크기를 확장할 수 있으므로, 패킷 크기에 제한이 없다.
•
기본 헤더 뒤에 확장 헤더를 더함으로써 더욱 다양한 정보의 저장이 가능해져 네트워크 기능 확장이 용이하다.
◦
헤더 (Header)
▪
패킷 전송 시 제일 앞에 배치되는 영역
▪
IP 주소의 버전, 인증 정보, 패킷에 대한 정보, 출발 주소, 도착 주소 등의 다양한 정보를 포함한다.
•
IPv4와 호환성이 뛰어나다.
IPv6의 구성
•
16비트씩 8부분, 총 128비트로 구성되어 있다.
•
각 부분을 16진수로 표현하고, 콜론(:)으로 구분한다.
•
다음과 같이 3가지 주소 체계로 나누어진다.
◦
유니캐스트 (Unicast)
▪
단일 송신자와 단일 수신자 간의 통신 (일대일 통신에 사용)
◦
멀티캐스트 (Multicast)
▪
단일 송신자와 다중 수신자 간의 통신 (일대다 통신에 사용)
◦
애니캐스트 (Anycast)
▪
단일 송신자와 가장 가까이에 있는 단일 수신자 간의 통신 (일대일 통신에 사용)
도메인 네임 (Domain Name)
•
숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현하는 것
•
호스트 컴퓨터 이름, 소속 기관 이름, 소속 기관의 종류, 소속 국가명 순으로 구성되며, 왼쪽에서 오른쪽으로 갈수록 상위 도메인을 의미한다.
•
문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템을 DNS(Domain Name System)라고 하며, 이런 역할을 하는 서버를 DNS 서버라고 한다.
14. OSI 참조 모델
OSI (Open System Interconnection) 참조 모델
•
다른 시스템 간의 원할한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)
•
OSI 7계층은 1~3 계층을 하위 계층, 4~7 계층을 상위 계층이라고 한다.
◦
하위 계층 : 물리 계층 → 데이터링크 계층 → 네트워크 계층
◦
상위 계층 : 전송 계층 → 세션 계충 → 표현 계층 → 응용 계층
물리 계층 (Physical Layer)
•
전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의한다.
•
물리적 전송 매체와 전송 신호 방식을 정의한다.
•
RS-232C, X-21 등의 표준이 있다.
•
리피터 , 허브
데이터 링크 계층 (DataLink Layer)
•
2개의 인접한 개방 시스템들 간에 신뢰성 있고, 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정과 유지 및 종료를 담당한다.
•
송신 측과 수신 측의 속도 차이 해결을 위한 흐름 제어 기능을 한다.
•
프레임의 시작과 끝을 구분하기 위한 프레임의 동기화 기능을 한다.
•
오류의 검출과 회복을 위한 오류 제어 기능을 한다.
•
프레임의 순서적 전송을 위한 순서 제어 기능을 한다.
•
HDLC, LAPB, LLC, MAC, LAPD, PPP 등의 표준이 있다.
•
랜카드, 브리지 ,스위치
네트워크 계층 (Network Layer, 망 계층)
•
개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 한다.
•
네트워크 연결을 설정, 유지, 해제하는 기능을 한다.
•
경로 설정 (Routing), 데이터 교환 및 중계, 트래픽 제어, 패킷 정보 전송을 수행한다.
•
X.25, IP 등의 표준이 있다.
•
라우터
전송 계층 (Transport Layer)
•
논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템(End-to-End) 간에 투명한 데이터 전송을 가능하게 한다.
•
OSI 7계층 중 하위 3계층과 상위 3계층의 인터페이스를 담당한다.
•
종단 시스템 (End-to-End) 간의 전송 연결 설정, 데이터 전송, 연결 해제 기능을 한다.
•
주소 설정, 다중화(분할 및 재조립), 오류 제어, 흐름 제어를 수행한다.
•
TCP, UDP 등의 표준이 있다.
•
게이트웨이
세션 계층 (Session Layer)
•
송수신 간의 관련성을 유지하고 대화 제어를 담당한다.
•
대화(회화) 구성 및 동기 제어, 데이터 교환 관리 기능을 한다.
•
동기점은 오류가 있는 데이터의 회복을 위해 사용하는 것으로, 소동기점과 대동기점이 있다.
◦
소동기점 (Minor Synchronization)
▪
하나의 대화 단위 내에서 데이터의 전달을 제어하는 역할을 하며, 수신 측으로부터 확인 신호(ACK)를 받지 않음
◦
대동기점 (Major Synchronization)
▪
전송하는 각 데이터의 처음과 끝에 사용하여 전송하는 데이터 단위를 대화 단위로 구성하는 역할을 하며, 수신 측으로부터 반드시 전송한 데이터에 대한 확인 신호(ACK)를 받음
표현 계층 (Presentation Layer)
•
응용 계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 한다.
•
서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층
•
코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식(포맷) 변환, 문맥 관리 기능을 한다.
응용 계층 (Application Layer)
•
사용자(응용 프로그램)가 OSI 환경에 접근할 수 있도록 서비스를 제공한다.
•
응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공한다.