Studying 46

캐시 메모리

캐시 메모리(Cache Memory) 캐시 메모리는 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말합니다. ex1) CPU 코어와 메모리 사이의 병목 현상 완화 ex2) 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화 CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킵니다. 속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싼 점이 있습니다. CPU에는 이러한 캐시 메모리가 2~3개 정도 사용됩니다. (L1, L2, L3 캐시 메모리라고 부른다) 속도와 크기에 따라 분류한 것으로, 일반적으로 L1 캐시부..

시간 복잡도

https://refreshment-wg.tistory.com/58 Array & Linked list 자료구조의 종류 중 하나인 Array와 Linked list의 차이를 알아보겠습니다. 1. Array 먼저 Array는 논리적 저장 순서와 물리적 저장 순서가 일치합니다. 즉, index로 해당 element에 접근할 수 있다는 것입니 refreshment-wg.tistory.com Linked list와 array의 차이에 대해 적으면서 시간복잡도라는 개념이 나와 정리해보았습니다... 먼저 알고리즘에서 로직을 코드로 구현할 때 시간복잡도를 고려한다는 것은 '입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마나 걸리는가' 입니다. 즉. 시간복잡도는 문제를 해결하는데 걸리는 시간과 입..

Array & Linked list

자료구조의 종류 중 하나인 Array와 Linked list의 차이를 알아보겠습니다. 1. Array 먼저 Array는 논리적 저장 순서와 물리적 저장 순서가 일치합니다. 즉, index로 해당 element에 접근할 수 있다는 것입니다. 그렇기 때문에 찾고자 하는 원소의 index값을 알고 있다면 Big-O(1)에 해당 원소로 접근할 수 있습니다. (random access가 가능하다는 장점) But, 삭제 혹은 삽입 과정에서는 해당 원소에 접근해 작업을 완료한 뒤(O(1)), 또 한가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸립니다. 만약 배열의 원소 중 어느 원소를 삭제했다고 했을때, 배열의 연속적 특징이 깨져 빈 공간이 생기게 됩니다. 따라서 삭제한 원소보다 큰 indedx를 갖는 ..

DNS round robin

https://refreshment-wg.tistory.com/14 DNS의 동작 원리 1. DNS? 인터넷에 연결되어 있는 장치들(컴퓨타, 스마트폰, 서버..)은 각각의 장치를 식별할 수 있는 IP주소를 가지고 있으며, 이를 숫자 형태로 나타냅니다 ex) 115.68.24.88 하지만 이런 숫자는 사 refreshment-wg.tistory.com DNS의 동작원리와 이어지는 글입니다. 간략하게 DNS는 각 장치들을 식별하는 ip주소에 이름을 부여하는 시스템이라고 했습니다. DNS round robin은 DNS 서버 구성 방식 중 하나로 DNS만을 이용해 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법입니다. 1. 원리 웹 서버로 예를 들면, 웹 서비스를 담당할 여러 대의 웹 서버는 각각..

Scheduler 종류

OS에 대해 설명하면서 스케줄러가 언급되었는데 자세히 살펴보겠습니다. 먼저 스케줄러는 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할을 한다고 했습니다. 프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재합니다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재합니다. 1. 장기스케줄러(Long-term scheduler..

객체지향의 SOLID 원칙

https://refreshment-wg.tistory.com/31 객체 지향 프로그래밍 1. Object Oriented Programming 객체 지향 프로그래밍의 사전적 의미는 컴퓨터 프로그램의 명령어를 목록으로 보는 시각에서 벗어나, 하나의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입 refreshment-wg.tistory.com 객체지향프로그래밍이라는 글에서 SOLID 원칙에 대해 적었는데 간략하게 서술했습니다. 1. SPR(단일 책임 원칙) Single Responsibility Principle은 클래스, 함수는 단 하나의 책임만을 가져야한다는 것입니다. 책임이 많아지면 클래스 내부의 함수끼리 강한 결합이 발생할 가능성이 높아지는데 이는 유지보수에 필요한 비용이 증가하게 됩..

Managed Code & Native Code

Native code는 Unmanaged code라고 불립니다. (관리되지 않는 코드) 하지만 'Managed code는 좋은 것이고 Unmanaged code는 좋지 않은 것이다'는 것은 절대 아닙니다. Compile을 하게 되면 OS에서 해석가능한 기계어로 바로 번역이 되고, 이것은 프로그램하는 사람 입장에서 이런 저런 신경을 많이 쓰게 만듭니다. 예를 들어 프로그램 실행시 사용했던 메모리는 프로그램이 끝날 때 잘 확인해서 모두 OS에 반납을 해야하고 혹시라도 프로그래머가 잊어 버리고 반납하지 않으면 시스템 에러를 일으킬 것입니다. 또 다른 예로 OS는 H/W에 따라 다르므로 프로그램을 Windows에서 Linux로 또는 그 반대로 옮기고 싶을 때(Porting한다라고 하죠.) 이거 생각보다 굉장히 ..

인터럽트(Interrupt)

https://refreshment-wg.tistory.com/23?category=1005918 운영체제의 구조와 원리 1. OS의 작업방식 Windows와 Mac Os같은 운영체제가 등장하기 전에는 MS-DOS라는 운영체제를 사용했습니다. MS-DOS는 Single tasking(단일 작업)밖에 하지 못했습니다. 예를 들어 수행해야 할 작업-1과 작업 refreshment-wg.tistory.com OS의 구조와 원리라는 글에서 인터럽트의 동작에 대한 설명이 부족하여 추가로 작성했습니다. 먼저 Trap과 Interrupt의 차이를 짚고 가겠습니다. Trap은 S/W에서 일어나는 인터럽트라고 보면 됩니다. 소프트웨어적 흐름의 변화(프로그램 내에서 일어나는 Err)라고도 합니다. 발생시점이 프로그램의 일..

프로세스와 스레드의 차이

https://refreshment-wg.tistory.com/29?category=1005918 스레드와 동시성 1. Thread Thread(스레드)는 어떤 프로세스 내에서 실행되는 흐름을 말합니다. int main(void) { int n = 0; int m = 10; printf("%d\n", n * m); while(n < m) n++; printf("END\n"); } 위와 같은 코드는 하나.. refreshment-wg.tistory.com 이 글은 스레드와 동시성에서 프로세스와 스레드의 차이를 자세히 기술하지 않아 작성했습니다. 스레드는 어떤 프로세스 내에서 실행되는 흐름을 의미한다고 했습니다. 먼저 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 ..

Json & XML

1. Json Json(JavaScript Object Notation)라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 데이터 교환 방식입니다. JS에서 객체를 만들 때 사용하는 표현식을 의미하기도 하며, 사람과 기계 모두 이해하기 쉽고 용량이 작아 XML(eXtensible Markup Language)을 대체해서 데이터 전송에 많이 사용됩니다. Json은 데이터 포맷일 뿐, 어떠한 통신방법과 프로그래밍 문법도 아닌 단순 데이터를 표시하는 표현 방법일 뿐인 것입니다. 1.1 JSON 특징 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용 JS 객체 표기법과 아주 유사 JS를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있는 이점이 있다. JSON 문..