[컴퓨터 구조] 프로그램이 실행된다는 것의 의미
·
CS
우리는 늘 프로그램을 실행하고 있다. 아이콘을 더블 클릭하거나 터미널에서 명령어를 입력하는 행위는 일상이 되었다.하지만 프로그램이 실행된다는 말이 컴퓨터 내부에서 구체적으로 어떤 과정을 의미하는지 깊게 생각해 본 적은 많지 않다. 이번 글에서는 프로그램이 실행될 때 발생하는 컴퓨터 내부의 변화와 핵심 원리를 정리해 봤다. 1. 실행 전의 프로그램은 just 데이터일 뿐이다먼저 알아야 할 사실은 실행되기 전의 프로그램은 아무 일도 하지 않는 정적인 상태라는 점이다.- SSD/HDD와 같은 보조기억장치에 저장된 .exe, .app, .jar 파일들- 작성한 소스코드를 컴파일해 만든 이진 파일이 상태의 프로그램은 그저 저장된 데이터 덩어리에 불과한다. LIKE | 프로그램 파일 = 요리책요리책이 있다고 해서 ..
[컴퓨터 구조] 컴퓨터를 구성하는 요소
·
CS
매일 컴퓨터를 사용하지만, 정작 컴퓨터가 어떤 구조로 일을 처리하는지에 대해 깊이 생각해보지 않는다.버튼을 누르면 화면이 바뀌고, 파일을 저장하면 디스크에 남아 있으며 프로그램을 실행하면 당연히 실행된다. 하지만, 이 '당연함' 뒤에는 역할이 분리된 컴퓨터의 구조가 숨어있다는 사실 ! 이번에는 컴퓨터를 구성하는 기본 요소를 중심으로 '컴퓨터가 어떻게 일을 나눠서 처리하는지'를 살펴보겠다. 1. 컴퓨터가 하는 일은 생각보다 단순하다컴퓨터가 수행하는 모든 작업은 크게 다음 4가지 흐름으로 정리할 수 있다.입력 - 처리 - 저장 - 출력이 흐름은 메신저, 웹 브라우저, 게임 등 모든 프로그램에서 공통적으로 반복된다. 2. 왜 컴퓨터는 하나의 장치가 아니라 여러 요소로 나뉘어 있을까?'하나의 장치로 모든 작업..
캐시와 참조 지역성으로 웹 성능을 높이는 방법
·
CS
웹사이트를 개발할 때, 빠른 속도와 좋은 사용자 경험을 제공하는 것은 매우 중요합니다. 그중에서도 캐시와 참조 지역성이라는 개념은 속도를 높이는 데 큰 역할을 합니다. 이번 글에서는 이 개념들에 대해 알아보고, 웹 개발에서 어떻게 활용할 수 있는지 살펴보고자 합니다 !1. 캐시(Cache)란 무엇일까?캐시 : 자주 사용하는 데이터를 빠르게 불러오기 위해 저장해 두는 장소 예를 들자면, 스타벅스 앱에서 자주 주문하는 커피를 **나만의 메뉴(즐겨찾기)**에 추가해 놓으면, 매번 메뉴를 선택하고 세부 옵션을 설정할 필요 없이 저장된 정보를 바로 불러와 빠르게 주문할 수 있다. 캐시는 이와 같은 역할을 한다. 데이터를 미리 저장해 두고, 필요할 때 바로 제공해 시간을 절약해 준다.왜 캐시가 필요할까? 데이터를 ..
개발자가 컴퓨터 구조를 알아야 하는 이유
·
CS
컴퓨터 구조를 이해하는 것은 개발자로서 중요한 부분입니다. 코드 짜는 것에 집중하다 보면 컴퓨터가 내부적으로 어떻게 작동하는지 신경을 쓰지 않게 되지만, 컴퓨터 구조를 잘 아는 것은 개발자로서 더 나은 문제 해결과 효율적인 코드 작성을 돕습니다.1. 문제 해결 능력 향상1-1. 디버깅이 더 쉬워진다 !개발 중 코드를 실행했는데 제대로 동작하지 않거나 성능이 느려질 때, 이를 해결하려면 컴퓨터가 데이터를 처리하는 방식을 알아야 한다 !!메모리프로그램은 메모리라는 저장 공간에 데이터를 저장한다. 이 공간을 효율적으로 사용하는 것이 중요하다.메모리 계층 구조 : CPU 캐시(가장 빠름), RAM, 디스크(HDD/SSD) 순으로 속도가 다르다. 이를 이해하면 데이터 처리를 더 빠르게 만들 수 있다.ex) 한 번..
웹 개발 시 꼭 챙겨야 할 보안 체크 리스트
·
CS
웹 개발을 진행할 때 보안은 필수적으로 고려해야 할 요소입니다. 보안을 소홀히 여기면 사용자 데이터 유출, 서비스 중단 등의 심각한 문제가 발생할 수 있습니다.이번 글에서는 웹 개발에서 자주 발생하는 보안 문제와 이를 예방하기 위한 방법을 정리해보고자 합니다. 1. 네트워크 보안HTTPS 적용HTTPS = HTTP 통신을 SSL/TLS 프로토콜을 사용해 암호화HTTP 메시지 = 일반 텍스트 ex) 사용자가 로그인할 때 입력한 아이디와 비밀번호가 평문으로 전송되어 해커가 쉽게 탈취할 수 있음: 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스 하고 읽을 수 있음HTTPS = 모든 데이터를 암호화된 형태로 전송: 사용자가 민감한 데이터를 제출할 때, 제 3자가 네트워크를 통해 데이터를 가로채더라도 해독할 수 ..
혼자 공부하는 네트워크 CH5. 응용 계층
·
CS
응용 계층은 네트워크의 최상위 계층으로, 사용자와 네트워크 간의 상호작용을 처리하는 중요한 역할을 합니다.응용 계층의 내용을 정리할 때는 개념정리와 더불어 기술 면접에서 자주 나오는 질문과 답변을 포함하여 정리해 보았습니다. 1. 응용 계층 개요응용 계층 역할사용자와 네트워크 간 상호작용을 지원하며, 데이터를 전송하거나 요청하는 작업을 담당합니다.ex) 브라우저를 통해 웹 페이지 요청, 이메일 송수신, 파일 다운로드 등2. 주요 프로토콜 상세 설명1) HTTP와 HTTPSHTTP (HyperText Transfer Protocol)텍스트, 이미지, 동영상 등의 리소스를 서버에서 클라이언트로 전송하는 프로토콜입니다.상태 비저장(Stateless) 프로토콜로, 요청 간 연결 상태를 유지하지 않습니다.* 상태..
혼자 공부하는 네트워크 CH4. 전송 계층
·
CS
1. 전송 계층이란?전송 계층은 OSI 7 계층 중 4번째 계층으로, 응용 계층과 네트워크 계층 사이에서 데이터를 전달하며, 통신의 신뢰성을 보장합니다.구체적으로, 전송 계층은 신뢰할 수 있는 통신과 연결형 통신 기능을 통해 IP(Internet Protocol)의 한계를 극복하고, 사용자가 실행하고 있는 프로그램을 식별하는 역할을 수행합니다. 1.1 IP의 한계IP(Internet Protocol)는 데이터를 패킷 단위로 전달하지만, 다음과 같은 한계가 있습니다.비신뢰성(신뢰할 수 없는 통신)데이터 손실, 순서 변경, 중복 발생 가능패킷 손실 발생 시 확인 및 복구하지 않음연결 없음(비연결형 통신)송신자와 수신자 간 연결 상태를 관리하지 않음사전 연결 설정 없이 단순히 패킷을 목적지로 전송그럼에도 IP..
혼자 공부하는 네트워크 CH3. 네트워크 계층
·
CS
1. 네트워크 계층이 왜 필요할까?1.1 물리 계층(1 계층)과 데이터 링크 계층(2 계층)물리 계층은 실제 데이터를 신호로 변환해서 보내는 부분입니다. 물리적으로 연결된 장치 간에만 데이터가 전송되며, 물리 계층에서는 단순히 신호를 전달할 뿐, 데이터를 어디로 보내야 하는지 모릅니다.데이터 링크 계층은 MAC 주소를 통해 장치를 구별합니다. 하지만 MAC 주소는 같은 네트워크 내에서만 유효하고, 다른 네트워크로 데이터를 보내는 기능이 없습니다.1.2 네트워크 계층의 역할네트워크 계층은 데이터를 어디로 보낼지 알려주는 역할을 합니다.이를 위해 IP 주소라는 고유한 번호를 사용하고, 라우팅이라는 기술로 데이터를 정확하게 목적지로 보냅니다.여기서 개발자에게 중요한 점서버와 클라이언트가 서로 데이터를 주고받을..
혼자 공부하는 네트워크 CH2. 물리 계층과 데이터 링크 계층
·
CS
이 글에서는 제가 배우고 이해한 내용을 개발자 관점에서 풀어보려고 합니다 !초보 개발자로서, 어려운 기술 용어보다는 일상적인 예시를 통해 네트워크의 작동 방식으로 내용을 작성해 보았습니다. 0. 개요Vue.js로 프론트엔드를, Spring Boot로 백엔드를 만들어 웹사이트를 개발했다고 가정해 보겠습니다. 어떤 사용자가 브라우저에서 해당 웹사이트에 접속하거나 데이터를 요청할 때,네트워크의 물리 계층과 데이터 링크 계층은 데이터가 안전하고 정확하게 서버와 사용자 간을 오갈 수 있도록 돕습니다. 1. 물리 계층 : 데이터를 신호로 변환하는 층물리 계층은 데이터를 전송할 때 0과 1의 비트로 변환하여 전기 신호, 무선 신호, 또는 광 신호로 만들어 네트워크를 통해 전달합니다.여기서 이더넷(Ethernet)은 ..