개발/CS

(CS) 네트워크 기본 용어 정리
네트워크 범위에 따른 분류 1. LAN (Local Area Network) 집, 학교, 공항 등의 비교적 작은 지역 내의 컴퓨터 등의 장치를 연결하는 네트워크이다. 보통 사무실이나 학교 등 소규모 조직 내에서 사용되며, 네트워크의 전송 속도가 빠르고 안정적이며, 보안이 우수하다. 2. MAN (Metropolitan Area Network) 네트워크를 도시 전체로 확장한 중간 규모의 네트워크로, 대도시권 내의 여러 지역을 연결한다. MAN은 일반적으로 지역 간 빠른 데이터 전송을 위한 고속 대역폭을 가지고 있다. 주로 대도시권 내에서 대학, 공공기관, 연구소 등에서 사용됩니다. 3. WAN (Wide Area Network) LAN과 MAN보다 더 넓은 지리적 범위를 가지며 국가, 대륙 간의 전 세계적..

(CS) 단일 연결 리스트 vs 원형 연결 리스트, Stack으로 Queue 구현, 원형 큐 구현
단일 연결 리스트 vs 원형 연결 리스트 단일 연결 리스트와 원형 연결 리스트는 연결 리스트의 일종으로, 각 노드는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있다. 데이터를 노드에 저장하고 노드들을 링크로 연결하여 데이터를 관리하는 자료구조이다. 하지만 다음과 같은 차이점이 있다. 단일 연결 리스트(Singly Linked List) 원형 연결 리스트(Circular Linked List) 리스트의 끝은 NULL로 표시 리스트의 순회는 단방향으로만 가능 리스트의 끝은 NULL이 아닌, 첫 번째 노드를 가리키는 포인터로 표시 마지막 노드의 다음 노드는 첫 번째 노드가 되어 원형적인 형태 리스트의 순회는 양방향으로 가능 다음 노드만을 가리키는 포인터만으로 구현되기 때문에 구현이 간단하고 메모리를 적게..

(CS) ArrayList, LinkedList, Stack, Queue, Deque
ArrayList vs LinkedList ArrayList는 내부적으로 배열로 구현되어 있으며, 배열의 크기를 동적으로 조절할 수 있다. ArrayList는 인덱스를 이용한 요소 접근이 매우 빠르기 때문에, 특정 요소를 검색하는 작업에 유용한다. 또한 ArrayList는 LinkedList에 비해 메모리 사용량이 적다. 그러나 ArrayList는 요소의 삽입과 삭제 작업 시 배열 내에서 해당 요소 이후의 요소들을 전부 이동시켜야 하기 때문에, 요소의 삽입과 삭제가 빈번하게 일어나는 경우에는 성능이 저하될 수 있습니다. LinkedList는 이중 연결 리스트로 구현되어 있으며, 각 요소는 자신의 이전 요소와 다음 요소를 가리키는 두 개의 포인터를 가지고 있다. 따라서 LinkedList는 요소의 삽입과 ..

(CS) 캐시 메모리, 메모리 관리 기법, 페이지 교체 알고리즘
캐시 메모리 1. 캐시 메모리란? 캐시 메모리(Cache Memory)는 CPU와 RAM 간의 데이터 전송 속도를 높이기 위해 사용되는 중앙 처리 장치(CPU)와 주 기억장치(RAM) 사이에 위치한 고속 기억장치다. 캐시 메모리는 속도가 빠른 장치(CPU)와 느린 장치(RAM) 간의 속도 차이로 발생하는 병목현상을 완화하여 성능을 향상하는 데 중요한 역할을 합니다. 주기억장치에 비해 접근이 빠르지만, 용량이 작다는 특징을 가지고 있다. 캐시 메모리는 CPU가 처리할 데이터나 명령어를 저장하여 CPU가 필요할 때 빠르게 액세스 할 수 있도록 해준다. CPU는 일반적으로 계층 구조를 가진 캐시 메모리를 사용한다. CPU와의 거리에 따라 L1 캐시, L2 캐시, L3 캐시 등 여러 단계로 나뉜다. 숫자가 작을..

(CS) 데드락, 기아 상태, 스케줄링
데드락 1. 데드락의 개념 데드락(교착상태, deadlock)은 두 개 이상의 프로세스나 스레드가 서로 상대방이 필요한 자원을 점유한 채로 다른 자원을 요청하고 있기 때문에 결과적으로 무한정 기다리고 있는 상태를 의미한다. 위의 그림에서 Process1, Process2가 Resource1, Resource2를 모두 얻어야 실행된다고 가정해 보자. Process1의 상황 : Resource1을 얻은 후 Lock을 하여 다른 Process가 사용할 수 없음 / Resource2를 요청 중 Process2의 상황 : Resource2를 얻은 후 Lock을 하여 다른 Process가 사용할 수 없음 / Resource1을 요청 중 이 상황에서 서로 원하는 자원이 상대방에게 할당되어 있기 때문에 두 프로세스는 ..

(CS) 프로세스, 스레드, 프로세스 동기화 기법
프로세스 프로세스(Process)는 운영 체제에서 실행 중인 프로그램을 의미한다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리를 할당받아 실행 중인 것을 의미한다. 프로세스는 프로그램이 실행될 때 메모리 상에 할당된 작업 공간과, 프로세스 실행에 필요한 자원들(레지스터, 파일, 네트워크 연결 등)을 포함한다. 프로세스는 프로그램 실행 과정에서 운영 체제로부터 할당받은 자원을 사용하여 작업을 수행하며, 프로세스는 하나 이상의 스레드(Thread)를 가지고 있을 수 있다. 각각의 프로세스는 독립적으로 실행되며, 다른 프로세스와는 메모리 공간을 공유하지 않는다. 1. 프로세스 메모리 구조 프로세스 메모리 구조는 운영 체제에서 프로세스를 실행하기 위해 메모리를 할당하는 방법을 의미한다. 대부분의 운영..

(CS) 프로세서, 메모리, MMU, 시스템 버스
프로세서 1. 프로세서란? 프로세서(processor, 처리기)는 컴퓨터의 중앙 처리 장치(CPU)를 말한다. 흔히 컴퓨터의 뇌로 여겨진다. 제어 장치, 연산 장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분으로, 프로그램을 기억 장치로부터 읽어 연산 처리, 비교 처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터를 처리하고, 각종 장치를 구동하는 역할을 담당한다. 컴퓨터에서 수행되는 모든 작업의 계산, 연산, 제어 등의 명령들을 처리한다고 생각하면 되겠다. 프로세서는 입력된 명령어를 실행하고, 데이터를 처리하며, 계산을 수행한다. 이러한 작업들은 컴퓨터의 모든 프로그램에서 필요하다. 따라서 프로세서는 컴퓨터의 핵심 부품 중 하나이며, 컴퓨터의 성능을 결정하는 중요한 역할..

URL vs URI
REST API에 대해 공부하다 보니 URI라는 새로운 단어를 접하게 되어서 URI의 개념과 우리가 흔히 잘 아는 URL의 차이가 무엇인가에 대해 알아보고자 한다. 1. URI란? URI는 Uniform Resource Indentifier의 약자로, 우리말로 ‘통합 자원 식별자’이다. Uniform은 리소스를 식별하는 통일된 방식을 의미하고, Resource는 URI로 식별이 가능한 모든 종류의 자원(웹 브라우저 파일 및 그 이외의 리소스 포함)을 지칭한다. 마지막으로 Identifier는 다른 항목과 구분하기 위해 필요한 정보를 말한다. 즉, URI는 인터넷 상의 리소스 “자원 자체”를 식별하는 고유한 문자열 시퀀스이다. 2. URL이란? URL은 Uniform Resource Locator의 약자로..