Search
Duplicate

11-0. 응용 SW 기초 기술 활용

생성일
2023/07/16 15:09
태그
응용 SW 기초 기술 활용

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 환경에 접근할 수 있도록 서비스를 제공한다.
응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스를 제공한다.

ref)