파일 시스템에서의 Data Blcok 파일에서는 Block이라고 하는 것을 저장단위로 사용한다.이 Block 하나의 크기는 4096바이트이다. 디스크에서 파일을 저장할 때, Block을 무작위로 저장하지는 않는다. 어떻게 배치하느냐에 따라 그 전략이 달라진다.우선, 지금은 잘 사용하지 않는 _Contiguous Allocation_에 대해 알아보자. Contiguous Allocation 이름을 보고 유추할 수 있듯이, _Contiguous Allocation_방식은 파일을 저장할 때 연속적으로 Block을 배치한다.이 방식을 사용하면 File Allocation Table을 사용하는데, 여기에 파일의 시작 Block과 Block의 길이를 저장한다. 물론 파일의 FCB에서도 파일의 시작 Block..
커널로의 진입이 필요한 시점은 3가지 존재한다. InterruptTrap (software interrupt)System Call 이 중에서 인터럽트가 어떻게 커널 코드로 들어가고 어떤 처리가 일어나는지 알아보자. 인터럽트란? 인터럽트란 비동기적 이벤트가 발생했다는 사실을 주변장치로 알리는 방법을 뜻한다. 여기서 비동기란 이벤트가 언제 일어날 지 알 수 없다는 뜻인데, 이는 우리가 키보드를 언제 두드릴지 모르는 것과 같다고 생각하자. 반대로 동기란 이벤트가 일어날 시간이 정해져 있다는 뜻이다. 인터럽트가 발생하면 가장 먼저 PIC(Programmable Interrupt Controller)에 신호가 도착한다. PIC 칩은 곧장 CPU로 신호를 전달하는 프로세스를 거친다. 이때 Clock 인터럽..
백준 2309 🔲 내 풀이 #include using namespace std; int n = 9, k = 7; int a[9]; vector result(7); void combi(int start, vector b) { if (b.size() == k) { if (accumulate(b.begin(), b.end(), 0) == 100) { copy(b.begin(), b.end(), result.begin()); } return; } for (int i = start + 1; i > a[i]; } vect..
Digital To Analog 앞서 아날로그 신호에서 디지털 신호로 변환하는 PCM, DM이라는 두 가지 방법에 대해 살펴보았다. 그렇다면 반대로 디지털 신호에서 아날로그 신호로 변환하는 것도 분명히 필요할 것이다. 그러한 작업은 Modulator(변조기)라는 것을 통해 진행되며 변조된 값을 Link로 전달한다. 받는 쪽에서도 Demodulator(역변조기)를 통해 수신받은 아날로그 신호를 디지털 신호로 변환한다. 이제부터 디지털 데이터를 아날로그 데이터로 변환하는 Modulation(변환)의 과정을 살펴볼 것이다. 기준은 진폭(Amplitude), 주파수(Frequency), 위상(Phase)에 따라 나눈다. Bandwidth와 Carrier Signal Modulation(변환)의 과정을 이해하기 ..
데이터의 종류는 아날로그 데이터일 수도 있고, 디지털 데이터일 수도 있다. 이번 포스팅에서는 디지털 신호를 디지털 신호로 변환하는 방법을 알아볼 것이다. 그러한 방법에는 라인 코딩과 블록 코딩 두 가지 방식이 있는데 라인 코딩에 대해 먼저 배워보자. Line Coding 라인 코딩은 디지털 데이터를 디지털 신호로 변환하는 과정이다. 인코더는 디지털 데이터를 디지털 신호로 인코딩하고, 디코더는 디지털 신호를 디지털 데이터로 디코딩하는 역할을 맡는다. 이때, 인코딩과 디코딩에 대한 규칙을 정해놓은 것이 라인 코딩의 정확한 의미이다. 뭐 사실 규칙이라고 해봤자, 결국 짧은 시간 안에 많은 데이터를 송신하는 것을 데이터 통신의 목적으로 둔다. 조금 더 전문적인 용어로는 Signal rate를 낮추고, Data ..