본문 바로가기

source-code

(23)
🔒 QAnaray Privacy Policy 1. General Provisions Personal data refers to any information related to an identifiable living individual. This includes data such as names, authentication details, and any other information that, alone or in combination with other data, can identify a specific person. QAnaray (hereinafter referred to as “the Company”) collects, uses, and processes personal information based on user consent and..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 8장. 프로그래밍 언어 처리 - 컴퓨터는 프로그램을 어떻게 해석하고 변환하는가 어셈블리 언어 어셈블리 언어 → 프로그래머가 모든 비트 조합을 외우지 않고, 이해하기 쉬운 니모닉을 통해 명령어 쓸 수 있음. 주소에 이름(레이블)을 붙일 수 있음, 코드에 주석을 달아 다른 사람들이 프로그램을 더 쉽게 읽고 이해하도록 도와줄 수 있음. 고수준 언어 어셈블리 언어보다 더 높은 추상화 단계에서 동작. 컴파일러를 통해 소스 코드가 기계어로 번역됨. 구조적 프로그래밍 잘못된 GOTO 사용으로 인해 발생할 수 있는 스파게트 코드 문제를 해결하기 위해 개발! 깔끔한 제어 흐름 - 프로그램을 더 쉽게 이해할 수 있음. 어휘 분석 어휘 분석 : 코드를 기호로부터 단어와 같은 성격의 토큰으로 변환하는 과정 상태 기계 상태로 ..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 7장. 데이터 구조와 처리 - 어떻게 해야 프로그램에서 데이터를 잘 구성하고 처리할까 데이터 구조 : 데이터를 조직화하는 표준적인 방법. → 데이터 구조 중 상당수는 여러 유형의 메모리를 더 효율적으로 사용하기 위해 존재 참조 지역성 = 필요한 데이터를 (메모리에서) 서로 근처에 유지하라. 금방 사용할 데이터라면 더 가까운 곳에 저장하라! 기본 데이터 타입 프로그래밍 언어는 다양한 기본 데이터 타입(primitive data type) 제공 - 크기(비트 수) 와 해석(부호가 있는지 없는지, 부동소수점 수인지, 문자인지, 포인터인지, 불리언인지)이라는 두 측면 존재 포인터 컴퓨터 아키텍처에 따라 결정되는 크기의 부호가 없는 정수 정숫값이 아니라, 메모리 주소로 해석됨 - 원하는 값이 있는 위치를 포인터로..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 6장. 입출력과 네트워킹 - 컴퓨터는 외부와 어떻게 상호작용하는가 저수준 I/O 가장 단순한 I/O는 - CPU가 읽거나 쓸 수 있는 비트에 물건을 연결한 형태의 I/O 네트워킹 네트워크 - 근거리 네트워크(LAN) / 광역 네트워크(WAN) 인터넷 → 네트워크들로 이뤄진 네트워크 = 여러 LAN을 하나로 연결해주는 WAN 인터넷 = 여러 계층으로 이뤄진 프로토콜의 집합! TCP/IP(전송 제어 프로토콜/인터넷 프로토콜) IP는 패킷을 한 곳에서 다른 곳으로 옮겨주며, 이 패킷을 데이터그램이라고 부름 컴퓨터를 위한 전신과 같은데, 송신자는 수신자가 메시지를 언제 받는지 알 수 없고, 심지어는 메시지를 제대로 받았는지 여부도 알 수 없음 TCP는 IP 위에 만들어졌고, 패킷이 제대로 배달됐는지를 확실히 보..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 5장. 컴퓨터 아키텍처와 운영체제 - 컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까 기본적인 구조 요소 가장 흔한 두 가지 컴퓨터 구조 : 폰 노이만 구조 / 하버드 구조 프로세서 코어 마이크로프로세서와 마이크로 컴퓨터 마이크로프로세서 : 메모리와 I/O가 프로세스 코어와 같은 패키지에 들어 있지 않은 프로세서. 보통 큰 시스템에 들어가는 부품으로 쓰임 마이크로 컴퓨터 : 모든 요소를 한 칩 안에 패키징 한 프로세서. 식기세척기 등에서 찾을 수 있는, 단일 칩으로 된 작은 컴퓨터. 프로시저, 서브루틴, 함수 코드를 재사용하는 주요 수단! 함수가 동작한다는 의미는? → 함수를 호출하는 부분에서 함수를 실행하고 다시 돌아올 방법이 필요. 원래 자리로 돌아오기 위해서는, 어디서 함수로 들어갔는지를 기..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 메모리 조직과 주소 지정 비트를 하나 기억할 때 플립플롭이 유용하고, 레지스터를 사용해 쉽게 여러 비트를 저장할 수도 있음. but 훨씬 더 많은 정보를 저장해야 한다면? (ex 여러 가지 덧셈 결과 저장) → 레지스터를 많이 쌓은 후 디코더 를 기본 요소로 사용해 각 레지스터에 번호를 부여! (이 번호를 주소address라고 함) →셀렉터를 이용해 지정한 주소에 해당하는 레지스터의 출력을 선택! ==> 이러한 요소들을 합해 메모리 컴포넌트가 만들어짐. 임의 접근 메모리(RAM) 메모리 위치 중 원하는 곳은 어디든 원하는 순서로 쓰거나 읽을 수 있음 정적 램(SRAM) / 동적 램(DRAM) 휘발성 메모리 - 전원이 끊어지면 데이터가 사라짐 코어(core) 메모리 비휘발성 RAM - 비트를 도넛 모양의 ..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 논리 게이트 = 논리 연산을 수행하는 회로가 미리 들어가 있는 회로! → 하드웨어 설계자가 밑바닥부터 모든 회로를 설계할 필요 없이, IC를 선으로 연결해 복잡한 회로를 쉽게 만들 수 있게 해 줌. 논리 게이트에서 가장 단순한 회로 → NAND(not and) 나 NOR(not or) 트랜지스터를 2개나 4개 사용. AND나 OR은 이보다 더 비싸고, 느리며, 전력 소비도 큼 이력 현상을 활용한 잡음 내성 향상 잡음으로 인해 입력 신호가 문턱값을 여러 번 오락가락해 출력 신호에 작은 오류 발생하는 문제 존재 이력 현상 을 사용해 이를 방지 판정 기준이 이력(과거에 벌어진 일)에 따라 달라짐 입력 신호가 두 문턱값 중 하나를 넘어간 경우, 반대쪽 문턱값을 지나가며 출력이 반전되려면 값이 크게 변해야 함 차..
한 권으로 읽는 컴퓨터 구조와 프로그래밍 텍스트 표현 수를 사용해 문자나 키보드에 있는 다른 기호 등을 표현하는 방법 아스키 코드 키보드에 있는 모든 기호에 대해 7비트 수 값을 할당 유니코드 변환 형식 8비트(UTF-8) 비트 가격이 떨어짐에 따라, 문자에 16비트 코드를 부여하는 유니코드 만들어짐 비트 같은 추상화를 사용해 숫자를 표현하고, 숫자를 사용해 문자를 표현하며, 다시 다른 숫자를 사용해 이러한(문자를 표현하는) 숫자를 표현! 유니코드 변환 형식 8비트 인코딩 방법이 하위 호환성과 효율성 때문에 가장 널리 쓰이고 있음 문자를 사용한 수 표현 UTF-8은 문자(ex A)를 표현하는 비트들(2진수 000000001000000)로부터 나온 숫자들(0x0041)을 표현하는 숫자들(UTF-8로 인코딩한 값)을 표현하기 위해 숫자(실제 UTF..