본문 바로가기

Computer Science5

[CS] 계층적인 데이터 구조 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 계층적인 데이터 구조 앞에서는 선형적인 데이터 구조를 봤습니다. 이 선형적 구조는 데이터를 가져오는데 문제가 있습니다. 예를 들어, 연결 리스트의 저장된 데이터를 가져오려면, 리스트를 순회해야만 합니다. 리스트 길이가 n이라면 최대 n번 노드를 순회해야 한다는 것입니다. 앞에서 연결 리스트의 노드를 연결하기 위해서 포인터를 사용했습니다. 이 포인터 수에는 제한이 없기 때문에, 메모리 공간이 허용하는 한 원하는데로 데이터를 조작할 수 있습니다. 2진 트리 간단한 계층적 데이터 구조로 2진 트리가 있는데, '2진' 이라는 말은 2진수가 아니라 최대 2개의 다른 노드와 연결될 수 있기 때문에 붙은 말입니다. 아래 그림에서 트리.. 2022. 2. 15.
[CS] 아날로그 처리 방법 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 아날로그 처리 방법 실제 소리나 빛 같이 아날로그는 연속적이지만, 컴퓨터에는 연속적인 대상을 저장할 방법이 없습니다. 그래서 데이터의 샘플을 취해야 합니다. 샘플링 샘플을 취한하는 말은 시간이나 공간상 일정한 간격으로 값을 읽어야 한다는 뜻입니다. 저장한 데이터를 다시 영상이나 빛으로 보여주기 위해서는 샘플링 데이터로부터 아날로그 신호를 다시 만들어야 합니다. 샘플링은 새로운 것이 아닙니다. 무성 영화 시절에도 영화 화면은 1초당 16프레임을 샘플링해 만들었습니다. 아래에서는 컴퓨터가 아날로그 신호를 만들거나, 아날로그 신호를 분석하는 방법을 알아보겠습니다. 디지털을 아날로그로 변환 디지털 숫자를 사용해 아날로그 전압을 .. 2022. 2. 9.
[CS] 메모리 계층과 성능 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 메모리 계층과 성능 과거에는 CPU와 메모리의 작업 속도가 같았지만, 시간이 지남에 따라 CPU는 속도가 빨라졌고, 메모리는 그렇게까지 빨라지지 못해 CPU 보다 속도가 뒤쳐지기 시작했습니다. 이로인해, CPU가 느린 메모리를 기다리느라 아무 일도 하지 않는 경우가 생겼습니다. 메모리 계층 메모리를 필요에 따라 여러가지 종류로 나누어 둠을 의미합니다. 이 때 필요한 대부분의 경우 CPU가 메모리에 더 빨리 접근하기 위함 입니다. 레지스터와 캐시는 CPU 내부에 존재합니다. CPU가 아주 빠르게 접근할 수 있습니다. 주 메모리는 CPU 외부에 존재합니다. 레지스터와 캐시보다 더 느리게 접근 할 수 밖에 없습니다. 대용량 저.. 2022. 2. 3.
[CS] 논리 게이트 이 글은 '한 권으로 읽는 컴퓨터 구조와 프로그래밍' 을 정리하여 작성한 글입니다. 논리 게이트 불리언 대수를 물리적 장치에 구현한 것으로, 하나 이상의 논리적 입력값에 대해 논리 연산을 수행하여 하나의 논리적 출력값을 얻는 전자회로 게이트를 사용하면 배관공이 기성 제품의 배관들을 이용하여 복잡한 수도 시스템을 만드는 것처럼 복잡한 회로를 쉽게 만들 수 있습니다. 이전에 배운 것들과 마찬가지로 AND 게이트 출력은 A와 B가 참인 경우에만 Y에 참이 출력됩니다. 위의 인버터(NOT) 기호에서 동그라미가 없는 기호는 버퍼(buffer) 라고 하고, 출력을 전달하기만 합니다. 반면, 인버터 기호는 입력에 대한 보수(complement)를 출력합니다. (ex, 0 --> 1 / 1 --> 0) 논리 게이트에서.. 2022. 1. 25.