Study: ComputerScience(CS)/CS: Basic

    [CS] 동시성와 병렬성 & 프로세스와 스레드

    💡 본 문서는 '[CS] 동시성와 병렬성 & 프로세스와 스레드'에 대해 정리해놓은 글입니다. Multi Threading을 공부하다 한번 정리하고 넘어가고자 프로세스와 스레드에 대해 정리하였으니 참고하시기 바랍니다. 1. 동시성과 병렬성 동시성과 병렬성은 한정적인 컴퓨터 자원으로 최대한의 성능을 끌어내기 위해 아주 중요한 요소입니다. 멀티 코어 CPU의 등장과 경제적 이득으로 인하여 멀티 코어 CPU의 관심도가 높아졌고, 작업들을 병렬화하고 코어들에게 효율적인 작업을 분배하는 병렬화는 중요 과제가 되었습니다. I/O Bound, CPU Bound 동시성과 병렬성을 알아보기 전에 작업의 특징에 따른 분류를 알아야 합니다. I/O Bound : 입출력의 영향을 많이 받는 작업. 입출력이 완료되기까지 대기하는..

    [CS] Logging Level에 대하여 (feat. Logging Framework (spdlog))

    Log Level 에 대하여. Logging Level은 상황에 따라 필요한 로그를 보여주기 위해서 로그 정의할때 사용하는 level을 구분합니다. Logging level을 정의함으로써 얼마나 해당 정보가 crucial한지를 나타냅니다. 총 8단계로 구성되며, ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 순으로 구성되며, 대게 ALL OFF를 제외한 6단계를 사용합니다. Logging level 정의 ALL This log level logs any logging levels that are defined. It logs everything and includes custom logging levels as well. It is the combin..

    [Web] 웹 브라우저에 URL을 입력하면 어떤 일이 생기나요? (feat. Amazon)

    웹 브라우저에 URL을 입력하면 어떤 일이 생기나요? 여러분은 매일 웹 브라우저를 열고 소셜 미디어, 뉴스, 전자 상거래 사이트 등 즐겨 찾는 웹 사이트를 탐색합니다. 주소창에 URL을 입력하거나 페이지 링크를 클릭하면 해당 페이지로 이동합니다. 그런데, 그 뒷단에서 무슨 일이 일어나는지 생각해 본 적이 있나요? 이 글에서는 웹 브라우저에 URL을 입력하고 Enter 키를 누르면 어떻게 되는지 살펴보겠습니다. SW 엔지니어 인터뷰에서 나오는 단골 질문이기도 합니다. 실제 인터뷰에서는 이를 살펴보는 과정에서 웹 브라우저, PC의 운영 체제, 인터넷 서비스 제공업체, 웹 사이트를 호스팅 하는 서버, 해당 서버에서 실행되는 서비스에 대한 지식 등이 약간 필요합니다. 이를 통해서, 실제 문제가 발생할 수 있는 ..

    [CS] 캐시(Cache)란?

    💡 본 문서는 '캐시(Cache)'에 대해 정리해놓은 글입니다. DB를 튜닝하고 다원화하고 좀 더 효율적으로 인덱스를 걸 수도 있겠지만, 가장 근본적인 문제인 RDBMS로의 쿼리 전송을 줄인다면 더욱 빠른 서비스를 구축할 수 있습니다. 이를 위해서 데이터베이스 캐시를 알아야 하며, 생겨난 배경 및 사용되는 구조를 정리해두었으니 참고 부탁드립니다. 1. 캐시(Cache)란? 1.1 캐시는... 컴퓨터 과학에서 자주 사용하는 데이터나 값을 미리 복사해놓는 임시 장소를 말합니다. 데이터 베이스에서 캐시란? 데이터를 자주 읽지만 잘 변경되지 않는 부분은 특정 공간에 미리 저장해두어 데이터베이스에 직접 쿼리를 전송하지 않도록 하는 구조입니다. 1.2 캐시 탄생 배경 무어의 법칙에 의해 CPU의 처리속도가 급격히 ..

    [CS] 링킹(Linking)에 대해 보다 심도있는 내용

    링킹(Linking) 과정이란? (지난 강의 참조) A와 B 소스파일이 있을 때, 각각 compile만 하면 A가 B에 존재하는 함수(메서드)를 찾을 수 없어 호출할 수가 없습니다. 따라서, A와 B를 연결해주는 작업이 필요한데 이를 Linking라 합니다. 여러 개로 분리된 compile한 소스파일들을 최종 실행 가능한 파일로 만들기 위해 필요한 부분을 찾아서 연결해주는 작업입니다. 주로 사용하는 실행 파일 형태는 Portable Executable 이라 불리는 PE 파일 형식의 파일을 생성하게 됩니다. 윈도우 계열: *.exe 리눅스 계열: *.ELF (Executable and Linkable Format) 맥 계열: *.pkg *.dmg Link는 정적링크(static link)와 동적링크(dyn..