본문 바로가기
728x90
반응형

개발자 공부5

컴퓨터 메모리 저장 방식과 2차원 for문 관계 질문 아래 코드와 같이 2차원 배열이 있고 두 개의 이중 for문이 있을 때 어떤 접근이 더 효율적일까? (모든 상황은 다 동일하고 단순 두 개의 코드 차이만 있다고 가정한다.) 답변 당연히 1번 이중 for문 즉 행 접근이 더 효율적일 것이라 생각했다. 근거 1) 컴퓨터 메모리는 일렬로 구성되어 있다, 즉 row 우선 순서로 저장된다. 2) 따라서 이차원 배열이라도 row 여러개가 순차적으로 저장된 뒤 그 다음 column으로 이동해 row를 채우지 않을 까 생각했다. 3) 그렇기에 CPU 캐시 효율성을 높이는 접근 방법은 row먼저 접근하는 1번 이중 for문이라고 생각했다. 찾아 본 결과 내 접근이 맞았다!!! 더 나아가 2번의 경우 메모리 접근의 불연속이 생겨 CPU 캐시 미스가 더 자주 생길 수.. 2023. 12. 14.
[운영 체제] 신입 필수 기본기 1 OS (운영체제) - OS는 하드웨어 자원을 관리하고 응용 프로그램과 하드웨어 사이를 중재하는 인터페이스를 의미한다. 커널 - 운영체제도 하나의 소프트웨어로 컴퓨터가 실행되고 어딘가에 메모리가 올라가야 실행된다. OS는 규모가 큰 프로그램으로 이 모든걸 메모리에 올라간다면 한정된 자원의 낭비가 심할것이다. 이에 OS의 핵심 부분은 항상 메모리에 올려두고 필요한 부분은 그때 그때 메모리에 올려 사용한다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라고 한다. - 즉 커널이라 하는 항상 필요한 OS의 핵심 부분만을 메인 메모리에 적재하여 OS를 사용하게 한다. 프로세스(Process) VS 스레드(Thread) - 프로세스는 실행중인 프로그램을 의미하는데 완전히 독립적이기 때문에 메모리 영역을 다른 프.. 2023. 11. 10.
프레임워크? 라이브러리? 프레임워크 (Framework) - 원하는 기능구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격(혹은 뼈대)를 의미 - 어플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 구조를 제공하며 이러한 구조 위에서 사용자는 코드를 작성하여 어플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임 워크가 관리하고 사용자는 프레임워크에서 규정한 방식대로 클래스 및 메서드들을 구현한다. 라이브러리 (Library) - 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임 - 그냥 쉽게 말해서 특정 기능을 모아둔 코드 (사실상 함수) 들의 집합으로 코드 작성시 활용 가능한 도구들을 의미 프.. 2023. 11. 9.
메모리 구조 프로그램이 실행되기 위해선 먼저 프로그램이 메모리에 Load 되어야 한다. 메모리가 올라가는걸 의미하는데 이는 코드의 부분들이 적당한 메모리에 할당됨을 의미한다. 코드의 적당한 부분이 어떤 메모리에 할당되는지 알아보는게 중요하다! 프로그램이 OS로부터 할당받는 대표적인 메모리 공간은 [코드 영역] [데이터 영역] [스택 영역] [힙 영역]이 있다. [코드 영역] - 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고 불린다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다. [데이터 영역] - 전역(Global) 변수, 정적(Static) 변수가 저장되는 영역으로 프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸된다. [스택 영역] - 함수의 호출과 관계되는 지역 변수와 매.. 2023. 11. 9.
SOLID 원칙 SOLID 란 -로버트 마틴이 2000년대 초반 명명한 객체 지향 프로그래밍 및 설계의 기본 원칙을 이야기한 것 (wikipedia) SOLID 소개 -위키 백과 내용을 기반으로 제가 경험하면서 받아들인 언어로 조금씩 붙여서 작성했습니다. S (SRP) 단일 책임 원칙 (Single Responsibility Principle) 한 클래스는 하나의 책임(기능)만 가져야 한다. O (OCP) 개방-폐쇄 원칙 (Open/Closed Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. -> 즉 기존의 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계해야 한다. L (LSP) 리스코프 치환 원칙 (Liskov Substitution Principle) 상위 타입 .. 2023. 6. 20.
728x90
반응형