CS

·CS
안녕하세요, iOS 개발하는 루피입니다. 오늘은 OSI 7 Layer와 TCP/IP 에 대해 정리해 보는 시간을 가져보려 합니다. 특히 왜 OSI가 나중에 만들어졌는데도 TCP/IP가 표준이 되었는지에 대한 역사도 함께 살펴보겠습니다. 바로 시작합니다.1. Internet인터넷(Internet)은 전 세계 컴퓨터들이 TCP/IP 프로토콜이라는 공통된 "약속"을 사용해 정보를 주고받는 거대한 네트워크입니다.1973년 TCP/IP를 정립한 빈튼 서프와 밥 간이 네트워크의 네트워크를 구현하려는 비전에서 인터넷(Internet)이라는 이름이 탄생했습니다. 즉 네트워크를 연결한 것을 인터넷이라고 합니다.2. 초기 인터넷 : 혼돈 그 자체1) 1970년대-1980년대초기에 인터넷이 개발될 당시에는 네트워크를 구성하..
·CS
안녕하세요, 루피입니다. "파일 시스템"이라는 단어는 개발자에게 매우 익숙하지만, 막상 원리를 설명하려고 하면 막연하게 느껴질 때가 많습니다. 이번 기회에 파일 시스템의 개념부터 동작 원리, 그리고 오늘날의 안정성을 만들어 낸 기술까지 한번에 정리해 보려 합니다. 바로 시작합니다.1. 파일 시스템이란?우선 저는 위키 백과에 나와 있는 설명을 확인 해봤는데요..?아이고.. 너무 어려운 말이 너무 많습니다. 다 뒤로 하고 쉽게 파일 시스템을 한 문장으로 정의하면 다음과 같습니다.파일 시스템은 OS 가 저장 장치에 데이터를 쓰고, 읽고, 찾고, 관리하는 모든 방법을 정의한 규칙 이자 시스템입니다. 하드디스크나 SSD와 같은 저장 장치는 그 자체로는 데이터를 저장할 수 있는 수많은 칸의 나열일 뿐입니다!!하지만..
·CS
안녕하세요, 루피입니다. 오늘은 객체지향 프로그래밍 (OOP)에 대해 정리해보는 시간을 가져보겠습니다. 바로 시작합니다.1. 객체 지향 프로그래밍의 등장 배경객체 지향 프로그래밍의 등장 배경에 대해 간략하게 알아보겠습니다.1) 절차 지향 프로그래밍의 한계초기 프로그래밍은 절차지향 방식으로, 코드를 위에서부터 순차적으로 실행하는 방식이었습니다. 작은 규모의 프로그램에서는 효과적이었지만, 프로그램 규모가 커지면서 다음과 같은 문제들이 발생했습니다.스파게티 코드: 복잡한 알고리즘으로 인해 코드 흐름을 파악하기 어려움재사용성 부족: 동일한 로직이라도 매번 새로 작성해야 함유지보수의 어려움: 코드 수정 시 여러 곳을 동시에 변경해야 함2) 구조적 프로그래밍의 등장과 한계이를 해결하기 위해 구조적 프로그래밍이 등장..
·CS
안녕하세요, 루피입니다. 가상 메모리 시리즈의 마지막 편입니다. 오늘은 이론에 대한 학습이 아닌 메모리를 분석하는 방법에 대해서 정리해보겠습니다. 바로 시작합니다.1. 가상 메모리 정보를 확인하는 방법 1) GUI로 확인 해보는 법활성 상태 보기 상단 탭에 메모리를 선택해 정보를 확인합니다.주요 지표메모리 압력 그래프: 현재 시스템의 메모리 가용성을 가장 종합적으로 보여주는 지표입니다.녹색 : 메모리 리소스가 충분합니다.노란색 : 메모리 리소스가 부족해지기 시작하며, 운영체제가 메모리 관리를 시작합니다.빨간색 : 메모리가 부족하여 성능 저하가 발생할 수 있습니다. 이를 해결하기 위해 macOS는 메모리 압축이나 스왑 을 활발하게 사용하게 됩니다.물리적 메모리 : Mac에 장착된 실제 RAM 크기입니다.사..
·CS
안녕하세요, 루피입니다! 지난 글에서는 가상 메모리가 왜 필요하며, 페이징과 세그멘테이션을 통해 어떻게 메모리 단편화 문제를 해결했는지 알아보았습니다. 오늘은 가상 메모리가 실제로 어떻게 필요한 것만, 필요할 때 메모리에 올리는지, 동작 원리에 대해 정리 해보겠습니다. 바로 시작합니다.1. Demand Paging (요구 페이징)가상 메모리의 핵심은 Demand Paging입니다. 이름 그대로, '요구가 있을 때만 페이지를 메모리에 올린다'는 뜻입니다.프로그램을 시작할 때 모든 데이터를 RAM에 올리는 것은 엄청난 낭비입니다. 요구 페이징은 일단 아무것도 올리지 않고 시작합니다. 그러다 CPU가 특정 주소의 데이터를 요청했는데 그 데이터가 RAM에 없으면, 바로 그때 디스크에서 해당 페이지만 가져와 RA..
·CS
안녕하세요, 루피입니다! 오늘은 가상 메모리(Virtual Memory) 에 대해 알아보겠습니다. 가상 메모리가 왜 필요하게 되었는지, 그리고 어떤 원리로 메모리를 관리하는지 핵심만 짚어보는 시간을 가져보겠습니다. 바로 시작합니다.1. 가상 메모리(Virtual Memory)란?가상 메모리란 물리 메모리(RAM) 의 크기에 구애받지 않고, 각 프로세스에게 실제보다 훨씬 크고 연속된 것처럼 보이는 메모리 공간을 할당하는 기술입니다.가상 주소 공간(Virtual Address Space): 각 프로세스는 자신만의 독립적인 주소 공간을 가집니다. 덕분에 프로세스는 다른 프로세스의 존재를 신경 쓸 필요 없이, 마치 메모리 전체를 혼자 쓰는 것처럼 동작할 수 있습니다.주소 변환: CPU가 사용하는 이 '가상 주소..
·CS
안녕하세요, 루피입니다. 오늘은 자료구조 중 HashMap의 내부 동작을 더 깊이 이해하기 위해, Swift로 직접 구현한 과정을 공유하려 합니다. 바로 시작합니다.1. Map과 HashMap이란?Map: Key와 Value의 쌍으로 데이터를 저장하는 추상적인 자료구조입니다. HashMap: Map이라는 추상적인 개념을 해시 테이블을 사용해 실제로 구현한 구체적인 자료구조입니다.2. HashMap의 특징빠른 속도: 키를 해시 함수로 변환해 내부 배열(버킷)의 인덱스를 계산하므로, 데이터 검색/삽입/삭제가 평균적으로 O(1)의 시간 복잡도를 가집니다.순서 미보장: 데이터를 저장한 순서와 조회하는 순서가 다를 수 있습니다.Key의 유일성: Key의 중복을 허용하지 않습니다. 동일한 Key로 새로운 값을 저장..
·CS
안녕하세요, 루피입니다. 오늘은 AST에 대해 학습하고 Swift로 구현해본 내용을 정리하려합니다. 바로 시작합니다.1. 컴파일러란?본격적으로 시작하기에 앞서 컴파일러가 무엇인지에 대해 아주 간략하게 짚고 가겠습니다. 우리가 개발에 사용하는 Swift, C++, JS 같은 언어들은 고급 언어라고 부릅니다. 하지만 사실 컴퓨터는 이 언어들을 전혀 이해하지 못한다는 사실을 아시나요??컴퓨터는 오직 0과 1로 이루어진 기계어만 알아들을 수 있기 때문입니다.바로 여기서 컴파일러가 등장하게 되는 겁니다. 컴파일러는 우리가 작성한 코드를 컴퓨터가 이해할 수 있는 기계어를 번역해주는 역할을 하게됩니다. 즉, Swift로 프로그램을 짜고, 프로그램을 컴파일러가 컴파일 해서 컴퓨터가 이해할 수 있게 만들어주는 것이죠!!..
·CS
안녕하세요, 루피입니다! 오늘은 캐시 메모리에 대해 정리해 보는 시간을 가져보겠습니다. 저번 주기억 장치에 관한 글을 읽고 오시면, 더 쉽게 이해되실 겁니다. 바로 시작합니다.1. 캐시 메모리란?캐시 메모리는 CPU와 주기억장치(RAM) 사이에 위치한, 용량은 작지만 속도가 매우 빠른 메모리입니다. CPU의 연산 속도는 눈부시게 빠른데, 주기억 장치의 속도는 그에 미치지 못하죠. 캐시 메모리는 바로 이 둘 사이의 속도 차이를 극복하기 위해 존재합니다.CPU는 데이터를 찾을 때, 느린 주기억 장치까지 가기 전에 먼저 빠른 캐시 메모리를 확인합니다.1.1) 캐시의 기본 동작CPU가 캐시 메모리를 뒤졌을 때, 원하는 데이터가 있느냐 없느냐에 따라 두 가지 상황이 발생합니다.캐시 히트 (Cache Hit): C..
·CS
안녕하세요, 루피입니다! 오늘은 주기억 장치에 대해 정리해 보는 시간을 가져보겠습니다. 특히 메모리에 관한 지식은 개발자에게 필수적인 요소라고 생각하는데 이번 기회에 잘 정리해 봐야 할거 같습니다. 바로 시작합니다.1. 메모리 계층 구조컴퓨터는 모든 데이터를 하나의 거대한 저장소에 보관하지 않습니다. 마치 우리가 일할 때, 가장 급한 서류는 책상 위에, 덜 급한 건 서랍에, 나중에 볼 건 창고에 두는 것처럼 말이죠. 컴퓨터 메모리도 속도, 비용, 용량을 고려해 계층 구조를 이룹니다.레지스터 : CPU 내부에 있는 매우 빠른 메모리로 CPU가 현재 수행 중인 연산에 필요한 데이터를 저장합니다.캐시 메모리 : CPU가 자주 사용할 것 같은 데이터를 미리 가져다 놓는 고속 메모리입니다. 레지스터보단 느리지만,..
kimsangjunzzang
'CS' 카테고리의 글 목록