일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 1101
- 실버
- streamlit
- 손실함수
- 기계학습
- end to end
- 4948
- Mac
- 밑바닥부터 시작하는 딥러닝
- 설정
- 신경망 학습
- 파이싼
- 파이썬
- BOJ
- 1002
- 가상환경
- 재귀
- 9020
- 백트래킹
- n과 m
- pyenv
- 그리디 알고리즘
- 경사하강법
- N-Queen
- 백준
- 개발환경
- 15649
- Python
- Today
- Total
파이톨치
[컴퓨터 구조] 컴퓨터는 어떻게 동작할까? 본문
# 프로그램 밑의 세계
우리 개발자들은 코드를 작성한다.
프로그래밍을 공부하지 않은 사람들이 보기에는 이 코드들도 복잡해 보이지만 실제로는 더 복잡한 일들이 일어난다.
우리가 사용하는 코드들은 고급언어로 Application Software로 구분된다.
이러한 고급 언어들을 컴파일러가 기계어 코드로 변환해주고 이를 하드웨어와 소통해서 동작한다.
고급언어를 사용함으로써 우리는 추상화를 해 문제를 풀고 생산성을 높인다.
그러면 거치고 거쳐서 이런 식으로 컴퓨터가 연산할 수 있는 데이터가 된다.
# 추상화
컴퓨터는 0과 1로 이루어진 데이터만을 취급한다.
하지만 이것은 우리가 이해하기 너무나 어렵다. 그래서 우리는 이것을 추상화 시켜서 단순하게 만들었다.
명령어 집합 아키텍쳐를 만들었다. 이것은 기계가 이해하는 언어이다.
영어로는 Instruction Set Architecture (ISA) 라고 한다.
이것은 CPU와 소통하기 위한 명령어이다.
이런 식으로 Processor (CPU) 와 붙어있는 언어이다.
그리고 OS 와 밀접한 것도 있는데 그것을 Application Binary Interface (ABI) 라고 부른다.
우리가 프로그래밍을 통해서 컴퓨터와 소통을 하기 위해서는 이러한 복잡한 과정이 숨겨져 있다.
이 과정을 전체적으로 보면 다음과 같다.
때문에 ABI와 ISA 가 둘 다 있어야 잘 작동하는 것이다.
# Instruction Set (명령어 집합)
서로 다른 컴퓨터는 서로 다은 명령어 집합들을 가진다고 한다. 하지만 매우 많은 공통점이 있다.
초기의 컴퓨터들은 매우 단순한 명령어를 가지고 있었다고 한다. 단순하면 빠르다고 한다.
그래서 ARM (Advanced RISC Machine) 명령어는 단순한 명령어 체계를 사용한다고 한다.
또한 저전력이라고 한다.
대충 이런 명령어가 있다고 한다. 굉장히 단순하다.
하지만 이러한 명령어들을 이해하기 위해서는 CPU의 구조를 알아야 한다.
'대학수업' 카테고리의 다른 글
[시스템 프로그래밍] 최적화 (0) | 2022.10.03 |
---|---|
[컴퓨터 구조] 컴퓨터의 성능은 어떻게 체크할까? (0) | 2022.09.23 |
[웹 프로그래밍] CSS (0) | 2022.09.15 |
[인공지능] 정보 이용 탐색 (휴리스틱 탐색) (1) | 2022.09.15 |
[시스템 프로그래밍] Representations in memory, pointers, strings (0) | 2022.09.15 |