Fundamental of CS 26

빅 오(Big O) : N개의 원소일 때, 몇 단계가 필요한가?

빅 오(Big O) Computer Scientist들은 서로간에 시간 복잡도를 쉽게 소통할 목적으로 자료구조와 알고리즘의 효율성을 간결하고 일관된 언어로 설명하기 위해 수학적 개념을 차용했다. 이러한 개념이 빅 오(Big O) 표기법이다. 빅 오(Big O)가 의미하는 것 - 데이터 원소가 N개일 때, 알고리즘에 몇 단계가 필요한가? [배열 읽기에 필요한 단계 수] : O(1) → (N과 무관하게) 배열에 원소가 몇 개든 배열에서 읽기는 항상 한 단계면 된다. [N개 배열의 선형 검색 단계 ] : O(N) → 배열의 선형 검색에는 N단계가 필요하다 [이중 배열의 선형 검색 단계] : O(N^2) → 이중 for문을 사용하므로 N의 2승 단계가 필요하다. 빅 오(Big O)가 나타내는 또다른 깊은 의미 ..

SSH (Secure Shell)

SSH란? SSH는 네트워크 상 다른 컴퓨터의 쉘에 접속하기 위해 사용하는 프로토콜이다. 기존 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화가 이루어지지 않아 계정 정보 노출 위험이 높으므로, 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다. 기본 포트는 22번으로, 셸로 원격 접속하는 것이므로 기본적으로 CLI상에서 작업을 하게 된다. 사용처 서버 관리자가 원격으로 서버를 관리할 때, RaspberryPI 등에 원격으로 접속하여 설정할 때 등. 내부 동작을 간단하게 알아보자면 SSH 서버인 데몬(daemon)이 있고, SSH 클라이언트가 접속을 시도하면 다음과 같은 순서가 진행된다. 서버와 클라이언트는 서로의 공개키(Public key)를 알고있다. 클라이언트가 서버에 연결..

ISA (Instruction Set Architecture - by The LC-3)

0. Intro 지금까지 언급한 ISA(Instruction Set Architecture)의 정체는 무엇일까? ISA도 결국 특정 규칙과 체계를 가지고 있는 하나의 언어이다. 다만, 한국말이나 영어와 같은 자연어가 아니고, C 언어나 자바와 같은 고급 언어도 아니며, CPU가 이해할 수 있는 0과 1로 이뤄진 기계어일 뿐이다. 이번 포스팅에서는 ISA의 개념에 대해 명확히 이해해 보고, 우리가 공부해볼 LC-3라는 교육용 ISA의 명령어 체계에 대해 구체적으로 한 번 알아볼 것이다. 1. ISA (Instruction Set Architecture) ISA는 해당 CPU가 어떤 데이터들을 대상으로 어떤 연산들을 수행할 수 있는지, 어떤 종류의 레지스터들을 몇 개 사용하는지, 어떤 구조의 메모리와 호환이..

Von Neumann Model (폰 노이만 구조)

1940년대 말에 폰 노이만(Von Neumann)이 제시한 아이디어로, 그는 인류 역사상 위대한 천재 중 한 명으로 꼽힌다. 미국에서 수학자&물리학자로서 넓은 분야에서 활동하던 인물로, 컴퓨터 분야에서도 지금까지 언급될 만큼 위대한 업적을 남겼다. 바로 현대 컴퓨터의 기본 구조를 확립한 것이다. 0. Stored-Program Computer (프로그램 내장식 컴퓨터) - 현대 컴퓨터의 기본 구조 폰 노이만은 EDVAC이라는 컴퓨터에 대한 보고서의 초안에서 메모리에 프로그램이 저장되는 방식을 소개하며, 훗날 폰 노이만 구조라 불리는 컴퓨터 아키텍쳐를 제안하였다. 전자식 기억장치에 프로그램 명령어를 저장하는 전산기이다. 폰 노이만 구조는, 프로그램 데이터와 명령어 데이터를 같은 메모리에 저장하는 프로그램..

CPU & System BUS

명령어 처리 절차 (Instruction Processing) 1. FETCH 메모리에 저장된 명령어를 읽어오는 과정이다. PC에 저장된 메모리 주소를 MAR에 저장하여 명령어를 MDR로 읽어 들이고, MDR에 저장된 명령어를 IR로 옮기면 된다. 그리고 PC의 값을 1만큼 증가시켜서 다음 FETCH를 수행할 때는 바로 다음에 위치한 명령어를 읽을 수 있게 한다. 2. DECODE 명령어가 어떤 종류의 명령인지 파악하는 과정이다. 명령어의 opcode에 해당하는 부분을 CPU 내 Decoder에 입력하여 어떤 명령인지 파악하고, 그것에 따라 opcode를 제외한 나머지 비트를 해석하는 방법을 결정하게 된다. 예를 들어 ADD 명령어는 opcode를 제외한 하위 비트 중 어떤 부분은 첫 번째 피연산자에 해..

[CSAPP] Ch 1. Prologue : A Tour of Computer System

Ⅰ. 컴퓨터 시스템으로의 여행 (A Tour of Computer Systems)   1.0  Intro    컴퓨터 시스템은 하드웨어와 시스템 소프트웨어로 구성되며, 이들과 함께 작동하여 응용 프로그램을 실행한다. 시간이 지남에 따라 시스템의 구현 방법은 바뀔 수 있지만, 근본적인 개념들은 변하지 않는다. 모든 컴퓨터 시스템들은 유사한 기능을 수행하는 유사한 하드웨어와 소프트웨어 컴포턴트를 가지고 있다.   여러분이 컴퓨터 시스템, 그리고 시스템이 응용프로그램에 미치는 영향을 이해한다면 보기 드문 "파워 프로그래머"가 되는 길로 향하게 될 것이다.    시스템에 관한 공부의 시작은 hello 프로그램이 시스템에서 실행되고, 단순한 메시지를 출력하고, 종료될 때까지의 수명주기를 추적하는 것으로 시작한다...