5줄 요약
- ROM은 "Read-Only Memory"의 약자로, 한번만 쓰이고 읽히는 비휘발성 메모리입니다.
- ROM은 컴퓨터나 다른 전자 기기에서 주로 프로그램, 데이터 또는 펌웨어를 저장하는 데 사용됩니다.
- 이러한 데이터는 일반적으로 컴퓨터나 전자 기기의 전원이 꺼져도 손실되지 않습니다.
- ROM은 쓰기 보호가 설정된 메모리로, 일반적으로 공장에서 프로그램 또는 데이터가 이미 저장되어 있으며, 일반 사용자는 데이터를 변경하거나 새로운 프로그램을 저장할 수 없습니다.
- 그러나 몇몇 ROM 유형은 사용자가 필요에 따라 데이터를 저장하거나 변경할 수 있는 쓰기 가능한 ROM(Writable ROM, 이하 "EPROM"이라 함)으로 구성됩니다.
추가 내용
경험
RIsN
5줄 요약
- 버퍼(Buffer)는 데이터를 임시로 저장하는 메모리 영역입니다.
- 버퍼는 데이터를 처리하거나 전송하는 과정에서 발생할 수 있는 지연 현상을 최소화하기 위해 사용됩니다.
- 버퍼는 입력 버퍼와 출력 버퍼로 구분됩니다.
- 입력 버퍼는 입력 장치에서 데이터를 받아들이는 데 사용되며, 출력 버퍼는 출력 장치로 데이터를 전송하는 데 사용됩니다.
- 또한, 버퍼는 데이터를 일시적으로 저장함으로써 데이터 처리 속도를 높이는 데 사용되기도 합니다.
추가 내용
경험
RIsN
5줄 요약
- 캐시(cache)는 속도가 느린 주 기억장치(RAM)와 속도가 빠른 프로세서 사이에 위치한 작고 빠른 기억장치입니다.
- 주 기억장치에서 데이터를 읽어올 때마다 시간이 많이 걸리기 때문에, 캐시에 미리 일부 데이터를 저장해 놓음으로써 프로세서가 필요한 데이터에 빠르게 접근할 수 있도록 합니다.
- 캐시는 작은 용량이지만 주로 사용되는 데이터를 저장하므로, 전체적인 프로세스의 성능을 향상시키는 데 큰 역할을 합니다.
- 캐시는 다양한 레벨(L1, L2, L3 등)로 구성되며, 각 레벨의 캐시는 크기와 접근 속도, 비용 등이 다르기 때문에, 데이터를 적절히 관리하여 캐시의 효율성을 높이는 것이 중요합니다.
- CPU 캐시, 하드 디스크 캐시, 브라우저 캐시 등이 있습니다.
추가 내용
경험
- 대학교에서 처음에 배울 때 있던 책에서 본 기억이 납니다.
RIsN
5줄 요약
- 컴퓨터의 메모리는 데이터를 저장하고 읽고 쓰는 데 사용되는 주요 자원으로, 컴퓨터 시스템 내부에 위치합니다.
- 메모리는 크게 프로그램 코드를 저장하는 ROM(Read-Only Memory)과, 프로그램 실행 중에 사용되는 데이터를 저장하는 RAM(Random Access Memory)입니다.
- ROM은 주로 펌웨어(Firmware)나 부트로더(Bootloader)와 같은 코드를 저장하는 데 사용되며, 읽기 전용이므로 프로그램 실행 중에는 쓰일 수 없습니다.
- 반면에, RAM은 프로그램 실행 중에 동적으로 할당되는 데이터를 저장하는 데 사용됩니다.
- 예를 들어, 프로그램에서 변수를 선언하면 해당 변수는 RAM에 저장됩니다.
추가 내용
경험
- 대학교에서 처음에 배울 때 있던 책에서 본 기억이 납니다.
RIsN
5줄 요약
-
- 메모리 누수(Memory Leak) 방지: 사용하지 않는 메모리를 해제하지 않으면 시스템 메모리에 누적되어 시스템 성능을 저하시키므로, 메모리 누수를 방지하는 것이 중요합니다.
- 메모리 캐싱: 반복적으로 사용되는 데이터를 캐시에 저장하여 메모리 접근 시간을 줄이고 성능을 향상시킵니다.
- 메모리 프리페칭(Memory Prefetching): 미리 필요한 데이터를 미리 메모리에 로드하여 프로그램 실행 시간을 줄입니다.
- 메모리 압축(Memory Compression): 사용하지 않는 메모리를 압축하여 메모리 용량을 줄이고 시스템 성능을 향상시킵니다.
- 메모리 구조 개선: 메모리 구조를 최적화하여 메모리 접근 시간을 줄이는 것도 메모리 최적화에 중요한 요소 중 하나입니다.
추가 내용
경험
RIsN
5줄 요약
- 데이터 드리븐(Data-driven)은 데이터를 중심으로 프로그램이 동작하는 방식을 말합니다.
- 데이터 드리븐 방식은 데이터와 로직을 분리하여 데이터가 변경되어도 로직이 유지보수하기 쉬워지는 장점이 있습니다.
- 데이터 드리븐 방식을 사용하는 프로그램은 데이터베이스, 파일, API 등에서 데이터를 읽어와서 처리하는 방식으로 동작합니다.
- 데이터가 변경되면 해당 데이터를 사용하는 부분만 수정하면 되므로, 전체 코드를 수정할 필요가 없어서 유지보수성이 좋습니다.
경험
- 관련한 단어를 들었는데, 무슨 소리인지 몰랐습니다.
- 현재 제가 프로그래밍에서 구글 스프레드시트로 데이터를 관리하는 등의 행동이 이것이라고 합니다.
RIsN
5줄 요약
- 메모리 누수(memory leak)는 프로그램에서 동적으로 할당한 메모리를 프로그램이 더 이상 사용하지 않으면서도 할당된 메모리를 해제하지 않아 발생하는 문제입니다.
- 즉, 프로그램이 사용하지 않는 메모리가 계속해서 쌓이는 현상을 의미합니다.
- 예를 들어, 동적으로 할당한 메모리를 해제하지 않거나, 메모리를 여러 번 할당하고 해제하지 않는 경우에 발생할 수 있습니다.
- 또한, 메모리를 할당한 후에 해당 메모리에 대한 포인터를 잃어버리는 경우에도 메모리 누수가 발생합니다.
- 메모리 누수는 메모리 사용량이 계속해서 증가하면서, 시스템의 성능을 저하시키고, 시스템이 충돌하는 원인이 될 수 있습니다.
추가 내용
경험
RIsN
5줄 요약
- 힙(Heap)은 프로그램이 실행되는 동안 사용되는 동적 메모리 영역입니다.
- 프로그램이 실행되면, 힙 메모리는 운영체제로부터 할당받아 사용됩니다.
- 힙 메모리는 스택과 달리 크기가 가변적이며, 사용자가 필요에 따라 메모리를 동적으로 할당하고 해제할 수 있습니다.
- 힙 메모리는 보통 전역 변수나 정적 변수와 같이 프로그램의 실행 중에 유지되는 데이터를 저장하기 위해 사용됩니다.
- 힙 메모리는 스택과 달리 크기가 가변적이므로, 메모리 누수(memory leak)와 같은 문제가 발생할 수 있습니다.
추가 내용
- 힙 메모리는 대개 malloc(), calloc(), realloc()과 같은 라이브러리 함수를 사용하여 할당하고, free() 함수를 사용하여 해제합니다. 이러한 함수들은 운영체제로부터 힙 메모리를 할당받아 프로그램에서 사용할 수 있도록 해줍니다.
- 프로그래머는 메모리를 동적으로 할당할 때, 반드시 할당된 메모리를 해제해야 합니다. 이를 위해서는, 메모리 할당과 해제를 일관성 있게 관리하는 것이 중요합니다.
- 또한, 힙 메모리는 동적 데이터 구조를 구현하기 위해 사용됩니다. 예를 들어, 리스트, 트리, 그래프 등의 데이터 구조를 힙 메모리를 사용하여 동적으로 할당하고 관리할 수 있습니다.
경험
- 면접에서 관련해서 물어봤는데 대답하지 못했습니다.
RIsN
5줄 요약
- 스택(Stack)은 메모리의 한 영역으로, 데이터를 임시로 저장하기 위한 자료구조입니다.
- 스택은 후입선출(LIFO, Last In First Out)의 원리에 따라 동작합니다.
- 함수 호출 시 함수의 지역변수, 매개변수, 반환주소 등의 정보는 스택에 순서대로 저장됩니다.
- 이렇게 스택에 저장된 정보는 함수가 실행을 마치고 반환되면 스택에서 제거됩니다.
- 스택에는 데이터를 넣는 작업을 푸시(Push)라고 하고, 데이터를 빼내는 작업을 팝(Pop)이라고 합니다.
경험
- 프로그래밍 최적화에 기본적으로 중요한 것이라 무조건 기억해야 합니다.
RIsN
5줄 요약
- 프로그래밍에서 사용되는 메모리는 크게 스택(stack)과 힙(heap)으로 나뉩니다.
- 스택은 지역 변수와 매개변수와 같은 작은 크기의 데이터를 저장하는 데 사용되며, 스택 메모리는 후입선출(LIFO) 방식으로 동작합니다.
- 스택 메모리는 함수가 호출될 때마다 스택 프레임(Stack Frame)이 만들어지며, 이 프레임에 지역 변수와 매개변수가 저장됩니다. 함수가 종료되면 해당 프레임은 스택에서 제거됩니다.
- 힙 메모리는 프로그램에서 동적으로 할당된 데이터를 저장하는 데 사용되며 전역 변수와 지역 변수와는 달리, 프로그램 실행 중에 크기가 변경될 수 있으며, 스택과는 달리 임의의 순서로 접근할 수 있습니다.
- 또한, 프로그램 코드는 실행 파일의 데이터 섹션에 저장 되며, 프로그램의 명령어와 상수 데이터가 저장됩니다.
경험
- 프로그래밍 최적화에 기본적으로 중요한 것이라 무조건 기억해야 합니다.
RIsN