본문 바로가기

한권으로읽는컴퓨터구조와프로그래밍

[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 5 5장. 컴퓨터 아키텍처와 운영체제 - 컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까 컴퓨터 아키텍처: 컴퓨터의 여러 구성요소를 배치하는 방법 기본적인 구조 요소들 1980년대에 만들어진 멀티프로세서시스템은 단일 CPU보다 훨씬 더 좋은 성능을 얻어내기 위한 방법이다. 하지만 이 방법은 쉽지 않았다. 여러 CPU를 활용할 수 있도록 프로그램을 병렬화하는 문제는 일반적인 경우에 풀 수 없는 문제다. 하지만 그래픽 사용자 인터페이스(GUI)를 제공하는 초기에 여러 프로그램을 동시에 실행할 수 있다는 점이 이점이었다. 반도체 회로 크기가 줄어들면서 비용이 낮아졌다. CPU를 더 빠르게 만듦으로써 더 나은 성능을 달성했다. 하지만 기계가 빨라지며 전력을 많이 소모하고, 회로 크기가 줄어드는데 기계가 빨라.. 더보기
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 4 4장. 컴퓨터 내부 구조 - 컴퓨터 하드웨어는 어떻게 구성되는가 컴퓨터에는 조작할 비트들을 저장할 장소가 필요하다. 이를 메모리라고 부른다. 메모리는 집이 빈틈없이 늘어선 거리와 같다. 모든 집은 크기가 똑같고, 모든 집에는 정해진 개수만큼 비트를 저장할 수 있는 방이 있다. 각 집에는 주소가 부여된다. 컴퓨터에 정보를 전달하거나 컴퓨터의 정보를 가져오는 것을 I/O라고 한다. I/O에 연결되는 장치를 주변장치, peripheral이라고 한다. 36비트나 64비트 컴퓨터가 흔해진 요즘은 메모리 거리의 주소 수가 훨씬 많아졌다. 메모리 거리가 너무 길기 때문에 모든 주소에 집(메모리)이 있지는 않게 됐고, 빈 주소가 많아졌다. 따라서 메모리 거리 중 일부를 I/O 장치에 할당하는 것이 타당해졌다. 많은 컴.. 더보기
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 3 3장. 메모리와 디스크의 핵심: 순차 논리 - 컴퓨터는 비트를 어떻게 기억하는가 조합 논리는 입력의 현재 상태만을 다룬다. 하지만 조합 논리만으로는 상태를 기억해둘 수 없다. 때문에 순차 논리라는 것을 통해 입력의 현재 상태와 과거 상태를 함께 고려할 수 있도록 한다. 👉🏻 시간 표현과 상태 기억 컴퓨터에게는 주기적인 전기 신호가 필요하다. 과거에서부터 현재까지 어떤 방식을 사용했는지 알아본다. 발진자 인버터의 출력을 입력에 연결한다. 이를 피드백이라고 한다. 이는 마치 마이크와 스피커를 가까이 위치시킬 때 생기는 현상과 같다! 출력이 0과 1 사이를 진동하게 된다. 이 발진자를 효율적으로 만드는 방법은 크리스털을 활용하는 것이다. 크리스털 발진자는 전자적인 단극쌍투 스위치를 사용해 크리스털에 전기를 가.. 더보기
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 2 2장. 전자 회로의 조합 논리 - 컴퓨터는 어떤 논리로 비트를 다루는가 이런 역사 이야기는 참 재밌다. 그냥 읽으면 재밌기 때문이다. 하지만 계산하면 골치아프다. 후후.. 이 장을 읽으면서도 전공 수업 생각이 많이 났는데, 사실 그때는 이런 과정을 모른 채 이론을 배우고 계산하기 급급했다. 그래서 각각의 이론들이 다 따로 놀았는데 (이거 혹시 나만 수업을 제대로 안 들어서 그런건 아니겠지?ㅎㅎ) 이렇게 순차적으로 읽어보니까 각각의 이론들이 이어지고 이해가 되는 느낌이다! 👉🏻 아날로그 세상에서 컴퓨터가 디지털인 이유 아이들을 학교에 등하교시킨다고 할 때, 시간을 단축하려면 1. 더 빠르게 운전하거나 2. 학교 근처로 이사가는 방법이 있다. 컴퓨터는 전자를 움직이는데, 전자의 이동 속도를 물리적으로 줄일 .. 더보기
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 1 나는 평소 언어를 잘 못한다고 생각하는데 왜냐하면 국어는 잘 하는데(?) 외국어는 정말 못하기 때문이다. 관심의 문제이려나.. 어쨌든, 하지만 컴퓨터 언어를 하면서 다양한 언어를 배웠다. 이것도 나름 언어라고 한다면... C로 시작해서 Python 하고, JavaScript 하고, SQL도 하고, Java이랑 Kotlin도 조금 하고... 모든 언어를 자유자재로 쓰지는 않지만 어쨌든 경험할 일이 많았고 해 왔다. 그럴 수 있었던 이유는 컴퓨터 언어가 자연어에 비해 훨씬 단순하기 때문일까 ㅎㅎ 앞 부분은 대체로 C언어, 논리회로 등에서 배웠던 내용들이라 리마인드 하는 느낌으로 읽었다. 뭔가 조금씩 새록새록 떠오르는 전공수업의 기억들.. 이 부분은 보면서 손으로 따라 쓰면서 해 봄 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이게 된.. 더보기
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 조너선 스타인하트 - 0 가끔 내 돈 들이지 않고 개발서적을 받을 수 있는 기회가 생기곤 하는데 (ㅋㅋㅋㅋ) 그 때, 무슨 책을 사지~ 어떤 비싼 책을 사달라고 해 볼까~ 하다가 이 책을 봤다. 전자공학 전공자로써... 솔직히 전공 공부 열심히 하지는 않았지만 컴퓨터 관련된 일을 하다 보면 이런저런 익숙한 것들이 많은 건 사실이다. 학부 4학년 다닐 때는 배움보다 에 우선순위가 있었기 때문에 컴퓨터 구조나 운영체제 같은 수업을 들어보고는 싶었지만 결국 듣지 않았던 게 아직도 아쉬움이 남는다. 그리고 결국 소프트웨어 개발의 길로 들어서고 난 뒤, 컴퓨터공학 전공자를 찾는 많은 기업들 덕분에 CS에 대한 공부를 안 할래야 안 할수가 없는 상황이 되었고. 그에 맞춰 적당히 해오기는 했지만 사실 제대로 안다고 할 수 있나? 없는 수준이.. 더보기