Spread Spectrum 데이터는 누군가에 의해 조작되거나, 탈취되면 안된다. 만일 군사 작전 시 송/수신 되어야 하는 중요한 데이터가 탈취당한다면 작전 상에서도 굉장히 위험할 것이다. 그래서일까, 이렇게 무선 통신을 하는데 있어 보안성과 간섭에 대한 영향을 최소화하기 위한 기술이 군사 목적으로 최초에 등장하였다. Spread Spectrum이란 의도적으로 신호를 넓은 주파수 대역으로 퍼뜨려 보안성과 간섭 저항성을 높이는 기술이다. Spread Spectrum의 방법으로는 여러 가지가 있으나 대표적으로 FHSS와 DSSS가 있다. 이제부터 두 방법 간에 어떤 차이점이 있는 지 알아보자. Frequency Hopping Spread Spectrum (FHSS) FHSS는 각 데이터를 서로 다른 주파수에..
Multiplexing (다중화) Multiplexing은 다수의 신호를 하나의 데이터 링크에 동시에 보내는 방법이다. 여기서 다수의 신호는 아날로그 신호나 디지털 신호가 될 수 있다. 특히 아날로그 신호는 빛을 이용한 신호도 있어 두 가지로 나뉜다. Frequency Division Multiplexing (FDM) Frequency Division Multiplexing(주파수 분할 다중화)는 우리 주변에서 흔히 사용되는 기술 중 하나이다. 이 기술은 다수의 아날로그 신호를 하나의 데이터 링크를 통해 전송할 수 있게 해 주는데, 이는 마치 여러 강의 물줄기가 하나의 큰 강으로 합류하는 것과 같은 원리이다. 하지만, 이런 합류를 위해서 강의 폭, 즉, 데이터 링크의 대역폭이 충분히 넓어야 한다. 위 그..
아날로그 데이터를 아날로그 신호로 변환하는 방법은 크게 AM, FM, 그리고 PM으로 나뉜다. 각각 진폭, 주파수, 그리고 위상을 조작해 변환을 진행할 수 있다. Amplitude Modulation (AM) AM(Amplitude Modulation) 변조는 변조 신호의 진폭에 비례해 반송파의 진폭을 변화시켜 정보를 전송하는 방식이다. 아날로그 데이터(변조 신호)를 반송파(carrier signal)에 실어 보내는 것이다. 따라서 반송파의 주파수와 변조 신호의 주파수가 일치하게 된다. AM 변조의 대역폭은 변조 신호의 최대 주파수의 2배가 된다. 이는 다음과 같이 계산할 수 있다. 변조 신호의 주파수를 $f_{m}$, 반송파의 주파수를 $f_{c}$라고 하면 최대 주파수는 $f_{m}$ + $f_{c}..
Digital To Analog 앞서 아날로그 신호에서 디지털 신호로 변환하는 PCM, DM이라는 두 가지 방법에 대해 살펴보았다. 그렇다면 반대로 디지털 신호에서 아날로그 신호로 변환하는 것도 분명히 필요할 것이다. 그러한 작업은 Modulator(변조기)라는 것을 통해 진행되며 변조된 값을 Link로 전달한다. 받는 쪽에서도 Demodulator(역변조기)를 통해 수신받은 아날로그 신호를 디지털 신호로 변환한다. 이제부터 디지털 데이터를 아날로그 데이터로 변환하는 Modulation(변환)의 과정을 살펴볼 것이다. 기준은 진폭(Amplitude), 주파수(Frequency), 위상(Phase)에 따라 나눈다. Bandwidth와 Carrier Signal Modulation(변환)의 과정을 이해하기 ..
Block Coding Block 코딩이란 동기화(Synchronization)나 오류 검출에 특화된 방법이다. 이를 위해 여분의(redundancy) 정보를 더 포함한다. 기본적으로 m개의 비트에서 n개의 비트로 변환함과 동시에 n이 m보다 클 경우에 mB/nB encoding이라고 부른다. 4B/5B 라인 코딩에서 NRZ-I 방식을 떠올려보자. 데이터 비트 1이 반복되는 경우 전압이 뒤바뀐다. 하지만, 0이 반복될 때는 직류 성분이 존재하는 단점이 있었다. 이러한 단점을 해결하기 위해 비트 하나를 추가하는 방식으로 해결한다. 이때, 그냥 추가하는 것이 아니라 4개의 데이터 비트 자체를 5개의 비트로 치환한다. 맨 뒤에 추가하는 것이 아니다. 여기서 사용하는 정의된 테이블도 존재하기 때문에 이 테이블을..
데이터의 종류는 아날로그 데이터일 수도 있고, 디지털 데이터일 수도 있다. 이번 포스팅에서는 디지털 신호를 디지털 신호로 변환하는 방법을 알아볼 것이다. 그러한 방법에는 라인 코딩과 블록 코딩 두 가지 방식이 있는데 라인 코딩에 대해 먼저 배워보자. Line Coding 라인 코딩은 디지털 데이터를 디지털 신호로 변환하는 과정이다. 인코더는 디지털 데이터를 디지털 신호로 인코딩하고, 디코더는 디지털 신호를 디지털 데이터로 디코딩하는 역할을 맡는다. 이때, 인코딩과 디코딩에 대한 규칙을 정해놓은 것이 라인 코딩의 정확한 의미이다. 뭐 사실 규칙이라고 해봤자, 결국 짧은 시간 안에 많은 데이터를 송신하는 것을 데이터 통신의 목적으로 둔다. 조금 더 전문적인 용어로는 Signal rate를 낮추고, Data ..
File과 FCB File이란 보조 기억 장치 내부에 저장되어 전원이 꺼져도 지워지지 않는 정보의 저장단위이다. 주로 입출력 용도로 많이 사용하고 Create, Delete, Open, Read, Write 등의 연산이 존재한다. FCB는 파일에 대한 정보를 저장해놓은 데이터 구조이다. 이전에 배웠던 PCB와 유사한 개념인데, 다른 점은 컴퓨터를 종료해도 데이터가 남아있어야 해서 디스크에 저장된다. FCB가 가지는 정보는 다음과 같다. Basic Information 파일 이름 파일 타입 (Text, Binary..) File Organization Address Information Volumn : 파일이 저장된 디바이스를 가리킨다. Starting Address : 디스크 내의 시작 물리 주소 Siz..
DeadLock이란? DeadLock이란 두 개 이상의 프로세스들이 서로의 자원을 요구하며 Block 상태로 무한정 대기하는 것을 말한다. 이러한 현상은 서로가 서로에게 있는 자원을 원하지만 자원이 Release 되지 않았기 때문에 발생한다. 그림을 보면 DeadLock 발생하는 상황은 각 프로세스가 자원을 가지고 있지만, 상대 프로세스에게 있는 자원을 기다리며 일어난다. 데드락에 걸릴 수 있는 자원의 종류로는 두 가지가 있다. Reusable Resources(재사용 가능한 자원) release된 이후에 사용가능하다. 오직 하나의 프로세스에 의해서만 사용된다. 각 프로세스가 하나의 리소스를 가지고 있고, 그와 동시에 다른 리소스를 요청할 때 데드락이 발생한다. Consumable Resources 한 ..
세마포어(Semaphores)란? 지금까지 Critical Section Ploblem을 소프트웨어/하드웨어적으로 해결하는 방법을 찾아봤다. 소프트웨어적인 방법으로는 세 가지 솔루션이 있었고, 하드웨어적인 방법에는 Testset 인스트럭션을 사용했다. 조금 더 나은 방안은 하드웨어적으로 해결하는 것이라 하였는데, Testset 역시나 Busy Wating을 해야하는 큰 단점이 있다. 세마포어는 Busy Wating을 해결하는 효율적인 방법을 제시한다. 세마포어 자체만으로는 Int 값을 저장할 뿐인 구조체일 뿐이지만, _semWait (s)_와 _semSignal (s)_을 통해서 손쉽게 Critical Section Ploblem을 해결한다. semWait (s) semiphore의 값을 1 감소 시킨다..
이전에 Race Condition을 해결해주기 위해 Atomic Operation을 해주거나, 소프트웨어적인 방법으로 Mutual Exclusion을 보장해주었다. 하지만, 이러한 방법들은 실제로 위험하거나 많은 오버헤드를 동반하기 때문에 실제로는 잘 쓰지 않는다. 따라서 실제로는 하드웨어의 도움을 받아 Mutual Exclusion을 보장해주는데 이에 대해 자세히 살펴보도록 하자. Testset 인스트럭션 이전에 살펴보았던 소프트웨어적인 코드 먼저 확인해보자. do { choosing[i] = true; number[i] = max(number[0], number[1], ..., number[n-1]) + 1; choosing[i] = false; for(j = 0; j < n; j++) { while..