본문 바로가기

CS 지식22

[CS 스터디 질문] 컴파일(Compile), 런타임(Runtime) ✔️ 컴파일(Compile) 이란?컴파일(compile)은 개발자가 프로그램을 위해 작성한 소스 코드를 다른 프로그램 또는 기계(Hardware)가 처리하기 용이한 형태로 바꾸는 과정을 의미한다.  컴파일 언어에는 Java, C, C++ 등이 있으며, 실행(런타임)되기 위해서는 반드시 컴파일(Compile) 과정을 거쳐야한다. C, C++ 컴파일러에서는 기계어로 번역된 실행 파일(예: .exe 파일)이 생성된다.자바 같은 경우는 소스 코드가 바이트코드로 변환되어 .class 파일로 저장된다. 반면에, JavaScript, Php, Python 같은 언어들은 스크립트 언어이며 컴파일 과정없이 기계어로 번역되는 즉시 동작된다. 컴파일을 진행하는 일련의 과정을 컴파일 타임이라고 한다.언제 발생?: 프로그램 실.. 2024. 9. 12.
[CS 스터디 질문] 자바의 메모리 & 변수 ✔️ 자바의 메모리 모델 java.exe가 실행되면 자바 가상 머신이 만들어진다. 이때 자바는 메모리 공간의 효율성을 높이기 위해 자바의 사용에 맞게 메모리 공간을 여러 영역으로 나눈다. 자바 프로그램이 확보한 메모리 영역은 크게 메서드(method) 영역, 스택(stack) 영역, 힙(heap) 영역 으로 구분하여 사용한다. ➕ 메서드(Method) 영역 = Static 영역 - 모든 스레드가 공유해서 사용하는 영역프로그램 실행에 대한 코드, 정적(static) 변수 및 메서드, 생성자, 런타임 상수 풀 등이 메서드 영역에 생성된다. 런타임 상수 풀 : 리터럴 상수나 메서드 및 필드 참조 등의 정보가 저장되는 테이블프로그램 시작 전에 로드되고 프로그램 종료 시 소멸된다. JVM에 의해 하나만 존재하며,.. 2024. 9. 5.
[네트워크] HTTP 프로토콜 개요 & HTTPS ✔️ HTTP 프로토콜이란?HTTP(Hypertext Transfer Protocol)는 인터넷 상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 프로토콜이다. ✔️ HTTP 프로토콜의 특징TCP/IP 기반에서 동작하는 응용 프로토콜이다. 연결 상태를 유지하지 않는 비연결성(connectionless) 프로토콜이다. 상태가 없는 무상태(stateless) 프로토콜이다. 요청/응답 방식으로 동작한다.     ➕ 비연결성(Connectionless) 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊는다. 장점불특정 다수를 대상으로 하는 서비스에 적합한 방식이다. 수십 만 명이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때.. 2024. 9. 4.
[운영체제] 메모리 구조 이번 포스팅에서는 메모리 구조에 대해서 상세하게 알아보자 ! ▸ 메모리의 구조를 영역에 따라서 설명▸ 힙(Heap) 영역과 스택(Stack) 영역 차이▸ 메모리의 힙 영역을 너무 크게 잡으면? ✔️ 메모리 구조먼저, 프로세스가 실행되기 위해서는 먼저 프로그램이 메모리에 적재되어야 한다. 프로그램을 실행하게 되면, 하드 드라이브(저장장치)에 저장되어 있는 프로그램을 메모리(RAM)으로 옮긴다. 이때, 운영체제는 각 프로그램이 필요한 만큼의 메모리(RAM) 공간을 할당해준다.  이때 할당된 메모리 공간(RAM)은 크게 코드(Code), 데이터(Data), 스택(Stack), 힙(Heap) 영역으로 나뉜다. ➕ 코드(Code) 영역실행될 프로그램의 실제 코드가 저장되는 영역이다. 텍스트 영역이라고도 부른다. .. 2024. 9. 3.
[네트워크] TCP & UDP 전송 계층(Transport Layer)은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 데이터를 전달하는 역할을 한다. 이 계층에서는 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 수행한다. 전송 계층에서 데이터를 전달하기 위해 사용하는 프로토콜이 있는데, 그 프로토콜들에는 TCP와 UDP가 있다.   ✔️ TCP (Transmission Control Protocol, 전송 제어 프로토콜)TCP(Transmission Control Protocol) 란, 인터넷을 통해 디바이스에서 웹 서버로 데이터를 전송하는 연결 지향형 네트워크 프로토콜이다. 장치들 사이에 논리적인 접속을 성립하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. TCP프로토콜을 이용하.. 2024. 9. 1.
[네트워크] TCP/IP 흐름 제어 & 혼잡 제어 ✔️ 흐름 제어란?흐름제어는 송신측과 수신측 사이의 데이터 처리 속도 차이를 해결하기 위한 기법이다. 데이터를 주고 받는 과정에서 송신측과 수신측 모두 데이터를 저장할 수 있는 버퍼를 사용한다. 수신측의 처리 속도보다 송신측의 처리 속도가 더 빠른 경우, 수신측 버퍼가 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실 될 수 있다. 이는 불필요한 패킷 전송을 야기한다. 이를 해결하기 위한 것이 흐름제어이다. TCP 버퍼송신측은 버퍼에 TCP 세그먼트를 보관한 후 순차적으로 데이터를 전송하고, 수신측은 도착한 TCP 세그먼트를 애플리케이션이 읽을 때까지 버퍼에 보관한다. ✔️ Stop and Wait Stop and Wait는 매번 전송한 패킷에 대해 확인 응답(ACK)을 받으면 다음 패킷을 전송하는.. 2024. 8. 31.