100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

컴퓨터공학/컴퓨터구조

[컴퓨터 구조] 컴퓨터 구조 개론

dc-choi 2024. 11. 21. 17:43
반응형

디지털회로

어떻게 하면 CPU 제작할 수 있을까에 대한 이야기이다.

CPU는 전자계산기이다.

전자식인 이유는 효율적이고 빠르기 때문이다.

 

AND, OR, XOR, NOT 연산에 대해서 이야기를 하려고 한다.

 

AND는 두개 다 참일경우 참

OR의 경우 둘중 하나라도 참일경우 참

XOR의 경우 두개가 서로 다를때 참

NOT의 경우 0이면 1로 1이면 0으로 변경

 

이 위의 규칙은 모두 사칙연산을 위해서 세팅이 된다…!

 

이걸 적용시킨게 반도체이고… 빵판이라고 부르는게 된다고 한다…!

컴퓨터가 덧셈하는 방법

XOR 연산과 AND 연산을 사용하여 자리올림을 진행한다.

컴퓨터가 뺄셈하는 방법

NOT 연산을 하고 그 수에 1을 더한 후 자리올림은 버린다. (2의 보수)

컴퓨터가 곱하고 나누는 방법

왼쪽으로 Shift를 하고 오른쪽 맨 끝에 0을 padding한다. 이렇게 곱하기를 진행한다.

왼쪽으로 한칸 밀면 2를 곱하고 두칸 밀면 4를 곱한다. 홀수를 곱하는경우 1을 더하는 방법을 쓴다.

 

오른쪽으로 Shift를 하고 왼쪽 맨 끝에 0을 padding한다. 이렇게 나누기를 진행한다.

0을 나누게 되면 최악의 경우 프로세서가 터질 수 있다.

몫이 얼마나 나눌 수 있는지에 대한 값인데 0으로 나누면 계속 원래 값만 나오기 때문이다.

컴퓨터가 연산하는 과정

컴퓨터는 기본적으로 CPU가 메인이다.

RAM이나 다른건 보조이긴 하지만 RAM은 중요해서 보통 같이 생각하는게 편함.

 

메모리에는 데이터에 접근할 수 있는 주소가 있다.

해당 주소에 접근하면 데이터에 대한 값을 가져올 수 있다.

이 값을 CPU로 보낸다. 그런 다음 레지스터에 저장한다.

레지스터에 저장된 값을 ALU(산술 논리 장치)에서 연산한다.

연산 결과를 다시 임의의 메모리 주소안에 넣는다.

 

이런 원리로 요즘 메모리의 용량이 늘어나기 때문에 32비트 운영체제가 없어진다고 한다.

32비트 운영체제로는 메모리를 4GB밖에 사용하지 못하기 때문이다.

컴퓨터가 기억장치를 관리하는 방법

CPU수준에서 가지고 있는 내부 메모리, 컴퓨터 수준에서 가지고 있는 1차 메모리, 외부에서 가지고 있는 2차 메모리로 크게 나뉜다.

 

레지스터, L1, L2, L3 캐시 메모리 => 내부 매모리

RAM => 1차 메모리

SSD => 2차 메모리

 

RAM부터는 휘발성이다. 전원이 꺼지면 날라간다.

 

캐시 메모리는 어디서부터 어디까지 메모리에 접근을 할지 예측을 해서 미리 캐시 메모리에 RAM의 데이터를 등록시켜놓는다.

CPU와 RAM 사이의 속도차이를 극복하기 위해서 캐싱을 한다.

 

레지스터, RAM, SSD를 관리하는 방법이 조금씩 다르다.

레지스터는 개별 기억공간마다 고유 이름을 붙인다.

RAM은 일련번호를 붙인다. 이걸 메모리 주소라고 부른다.

SSD는 트랙번호와 섹터번호를 붙여서 관리한다.

HDD, SSD와 파일시스템

HDD

결국 자기디스크이다.

기본적으로 헤드가 돌아가면서 HDD를 읽고 쓴다.

데이터가 저장되는 구역은 트랙과 섹터로 나눤다.

이 영역에 읽고 쓰기를 한다.

근데 계속 데이터를 읽고 쓰게 되는 경우가 있다.

쓰기의 경우 OverWrite를 하는데 이걸 너무 많이 하면 (약 10만번) 못쓰게 된다고 함.

이걸 배드섹터라고 부르고 아예 물리적으로 사용할 수 없다.

조각 모음의 의미

섹터의 최소 단위가 있음.

그 최소 단위보다 저장되는 파일의 용량이 낮은 경우 일단 랜덤한 위치에 저장을 하게 됨.

이런게 반복되면 데이터가 끊겨서 저장되는 경우가 굉장히 많다.

그에 따라 헤드가 돌아가는 시간이 많아져서 성능이 안좋아짐.

조각 모음은 그 파편화된 데이터를 모으는 작업을 말함.

요즘은 OS가 알아서 처리한다고 함.

파일 시스템

트랙과 섹터에 따라 데이터가 저장이 되고 데이터가 뭉치면 하나의 파일이 됨.

따라서 이 파일들의 위치를 알려줄 수 있는 Table이 있음. 이걸 FAT라고 함.

기본적으로 모든 파일 시스템은 FAT(File Allocation Table)를 가지고 있음.

 

다만 세부적으로 구현된 내용에 따라 파일 시스템의 종류가 다 바뀌게 된다.

EX) NTFS, HFS, EXT4

 

만약 데이터를 삭제한다면 트랙에 지워졌다고 마킹만 하게 됨.

디스크에서 아예 삭제되는 개념이 아님.

따라서 파일을 복원하는 것은 해당 파일이 논리적으로 삭제된 것을 무시하고 물리적인 위치를 찾아가서 복사하는 것이다.

 

0번 트랙 0번 섹터는 마스터 부트 레코드라고 불림

OS의 부트로더가 들어가는 영역임.

전원을 키는 순간 컴퓨팅 자원을 확인하고 이 영역의 부트로더 코드에 접근한다.

코드에 접근하면 운영체제 프로그램을 하나씩 메모리에 적재함.

이를 부팅이라고 부름.

 

그래서 악성코드로 HDD를 손상시킨다고 하면 MBR을 10만번 OverWrite하면 부팅을 할 수 없음.

다른 부분으로 OverWrite해도 부팅을 할 수 없음.

이 부분은 그래서 정말 철저하게 지킨다고 한다.

 

포멧의 경우 파일 시스템을 잘 선택해야함.

파일 시스템을 선택하고 그 FAT에 맞게 데이터를 날리는 작업이 포멧이다.

빠른 포멧은 FAT만 날린다. 느린 포멧은 데이터까지 다 지우는 것이라고 한다.

SSD

결국 비슷하다. 똑같이 트랙과 섹터로 관리한다고 한다.

다만 자기디스크에서 칩으로 변경된 것.

SSD에서는 조각 모음이 필요가 없다.

칩으로 읽기 쓰기의 모든 것을 제어를 하기 때문임.

칩의 IO에 따라 성능이 달라짐.

반응형