[ 컴퓨터 구조는 왜 공부 하는 것 일까? ]
프로그래머는 컴퓨터가 돌아가는 프로그램을 만드는 일을 한다.
그래서 프로그램이 돌아갈 컴퓨터에 대해서도 알아야한다.
[ 컴퓨터의 4가지 구성요소 ]
CPU
- 메모리에 저장된 명령어를 읽어 들이고 읽어 들인 명령어를 해석하고 실행한다.
- CPU 가까이에는 레지스터라는 작은 기억장치들과 ALU라는 산술논리연산장치가 있다.
- 프로그램 카운터 (PC : 메모리에서 가져올 명령어의 주소를 담는 레지스터)
- 명령어 레지스터 (해석할 명령어를 담는 레지스터)
- 메모리 주소 레지스터 (메모리 주소를 저장하는 레지스터)
- 클럭 신호 (클럭 신호마다 CPU는 명령어 사이클 (명령어를 메모리에서 가져오고 실행) 을 반복
그래서 CPU의 클럭 속도가 빠를수록 성능이 좋음
- 코어의 쓰레드는 한번에 몇개의 명령어를 동시에 실행할 수 있는지 이다. 예) 8쓰레드 한번에 8개 명령어 처리
주기억장치 (RAM)
- 실행 해야할 명령어들과 데이터들이 저장되는 부품 (프로그램이 실행하려면 프로그램 자체가 적재되어야 한다.
메모리에 저장된 값의 위치는 주소로 알 수 있다.
보조기억장치 (하드디스크, SSD)
- 주기억장치와 레지스터와 달리 전원이 꺼져도 내용물을 잃지 않는다. (보조기억장치에는 보관할 프로그램을 저장하고 주기억 장치에는 실행할 프로그램이 저장된다.)
입출력장치
- 키보드, 마우스 등
이진법
- 1비트, 1바이트, 1킬로 바이트, 1메가 바이트
1바이트는 8비트이며, 1킬로바이트는 1000바이트이다.
000을 기준으로 올라간다.
음수
0110 = 6
1001
1010 = 양수 : 10 , 음수 : 6
2의 보수 : 0과 1을 전부 뒤집고 1을 더한다. 그럼 그 수의 반대 부호의 수가 된다.
아스키 코드
Char = 1바이트 = 7비트 = 128가지 표현 가능
UTF
UTF-8 가변 문자 인코딩 (1 ~ 4바이트)
UTF-16 불변 문자 인코딩 (2바이트)
*영어는 1글자당 1바이트 이며 한글은 2~4바이트 이기 때문에 한글은 UTF-16, 영어는 UTF-8이 효율적이다.
논리주소 & 물리주소
이 프로세스의 20번지 주소와 메모리의 20번지 주소는 다를 가능성이 다분하다. (확실히 다르다.)
- 물리주소 : 컴퓨터에 메인메모리에 접근 할 때의 주소
- 논리주소 : 해당 프로그램을 실행 중 CPU가 메모리에 생성 되는 주소
캐시메모리
레지스터는 정말 어떤 명령어가 실행되기 직전에 쓰이는 메모리이고, 메모리는 프로그램이 적재되는 공간이다.
하지만 메모리는 접근해서 읽어오는데에 느리고 레지스터는 너무 작다.
그래서 그 중간 단계인 캐시메모리가 있다.
캐시메모리는 메모리에서 접근하는 메모리주소 주변을 크게 들고와서 저장한다.
- 캐시 Hit : 캐시메모리에 있어서 캐시에 있는 것을 가져오는 것
- 캐시 Miss : 캐시메모리에 없는 상태 (해당 데이터를 읽어와서 다시 캐시에 올린다.)
캐시메모리는 메모리에서 접근하는 메모리주소 주변을 크게 들고와서 저장한다.
'운영체제' 카테고리의 다른 글
Virtualization - Virtual Memory (0) | 2024.04.11 |
---|---|
Virtualization - CPU Scheduling (1) | 2024.04.09 |
Thread (0) | 2024.04.09 |
Process (0) | 2024.04.09 |