● 컴파일러(Compiler) 언어
- 컴파일러는 번역가 같은 작업을 함. 번역가가 문서 전체를 번역해서 넘겨주듯이 프로그램 전체 line을 처음부터 끝까지 해독해 object code로 만든 후에 실행함
- C, C++, COBOL, Ada, FORTRAN, PASCAL 등과 같은 언어가 컴파일러를 사용하는 언어
● 인터프리터(Interpreter) 언어
- 인터프리터는 통역사와 같은 작업을 함. 프로그램 line 단위로 한줄씩 해석하고 바로 실행함
- JavaScript, BASIC, LISP 등이 인터프리터 방식의 언어
● 스크립트 언어
- 프로그래밍 언어의 한 종류로, 하나의 응용 소프트웨어를 제어하기 위한 용도로 쓰이는 언어. 즉 Script 언어란 소스 코드를 Compile하지 않고도 실행할 수 있는 프로그래밍 언어
- C나 Visual Basic, JAVA 같은 경우는 작성한 소스를 컴파일러를 통해 기계어 코드로 변경해야 사용자가 실행할 수 있는 실행 파일이 얻어지는데, 스크립트 언어는 별도의 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행할 수 있음
- 스크립트 언어는 컴파일러 언어와 달리 인터프리터를 사용해서 코드 한줄 한줄을 즉시 해석하고 실행함. 인터프리터 방식의 언어를 보통 스크립트 언어라고 부름
- JavaScript, ActionScript, AutoHotKey, JSP, Perl, PHP, Python, Lua, Ruby, VBS 등이 대표적인 스크립트 언어
● C언어의 변수 선언 규칙
- 영문과 숫자를 혼용 가능하며 첫 문자는 영문이어야 함
- 변수 제일 앞이나 중간에 _(Under bar) 사용 가능
- int, float, double 등 C 라이브러리에서 미리 선언된 단어는 변수사용 불가
● Java 접근제한자
- private : 클래스를 선언하고, 그 클래스를 구성하는 객체에 대해 외부에서는 사용이 불가하고 해당 클래스에서만 접근 가능
- public : 클래스를 선언하고, 그 클래스를 구성하는 객체에 대해 외부에서 사용 가능
- protected : 클래스를 선언하고, 그 클래스를 구성하는 객체에 대해 동일 패키지 내에서만 접근이 가능
● 비트 논리 연산자
A = 0101 1100, B = 1100 1010 일 때
& | 논리곱(AND) | A&B → 0100 1000 |
| | 논리합(AND) | A|B → 1101 1110 |
~ | 부정(1의 보수) | ~A → 1010 0011 |
^ | Exclusive OR | A^B → 1001 0110 |
● 시프트 연산자
A = 0101 1100 일 때
<< | 좌측으로 이동 | A << 3 → 1110 0000 |
>> | 우측으로 이동 | A >> 3 → 0000 1011 |
● 연산코드(OP Code) & 오퍼랜드(Operand)
- OP Code는 명령어 등 연산자가 위치하며, Operand는 기억장치의 주소, 레지스터 번호, 사용할 데이터 등이 위치함
- 명령어는 주소필드의 개수에 따라 3주소, 2주소, 1주소, 0주소로 구분 가능
- 1주소 명령어는 누산기를 이용하여 명령어 처리
● 명령어의 구조
명령어(Instruction)는 데이터를 처리하기 위한 프로그램의 기본으로 기계어 표현에 의한 연산 및 기타 동작을 지시함
OP-Code (5bit) |
Operand (23bit) | ||
Mode (1bit) | Register (2bit) | Address (20bit) |
Operation 수는 2^(OP-Code수)
● 반도체 기억소자
ROM (Read Only Memory) |
저장된 명령어나 데이터를 단지 읽기만 할 수 있는 기억장치 전원공급이 중단되어도 저장된 데이터는 지워지지 않고 유지됨 |
PLA (Programmable Logic Array) |
AND 와 OR 연산이 가능한 프로그램이 가능한 반도체 소자 PROM(Programmable ROM)의 일종 |
Shift register | CPU의 ALU(산술논리 연산장치)내에 존재하는 고속의 기억 장치 데이터의 비트들을 왼쪽 또는 오른쪽으로 이동시키는 기능 수행 ex) 관련 명령어 : SHR, SHL |
RAM (Random Access Memory) |
크기가 작고 신뢰성이 높으며, 성능이 우수, 소비전력이 적음 RAM은 대부분 컴퓨터에서 주기억장치로 사용함 휘발성 기억장치로 전원 공급이 중지되면 저장된 데이터가 삭제됨 |
LSI (Large Scale Intergration) |
다수의 집적회로(IC)를 1장의 기판에 상호배선한 대규모 집적회로 회로의 수가 1만개 이상인 초대용량 집적회로를 VLSI라 함 |
● 레지스터
- 처리중인 데이터나 처리 결과를 임시 보관하는 기능을 하며 산술 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU 내부의 초고속 기억장치
PC (Program Counter) |
다음에 인출할 명령어의 주소를 가지고 있는 레지스터 |
MAR (Memory Address Register) |
메모리 주소를 일시적으로 저장하는데 사용되는 레지스터 |
MBR (Memory Buffer Register) |
기억장치에 쓰여질 데이터 혹은 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터 |
IR (Instruction Register) |
가장 최근에 인출된 명령어 코드가 저장되어 있는 레지스터 |
AC (Accumulator) |
데이터나 연산결과를 일시적으로 저장하는 레지스터 |
● 주요 레지스터의 필요 bit 수 계산하는 방법
- PC(프로그램 카운터)는 다음에 인출할 명령어의 메모리 주소가 일시적으로 저장되는 레지스터로 메모리 주소를 표현하기 위해서는 MAR과 동일한 비트 수가 필요함
- MAR(메모리 주소 레지스터)은 현재 수행되는 명령어의 주소가 일시적으로 저장되는 레지스터로 2^n개의 워드의 주소를 표현하기 위해서 n비트가 필요함
- MBR(메모리 버퍼 레지스터)은 기억장치를 출입하는 데이터가 일시적으로 저장되는 레지스터로 워드 단위로 데이터를 입출력하므로 m비트의 워드 단위가 필요함
ex) 기억장치가 1024word로 구성되고 각 word는 16bit일 때
→ PC bit 수 = 10 / MAR bit 수 = 10 / MBR bit 수 = 16
레지스터 동작 절차 :
> ex)
MAR ← MBR (addr) = MBR에 저장되어있는 주소 번지를 MAR에 이동
MBR ← M( MAR ), AC ← 0 = MAR이 지시하는 주기억장치의 주소 번지에서 데이터를 읽어온 후 MBR에 이동, AC(누산기는 초기화)
AC ← AC + MBR = AC로 MBR에 저장되어있는 데이터를 이동
● 프로세스의 주 상태(Major State) 종류
인출 (Fetch cycle) |
주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계 명령어의 operand가 간접주소일 경우 : Indirect cycle 명령어의 operand가 직접주소일 경우 : Execute cycle |
간접 (Indirect cycle) |
명령어의 operand가 간접주소 지정이 된 경우 유효주소를 계산하기 위해 주기억장치에 접근하는 단계 |
실행 (Execute cycle) |
명령어 코드를 해독결과에 따라 필요한 연산들을 수행 |
인터럽트 (Interrupt cycle) |
인터럽트 발생시 인터럽트 처리를 하고 완료되면 Fetch로 진행 |
● 명령어 수행과정 (Instruction cycle)
- 명령어 사이클은 인출(IF) - 해독(ID) - 실행 (IE) - 저장(WB) 순서
명령어 인출 | IF: Instruction Fetch stage 명령어를 기억장치에 접근하여 인출함 |
명령어 해독 | ID: Instruction Decoding stage 인출된 명령어를 해석함 |
명령어 실행 | IE: Instruction Execution stage 해석된 결과를 수행함 |
데이터 저장 | WB: Write Back stage 수행된 결과를 저장함 |
● 마이크로 오퍼레이션
- 명령어를 수행하기 위해 CPU내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작
- 마이크로 오퍼레이션은 레지스터에 저장된 데이터에 의해 이루어지는 동작
- 한개의 명령어는 여러개의 마이크로 오퍼레이션이 동작되어 실행됨
마이크로프로그램 제어기 :
- 마이크로 오퍼레이션의 순서를 결정하기 위하여 신호를 발생하는 제어장치
- 명령어의 주소를 결정하는데 사용하는 정보는 인스트럭션 레지스터(IR), CPU의 상태 레지스터, 마이크로 인스트럭션에 나타난 주소
마이크로 명령어 기능 :
- 제어기능 : JMP(jump 명령)
- 연산기능 : ADD(Addition 명령), ROL(Rotate Left 명령), CLC(Clear Carry 명령) 등
● RAM
임의접근 기억장치(Random Access Memory)의 종류
- 중앙처리장치와 보조기억장치의 처리속도 차이를 극복하기 위해서 보조기억장치보다 처리속도가 빠른 RAM을 중간에 위치시켜 처리속도 차이를 극복함
- 임의접근이 가능한 기억장치로는 자기 드럼, 자기 코어, 자기 디스크 등이 있음
- 자기 테이프는 순차적인 접근을 하는 대표적인 보조기억장치
○ DRAM(Dynamic RAM) :
- 2진 정보를 충전기에 공급되는 전하의 형태로 보관
- 전력 소비가 적고 단일 메모리 칩 내에 더 많은 정보를 저장할 수 있음
- 상대적으로 소비전력이 적으며 대용량 메모리 제조에 적합함
○ SRAM(Static RAM) :
- 주로 2진 정보를 저장하는 내부 회로가 플립플롭으로 구성됨
- 저장된 정보는 전원이 공급되는 동안에 그대로 보존됨
- 사용하기 쉽고 읽기와 쓰기동작 사이클이 DRAM보다 짧아 캐시메모리로 사용됨
● 인터럽트
- 프로그램 실행 중 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작
인터럽트 처리 절차 :
- 인터럽트가 발생하면, 인터럽트를 받은 장치는 현재 자신의 상태를 PCB(Process Control Block)라는 자료구조에 기억시켜두고 인터럽트 처리
- 인터럽트 처리루틴(IPR)을 수행한 후, 인터럽트 처리시 보존시켰던 상태를 제어상태 레지스터에 복구
인터럽트 요청(IRQ) | Interrupt ReQuest, CPU에 인터럽트를 요청하는 신호 CPU에게 인터럽트 요청시 CPU가 각 장치를 구분할 수 있는 고유한 IRQ 존재 |
인터럽트 처리루틴(IPR) | Interrupt Process Routine, 인터럽트 발생 원인을 찾아 ISR 호출 |
인터럽트 서비스 루틴(ISR) | Interrupt Service Routine, 인터럽트에 대한 실체 처리를 담당 |
트랩(Trap) | 오류나 사용자 요청에 의해 소프트웨어가 발생시킨 인터럽트 |
● 인터럽트 발생 원인과 유형
1) 인터럽트의 발생 원인
- 기계적인 문제 (정전, 데이터 전달 과정에서 하드웨어 오류 발생)
- 프로그램 상의 문제
- 컴퓨터 조작자의 의도적인 조작에 의한 중단
- 입출력 장치들의 동작에 CPU의 기능이 요청되는 경우
- 산술연산 Overflow, Underflow 발생
2) 인터럽트의 유형
외부 인터럽트 (하드웨어 인터럽트) |
전원 이상 | 정전 또는 전원 이상에 의한 인터럽트 발생 |
기계 착오 | CPU의 기능적인 오류 동작 발생 | |
외부 신호 | 타이머에 의해 규정된 시간을 알리는 경우 키보드로 인터럽트를 발생시킨 경우 (Ctrl+Alt+Del) 외부 장치로부터 인터럽트 요청 발생 |
|
입/출력 | 입출력 데이터의 오류나 이상 현상이 발생 입출력 장치가 데이터의 전송을 요구 또는 전송 완료 알림 |
|
내부 인터럽트 (하드웨어 인터럽트) |
프로그램 검사 | 0으로 나누기가 발생한 경우 Overflow, Underflow가 발생 부당한 기억장소 참조와 같은 프로그램상 오류 |
소프트웨어 인터럽트 | SVC 명령 | 사용자가 SVC 명령을 써서 의도적으로 발생 기억장치 할당 및 오퍼레이터와의 통신이 필요한 경우 |
● 인터럽트 우선순위
- 소프트웨어 인터럽트 체제 구현방식은 소프트웨어 수정을 통한 우선순위 변경이 쉬움
소프트웨어 방식 (폴링) |
CPU가 모든 I/O 제어기들에 접속된 선 이용, 인터럽트를 요구한 장치를 검사하는 방식 Test I/O 신호 이용, 각 I/O 장치의 인터럽트 플래그가 세트 되어있는지 검사 검사 순서가 우선순위를 결정 |
||
장점 | 소프트웨어 수정을 통한 우선순위 변경이 쉬움 회로가 간단하고 융통성이 있으며 별도의 하드웨어가 불필요 |
||
단점 | 많은 인터럽트가 있을때 그들을 모두 조사하는데 많은 시간이 걸려 처리시간이 오래 걸림 | ||
하드웨어 방식 | 직렬 연결 | Daisy-Chain (데이지 체인) 우선순위 부여 방식으로 인터럽트가 발생하는 모든 장치를 한개의 회선에 직렬로 연결 (CPU로부터 발생되는 INTA 출력선을 I/O 제어기들에 직렬로 접속하는 방식) 우선순위가 높은 장치를 선두에 위치시키고 나머지를 우선순위에 따라 차례로 연결 인터럽트를 요구한 I/O장치는 입력을 받는 즉시 자신의 고유(ID)번호, 즉 인터럽트 벡터를 벡터 버스를 통하여 CPU로 전송함 인터럽트 벡터는 해당 I/O 장치를 위한 인터럽트 서비스 루틴의 시작 주소 결정 |
|
장점 | 하드웨어 구조가 간단함 | ||
단점 | 우선순위 낮은 장치들이 서비스를 받지 못하는 현상이 발생함 | ||
병렬 연결 | Multiple Interrupt 각 I/O 제어기와 CPU 사이에 인터럽트 요구(INTR)선과 인터럽트 확인(INTA)선을 접속하는 방식 인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결 각 장치의 회선에 대응하는 Mask Register를 사용하고 우선순위는 Mask Register의 비트 위치에 의해 결정 |
||
장점 | CPU가 인터럽트를 요구한 장치식별 용이함 | ||
단점 | 입력 핀의 수에 의해 제한됨 |
● 채널 제어기
- 중앙처리장치와 같이 프로그램을 수행할 수 있는 입출력 전용 처리기
- 보통 하나의 채널 제어기에 여러개의 입출력 장치가 연결됨
- 기억장치에 독립적인 데이터 통로를 제공함
- 다수의 처리 장치가 모든 채널을 연결시켜 사용할 수 있게 함으로써, 다수의 시스템이 최대의 능력을 발휘
Interlock channel | 하나의 입출력 명령을 주변장치 중 하나가 임시로 점유하고 있는 동안 다른 주변장치는 잠시 대기함 |
Crossbar channel | 하나의 입출력 명령을 다수의 주변장치와 동시에 공유 공유버스 시스템 내 버스의 수를 기억장치의 수만큼 증가 |
Selector channel | 하나의 입출력 명령이 완료하기까지 하나의 주변장치를 전용함 |
I/O channel | 독자적으로 입출력 장치와 주기억 장치를 제어하며 데이터를 전송 |
● DMA (Direct Memory Access)
- 입출력 장치 제어기(I/O Device Controller)가 CPU에 의한 프로그램의 실행 없이 자료의 이동을 하는 방식
- 메모리 버퍼, 포인터, 카운터를 사용하여 장치 제어기가 CPU의 도움 없이 DMA 컨트롤러를 이용하여 데이터를 직접 메모리로 전송하는 입출력 방식
- DMA 제어기가 자료 전송 종류 후, 입출력 장치가 DMA를 요구하면 CPU가 CPU 사이클이 끝나는 지점마다 메인메모리의 제어를 허용함
- 장점 : 인터럽트 최소화, 데이터 직접 전송, 입출력 속도 향상 가능, CPU와 주변장치간의 속도차 줄일 수 있음
● Isolated I/O (I/O Mapped I/O)
- IN, OUT 명령에 의해 주어진 I/O 포트에 입출력 기기가 접속되어 입출력을 행하는 방식
- 입출력 명령이 각각 인터페이스 레지스터 주소를 가짐
● Interrupt I/O
- 데이터 전송을 마이크로 컴퓨터의 인터럽트 기능을 가진 하드웨어에 의해서 제어하는 방식
- 입출력 기기의 동작 완료를 인터럽트 신호로써 입출력 기기에서 CPU로 보내면, CPU가 인터럽트 신호를 확인한 다음 현재 실행중인 프로그램을 중단하고 입출력 기기와 데이터 전송을 행하는 방식
● 구역성 (Locality)
- 프로그램의 어느 한 특정 부분만 한동안 집중적으로 참조하는 현상
- 메모리 계층구조(레지스터나 캐시 메모리 활용)나 데이터베이스의 LRU(Least Recently Used) 알고리즘은 구역성 특징을 활용하여 성능을 향상시킨 사례
시간 구역성 | 최근에 액세스된 프로그램이나 데이터가 가까운 미래에 다시 액세스될 가능성이 높음 | Loop Subroutine |
공간 구역성 | 기억장치 내 인접하여 저장된 데이터들이 연속적으로 액세스 될 가능성이 높음 | Array, Table 순차코드 실행 |
순차 구역성 | 분기하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출되어 실행됨 (약 20%) | 구조적 프로그래밍 |
● 인코딩 (Encoding, 부호화)
- 문자나 기호의 집합을 컴퓨터에 저장하거나 통신에 사용할 목적으로 부호화하는 기법
- 인코딩된 문자 부호(character code)는 다시 디코딩(decoding, 복호화)하여 본래의 문자나 기호로 표현
주요 인코딩 코드 :
ASCII | American Standard Code for Information 128개의 문자로 이루어진 서구형(영문표시) 문자 집합 1 캐릭터에 1byte 할당 |
Unicode | ASCII 한계를 극복하여 몇 십억 개의 문자 포함 어떤 문자든 저장 가능 4bytes 크기로 통신하기에 용량이 큰 단점 |
UTF-16 | 유니코드를 압축한 것 UTF-16은 2bytes로 압축 |
UTF-8 | 인터넷을 통해 데이터를 전송할 때, UTF-8이 좋음 UTF-8은 1~4bytes로 압축되어 UTF-32 ~ ASCII를 모두 포함 |
● 캐리와 오버플로우 (Carry & Overflow)
- 캐리는 최상위 비트(MSB)에서 그 위의 비트로 자리올림이 발생하는 것으로 캐리 자체로는 오류 발생이 아님
- 오버플로우는 연산 결과 값이 주어진 비트 수로 표현될 수 있는 범위를 넘긴 것을 의미하므로 오류 발생을 의미함
- 캐리는 단지 MSB에서 그 위 비트로 자리 올림이 발생했음을 의미하며, 오버플로우는 결과 값이 나타낼 수 있는 숫자 범위를 넘어선 것을 의미함
캐리와 오버플로우 사례 :
> 캐리
1 + ( -1 ) = 0
이진수로 계산하면 00000001 + 11111111(2의 보수)의 결과 값은 100000000 이 됨. MSB에서 그 위의 9번째 비트로 캐리가 발생함. 하지만 이 캐리는 8bit연산에서는 하위 8개 bit만 인식하는 이유로 무시됨.
> 오버플로우
1 + 127 = 128
이진수로 계산하면 00000001 + 01111111 = 10000000이 됨. 여기서는 캐리가 발생하지 않았지만 결과 값인 이진수 10000000은 십진수 -128이며, +128이 아님. 8bit에서 이진수가 표현 가능한 수는 -128 ~ 127이기 때문에 +128은 8bit 컴퓨터에서는 이진수로 나타낼 수 없는 값임. 이 경우 오버플로우 발생
- 양수끼리 더할 때, MSB에서 캐리가 발생하지 않으면 오류가 발생하지 않음
- 음수끼리 더할 때, MSB에서 캐리가 발생해야 정상적인 음수가 표현됨
- 부호 bit로 들어온 자리올림이 캐리비트로 나가야 정상적으로 음수가 표현됨
- 부호 bit로 들어온 자리올림이 없으면, 캐리가 발생하지 않음.
● 버스의 대역폭
- 버스의 대역폭 = 버스 클록(Hz) * 버스의 폭(bit)
ex) 버스 클록이 2.5Ghz이고, 데이터 버스의 폭이 8비트인 버스의 대역폭은? 2Gbytes/sec
전자계산기 구조 계산문제
1) 명령어 사이클 시간 : 1클록 = 1 머신 스테이트, 머신 사이클 = n 머신 스테이트, 명령사이클 = n 머신 사이클
2) 인스트럭션 성능 = 수행시간 / (fetch 시간 + 준비시간)
3) 캐시 메모리 접근시간 = 평균 접근시간 = 캐시 hit율 * 캐시 접근시간 + 캐시 miss율 * 주기억장치 접근시간
● 시스템 소프트웨어
- 사용자가 하드디스크에 있는 파일을 조작할 때 사용자가 직접 처리하지 않고 이를 대신 처리하는 프로그램으로 컴퓨터 하드웨어를 실제로 운용하는 프로그램
시스템 소프트웨어의 역할
- 프로그램을 메모리에 적재
- 시스템 인터럽트 처리
- 기억장치 관리
시스템 소프트웨어의 종류와 각 기능 :
운영체제 (Operating System) |
하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 프로그램 |
어셈블러 (Assembler) |
어셈블리어를 기계어로 변환해주는 프로그램 |
컴파일러 (Compiler) |
고급 언어로 작성한 원시 프로그램을 기계어인 목적 프로그램(object program)으로 바꾸어주는 프로그램 |
인터프리터 (Interpreter) |
고급 언어나 코드화된 중간 언어를 입력받아 목적 프로그램 생성 없이 직접 기계어를 생성하여 실행해주는 프로그램 |
전처리기 (Preprocessor) |
원시 프로그램을 번역하기 전에 미리 언어의 기능을 확장한 원시 프로그램을 생성하는 시스템 프로그램 ex) C언어 #include문 |
링커 (Linker) |
서로 독립적으로 작성되고 번역된 목적 프로그램을 호출 및 연계시키는 시스템 프로그램 |
로더 (Loader) |
실행 Code를 주기억장치에 적재하여 실행 가능하도록 해주는 시스템 프로그램 |
디버거 (Debugger) |
실행시간 오류가 발생할 경우 기계 상태 검사 및 수정 |
● 링커(Linker)와 로더(Loader)
1) 링커의 역할
- 서로 독립적으로 작성되고 번역된 목적 프로그램을 연계시키는 시스템 프로그램으로 링커는 여러 오브젝트 파일과 라이브러리들의 Code chunk들을 하나로 묶어 실행 가능한 하나의 바이너리 파일을 생성함. 링크시 연결될 모듈은 사용자가 지정하거나 라이브러리로 주어짐
2) 로더의 역할
- 외부 기억장치로부터 실행 프로그램을 주기억장치로 옮기기 위하여 메모리 할당, 연결, 재배치와 적재를 담당하는 시스템 프로그램으로 커널에 있는 로더가 실행 파일과 라이브러리 파일을 가상 메모리에 로딩
● 로더(Loader)의 단계별 동작
Allocation (할당) |
정의 | 프로그램 수행에 필요한 기억장소를 할당받는 기능 |
방법 | 프로그램의 일부에 대한 기억장치를 할당 후 실행시 필요한 부분만을 기억장치에 할당 | |
Linking (링킹) |
정의 | 실행중인 여러 프로그램이 라이브러리나 특정 모듈을 공유 가능하도록 프로그램 적재시에 링크하는 기능 |
방법 | 링킹 로더는 링커에 의해 제공된 목적파일의 재배치 정보를 통해 실행 가능한 코드를 만들어 주기억장치에 적재 | |
Relocation (재배치) |
정의 | 프로그램 내 재배치 가능한 상대주소를 할당된 메모리의 절대주소로 변환하는 기능 |
방법 | 목적 코드의 각 명령에 대해 재배치 여부를 명시하는 재배치 비트를 추가하여 표시 | |
Loading (적재) |
정의 | Allocation, Linking, Relocation 작업이 수행된 프로그램을 주기억장치에 적재하는 기능 |
방법 | 로더의 Allocation 방법에 의거, 필요한 기능을 수행 |
- 명령어와 데이터 유닛의 가상 메모리 배치 유형
컴파일 즉시 로더 (Compile-and-go Loader) |
가장 간단한 방법 번역기가 로더의 역할까지 담당 로더의 기능은 단순히 실행을 제어 어셈블러의 재번역 요구 서로 다른 언어로 작성된 모듈간 연결 불가 |
절대 로더 (Absolute Loader) |
출력 결과는 보조기억장치에 저장 기계어 코드 프로그램에서 미리 지정한 번지에 프로그램과 데이터를 직접 적재 프로그래머가 어셈블러에게 적재주소 지정 |
재배치 로더 (Relocation Loader) |
적재 모듈을 주기억장치에 적재 상대주소를 절대주소로 변환 로드 과정에서 메모리의 적당한 영역을 찾아 로드 |
링킹 로더 (Linking Loader) |
재배치 링크 및 적재를 한꺼번에 수행 두 단계의 패스로 구성 - 패스 1 : 모듈에 기억장소 할당, 외부 기호들의 주소 확정, 외부 기호표 작성 - 패스 2 : 모든 상대주소를 절대주소로 변환, 외부 기호표 참조 후 적재 |
동적 로더 (Dynamic Loader) |
재배치 로더와 링킹 로더의 단점 보완 CPU가 현재 사용중인 부분만 로드 미사용중인 프로그램은 보조기억장치에 저장해 두는 방식 서브루틴들의 상호 호출관계 파악 load-on-call 이라고도 함 |
● Linux / Unix 운영체제의 기본 명령어
사용자 | #id, #last, #who 등 |
파일 처리 | #ls, #pwd, #rm, #cp, #mv, #tar 등 |
프로세스 | #ps, #pmap, #kill pid 등 |
파일 permission | #chmod, #chown 등 |
네트워크 | #ifconfig, #dig, #host 등 |
Install | #yum, #rpm 등 |
검색 | #grep, #find, #locate 등 |
디렉터리 이동/생성 | #cd, #mkdir 등 |
chmod : 파일이나 디렉터리의 접근권한을 변경하는 명령어. read, write, execute 권한을 추가 또는 제거
du : 현재 디렉터리 아래의 디스크 사용현황을 출력하는 명령어.
-B, -block-size=SIZE 옵션을 통해 블록의 크기를 지정함.
-b, -bytes 옵션을 통해 바이트 크기로 출력
fork : 현재 프로세스에 대해 자식 프로세스를 생성하는 함수
cat : cat [파일명]을 통해 파일의 내용을 보는 명령어
● 파일 접근 권한의 유형
파일유형 | owner | group | other | ||||||
일반파일 | r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 | |
Read(r) | 일반 파일 | 읽기와 복사 가능 | |||||||
디렉토리 | 디렉토리의 내용 표시 가능 | ||||||||
Write(w) | 일반 파일 | 수정가능 | |||||||
디렉토리 | 파일의 추가와 삭제 가능 | ||||||||
Execute(x) | 일반 파일 | 수행가능 | |||||||
디렉토리 | 디렉토리 변경 가능 |
● Shell (쉘)
- 쉘이란 컴퓨터 내부를 관리하는 Kernel과 사용자 간의 인터페이스를 담당
- 쉘은 세션별 변수 설정 등 사용자 지정 상태로 사용자가 요청한 명령어를 해석함
- Linux와 Unix 명령어는 콘 쉘, 본 쉘, 배시 쉘 등 다양한 쉘이 있으며, 쉘 스크립트를 입력하는 에디터는 vi(vim)나 이맥스(emacs)를 사용하며, GUI 에디터인 지에디터(gedit)를 사용할 수 있음
- 백그라운드 처리 및 서브 쉘 생성이 가능하며, 일련의 명령어를 묶어 처리하는 스크립트 기능 지원
- 운영체제(OS)는 프로세스, 기억장치, 입/출력 관리를 수행
- Linux와 Unix 명령어는 Shell에서 입력할 수 있음.
- Linux나 Unix 계열 시스템에서는 쉘 스크립트를 통해 시스템 운영 자동화가 가능함
쉘의 기능 :
- 세션별 변수 설정 등 사용자 지정 상태로 운영체제 설정 지원
- 사용자 요청에 기반한 명령어 작성
- 백그라운드 처리 및 서브 Shell 생성
- 일련의 명령어를 묶어 처리하는 스크립트 기능 지원
- echo $SHELL 명령어를 통해 현재 사용 중인 Shell 종류를 확인 가능
● 파이프라인 기법
1) 파이프라인 기법의 개념
- 단위 시간 내에 하나 이상의 명령어를 처리함으로써 performance를 향상시키는 멀티프로세스 환경에서의 명령어 처리 매커니즘
- 명령어 처리 과정을 여러 단계로 세분화
- 단계마다 다른 작업을 중첩/수행하여 병렬성을 높임
단일 Pipeline | 명령어 수행과정에서 각 단계를 한번만 중첩하여 다수의 동작을 동시에 수행하는 병렬처리 기술 |
Super Pipeline | 하나의 Pipeline을 여러 부분으로 나누어 연속적인 흐름과정으로 처리, 성능을 향상시키는 병렬처리 기술 각 명령어 수행단계를 두개 이상으로 분할한 구조 |
Super Scalar | 프로세서 내에 Pipeline된 ALU를 여러개 포함하여 매 사이클마다 다수의 명령어들을 동시에 실행하는 병렬처리 기술 ex) 1개의 cycle에 정수연산 2개, 실수연산 4개 동시 수행 |
Super Pipelined Super Scalar | 슈퍼스칼라 기법에 슈퍼 파이프라이닝 기법 적용 수행시간을 더 단축한 기법 |
VLIW (Very long instruction word) |
동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출, 하나의 명령어로 압축하여 수행하는 병렬처리 기술 EPIC 기법 : 컴파일러가 소스 코드로부터 명시적 병렬성을 찾아 병렬처리가 가능하도록 기계어 코드 생성, 병렬 수행 |
파이프라인 적용시 향상도 계산 :
> 세그먼트에서 부연산을 수행하는데 20ns가 걸리고, 파이프라인은 4 세그먼트로 구성되어 있으며 100개의 태스크를 순차적으로 수행하는 파이프라인 시스템은 비파이프라인 시스템에 비해 약 몇배의 속도 향상을 얻을 수 있는가
8000(비파이프라인 수행 속도) = 20ns * 4(부연산 수) * 100
3.88(성능 향상도) = 8000/2060
2060 = 8000/4(세그먼트 수) + 60(중첩되지 않는 DI, EI, WB 부연산 3개 * 20ns)
● Flynn의 컴퓨터 시스템 분류 제안
- Flynn은 컴퓨터의 명령어와 데이터의 흐름 개수에 따라 단일명령어/단일 데이터 흐름(SISD), 단일명령어/다중 데이터 흐름(SIMD), 다중명령어/단일 데이터 흐름(MISD), 다중명령어/다중 데이터 흐름(MIMD)으로 분류함
● 병렬처리와 분산처리 비교
- 병렬처리는 프로세서 자체를 멀티코어로 병렬화하거나, 여러개의 프로세스를 이용하여 다수의 작업을 고속으로 처리 가능함
- 연산장치를 병렬로 구성한 처리 구조로 벡터 계산이나 행렬 계산에 주로 사용되는 Array 프로세서나 벡터 프로세서, 여러개의 명령어를 동시 수행하는 파이프라인 기법등이 있음
구분 | 병렬 처리 | 분산 처리 |
구성도 | ||
정의 | 프로세서를 늘려 다수의 작업을 동시에 처리 | 컴퓨터를 네트워크로 상호 연결하여 전체적인 일의 일부를 분산하여 처리 |
구성 | 다수의 프로세서와 하나의 메모리로 구성 | 다수의 프로세서와 메모리, 리소스로 구성 |
● 운영체제 (Operation System)
- 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 프로그램
운영체제의 기능
프로세스 관리 | 프로세스들에 대한 적절한 CPU 자원 배정을 통한 관리 | 스케줄링 프로세스의 생성과 제거 교착상태 방지 |
보조기억장치 관리 | 주기억장치의 공간적 제약으로 보조기억장치를 이용해 주기억장치의 내용을 저장하고 관리 | 디스크 스케줄링 저장소 할당 유휴 공간관리 |
파일 관리 | 디렉터리의 구성, 다수의 사용자에게 접근제어 기능을 제공 | 파일과 디렉터리 생성과 제거 보조기억장치 파일 매핑 |
장치 관리 | 하드웨어 장치를 운영하기 위한 인터페이스 제공 | 드라이버 인터페이스 임시저장 시스템(버퍼) |
메모리 관리 | 기억공간에 어떤 프로세스를 저장할 지를 결정 | 기억공간 할당과 회수 |
시스템 보호 | 운영체제에 있는 프로세스를 다른 사용자의 프로그램으로부터 보호 | 세마포어 |
네트워킹 | 네트워크의 연결 경로, 접속 정책, 충돌, 보안 기능 제공 | 토큰 링 방식 |
명령어 해석 | 프로그램 실행을 위한 명령어 해석 기능 제공 | 컴파일러 커널 |
● 운영체제 유형별 특징
다중 프로그래밍 시스템 | CPU의 효율을 극대화하기 위해 여러개의 프로그램이 마치 동시에 실행되는 것처럼 처리하는 방식 메모리관리 필요 |
|
시분할 시스템 (Time Sharing System) |
프로세서 스케줄링과 다중 프로그래밍을 사용해 각 사용자에게 컴퓨터를 시간적으로 분할 사용 | |
분산처리 시스템 | 시스템마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요할때 통신하는 시스템 | |
다중처리 시스템 | 마이크로 프로세서 여러개를 연결해 다중 프로세서를 만듦 | |
일괄처리 시스템 | 일정량의 데이터를 모아서 한꺼번에 일괄처리하는 방식 | |
실시간처리 시스템 (Realtime Processing System) |
데이터에 대한 처리요구 발생시 즉시 처리 응답 | 시간 제한을 두고 수행하는 업무 적용 |
● 분산처리 시스템 유형
- 분산처리 시스템은 확장이 용이하고, 가용성이 높으며, 자원에 대한 공유가 용이하지만 시스템 개발시 데이터 및 프로세스의 부하분산 및 동기화 처리가 어려움
부하 분산 | 작업이 많은 컴퓨터에서 작업이 적은 컴퓨터로 작업을 이동 시스템 전체의 처리 효율을 향상 |
처리 분산 | 특정한 한 장소에서 집중적으로 처리를 수행하지 않음 데이터의 발생 장소나 서비스를 요구하는 장소 등에서 처리 통신 비용의 감소와 서비스 향상을 가져옴 |
기능 분산 | 개별적인 기능을 갖는 전용의 컴퓨터를 준비하여 시스템 전체에서 공유 |
위험 분산 | 노드 일부가 고장이 나더라도 다른 노드에 의해 처리 가능 시스템의 신뢰성 향상 |
관리 분산 | 시스템의 운용과 관리를 각 조직에서 개별적으로 수행 조직 내의 실정에 맞는 이용과 서비스 제공 |
확장 분산 | 복잡한 대형 컴퓨터 센터는 기능의 변경이나 확장이 어려움 기능의 추가와 진보된 기술의 수용, 확장이 용이하게 구성 |
● 동기화(Synchronization)
- 송신 측에서 전송한 데이터의 각 비트를 수신 측에서 정확하게 수신할 수 있도록 하는 기법
동기식 전송 | 송수신기가 동일한 클록을 사용하여 데이터를 송수신 미리 정해진 수만큼 문자열을 한 묶음으로 만들어 일시에 전송하는 방법 파일 업로드, 파일 다운로드 수신측에서 비트 계산을 해야하고 문자를 조립하는데 별도의 기억장치가 필요 |
비트지향 동기화 방법 문자지향 동기화 방법 |
비동기식 전송 | 송수신기가 별도의 독립적인 클록을 사용하면서도 데이터를 송수신 한번에 한 문자씩 전송함으로써 수신기가 새로운 문자의 시작점에서 재동기화 START 비트와 STOP 비트 이용 패리티 비트를 통한 오류 검출 |
● 동기식 전송 방식
비트지향 동기화 방식 | 전송하는 모든 데이터 단위를 일련의 비트로 처리. 동기화에 필요한 데이터까지 비트로 표현 데이터블록의 처음과 끝에 8비트의 플래그 비트(01001100)를 표시 플래그 등의 패턴을 구별하기위해 '0'비트를 삽입 |
전송 패턴 |
문자지향 동기화 방식 | 모든 데이터의 단위를 문자 단위로 처리함으로써 동기화에 필요한 데이터까지 문자로 표현 SYN : 동기 맞춤 STX(Start-of-TeXt) : 문장의 시작 ETX(End-of-TeXt) : 문장의 끝 |
전송 패턴 |
● 프로세서 모델에 따른 분산 컴퓨팅 모델 분류
클라이언트/서버 모델 | 개념 | 비대칭적(Asymmetrical) 분산 시스템 구조 |
특징 | 대부분의 분산 시스템은 LAN을 기반으로 한 모델로 구성 다중사용자 시스템으로 사용자들 간에 CPU를 공유 서버는 공유된 다양한 시스템 기능과 자원의 접근을 제공 |
|
프로세서 풀 모델 | 개념 | 하나 이상의 프로세서 풀이 통합된 워크스테이션-서버 모델로 구성 |
특징 | 각 풀 프로세서는 서버가 연결되듯이 독립적으로 네트워크와 연결 풀에 있는 프로세서들은 단일 회로 보드로 구성 사용자 터미널은 단순히 시스템의 자원을 접근하는 수단을 제공 사용자의 작업은 부분 혹은 전체적으로 풀 프로세서 상에서 수행 사용자가 메인 테스크를 초기화하면, 풀 프로세서가 각 테스크에 할당되고 병렬로 수행 |
|
혼합 모델 | 개념 | 위의 두 모델을 혼합한 시스템 |
특징 | 사용자의 요구와 자원 처리가 매칭됨 병렬수행 : 여러개의 풀 프로세서가 과부하 처리를 실행하기 위해 할당 사용자는 워크스테이션이나 터미널을 통하여 시스템에 접근 |
● 위상에 따른 분산 컴퓨팅 구조 분류
- 분산처리 시스템 내의 노드들은 여러가지 물리적 방법으로 연결될 수 있는데, 이러한 물리적인 연결 형태를 위상(Topology)이라 함
완전 연결 구조 (Fully connected) |
각 노드가 시스템 내의 모든 다른 노드와 직접 연결 기본비용은 노드 숫자의 제곱에 비례 |
|
부분 연결 구조 (Parially connected) |
모든 노드 쌍에 대해서 직접 연결이 존재하는 형태가 아님 비용은 완전 연결 네트워크보다 낮음 통신 속도가 느림 완전 연결 네트워크보다 신뢰성이 떨어짐 |
|
계층 구조 (Hierarchy) |
각 사이트들은 트리(tree) 형태로 구성 형제 중의 하나가 다른 형제에게 메시지를 전달하려면 부모까지 올라가서 형제에게로 다시 내려감 |
|
성형 구조 (Star) |
중심 노드는 타 노드와 연결, 타 노드는 상호간 연결되지 않는 방식 비용은 노드 수에 비례하나 일반적으로 통신비용은 낮음 중심 노드에서 병목 현상이 발생함 |
|
환형 구조 (Ring) |
단방향, 양방향 통신 방법 존재 단방향 : 노드는 한 방향으로만 정보 전달 양방향 : 양쪽 이웃 노드에게 정보 전달 기본비용은 노드 수에 비례함 단일연결, 이중연결 방식 존재 |
|
다중 접근 버스 구조 (Multi-access bus) |
공유되는 하나의 버스가 존재함 비용은 노드 수에 비례하며, 버스회선이 고장나면 네트워크가 분할됨 직선 버스, 환영 버스 유형 존재 |
● 분산 운영체제의 특징
- Resource sharing : 한 노드의 사용자와 다른 노드 사용자 간에 유용한 자원들은 공유
- Reliability : 여러 시스템 중 일부 시스템에 고장이 발생하는 경우에도 전체 시스템이 정상적으로 운영
- Transparency : 복수의 컴퓨터를 마치 1대의 기계처럼 다루는 특성으로 특정 자원의 물리적인 위치를 알지 못하여도 사용 가능
- Expandability : 노드들이 통신으로 상호 연결되어 수평적으로 확장
- Autonomy : 시스템을 구성하는 각 노드들은 각기 어느 정도의 자율성을 가짐
● 강결합 & 약결합
구분 | 강결합 (Tightly-Coupled) | 약결합 (Loosely-Coupled) |
구조 | 하나의 운영체제, 여러개의 프로세스, 하나의 메모리 공유하여 처리 | 프로세스마다 독립된 메모리를 가지는 분산처리 시스템 |
특징 | 하나의 운영체제가 모든 프로세스와 시스템 하드웨어 제어 프로세서간의 통신은 공유 메모리를 이용 여러 처리기들 간에 하나의 저장장치를 공유 메모리에 대한 프로세스 간의 경쟁 최소화 고려 필요 |
각 사이트는 자신만의 독립된 운영체제와 주기억장치 보유 독립적으로 작동, 상호 통신 시스템 최대 속도가 통신선 속도에 제한 유연한 확장이 가능 |
● 페이지 결함 (Page Fault)
- 기억장치에 적재되지 않은 page를 사용하는 현상
- 콜드미스 : 데이터를 최초로 읽을때 발생
- 용량미스 : 메모리 용량이 부족해서 발생
● 스래싱 (Thrashing)
- Page 부재가 너무 빈번하게 발생하여 CPU가 프로세스 수행보다 Page 교체에 더 많은 시간을 소요하는 비정상적인 현상
Demand paging | 요구될 때에만 프로세스의 page들을 적재하는 방식 | 구역성 |
Page fault trap | 기억장치에 적재되지 않은 page를 사용하려는 경우 발생 | 프로세스 검사하여 판단 빈 공간(Free frame) 검색 디스크로부터 요구 중단된 명령의 재수행 |
Thrashing | Page 부재가 너무 빈번하게 발생하여 CPU가 프로세스 수행보다 page 교체에 더 많은 시간을 소요하는 비정상적인 현상 발생 | 구역성 워킹세트 페이지프레임 조정 |
● 페이징 기법 & 세그먼테이션 기법
페이징 기법 :
- 가상 기억장치 내의 프로그램과 데이터를 고정되게 분할한 용량(페이지)을 주기억장치에 사상시키는 기법
- 프로그램의 실제 주소와 주기억장치 주소가 다르므로 PMT(Page Map Table) 필요
- 외부단편화 해결 가능, 내부단편화 발생
세그먼테이션 기법 :
- 가상기억장치 내의 프로그램과 데이터를 각 세그먼트가 주기억장치에 적재될 때마다 필요한 서로 다른 크기의 세그먼트(Segment)로 분할
- 매핑 테이블(세그먼트 번호 : 주소 + 크기) 유지
항목 | 페이징 | 세그먼테이션 |
할당 단위 | 고정 | 가변 |
적재 단위 | 프로그램 일부 적재 | 프로그램 전체 적재 |
장점 | 외부단편화 없음 교체시간 짧음 |
코드, 데이터 공유가 용이함 내부단편화가 최소화됨 |
단점 | Thrashing 문제 심각 내부단편화 코드나 데이터 공유 논란 |
외부단편화 발생 주기억장치 커야함 교체시간 길어짐 |
● 파일 편성
- 파일을 형성하고있는 레코드를 기록매체 위에 어떻게 배치할 지에 대한 파일 구조 방식
- 레코드의 식별, 검색, 저장, 기록매체 종류에 따라 편성 방법이 상이함
편성 방법 :
순차 편성 (SAF) |
파일 내의 레코드가 물리적으로 연속해서 기록되는 방식 장점 : 간단하고 버퍼링용이, 가변길이 레코드, 메모리 효율이 높음 단점 : 느리고 수정이 어려움 매체 : 테이프 |
직접 편성 (DF) |
키를 지정하면 대응하는 레코드의 기록위치가 계산에 의해 구해지는 방식 장점 : 수정 용이, 빠른 속도 단점 : 주소계산 시간 필요 매체 : 디스크, 드럼 |
색인 순차 편성 (ISAM) |
키의 순번으로 나열된 레코드를 넣어두는 주데이터 영역과 레코드 소래를 키와 포인터로 표시한 색인 레코드를 넣어두는 색인 영역을 조합하는 방식 장점 : 파일수정 용이, 빠른 속도 단점 : 키가 필요하며 사전에 배열 필요 매체 : 메모리, 드럼 |
구분 편성 (Partitioned organization) |
파일을 편성하는 멤버명과 주소가 들어간 등록부와 데이터 영역으로 편성하는 방식 |
● 가상메모리
- 주기억장치 안의 프로그램 양이 많아질때 사용하지 않는 프로그램을 보조기억장치 안의 특별한 영역으로 옮겨서, 그 보조기억장치 부분을 주기억장치처럼 사용할 수 있는 영역
- 당장 실행할 프로그램만 주기억장치로 이동
가상메모리 관리정책 :
할당 정책 | 각 프로세스에게 할당할 메모리의 크기를 관리 실행 중 주기억장치 할당량 변화 알고리즘 |
고정할당 기법 가변할당 기법 |
호출 정책 | 언제 어느 항목들을 보조기억장치에서 주기억장치에 가져올 것인지 결정 | 요구호출 기법 예측호출 기법 |
배치 정책 | 프로그램의 한 블록을 주기억장치의 어디에 배치할 것인가 관리 | First Fit Best Fit Worst Fit |
교체 정책 | 주기억장치에 적재할 공간이 없을 경우, 무엇과 교체할 것인가에 대한 관리 | FIFO, LRU, LFU, NUR |
● 가상메모리 배치정책 (Placement)
- 프로그램의 한 블록을 주기억장치의 어디에 배치할 것인가 관리
- 주요 배치 정책 : First Fit, Best Fit, Worst Fit
First Fit (최초 적합) : 프로그램, 데이터가 들어갈 수 있는 빈 영역의 첫번째 분할 영역에 배치
Bett Fit (최적 적합) : 프로그램, 데이터가 들어갈 수 있는 빈 영역 중 단편화를 가장 적게 남기는 분할 영역에 배치
Worst Fit (최악 적합) : 프로그램, 데이터가 들어갈 수 있는 빈 영역 중 가장 큰 영역에 배치
구분 | First Fit | Best Fit | Worst Fit |
원본 | 메모리 공간 : ■□□□■□□■□□□□■ 적재 : ■■ | ||
그림 | ■■■□■□□■□□□□■ | ■□□□■■■■□□□□■ | ■□□□■□□■■■□□■ |
설명 | 가장 처음에 남는 공간에 할당 | 스캔을 하여 최적의 공간에 할당 | 가장 큰 남은 공간에 할당 |
장점 | 효율성이 높음 | 최적의 공간에 할당 | 없음 |
단점 | 단편화(Flagmentation) 발생 | Scanning 시간 소요 | 낭비 영역 발생 |
● 단편화
- 주기억장치 상에서 프로그램에 의해 사용되지 못하고 낭비되는 부분적인 기억 공간
- 단편화 현상의 원인은 할당된 사용자 프로그램의 크기가 그 지정된 메모리의 메모리 공간보다 작을 경우, 할당되고 남은 작은 공간들이 발생하여 생김
단편화 종류 :
- 고정분할시 내/외부 단편화 : 사용자 프로그램의 크기가 정해진 분할 크기에 정확히 맞지 않으면 내부단편화가 발생하고, 분할이 너무 작아서 대기중인 작업 중 하나도 맞는 것이 없을 경우 그 분할이 사용되지 않은 상태로 남아 있게 되므로 외부 단편화가 발생
- 가변분할시 외부단편화 : 가변분할은 분할 영역의 크기가 동적으로 변경될 수 있으므로 내부단편화는 발생하지 않지만, 외부단편화는 발생할 수 있음
단편화의 해결 방안 :
- 단편화는 통합, 압축, 프레임 등의 해결방법이 있음
통합 | 인접한 단편화된 공간을 하나로 통합 | 위치 제한이 없음 |
압축 | 분산된 단편화된 공간을 한쪽 끝에서 결합 | 메모리 한쪽 끝 |
프레임 | 고정된 크기 메모리 사용 내부단편화 해결 | 고정 크기 |
● 가상메모리 교체정책 (Page Replacement)
- 주기억장치에 적재할 공간이 없을 경우, 무엇과 교체할 것인가에 대한 정책
- 대표적인 교체 알고리즘 : FIFO, LRU, LFU, NUR 등
무작위 페이지 교체 | 특별한 사용자에게 차이를 두지 않고 교체하는 기법 교체할 페이지를 무작위로 선정 |
오버헤드가 적은 기법 바로 뒤에 참조될 페이지도 교체 가능 |
FIFO | 메모리에 올라온지 가장 오래된 페이지를 교체 | FIFO 이상현상(Anomaly) 발생 → FIFO 기법 하에 프로세스에 더 많은 페이지를 할당할 경우 더 많은 페이지 부재가 발생하는 현상 |
최적 페이지 교체 (Optimal page) |
앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아서 교체 | FIFO 모순을 해결 최소 페이지 부재율을 가지나 구현이 비현실적임 |
LRU (Least Recently Used) |
가장 오랫동안 사용되지 않을 페이지를 교체 | 호출시간을 기록해야하는 오버헤드 발생하지만 효율적임 |
LFU (Least Frequently Used) |
사용빈도(참조된 횟수)가 가장 적은 페이지를 교체하는 기법 | 구역성 문제가 발생함 |
NUR (Not Used Recently) |
최근에 사용되지 않은 페이지를 교체하는 기법 | 참조 비트, 변경 비트 사용 LRU 시간 오버헤드 해결 |
● 디스크 스케줄링 (Disk scheduling)
- 운영체제가 디스크를 읽거나 쓰려는 요청을 받았을때, 우선순위를 정해 관리하는 기법
- 대표적인 디스크 스케줄링 : FIFO, SSTF, SCAN LOOK 등
이동디스크 스케줄링 | FCFS (First Come First Served) |
요청 큐에 들어온 순서대로 처리 |
SSTF (Shortest Seek Time First) |
현재 헤드 위치에서 가장 가까운 트랙의 요청 처리 | |
SCAN (엘리베이터 알고리즘) |
진행방향 상의 가장 가까운 트랙의 요청을 먼저 서비스 C-SCAN은 항상 바깥쪽에서 안쪽으로 SCAN 수행 |
|
LOOK | SCAN과 같이 처리하되 처리할 블록이 없으면 끝까지 가지 않고 돌아옴 C-LOOK은 항상 바깥쪽에서 안쪽으로 LOOK 수행 |
|
에센바흐 기법 (Eschenbach) |
헤드는 C-SCAN처럼 움직이며, 예외적으로 모든 실린더는 그 실린더에 요청이 있든 없든 간에 전체 트랙이 한바퀴 회전할 동안의 서비스를 받음 | |
고정디스크 스케줄링 | SLTF (Shortest Latency Time First) |
최단 지연시간 우선 전략 Sector Queuing 기법이라고도 함 |
SPTF (Shortest Positioning Time First) |
최단 위치 결정시간 우선 전략 | |
SATF (Shortest Access Time First) |
최단 접근시간 우선 전략 |
● 워킹세트 (Working Set)
- OS의 가상기억장치 관리에서 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합 / 하나의 프로세스에 자주 참조되는 페이지를 모아놓은 기법
스레싱 방지 기법 :
프리페이징 (Prepaging) |
과도한 페이지 부재를 줄이기위해 모든 페이지를 한번에 페이지 프레임에 적재하는 기법 | 페이지 적재 과다 |
워킹세트 (Working Set) |
하나의 프로세스에 자주 참조되는 페이지를 모아놓은 기법으로 그 집합에 속하지 않은 페이지를 교체 | 스레싱(Thrashing) 방지 |
페이지 프레임 조정 (Page Fault Frequency) |
현재 페이지 부재와 바로 전 페이지 부재 사이의 시간을 관찰하여 그 시간이 지금까지 최소시간보다 크면 그 사이에 호출되지 않았던 페이지들을 모두 제거하는 기법 | PFF가 높으면 메모리의 페이지 적재영역의 크기(Residence set)를 증가, 낮으면 줄임 |
● 메모리 인터리빙 기법
- 기억장치 모듈에 순차적인 접근을 함으로서 접근시간을 최소화하고 성능을 향상
- 메모리를 복수개의 모듈(뱅크)로 나누고 각 모듈에 연속적인 주소를 부여하여 동시에 접근이 가능하게 하는 기법
메모리 인터리빙 종류 :
1) 상위 인터리빙 : 프로그램과 데이터들이 독립적이어서 각각의 기억 모듈에 저장하는 것이 더 효과적인 다중 프로그래밍에 사용
2) 하위 인터리빙 : 연속된 주소가 연속된 다수의 모듈에 동시 동작하며, 단점은 확장이 어렵고 어느 한 모듈의 오류가 전체에 영향을 미침
3) 혼합 인터리빙 : 기억장치 모듈을 뱅크로 그룹화하고 각 그룹 내에서 하위 인터리빙 하는 방식
● 보안 메커니즘
- Cryptography : 평문(Plain text)을 암호문(Cipher text)으로 만드는 과정
- Authentication : 적절한 권한을 가진 사용자를 식별하기 위한 수단
- Digital signature : 서명자가 해당 전자문서에 서명하였음을 나타내기 위해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보
- Threat monitoring : 웜/바이러스, 해킹 시도 등 내부 정보기술(IT) 자원을 위협하는 침입시도에 대해 모니터링하는 보안서비스
● 하이퍼 큐브
하이퍼 큐브 = 다중처리기의 일종이며 다중처리기는 하나의 시스템에 여러개의 처리기를 두어 하나의 작업을 처리기에 나누어 할당하여 수행
- 처리기는 각각의 기억장치를 가지고 있으며, 통신채널에 의해 처리기를 모두 연결
- 하이퍼 큐브는 10~1000대의 처리기를 병렬로 동작시키는 컴퓨터 구조로 소결합 다중 처리기라고도 함
- 3차원 하이퍼 큐브는 8개의 처리기를 가지고 있는데 각각 3회선의 통신채널을 가지고 있음 (CPU 개수 = 8 * 8 * 8 = 512)
- 기하학적 구조는 정육면체의 각 정점에 처리기가 있고, 변이 통신 회선으로 구성됨
● 은행원 알고리즘
- 프로세스가 자원을 요구할때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착상태의 발생을 회피하는 기법
- 교착상태가 발생하지 않는 상태는 안전 상태(Safe state)이며, 불안전 상태(Unsafe state)에서 교착상태를 유발하는 4가지 조건(상호 배제, 점유와 대기, 비 선점, 환형 대기)을 충족하면 교착 상태에 빠짐
① 자원 상황과 최대 사용량을 미리 파악
② 프로세스의 자원 할당 요구
③ 안정 알고리즘에 의한 상황 점검
④ 안정 상태이면 할당
⑤ 불안정 상태이면 승인 거부
교착상태 해결방안
예방 (Prevention) |
상호배제, 점유와 대기, 비 선점 및 환형대기 조건의 부정 |
회피 (Avoidance) |
Banker's algorithm (은행가 알고리즘) Wait-die, wound-wait 알고리즘 |
발견 (Detection) |
시스템의 상태를 감시 알고리즘을 통해 교착상태 검사 자원할당 그래프, Wait for graph |
회복 (Recovery) |
Deadlock이 없어질 때까지 프로세스를 순차적으로 Kill하여 제거 |
● 임계영역(Critical Section)
- 여러개의 프로세스가 공유하는 데이터 및 자원에 대해 어느 한 시점에는 하나의 프로세스만 사용하도록 지정된 공유 영역
상호배제 :
- 경쟁 조건을 방지하기 위해 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 모든 프로세스가 해당 공유 자원을 사용하지 못하도록 제어하는 기법
- 둘 이상의 프로그램이 임계영역을 동시에 진입하지 못하도록 하는 기법
상호배제 해결 요구조건 :
상호 배제 → 오직 한개 프로세스만 임계영역에 존재할 수 있음
진행 → 임계영역 밖에 있는 프로세스가 다른 프로세스의 임계영역 진입을 막을 수 없음
한계 대기 → 어떤 프로세스도 임계영역 진입이 무한정 연기될 수 없음
상대 속도 → 프로세스에 대한 상대적 속도에 대해서는 어떤 가정도 하지 않음
상호배제 연산의 예
enterMutualExclusion() :
- 임계영역 진입 전 검사 과정
- 다른 프로세스가 임계영역 내에 존재하는지 여부 검사
exitMutualExclusion() :
- 임계영역을 벗어날 경우 처리 과정
- 임계영역을 벗어남을 시스템에게 알림
상호배제 해결방안
1) 소프트웨어적 해결방안
데커(Dekker) 알고리즘 | 두개의 프로세스를 위한 상호배제에 대한 최초의 소프트웨어 기법 공유 변수 : 두개의 Boolean flag와 int turn 차례 설정 : turn(차례)를 자신의 프로세스에게 설정 |
피터슨(Peterson) 알고리즘 | 공유 변수 : 두개의 Boolean flag와 int turn 의사 표시 : 임계영역에 진입하려면 먼저 Flag를 True로 설정 후 임계영역에 진입 차례 양보 : turn을 다른 프로세스에게 양보 |
램포트(Lamport), 베이커리 알고리즘 | 분산처리 환경에서 유용한 상호배제 알고리즘 수행 순서를 위한 번호표 부여 낮은 번호가 먼저 임계영역 사용 요청한 프로세스로 진입 |
세마포어(Semaphore) | 운영체계 또는 프로그램 작성 내에서 지원하는 상호배제 알고리즘 세마포어 변수(S) 및 두개의 연산(P, V)으로 임계영역에 접근하는 잠금 장치에 대한 이론적 기반 |
2) 하드웨어적 해결방안
인터럽트 사용금지 | 공유변수가 변경되는 동안 인터럽트 발생을 허용하지 않음 단일 프로세서에서 가능하고 멀티 프로세서에서는 적용할 수 없음 |
Test and Set | H/W에서 한 워드(Word)의 내용을 검사하고 변경하는 명령어 제공 |
소프트웨어 ap | H/W에서 두 워드간의 내용을 교환할 수 있는 명령어 제공 |
● 파일 디스크립터 (File Descriptor)
- 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값 또는 자료구조
- 일반적으로 0이 아닌 정수 값을 가지며, UNIX, Windows 등 시스템에 따라 구조가 상이함
- 파일을 open(), create() 할때, 커널이 필요한 동작 수행후, 파일 디스크립터 값을 리턴
- 사용자가 직접 참조할 수 없음
파일 시스템 :
- 운영체제에서 보조기억장치와 그 안에 저장되는 파일을 관리하는 시스템의 통칭
- 각 OS에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체계이며, 보조 기억 장치에 저장된 각 파일과 구조
파일 시스템 유형
UNIX 파일 시스템 : Boot, Super, Data block 및 List로 구성
LINUX 파일 시스템 : EXT2, EXT3, EXT4 등 다양한 구조로 존재
WINDOWS 파일 시스템 : FAT32, NTFS, ReFS 등의 파일 시스템 구조 존재
● UNIX 파일시스템
- UNIX 파일시스템은 운영체제가 파티션이나 디스크에 파일들을 사용하기 위한 자료구조로 데이터 저장 공간을 파일에 할당하고 이를 다시 회수하는 역할을 수행함
- UNIX 파일시스템은 부트 블록, 슈퍼 블록, i-node 목록, 데이터 블록으로 구성됨
- 계층적 구조 : 루트, 서브디렉토리, 파일들은 계층구조를 가짐
UNIX 파일시스템 구성요소
- Boot Block : 시스템의 운영체제를 부트(boot)하거나 초기화와 관련되는 Boot Strap 코드를 저장
- Super Block : 파일 시스템의 상태에 관한 종합적인 정보를 보관하는 영역 (타입, 크기, 상태, metadata structure에 대한 포인터 등)
- Bitmap Block : i-node와 data block의 할당 현황 표시
- i-node : 파일과 디렉터리에 관한 속성 정보 영역
- Data Block : 파일과 디렉터리의 실제 데이터를 보관하는 영역
● i-node의 개념
- 각 파일에 대한 정보를 기억하는 약 120byte 고정된 크기의 자료구조
- Unix에서 i-node는 파일/디렉터리의 정보를 통해 할당, 적용, 생성, 링크, 삭제의 역할
i-node 포함 정보 :
- 소유자 정보 : 사용자 ID, 그룹 ID
- 접근 정보 : Access Modes, Data Block Address (13개의 array)
- 파일정보 : 크기, 생성시간, 최근 사용시간, 최근 변경 시간, 파일 링크 수, 유형(Ordinary 파일, Special 파일, Directory 파일)
i-node의 구성
i-node | 구성 정보 | 한 파일이나 디렉터리의 모든 정보 포함 64byte로 구성되는 테이블 |
i-node table | 하위 노드 정보 | 한 파일 시스템에서, 파일이나 디렉터리들의 전체 i-node를 갖고있는 테이블 i-list |
i-number | 등록 정보 | i-node가 i-list에 등록되는 entry number addressing |
addressing | 실제 데이터 정보 (데이터 시작 주소) |
블록위치 정도를 13개의 필드로 관리 Direct data block 10개 (0~9) : 96kb data Single indirect data block 1개 (10) : 16MB Double indirect data block 1개 (11) : 32GB Triple indirect data block 1개 (12) : 70TB |
● 디렉터리 (Directory)
- 디렉터리는 파일 이름을 해당 디렉터리 항목으로 변환해주는 심볼 테이블
UFD(User File Directory) : 자신만의 사용자 파일 디렉터리
MFD(Master File Directory) : 사용자의 이름이나 계정번호로 색인되어 있고, 각 엔트리는 사용자 UFD 지정
디렉터리 종류
Single-Level Directory | 가장 간단한 구조 서로 다른 사용자도 같은 이름 이용 불가 파일의 갯수가 많아지면 성능 제약 |
Two-Level Directory | MFD와 UFD로 구성 사용자들에게 개별적인 디렉터리 생성 다른 계정일 경우 중복 이름 이용 가능 |
트리구조 디렉터리 | 2단계 디렉터리 확장 사용자들이 서브 디렉터리 구성 가능 트리구조는 하나의 루트 디렉터리를 가지며 모든 파일은 고유경로를 가짐 파일은 절대경로와 상대경로 두가지 경로명 지정 가능 |
비순환 그래프 | 사이클이 없는 그래프로 디렉터리들이 서브 디렉터리와 파일 공유 허용 파일 삭제 시, 대상이 없는 포인터를 남김 |
일반 그래프 디렉터리 | 디렉터리 무한루프 발생하지 않도록 파일을 하위 디렉터리가 아닌 링크만 허용함 디렉터리 순회시, 링크가 있으면 우회하여 순환 회피 |
● Multilevel Queue
- FIFO와 RR 스케줄링 방식을 혼합한 것으로 상위 단계에서 완료되지 못한 작업은 하위 단계로 전달되어 마지막 단계에서는 RR 방식을 사용하는 것
- 작업들을 여러 종류의 그룹으로 분할
- 여러개의 큐를 이용하여 상위단계 작업에 의해 하위단계 작업이 선정당함
- 준비 상태 큐를 여러 종류로 분할(작업 분류별로 묶음)하지만 다른 큐로 작업 이동은 불가하며 각 큐는 자신만의 독자적인 스케줄링을 가짐
Multilevel Feedback Queue :
- 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로다른 CPU Time Slice(Time Quantum)를 부여함
- 새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록(aging) 점점 낮은 우선순위 큐로 이동함 (맨 마지막 단계에서는 Round Robin 처리)
- 하위 단계일수록 할당시간은 증가하도록 공평성을 부여함
● SJF (Shortest Job First)
- 실행 시간이 가장 짧은 작업 순으로 CPU 수행하는 비선점 스케줄링 기법
프로세스 - 실행시간
P1 - 6
P2 - 3
P3 - 8
P4 - 7
일 때, 대기시간 P1 = 3, P2 = 0, P3 = 16, P4 = 9 → 평균 대기시간 = (3 + 0 + 16 + 9) / 4 = 7
반환시간 P1 = 3 + 6 = 9, P2 = 0 + 3 = 3, P3 = 16 + 8 = 24, P4 = 9 + 7 = 16 → 평균 반환시간 = (9 + 3 + 24 + 16) / 4 = 13
● HRN (Highest Response-Ratio Next)
- SJF의 약점 보완 기법으로 실행시간이 긴 프로세스를 차별하고 짧은 프로세스를 지나치게 선호하는 점을 보강한 알고리즘으로 각 프로세스의 우선순위를 서비스 시간만 아니고 서비스 대기시간도 계산하는 스케줄링 기법
- 우선순위 = (대기시간 + 서비스 시간) / 서비스 시간
● IPv4 vs IPv6
구분 | IPv4 | IPv6 |
주소 길이 | 32비트 | 128비트 |
표시 방법 | 8비트씩 4부분으로 나눈 십진수 ex) 192.168.10.120 |
16비트씩 8부분으로 나뉜 16진수 ex) 2001:0:0:4137:9b76:3ee3:2274:e11c |
주소 개수 | 약 43억개 | 약 31조개 |
주소 할당 | A, B, C, D 등 클래스 단위 비순차적 할당 |
네트워크 규모 및 단말기 수에 따른 순차적 할당 |
품질 제어 | 품질보장 곤란 | 품질보장 용이 |
헤더 크기 | 고정 | 가변 |
QoS | Best Effort 방식 | 등급별, 서비스블 패킷 구분/보장 |
보안 기능 | IPSec 프로토콜 별도 설치 | 확장기능에서 기본 제공 |
Plug & Play | 지원 안함 | 지원 |
모바일 IP | 곤란 | 용이 |
웹 캐스팅 | 곤란 | 용이 |
전송 방식 | Multi, Uni, Broadcast | Multi, Uni, Anycast |
● IEEE 802.11 표준화 현황
무선 LAN : LAN등의 물리적 케이블 없이, 무선주파수 등을 이용하여 노드 간 데이터 송수신을 지원하는 네트워킹 기술로 무선 LAN 표준은 IEEE 802.11임
- 802.11b : 2.4GHz ISM 대역에서 최대 11Mbps 전송속도를 지원하는 고속 PHY 개발
- 802.11a : 5GHz ISM 대역에서 최대 54Mbps 전송속도를 지원하는 고속 PHY 개발
- 802.11e : QoS 보증을 위한 MAC 강화
- 802.11f : 엑세스 포인트 간의 표준화된 프로토콜 개발
- 802.11g : 2.4GHz ISM 대역에서 최대 20Mbps 전송속도를 지원하는 고속 PHY 개발
- 802.11h : 802.11a 에서 동적 주파수 선택 기능 추가
- 802.11i : 보안을 위한 MAC 강화
● WPAN (Wireless Personal Area Network)
- 10m 이내의 짧은 거리에 존재하는 여러 디지털 장치를 식별하고 기기 사이의 데이터 전송 및 제어가 가능한 ad-hoc 기반의 무선 네트워크 기술
- 주요 특징은 ad-hoc 네트워크, 저전력 통신, 간섭 최소화
주요 WPAN 규격
항목 | 블루투스 | ZigBee | UWB |
개념 | 2.4 GHz ISM 대역에서 적은 전력으로 에너지 사용을 효율화한 WPAN 기술 | 저속 전송으로 다양한 가전제품 등을 리모컨 하나로 모두 동작시킬수 있는 기술 | 매우 낮은 전력을 사용하며 초 광대역으로 디지털 데이터를 전송하는 무선 전송기술 |
표준 | 802.15.1 | 802.15.4 | 802.15.3a |
주파수 대역 | 2.4GHz | 868/916MHz, 2.4GHz | 3.1 ~ 10.6GHz |
MAC | TDMA | CSMA/CA | CDMA/OFDM |
전송 속도 | 24Mbps | 250K, 40K, 20Kbps | 500Mbps |
노드 수 | 8 | 64000 | 1 |
활용 | 헬스케어, 자동차, 센서 | 리모컨, 가전제품 | 반도체 설계, 군사용 |
● 디지털 변조(modulation) 방식
- 컴퓨터에서 발생하는 디지털 신호를 아날로그 신호로 바꿔주는 기술
진폭 변이 변조 (ASK, Amplitude Shift Keying) |
반송파의 진폭을 2 또는 4개로 정해놓고 데이터가 1또는 0으로 변함에 따라 미리 약속된 진폭의 반송파를 수신측에 전송하는 방식 |
주파수 편이 변조 (FSK, Frequency Shift Keying) |
반송파의 주파수를 높은 주파수와 낮은 주파수로 정해놓고 데이터가 0이면 낮은 주파수, 1이면 높은 주파수를 전송하는 방식, 전이중 방식(full-duplex) |
위상 편이 변조 (PSK, Phase Shift Keying) |
송신 측에서 반송파의 위상을 2, 4, 8등분 등으로 나누어 각각 다른 위상에 0 또는 1을 할당하거나, 2나 3비트로 한꺼번에 할당하여 수신측에 전송하는 방식 |
펄스 부호 변조 (PCM, Pulse Code Modulation) |
아날로그 신호를 디지털 신호로 변환하여 전송하는 방식 표본화, 양자화, 부호화하여 변조 |
● PCM (Pulse Code Modulation) 과정
표본화 (Sampling) |
연속적으로 변화하는 값을 일정한 시간적 간격으로 나누어 표본을 추출 PCM 아날로그 음성신호를 디지털화하기 위한 사전작업으로 sampling time 간격으로 나누어 추출하는 과정 |
양자화 (Quantization) |
연속적인 아날로그 값을 이산적인 디지털 값으로 바꾸는 A/D 변환 표본화된 펄스의 크기를 부호화하기 위한 값으로 바꾸어주는 과정 |
부호화 (Encoding) |
각 데이터 정보 하나하나에 할당되는 2진 표현으로 바꾸는 과정 |
● 블루투스(Bluetooth)
- 2.4GHz ISM RF 대역에서 극히 적은 피크/평균/대기 전력으로 에너지 사용을 효율화하여 헬스케어, 자동차, 센서 등으로 쓰임새를 확장한 근거리 무선통신기술(WPAN, Wireless Personal Area N/W)
블루투스 프로토콜 구조
GAP (Gerneric Access Profile) |
장치간 페어링과 링크를 위한 기능을 제공하며, 어플리케이션 레이어에서 다른 블루투스 모드를 구현하기 위한 인터페이스 |
GATT (Generic Attribute Profile) |
ATT(Attribute Protocol)을 이용하여 서비스 검색, 특성 값 파악, 읽기, 쓰기 등의 기능을 수행. 즉, 두 장치간 데이터 전송방법 정의 |
ATT (Attribute Protocol) |
GATT를 만들기 위한 틀 |
SM (Security Manager) |
사용자 인증 및 암호화를 위한 모듈로 AES-128bit 암호화 엔진을 사용 |
L2CAP (Logical Link Control and Adaptation Protocol) |
상위 레벨로 데이터 서비스를 제공하고, 컨트롤러로 보낼 패킷을 쪼개 주거나 받은 패킷을 재조합 하는 역할 오류제어, 인증(Authentication), 암호화 |
HCI (Host Controller Interface) |
컨트롤러와 호스트 간 통신을 위해 사용 |
LL (Link Layer) |
기존 블루투스의 BB(Baseband), LM(Link Manager) 역할 |
● PPP(Point-to-Point Protocol)
- 전화선같이 양단간 비동기 직렬링크를 사용하는 컴퓨터간의 통신을 지원하는 프로토콜
- TCP/IP 기반 등의 데이터 서비스에 많이 이용됨
- 절대적 회선 링크 교환 방식
- LCP는 링크 설립, 검사, 설정, 감시의 기능을 수행
- NCP는 다중 프로토콜(IP, IPX, AppleTalk 등) 트래픽을 전송하는 기능을 수행함
- IP 패킷의 캡슐화를 제공함
- 동기식과 비동기식 회선 모두를 지원함
● HDLC(High-level Data Link Control)
- HDLC 프로토콜은 다양고속 데이터 전송에 적합하고, 비트 전송을 기본으로 하는 범용의 데이터 링크 전송을 제어함
- 컴퓨터 간을 연결하는 컴퓨터 네트워크에도 적합한 전송 제어방식
- ISO 3309, 4435에 기술되어 있음
- 비트지향 프로토콜
HDLC의 주요 동작 모드
- NRM(Normal Response Mode) : 정규 응답모드의 불균형 연결 설정을 요청
- ARM(Asynchronous Response Mode) : 비동기 응답모드의 불균형 연결 설정을 요청
- ABM(Asynchronous Balanced Mode) : 비동기 균형모드 연결 설정을 요청
- NBM(Normal Balanced Mode) : 정규 균형 모드 연결 설정을 요청
프레임 검사 시퀀스 (FCS)
- 정보를 프레임으로 나누어 전송할때, 각 프레임의 끝에 오류검출을 위해 추가하는 정보
● DTE (Data Terminal Equipment)
- 모뎀이나 ISDN 단말기 등의 통신기기와 컴퓨터 간의 통신 기기
DCE (Data Circuit terminating Equipment)
- 모뎀이나 ISDN 단말기 등의 통신기기 상호 간의 통신 기기
- DTE와 DCE는 속도가 동일한 것도 있으나 최근에는 압축등을 위해 DTE 속도가 높게 설정되는 경우가 많음
DSU (Digital Service Unit)
- 아날로그 또는 디지털 신호를 디지털 방식의 전송로에서 이동하기 적합한 형태로 바꾸어 주는 장비
DCS (Data Crossconnect System)
- 망 구성 형태에 따라 선택적으로 연결할 수 있는 장비
● X.25 프로토콜
- COTT에서 DTE로 명명한 사용자 컴퓨터와 DCE로 명명된 통신회사 장비 사이에서 신호들을 교환함으로써 통신의 시작이나 종료를 하는 방법을 규정함
- X.25는 패킷 교환망에 대한 액세스 표준
- X.21은 회선 교환망에 대한 액세스 표준
- 방송망, 이동통신망에서 많이 사용함
- 패킷 계층, 링크 계층, 물리 계층이 X.25 프로토콜의 IP 프로토콜에 포함됨
● 변조 속도
- 신호를 변조하는 과정에서 1초에 몇 회 변조가 발생했는지 나타내며, 단위는 보오(baud)
- 신호속도(bps)는 (속도 * 전송 비트 수)로 계산
ex) 보오(baud)속도가 1400이고, 한번에 3개의 비트를 전송할 때 데이터 신호속도(bps)는?
1초에 1400 보오(baud)로 변조가 가능하며, 한번에 3개의 비트 전송이 가능하므로 신호속도(bps, bit per sec)는 4200bps.
● 매체 접근 제어 (MAC, Media Access Control)
- 데이터 충돌을 방지하려고 LAN에 연결된 모든 장치는 정의된 규칙에 따라 전송매체에 접근함
> CSMA/CD
- 데이터를 송신하기 전에 반송파 여부를 감지하여, 다른 컴퓨터(스테이션)에서 데이터 송신중임을 판단하여 데이터를 전송하지 않는 방식
- 각 호스트들이 전송매체에 경쟁적으로 데이터를 전송하는 방식
- 전송된 데이터는 전송되는 동안에 다른 호스트의 데이터와 충돌할 수 있음
- 충돌 발생시 지속해서 재전송 시도
- 재시도 할때마다 Back off 하는 시간은 매번 2배씩 증가
- 16번 충돌이 계속 발생시 전송을 중지하고 에러 발생을 보고
- 토큰 제어 방식에 비해 구현이 비교적 간단함
> 토큰 제어 방식
- 접속된 노드 사이를 토큰이라는 패킷이 순차적으로 순환하는 동안 토큰을 얻어 전송하고, 전송이 완료되면 토큰을 반납하는 방식
- 충돌현상은 발생하지 않지만, 자신에게 토큰이 올 때까지 기다려야 한다는 단점이 있음
- 대표적인 토큰제어 방식은 토큰 링(Token Ring) 방식과 토큰 버스(Token Bus) 방식
● 다중화 (Multiplexing)
- 전송로 하나에 데이터 신호 여러개를 중복시켜 고속 신호 하나를 만들어 전송하는 방식
TDM (Time Division Multiplexing) |
주어진 시간대역을 여러 타임 슬롯으로 분할하여 각 채널에 배당함으로써 많은 채널이 하나의 전송회선을 공유하는 방식 동기/비동기 방식 |
FDM (Frequency Division Multiplexing) |
대역이 제한된 전송회선의 주파수 대역을 여러개로 분할하여 각 채널에 배당함으로써 많은 채널이 하나의 전송회선을 공유하는 방식 |
CDM (Code Division Multiplexing) |
여러 신호에 각기 다른 코드 시퀀스를 부여한 후 하나의 채널로 다중화하여 전송하는 방식 spread spectrum의 원리에 기초를 둔 방식 FDM + TDM의 혼합방식 |
SDM (Space Division Multiplexing) |
공간적으로 분리된 채널을 단위로 다중화하여 전송 무선은 용량을 증대 스마트안테나 또는 위상배열안테나 이용 서비스 영역을 여러 개의 빔으로 커버하는 다중 빔화 |
DWDM (Dense Wavelength Division Multiplexing) |
광파장을 실어 전송하여 전송용량과 채널의 수를 늘린 기술 동시 전송 기술 : DFB/DBR 레이저 다이오드, 회절격자소자, 광변조, NZ-DSF |
● 프로토콜(Protocol)
- 서로다른 시스템에 있는 두 개체 간에 성공적으로 데이터를 전송하는 통신 규약
프로토콜의 3요소
구문 (Syntax) |
데이터의 구조나 형태(포맷)를 정의 16bit 정보 송신시 앞의 8bit는 주소, 다음 8bit는 데이터로 정의 |
타이밍 (Timing) |
어떤 데이터를 보낼 것인지, 얼마나 빨리 보낼 것인지를 결정 |
의미 (Semantics) |
데이터의 각 부분이 무엇을 뜻하는지 알 수 있게 미리 정해둔 규칙 오류 제어, 동기화, 흐름 제어 |
프로토콜의 기능
단편화(Fragmentation)와 재합성(Assemmbly) | 송신 측에서는 긴 데이터 블록을 전송이 용이하도록 같은 크기의 작은 블록으로 나누어 전송 수신 측에서는 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능 |
캡슐화 (Encapsulation) |
비연결 데이터 전송(데이터그램)과 연결 위주 데이터 전송(가상회선)을 위한 통신로를 개설/유지/종결하는 기능 |
흐름 제어 (Flow control) |
데이터양이나 통신 속도 등이 수신측의 처리 능력을 초과하지 않도록 조정하는 기능 |
오류 제어 (Error control) |
데이터 전송 중 발생할 수 있는 오류나 착오등을 검출하고 정정하는 기능 |
순서 결정 (Sequencing) |
연결 위주의 데이터를 전송할때 송신측이 보내는 데이터 단위 순서대로 수신측에 전달하는 기능 |
주소 설정 (Addressing) |
발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능 |
동기화 (Synchronization) |
하나의 통신로를 여러개로 나누거나(Upward) 회선 여러개를 하나의 통신로로 변환(Downward)시켜 다수의 가입자가 동시에 사용하는 기능 |
Transmission Service | 통신 객체를 사용하기 쉽도록 별도로 추가 서비스(패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능 |
● ARQ(Auto Repeat Request)
- 오류가 발생하면 수신측은 송신측에 오류가 발생한 사실을 알리고 송신측에 오류가 발생한 프레임을 재전송할 것을 요구
Stop-and-Wait ARQ | 에러가 없을 경우 송신측에게 ACK(Acknowledgement)를 전송 에러가 있는 경우 NAK(Negative ACK)를 전송하여 재전송 유도 (하나 보내고 하나 확인 후 다시 전송) |
|
Sliding Window ARQ | Go-Back-N | 1~5 수신했는데 3번이 에러면 3번부터 다시 전송 |
Selective-Repeat | 에러가 발생한 프레임만 재전송 1~5 보냈는데 3번 오류면 3번만 다시 전송 |
● IP 주소체계
- 인터넷에 연결된 모든 컴퓨터를 네트워크상에 구별하는 고유의 주소체계
클래스 타입 | IP 주소를 효율적으로 배정 A, B, C, D, E 클래스 D : 멀티캐스트 E : 예비용 D 클래스는 NetId와 HostId 없음 |
|
네트워크 주소 (Net ID) |
전체 네트워크를 좀 더 작은 네트워크로 분할하여 각 호스트가 속한 네트워크를 대표 8비트, 16비트, 24비트 |
|
호스트 주소 (Host ID) |
네트워크 주소로 표현되는 네트워크 내부에서 각 호스트의 주소를 표현하는 역할 전체 32비트에서 네트워크 주소를 제외한 나머지에 해당 |
● 3 Way-HandShake
- TCP 프로토콜은 단말기와 단말기 간의 세션을 설정할때, 3방향 연결설정(3Way-HandShake)을 통하여 신뢰성 있는 정보 전송을 제공하는 기법
3 Way-HandShake 절차
연결설정 요구 | A 프로세스가 TCP 헤더의 SYN 플래그를 지정한 세그먼트를 전송 | SYN |
연결 수락 | 연결설정 요구를 받은 B 프로세스가 연결을 수락하려면 긍정 응답을 해야함 SYN과 ACK 플래그를 지정해 연결에 대한 긍정 응답을 표시 SYN 플래그가 지정한 세그먼트에는 전송 데이터가 포함되지 않지만 순서 번호는 1 증가 SYN 세그먼트의 순서번호 10에 1을 더한 11번을 Acknowledgement Number 필드에 지정하여 회신 Acknowledgement Number 값을 유효하게 하기위해 ACK 플래그 지정 B 프로세스의 순서번호 50은 임의로 지정된 값 |
SYN, ACK |
연결 수락 확인 | B 프로세스가 전송한 연결 수락 세그먼트가 도착했음을 알림 전송할 데이터가 있는 경우 바로 데이터 전송 |
ACK |
● 슬라이딩 윈도우(Sliding window) 기법
- 윈도우 크기(Window Size) 단위로 바이트를 송신하고, 수신 측에서 수신한 바이트에 대한 확인/응답 신호를 전송하면, 한꺼번에 윈도우 크기만큼 버퍼가 미끄러지듯이 이동함. 호스트는 각 연결 세션마다 하나의 윈도우를 이용함
● TCP 혼잡제어(Congestion control) 기법
- TCP 프로토콜에서 네트워크가 혼잡하다고 판단될때 송신률을 감속시킴. 혼잡제어는 수용할 수 있는 이상의 데이터 전송이 이루어질때 발생하는 패킷 전송 지연 혹은 패킷 손실을 막는 목적으로 사용하며 대표적인 기법은 슬로우 스타트(Slow start) 기법
슬로우 스타트(Slow start) 기법 :
- 미리 정해진 임계값에 도달할때까지 윈도우의 크기를 2배씩 증가시킴. 전송시마다 크기를 두배씩 증가하기 때문에 전송되는 데이터의 크기는 지수 함수적으로 증가함. 전송되는 데이터의 크기가 임계값에 도달하면 윈도우의 크기를 반으로 줄이는 혼잡회피(Congestion avoidance) 단계로 넘어가는 기법
● UDP (User Datagram Protocol)
- TCP/IP 프로토콜 중 트랜스포트 계층의 통신 프로토콜의 하나로 신뢰성이 낮은 프로토콜로써 완전성을 보증하지 않으나, 가상회선을 확립할 필요가 없고 유연하며 효율적 응용의 데이터 전송에 사용
- UDP는 비연결성이고 신뢰성이 없으며 순서화되지 않은 Datagram 서비스를 제공하고 실시간 응용 및 멀티캐스팅이 가능
UDP 주요 특징
비연결성 | 데이터그램 지향의 전송 계층용 프로토콜로 논리적인 가상회선 연결이 필요 없음 |
비신뢰성 | 메시지가 제대로 도착했는지 확인/응답 없음 검사합을 제외한 특별한 오류검출 및 제어 없음 |
순서화되지 않은 Datagram 서비스 | 수신된 메시지의 순서를 맞추지 않음 흐름제어를 위한 피드백을 제공하지 않음 |
실시간 응용 및 멀티캐스팅 가능 | 빠른 요청과 응답이 필요한 실시간 응용에 적합 여러 다수 지점에 전송 가능 |
단순한 헤더 | UDP는 TCP처럼 16bit의 포트 번호를 사용하나, 헤더는 고정 크기의 8바이트(TCP는 20바이트) 사용, 헤더 처리에 많은 시간과 노력 불필요 |
데이터 전송 단위 | 메시지 (TCP에서의 데이터 전송단위는 세그먼트) |
최대 데이터 크기 | 65507 바이트 = 65535 바이트에서 UDP헤더 8바이트와 IP 헤더 20 바이트 제외 |
TCP vs UDP
구분 | TCP | UDP |
정의 | 3, 4 계층의 연결지향적 통신 프로토콜 | 빠른 응답을 요구하는 비연결형 설정을 제공하는 프로토콜 |
데이터 순서 | 보내는 순서 유지 | 순서 유지하지 않음 |
데이터 중복 | 데이터 중복, 손실 없음 | 데이터 중복, 손실 가능 |
에러 제어 | 에러 검사후 에러시 재전송 | 에러 검사후 에러시 재전송 하지 않음 |
흐름 제어 | 슬라이딩 윈도우 | 흐름제어 없음 |
종류 | telnet, ftp, smtp | SNMP, TFTP |
장점 | 신뢰성 있는 경로 확립 | 빠른 전송 |
단점 | 전송에러 감시 부하 | 안전 전송 여부 확인 못함 |
● 주요 프로토콜
전송 계층 | TCP (Transmission Control Protocol) |
전송제어 프로토콜, 네트워크의 정보전달을 통제하는 프로토콜 인터넷을 이루는 핵심 프로토콜의 하나로서 IETF의 RFC793에 기술되어 있음 |
UDP (User Datagram Protocol) |
신뢰성이 낮은 데이터그램 프로토콜로서 완전성을 보증하지 않으나, 응용이나 네트워크 환경에서 가상회선을 굳이 확립할 필요가 없어서 유연하고 효율적인 데이터 전송에 사용되는 프로토콜 |
|
RTP (Real-Time Transport Protocol) |
인터넷상에서 다수가 종단 간에 실시간으로 비디오나 오디오 패킷을 전송하기 위해 표준화된 프로토콜 | |
SCTP (Streaming Control Transmission Protocol) |
멀티미디어 통신을 위해 UDP와 TCP의 일부 장점을 결합하여 설계되었으며, 고도의 신뢰 전송을 제공하는 전송계층 프로토콜 | |
네트워크 계층 | ARP (Address Resolution Protocol) |
TCP/IP 네트워크에서 ARP 프로토콜은 IP주소를 물리 주소(MAC Address)로 변환 프로토콜 |
RARP (Reverse ARP) |
물리 주소인 MAC 주소를 IP주소로 변환시켜주는 역주소 변환 프로토콜 | |
IPSec (Internet Protocol Security Protocol) |
네트워크 계층에서 IP 패킷 단위로 인증 및 암호화를 하는 프로토콜 | |
ICMP (Internet Control Message Protocol) |
TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알리거나, 진단 등과 같이 IP 계층에서 필요한 기타 기능들을 수행하기 위해 사용되는 프로토콜 | |
데이터링크 계층 | HLDC (High-Level DataLink Control) |
고속 데이터 전송에 적합하고, 비트 전송을 기본으로 하는 범용의 데이터링크 전송제어 절차로써, 컴퓨터 간을 연결하는 컴퓨터 네트워크에도 적합한 전송제어방식 |
물리 계층 | X.25 | DTE로 명명한 사용자 컴퓨터와 DCE로 명명된 통신회사 장비 사이에서 신호들을 패킷 단위로 교환함으로써 통신의 시작이나 종료를 하는 방법을 규정 |
● NAT (Network Access Translation)
- 외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서 IP주소를 변환하는 기술
NAT 구성방식
Dynamic | 외부 IP : 내부 IP 매핑 NAT 풀(Pool)에 있는 내부 IP 주소가 외부 IP 주소에 할당 |
Static | 내부와 외부 주소들은 정적으로 1:1 매핑 |
PAT (Port Address) |
외부 IP : 내부 IP 매핑 내부 IP 주소가 포트를 변경해가면서, 같은 외부 IP 주소로 변환 |
LSNAT (Load Sharing) |
외부 IP : 내부 IP 매핑 한개의 외부 IP 주소를 여러개 내부 IP주소로 매핑 |
● DHCP (Dynamic Host Configuration Protocol)
- 네트워크 관리자가 일정한 시간 동안만 유효하도록 하는 임대 개념의 IP 주소를 할당하고 관리할 수 있도록 하는 프로토콜
- DHCP Process는 4개의 Broadcast 통신으로 이루어짐(Discover, Offer, Request, Ack)
메커니즘 :
Automatic allocation | Client에게 영구적인 IP를 자동으로 할당하는 기법 |
Dynamic allocation | Client에게 한정된 시간동안 IP를 할당하는 기법 IP 재사용까지 자동으로 이루어짐 |
Manual allocation | Client의 IP Address를 Network 관리자가 수동으로 할당 DHCP는 할당된 주소를 재 할당하는 기법 |
● CDN (Contents Delivery Network)
- 컨텐츠 제공업자(CP)의 웹 서버에 집중되어 있는 용량이 크고 사용자 요구가 잦은 컨텐츠를 통신사나 데이터센터에 설치한 CDN 서버에 미리 저장하여 최적의 경로로 사용자에게 컨텐츠를 전달하는 기술
CDN 주요 기술
Cashing 기술 | 자주 찾는 페이지를 컴퓨터에 복사해 저장한후 사용자가 찾으면 저장된 정보를 전송 |
Global Server Load Balancing | CDN 서비스를 제공하기 위해 인터넷 망에 분산 배치되어 있는 많은 캐시 서버중에 이용자에게 최상의 서비스를 제공할 수 있는 캐시 서버를 선정하여 연결 |
Load Balancing 기술 | 트래픽 분산을 통해 웹 고객에 대한 서비스 성능 향상 장애가 난 서버를 제외 후 나머지 서버들에게 트래픽 할당 |
Streaming 기술 | 대용량의 멀티미디어 데이터를 다운 받지 않고 즉시 재생 |
컨텐츠 배포 | 각 지역에 분산되어 있는 서버에 동일한 컨텐츠를 정확히 배포 |
동기화 기술 | 컨텐츠 변경시 즉각 반영하여 동일한 컨텐츠로 서비스 |
분산 기술 | 분산 데이터 관리 및 분산 병렬 처리 기술 Grid computing, virtualization 기술 적용 |
● SDN (SW Defined NW)
- 소프트웨어 기술(OpenFlow)을 기반으로 네트워크 장비의 패킷 포워딩 기능과 컨트롤러 기능을 표준 인터페이스로 분리하여 네트워크 개방성을 제공하는 기술
- 이기종 벤더 네트워크 장비의 통합, 소프트웨어 기반으로 라우팅 정의
- 다양한 네트워크 장비 벤더사에 표준 API 제공
- 오픈플로우(OpenFlow) : 네트워크 장비(Control Plane)를 제어하기 위한 기능을 물리적 네트워크와 분리하여 데이터 전달(Data Plane)과 상호작용하기 위한 오픈소스 프로토콜
● SCTP (Streaming Control Transmission Protocol)
- 멀티미디어 통신을 위해 UDP와 TCP의 일부 장점을 결합하여 설계
- 전송경로 장애를 대비한 대체경로 확보 기능, Multi-Streaming 기능 등이 포함된 고도의 신뢰 전송을 제공하는 전송계층 프로토콜
SCTP 기능
멀티 호밍 (Multi Homing) |
SCTP 세션이 여러개의 IP주소 동시 사용. 장애 발생시 대체경로 |
멀티 스트리밍 (Multi Streaming) |
하나의 세션을 통해 다양한 종류의 응용 데이터를 보냄 세션 초기화 단계에서 송신자는 자신이 전송할 스트림의 개수를 수신자에게 통보하며 전송단계에서 각 스트림 별로 독립적인 순서화 기능 제공 데이터 복구 및 재전송 과정 또한 스트림 ID별로 수행되며, TCP에서 문제되었던 HOL(Head-Of-Line) 블록킹 문제 해결 |
세션 초기화 | TCP 3-way handshake와 달리 4-way handshake 사용 4-way handshake 초기화 절차는 TCP SYN 공격 방지 |
데이터 전송 | 데이터 패킷에 TSN(Transmission Sequence Number) 및 SSN(Stream seq num) 값이 부여 TSN은 세션에 대한 흐름제어 및 오류복구에 사용 SSN은 수신 측 SCTP에서 스트림 별 순서화에 사용 |
세션 종료 | TCP에서는 종료시 4단계 절차였으나, SCTP에서는 3단계 절차 사용하여 TCP의 Half-Open 문제 해결 |
● RAID (Redundant Array of Independent Disks)
- 처리속도, 데이터 보호를 목적으로 여러개의 물리적인 디스크를 중복성을 가진 하나의 논리적인 디스크 배열(Disk array)로 변환하는 기술
- 스트라이핑(Stripping) 기법을 통해 데이터를 여러 조각으로 나누어 여러 디스크로 분산 저장하고 동시 접근을 통해 처리속도 향상 가능
- 중복(Redundancy) 기법을 통해 디스크에 저장된 일부 데이터가 손실된 경우에도 복구할 수 있도록 데이터를 중복하여 저장
RAID 주요 구성 방식
RAID 0 | 스트라이핑을 통해 동시접속으로 성능 향상 중복이 없이 데이터를 여러개의 디스크에 분할 저장 |
RAID 1 | 복제(Mirroring)를 통해 데이터 손실 대응 디스크마다 동일한 디스크를 설치하여 데이터를 중복으로 저장하는 방식 |
RAID 5 | 데이터와 패리티(Parity) 데이터를 분산 저장하여 각 분리된 디스크에 저장 패리티 데이터를 여러 디스크에 분산 저장으로 패리티 디스크의 병목현상을 해결 |
RAID 6 | 하나의 패리티 데이터를 두개의 Disk에 이중으로 분산 저장하는 방법으로 두개의 디스크에 동시에 오류가 발생하여도 정상적으로 동작 |
RAID 0+1 | 디스크를 RAID 0으로 먼저 묶고 묶은 논리적 디스크를 다시 RAID 1로 묶음 |
RAID 1+0 | 디스크를 RAID 1 로 먼저 묶고 묶은 논리적 디스크를 다시 RAID 0 으로 묶음 가용성 측면에서 1+0이 0+1보다 더 우수함 |
● Docker & HyperVisor
- 도커(Docker) : 하이퍼바이저 없이 리눅스 컨테이너(Linux Container, LXC) 기술을 바탕으로 소프트웨어의 배포를 자동화 하는 기술
- 서버의 운영체제는 공유하고 어플리케이션이나 프로세스는 격리하여 샌드박스 처리
구분 | 하이퍼바이저 | 도커 |
가상화 레벨 | 하드웨어 가상화 | OS레벨 가상화 |
가상화 OS | 각 독립적 OS 가상화 지원 | 호스트 OS와 동일한 OS 가상화 |
하드웨어 활용도 | 낮음, 동작 오버헤드 큼 | 높음, 동작 오버헤드 낮음 |
기술 | VMWare, KVM, Xen, Hiper-V | LXC(리눅스 컨테이너) 기술 이용 |
장점 | CPU의 가상화 기능 사용 SW 오버헤드 적음 서로 다른 독립적 OS 사용 |
적은 HW 오버헤드와 높은 성능 플랫폼에 상관없이 실행 |
단점 | 별도의 관리 콘솔 필요 | 호스트 OS 환경에서만 동작 가능 |
● C언어 연산자 우선순위
우선순위 높음 --------------------------------------------------------> 우선순위 낮음
증감 연산자( ++ -- ) → 산술 연산자( * / % ) → 산술 연산자( + - ) → 시프트 연산자( << >> ) → 관계 연산자(=< => < > ) → 관계 연산자( == != ) → 비트 연산자( & ^ | ) → 논리 연산자( && ||) → 조건연산자(?:) → 대입연산자(= += *= /= %= <<= >>=) → 순서 연산자( , )
연산자 | 연산 내용 | 우선순위 |
( ), [ ] | 괄호, 대괄호 | 1 |
!, ~, ++, -- | 부정, 증감 산술 연산자 | 2 |
*, /, % | 곱셈, 나눗셈 산술 연산자 | 3 |
+, - | 덧셈, 뺄셈 산술 연산자 | 4 |
<<, >> | 시프트 연산자 | 5 |
<, <=, >, >= | 관계 연산자 | 6 |
&, ^, |, &&, || | 논리 연산자 | 7 |
? : | 삼항 연산자 | 8 |
=, +=, -=, *=, /= | 대입 연산자 | 9 |
● CIDR 표기 및 FLSM(Fixed-Length Subnet Masking)
- CIDR(Classless Inter Domain Routing)은 도메인간의 라우팅에 사용되는 인터넷 주소룰, 원래의 IP 주소 클래스 체계를 쓰는 것보다 더욱 융통성 있도록 할당하고, 지정하는 방식 (Supernetting, Subnetting)
- 예를 들어 192.168.1.0/24의 의미는 서브넷 마스크가 255.255.255.0 이다. 8비트 크기의 앞쪽 3개 필드를 합치면 24개 비트가 되고 이를 CIDR로 표시하면 /24를 붙인다. 즉, 192.168.1.0/24에서 /24의 의미는 현재의 IP에서 앞의 24비트는 Net ID로 사용하고 뒤의 8비트는 Host ID로 사용 중임을 의미하므로 서브넷 마스크는 255.255.255.0 이다.
만일 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 16개의 subnet으로 나눈다고 하면, FLSM은 Fixed-Length Subnet Masking의 약자로서 동일한 크기로 현재의 네트워크를 나눈다는 의미이다. 서브넷 대역에서 호스트들이 사용가능한 IP 주소 중 제일 첫 IP 주소는 네트워크 주소, 제일 마지막 IP 주소는 브로드캐스트 주소로 할당함. 나머지 IP들은 호스트에 할당함. 만일 4개의 비트를 빌려오면 2^4인 16개가 서브네팅 가능한 최대 기수이다. 4개의 비트를 Net ID로 가져온 경우 이를 CIDR로 표시하면 192.168.1.0/28이 된다. Net ID 개수가 총 28개(24 + 4)라는 의미이다. 이때 서브넷 마스크는 255.255.255.240이 된다. 마지막 240은 마지막 8개 비트에서 Net ID로 할당한 4개를 1로 세팅한 후 10진수로 표현하면 11110000이 240이 된다.
서브네팅 (Subnetting) |
네트워크의 효율적 사용을 위하여 네트워크를 여러개의 서브넷으로 분리하는 기법 |
슈퍼네팅 (Supernetting) |
네트워크에서 수용가능한 호스트를 확장하기 위하여 여러개의 서브넷을 합치는 기법 |
FLSM (Fixed-Length Subnet Masking) |
네트워크 주소를 효율적으로 사용하기 위하여 서브넷마스크를 동일 크기로 나누는 기법 |
VLSM (Variable-Length Subnet Mak) |
서브네팅 이후에도 IP 주소가 낭비되는 것을 추가로 방지하기 위해서 서브넷마스크의 길이를 가변적으로 조정하는 기법 |
● 파이썬 for문 사용법
ex) for i in range(...)
range(10) → 0~9
range(1,10) → 1~9
range(1,10,2) → 1,3,5,7,9
댓글