'혼자 공부하는 컴퓨터 구조+운영체제'라는 책을 종종 서점에서 마주할 때마다, 개발자로서 알아야 하는 필수 지식임을 알기에 꼭 읽어보고 싶다는 생각을 했었습니다. 동시에, 집에서 읽어주길 기다리는 다른 책들이 떠올라 쉽사리 시작하지 못하고 있었습니다.

..나는 언제읽어줘? 미안...
종잇장 같은 나의 전공지식.... 미룰 수가 없었던 차, 이번에 커뮤니티에서 혼공학습단 12기를 모집한다는 소식을 듣고, 스터디를 통해 책을 다 읽을 수 있을 것이라는 희망에 스터디를 신청하게 되었습니다.
사실 저는 스터디가 처음인데요....! 이번 스터디를 통해 스스로 공부하는 습관이 생기고 다른 스터디에도 도전할 용기가 솟아나길 바래봅니다.

Chapter 01 컴퓨터 구조 시작하기
컴퓨터 구조Computer architecture를 알게 되면, 문제 상황을 빠르게 진단할 수 있고, 입출력에만 집중하는 것, 코드만 작성하는 것을 넘어 문제를 스스로 해결할 수 있게 됩니다. 그리고 성능, 용량, 비용을 충분히 고려하여 개발된 프로그램에 맞는 최적의 환경을 구축할 수 있게 됩니다.
컴퓨터 구조 지식은 크게 두 가지, ①컴퓨터가 이해하는 정보 ②컴퓨터의 4가지 핵심 부품으로 나뉩니다.
컴퓨터는 0과 1로 표현된 정보인 데이터data와 명령어instruction를 이해할 수 있습니다. 데이터는 정보 덩어리이자 명령어를 위해 존재하는 재료이고, 명령어는 컴퓨터를 작동시키는 정보입니다.
컴퓨터의 4가지 핵심 부품은 중앙처리장치(CPU), 주기억장치(메모리. e.g.RAM), 보조기억장치, 입출력장치가 있습니다.
핵심 부품의 특징을 간단하게 정리하면 다음과 같습니다.
메모리 : 실행되는 프로그램의 명령어와 데이터를 저장하는 부품. 실행하려면 여기에 정돈되어 저장되어야 한다. 저장된 값에 접근할 때 주소를 사용한다. + 가격이 비싸고 용량이 적다. 전원이 꺼지면 내용을 잃는다.
CPU : 컴퓨터의 두뇌로서, 메모리에 저장된 명령어를 읽고, 해석하고, 실행한다. CPU의 내부는 다시 세 부분으로 나뉜다.
- ALU(산술논리연산장치) : 계산만을 위해 존재하는 부품
- 레지스터 : 임시 저장 장치. CPU안에 여러 개 존재
- 제어장치 : 제어 신호라는 전기신호를 내보내고, 해석한다. (제어신호 e.g."메모리 쓰기", "메모리 읽기")
보조기억장치 : 메모리를 보조 + 메모리보다 용량이 크고 전원이 꺼져도 내용을 잃지 않는다.
입출력장치 : 컴퓨터 외부에 연결되어 내부와 정보 교환.
메인보드(마더보드)와 시스템버스 : 핵심 부품은 슬롯과 연결단자를 통해 메인보드에 연결된다. 메인모드 내부에 버스라는 통로로서 연결된다. 가장 중요한 버스는 시스템 버스이다. e.g. 주소 버스(주소 주고받는 통로), 데이터 버스(명령어와 데이터를 주고받는 통로), 제어 버스(제어 신호를 주고받는 통로)
Chapter 02 데이터
컴퓨터는 0과 1만을 이해합니다. 이것을 나타내는 가장 작은 단위를 bit라고 하며, n개의 비트는 2의 n승 가지 정보를 표현할 수 있습니다.
byte = 8bit
1kB = 1000byte
1MB = 1000kB
1GB = 1000MB
1TB = 1000GB
워드는 CPU가 한 번에 처리할 수 있는 데이터 크기를 말합니다.
이진법 : 0과 1만으로 숫자를 표현하는 방법. 이진수 끝의 아래첨자로 (2)를 붙이거나, 이진수 앞에 0b를 붙여서 표현합니다.
이진수의 음수는 2의 보수를 구하는 방법으로 구할 수 있는데, 2의 보수는 0과 1을 바꾸고 1을 더하는 방법을 사용합니다.
컴퓨터 내부에서 숫자들은 음수, 양수표시인 플래그를 가지고 있습니다.
십육진법은 (16)이나 0x를 붙입니다. 15를 넘길 시점에 자리올림을 하며 이진법과 변환하기 쉽기 때문에 자주 사용됩니다.
문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자 모음.
문자 인코딩 : 문자를 0과 1로 변환하는 과정. <-> 문자 디코딩 : 0과 1로된 문자코드를 사람이 이해할 수 있는 문자로 변환하는 과정
아스키 코드 : 초창기 문자 집합 중 하나, 영어알파벳, 아라비아숫자, 일부 특수문자. 7비트이므로 128개의 문자를 표현합니다.
EUC-KR : 완성형 인코딩 방식(완성된 하나의 글자에 고유한 코드부여). 16비트이므로 4자리 십육진수로 표현합니다.
유니코드 : 대부분 나라의 문자, 특수문자, 이모티콘 코드로 표현.
UTF : 유니코드를 인코딩하는 방법. 방법에 따라 UTF-8, UTF-16, UTF-32 등이 있습니다.
Chapter 03 명령어
고급언어 : 사람을 위한 언어
저급 언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
기계어 : 0과 1로 이루어진 명령어
어셈블리어 : 0과 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어
컴파일 : 소스 코드 전체가 저급 언어로 변환되는 과정. 그것을 수행하는 도구를 컴파일러 라고 합니다. 저급 언어로 변환된 코드를 목적 코드라고 합니다. 하나라도 오류가 있으면 컴파일이 불가능합니다.
인터프리트 : 소스 코드가 한 줄씩 실행되는 고급 언어. 그것을 수행하는 도구를 인터프리터라고 합니다. 오류가 나는 부분 전까지는 코드를 실행합니다.
명령어는 연산 코드와 오퍼랜드로 구성됩니다.
연산 코드 : 명령어가 수행할 연산
오퍼랜드 : 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치
주소 지정 방식 : 연산에 사용할 데이터 위치를 찾는 방법
숙제
'소프트웨어 > Computer Science' 카테고리의 다른 글
[혼공컴운] 6주차_운영체제 마무리 (0) | 2024.08.15 |
---|---|
[혼공컴운] 5주차_프로세스 관리하기 (0) | 2024.08.11 |
[혼공컴운] 4주차_운영체제 핵심 (0) | 2024.08.01 |
[혼공컴운] 3주차_주기억, 보조기억장치 (1) | 2024.07.22 |
[혼공컴운] 2주차_CPU 구석구석 (1) | 2024.07.14 |