마지막챕터 : 컴퓨터
[ 소통을 원하지는 않습니다 ]
명령어 구조 (1)
[혼공컴운] 1주차_컴퓨터 구조+운영체제 01장 ~ 03장

[책을 읽게 된 이유] 

컴퓨터 운영체제에 대한 복습과 쉬운 설명이 들어있는 안내서를 찾기 위해 "혼자 공부하는 컴퓨터 구조와 운영체제"를 읽게 되었습니다. 현재 01장 ~ 03장을 읽었는데, 아직은 전체 내용에 비해서는 미리보기 정도의 내용인 것 같습니다. 

 

 

 

Chapter 01 컴퓨터 구조 시작하기

 

01-1 구조를 알아야 하는 이유

- 컴퓨터 구조를 이해하면 문제 해결 능력이 향상됩니다.

- 컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능/용량/비용을 고려하며 개발할 수 있습니다. 

 

[개인적인 생각] 컴퓨터 운영체제의 목적 중 하나가 응용 프로그램을 컴퓨터 하드웨어와 상호 작용할 수 있게 해주는 것이므로 개발환경이 되는 컴퓨터 구조와 운영체제에 대한 전반적인 이해가 없다면 상호 작용에서 발생할 수 있는 오류나 문제점 등에 대해 적절하게 대응하기 어려운 게 당연하다고 생각됩니다. 

 

01-2 컴퓨터 구조의 큰 그림

- 컴퓨터가 이해하는 정보에는 데이터(Data)와 명령어(Instruction)가 있습니다.

- 메모리(Memory)는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품입니다. 

- CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품입니다. 

- 보조기억장치(Secondary storage)는 전원이 꺼져도 보관할 프로그램을 저장하는 부품입니다. 

- 입출력장치(Input/Output device)는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품입니다. 

- 시스템 버스(System bus)는 컴퓨터의 네 가지 핵심 부품들이 서로 정보를 주고받는 통로입니다. 

 

출처: 혼자 공부하는 컴퓨터 구조 + 운영체제. 한빛미디어.

 

Chapter 02 데이터

 

02-1 0과 1로 숫자를 표현하는 방법

[참고] "정보 단위"란 컴퓨터에서 정보를 처리하고 저장하는 데 사용되는 기본적인 데이터의 크기 또는 형식을 의미합니다. 일반적으로 정보 단위는 다음과 같은 여러 가지 형태로 나뉘어질 수 있습니다. 정보 단위는 데이터 저장, 전송, 처리와 같은 다양한 컴퓨터의 기능에서 중요한 역할을 하며, 효율적인 데이터 관리를 위해 이해하는 것이 중요합니다.

- 비트는 0과 1로 표현할 수 있는 가장 작은 정보 단위입니다.

- 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트는 비트보다 더 큰 정보 단위입니다.

- 이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 수를 표현하는 방법입니다. 

- 이진법에서 음수는 2의 보수로 표현할 수 있습니다. 

- 십육진법은 15를 넘어가는 시점에 자리 올림하여 수를 표현하는 방법입니다. 

 

** kB, MB, GB, TB와 KiB, MiB, GiB, TiB는 서로 다른 표현이고, 후자는 키비바이트, 메비바이트, 기비바이트, 테비바이트라고 읽는다고 합니다. 새롭게 알게 된 내용.. 


02-2 0과 1로 문자를 표현하는 방법
- 문자 집합은 컴퓨터가 인식할 수 있는 문자의 모음으로, 문자 집합에 속한 문자를 인코딩하여 0과 1로 표현할 수 있습니다. 

- 아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩됩니다. 

- EUC-KR은 한글을 2바이트 크기로 인코딩할 수 있는 완성형 인코딩 방식입니다. 

- 유니코드는 여러 나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합이며, UTF-8, UTF-16, UTF-32는 유니코드 문자의 인코딩 방식입니다. 

 



Chapter 03 명령어

03-1 소스 코드와 명령어
- 고급 언어는 사람이 이해하고 작성하기 쉽게 만들어진 언어입니다. 

- 저급 언어는 컴퓨터가 직접 이해하고 실행할 수 있는 언어입니다.

- 저급 언어는 0과 1로 이루어진 명령어로 구성된 기계어와 기계어를 사람이 읽기 편한 형태로 번역한 어셈블리어가 있습니다. 

- 컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 언어입니다. 

- 인터프리터 언어는 인터프리터에 의해 소스 코드가 한 줄씩 저급 언어로 변환되어 실행는 언어입니다. 


03-2 명령어의 구조
- 명령어는 연산 코드(Operation code)와 오퍼랜드(Operand)로 구성됩니다. 

- 연산 코드는 명령어가 수행할 연산을 의미합니다. 

- 오퍼랜드는 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치를 의미합니다. 

- 주소 지정 방식은 연산에 사용할 데이터 위치를 찾는 방법입니다. 

 

[참고] 명령어(Instruction)는 CPU의 명령어 레지스터(IR, Instruction Register) 안에 저장된다고 합니다.

주소 지정 방식(Addressing mode)

- 즉시 주소 지정 방식(Immdiate addressing mode): 연산 코드에서 사용할 데이터(상수값 같은..)를 오퍼랜드 필드에 직접 명시해서 사용.

- 직접 주소 지정 방식(Direct addressing mode): 오퍼랜드 필드에 사용할 데이터의 메모리 유효주소를 명시해서 사용.

- 간접 주소 지정 방식(Indirect addressing mode): 오퍼랜드 필드에서 사용할 데이터의 메모리 유효주소에 대한 주소를 명시해서 사용.

- 레지스터 주소 지정 방식(Register addressing mode): 오퍼랜드 필드에 연산에 사용될 데이터가 들어 있는 레지스터를 명시해서 사용.

- 레지스터  간접 주소 지정 방식(Register indirect addressing mode): 연산에 사용될 데이터를 메모리에 저장하고, 그 메모리의 유효주소를 저장한 레지스터를 오퍼랜드 필드에 명시해서 사용. 

 

** 5개의 주소 지정 방식은 각기 장단점이 있는데(속도, 유효주소의 크기 등), 그건 책 사서 읽으시면 좋을 것 같습니다. 헷갈리는 부분이 있어서 그 부분만 써봤습니다. 

 

 

[기본숙제]

 

51쪽 확인 문제 3번.

다음 설명의 빈칸에 들어갈 알맞은 내용을 써 보세요.

프로그램이 실행되려면 반드시 (메모리)에 저장되어 있어야 합니다.

 

65쪽 확인 문제 3번.

1101(2) 의 음수를 2의 보수 표현법으로 구해 보세요. 

1 1 0 1

↓ 모든 0과 1 뒤집기

0 0 1 0

1 더하기

0 0 1 1

 

1101(2)을 표현한 값은 0011(2)입니다.

 

 

 

 

[추가 숙제]

 

100쪽의 스택과 큐 개념 정리해 보기.

 

스택(Stack)과 큐(Queue)는 자료 구조(Data Structure)의 두 가지 중요한 형태.

스택 (Stack)

스택은 "후입선출(Last In, First Out, LIFO, '리포'라고 읽는다고 합니다.)" 방식으로 작동하는 데이터 구조. 즉, 가장 나중에 추가된 데이터를 가장 먼저 삭제.
 - 푸시(push): 스택에 요소를 추가합니다.
 - 팝(pop): 스택에서 가장 최근에 추가된 요소를 제거하고 반환합니다.
 - 피크(peek): 스택의 가장 위에 있는 요소를 반환하되, 제거하지 않습니다.

큐 (Queue)

큐는 "선입선출(First In, First Out, FIFO, '피포'라고 읽는다고 합니다.)" 방식으로 작동하는 데이터 구조. 즉, 가장 먼저 추가된 데이터를 가장 먼저 삭제.

 - 인큐(enqueue): 큐에 요소를 추가합니다.
 - 디큐(dequeue): 큐에서 가장 먼저 추가된 요소를 제거하고 반환합니다.
 - 프론트(front): 큐의 가장 앞에 있는 요소를 반환하되, 제거하지 않습니다.

  Comments,     Trackbacks