전체 글54 [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 11. 알고리즘 아이디어 책에서 나온 예시들은 핵심 내용을 가릴 만큼 지나치게 복잡해, 조금더 간단한 예시로 바꾸어서 핵심 아이디어만을 전달하고자 했다.중요한 것은 각 예시를 이해하는 것이 아니라 성능과 효율성을 높이기 위해 문제를 바라보는 관점을 달리하는 것이 유용하며 이런 관점도 있구나를 살펴보고 가는 것이다. 따라서 본문의 예시에서 이해되지 않는 부분이 있더라도 큰 그림을 위주로 읽기를 권한다. 컴퓨터의 성능을 높이는 방법은 간단하다. 더 좋은 컴퓨터를 사면 된다. 예를 들어, 우리나라 기상청에서는 정밀한 날씨 예측을 위해 슈퍼컴퓨터를 보유하고 있다. 1초에 무려 5경2천900조번 연산이 가능하다. 그러면 해당 컴퓨터의 가격은 얼마일까? 더 성능이 좋은 컴퓨터를 구매하는 것.. 2024. 4. 24. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 10. 웹 브라우저를 활용한 프로그래밍 웹 브라우저를 활용한 프로그래밍을 살펴보기에 앞서서, 웹 브라우저를 활용하지 않고 프로그래밍을 하게 되면 어떤 과정을 거쳐야하는지를 살펴볼 것이다. 시스템 프로그램의 빌드 과정 보통 시스템 프로그램은 운영 체제에 딸려오는 가벼운 유틸리티나 프로그램 개발에 도움이 되는 컴파일러등을 가리킨다. 이런 프로그램을 개발할 때는 시스템의 기능을 최대한 활용해야하기 때문에 고수준의 언어 중에서도 좀 더 기계에 가까운 C나 C++등의 언어를 사용한다. C언어에서 개발 과정 중에서 직접 메모리를 할당하는 malloc이라는 함수를 사용할 만큼 기계에 가깝다. 또한 메모리의 주소값을 저장하기 위해 포인터라는 개념또한 빈번하게 등장한다. 컴파일러 언어인 C로 개발된 프로그램.. 2024. 4. 23. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 9. 웹브라우저 최초의 웹브라우저 최초의 웹브라우저는 간단했다. 브라우저는 URL을 사용해 서버에게 문서를 요청하면, 서버는 문서를 브라우저에게 보내고, 브라우저는 문서를 표시했다. URL에는 어떤 정보가 포함되어 있어서 문서를 요청할 수 있는 것일까? https://www.example.com/path/to/myfile.html 스킴 호스트 경로 https www.example.com path/to/myfile.html 먼저 https는 통신 메커니즘 (프로토콜)을 표시하는 스킴이다. 데이터를 주고받을 때, 어떤 규칙에 맞춰서 데이터를 송수신할지를 명시하고 있다. 예를 들어 https는 암호화 (secure) 사용해서 하이퍼텍스트를 전송하는 프로토콜이다. www.example.com 은 도메인 네임으로, 어느 웹 서버.. 2024. 4. 17. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 8. 컴퓨터의 프로그래밍 언어 처리 어셈블리어 컴퓨터는 기호로써 0과 1을 사용한다. 그렇기 때문에 프로그래머들은 0과 1을 조합해서 컴퓨터에게 명령을 내려야했다. 하지만 사람이 0과 1로 이루어진 비트 조합을 외워서 프로그램을 짜기란 쉽지 않았다. 그래서 비트 조합을 대신할 수 있는 이름을 붙이기 시작했다. 예를 들어 메모리에서 데이터를 가져오는 001에는 LOAD, 메모리에 데이터를 저장하는 010에는 STORE라는 이름을 붙여주는 식으로 말이다. 이것이 바로 어셈블리어다. 어셈블리어는 기계어와 달리 주소에 이름도 붙일 수 있었고, 코드에 주석을 달 수도 있었다. 고수준 언어 어셈블리어는 기계어보다는 편리했지만, 여전히 간단한 일을 하기 위해서도 여러 줄의 코드가 필요했다. #include void main() { int a = 10,.. 2024. 4. 16. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 5. 컴퓨터 아키텍처 컴퓨터 아키텍처 컴퓨터 아키텍처란 컴퓨터의 여러 구성요소를 배치하는 방법을 뜻한다. 가장 흔한 컴퓨터 아키텍처로는 폰노이만 구조와 하버드 구조가 있다. 이전에는 미리 정한 기능만을 수행하는 하드웨어를 만들어서 사용했기 때문에 다른 프로그램을 수행하기 위해서는 하드웨어 자체를 변경해야했다. 하지만 메모리 상에 프로그램의 명령어와 데이터를 올리고 CPU에서 연산을 처리하는 폰노이만 구조는 소프트웨어만 변경하더라도 다른 프로그램들의 실행이 가능하도록 만들었다. 하버드구조는 이와 비슷하지만 메모리 상에서 명령어와 데이터 영역을 구분하여 사용한다. 시간이 흐르면서, 컴퓨터의 성능을 개선하기 위해 여러 CPU를 사용하는 멀티 프로세서 시스템이 등장했다. 그리고 이후에는 한 발 더 나아가, 하나의 프로.. 2024. 3. 21. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 4. 하드웨어의 구조 - CPU CPU의 구성 CPU는 크게 ALU와 제어장치, 레지스터로 나누어져 있다. ALU ALU는 산술 논리 장치라는 이름 그대로 산술 계산이나 논리 연산을 수행한다. 입력값으로 피연산자(Operand)와 명령코드(Opcode)를 받는다. 명령코드는 어떤 연산을 적용할 지를 결정해준다. ALU는 입력값을 바탕으로 연산을 수행하고 결과를 출력한다. ALU가 출력하는 값은 연산의 수행 결과도 있지만, 결과에 따른 추가 정보도 출력한다. 결과가 오버플로우가 발생했는지, 0은 아닌지, 음수는 아닌지 등의 정보를 담은 조건코드가 함께 출력되며 이는 조건코드 레지스터에 저장된다. ** 참고 ALU가 수행할 수 있는 명령 중에는 시프트 연산도 있다. 시프트 연산을 어떤 숫자의 모든 비트를 왼쪽 또는 오른쪽.. 2024. 3. 20. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-2. 컴퓨터의 데이터 저장 방법 2024.03.19 - [CS/Book] - [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-1. 컴퓨터의 비트 기억 방법 [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-1. 컴퓨터의 비트 기억 방법 시간 표현과 상태 기억 시간 표현 - 발진자와 클럭 사람은 직관적으로 시간이 흐른다는 것을 파악할 수 있다. 하지만 컴퓨터는 스스로 시간의 흐름을 파악할 수 없다. 그렇기 때문에 컴퓨터는 주 kyeong8139.tistory.com 이전 글에서 컴퓨터가 어떻게 1비트를 기억하는지를 살펴보았고, 이를 활용한다면 더 큰 데이터를 저장할 수 있다는 것을 확인했다. 그러면 하나의 레지스터 수준을 넘어 더 큰 데이터를 저장하기 위해서는 어떤 방법을 활용하는지 살펴보자. RAM과 ROM 여러 개의 데이터를 저장하려면.. 2024. 3. 19. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-1. 컴퓨터의 비트 기억 방법 시간 표현과 상태 기억 시간 표현 - 발진자와 클럭 사람은 직관적으로 시간이 흐른다는 것을 파악할 수 있다. 하지만 컴퓨터는 스스로 시간의 흐름을 파악할 수 없다. 그렇기 때문에 컴퓨터는 주기적인 전기신호를 사용하여 시간을 측정한다. 인버터의 출력을 입력에 연결하면 0과 1사이를 진동하는 발진자를 만들 수 있다. 0의 출력은 인버터의 입력으로 들어가 1을 출력하고, 1은 다시 인버터의 입력으로 들어가 0을 출력하기 때문이다. 이와 같은 발진자는 크리스탈을 이용해서도 만들 수 있다. 크리스탈에 전극을 연결하고 전기를 가하면 크리스탈이 구부러진다. 또한 크리스탈은 압력을 받으면 전기를 만들어낸다. 이 두 가지를 이용하면 크리스털에 전기를 가해서 다시 전기를 얻어낼 수 있다. 따라서 크리스타탈이 전기를 다시 .. 2024. 3. 19. [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 2. 전자 회로의 조합 논리 컴퓨터에서 비트를 사용하는 이유 전자 기술에서 아날로그라는 것은 연속적인 것을 뜻하며, 디지털은 이산적인 것을 뜻한다. 연속적이라는 말은 실수를 자리수의 제한 없이 표현할 수 있다는 뜻으로, 자와 같은 것은 연속적인 값을 표현할 수 있다. 반면 손가락은 1과 2 사이에 1.5라는 값이 있을 수 없으므로 이산적이다. 아날로그적인 컴퓨터는 표현할 수 있는 값이 다양하지만, 정밀도의 문제가 있다. 예를 들어 자에서 1.1은 쉽게 찾을 수 있지만 1.000001은 정밀하게 표현하기가 어렵다. 만약 엄청나게 큰 사이즈로 자를 만들듯이 아날로그 컴퓨터또한 크기를 키우면 정밀도가 높아질 것이다. 하지만 현대의 컴퓨터는 전기로 작동하는데, 컴퓨터의 크기가 커질 수록 전자의 이동 거리또한 길어지기 때문에 작업 시간이 길.. 2024. 3. 19. 이전 1 2 3 4 5 6 다음