Computer Science
-
Tree(트리)Computer Science/Data Structure 2022. 3. 27. 17:18
Tree(트리)의 개념과 특징 트리 자료구조란? 트리는 그래프의 한 종류로, 한개 이상의 node(노드)들이 나무가지처럼 연결된 자료구조를 의미한다. 하나의 루트 노드와 0개 이상의 자식 노드를 가진 방향성 있는 그래프를 트리라고 한다. 트리의 특징 하나의 root node(루트 노드)를 가진다 루트 노드는 0개 이상의 자식 노드를 가진다 자식 노드는 또 각자 0개 이상의 자식 노드를 가지고 있고 이는 반복적으로 정의된다 즉, 트리는 재귀적인 구조를 가지고 있다 트리는 노드와, 노드를 연결하는 edge(간선)으로 구성된다. 트리는 DAG(Directed Acyclic Graphs, 방향성이 있는 비순환 그래프)의 한 종류다. 때문에 트리에는 cycle(사이클)이 존재하지 않는다. 즉, 같은 노드를 거치지..
-
Stack(스택)과 Queue(큐)Computer Science/Data Structure 2022. 3. 22. 00:40
Stack Stack이란? 단어 그대로 생각해보자. stack을 동사로 사용하면 '쌓다', '(쌓아서) 채우다'라는 뜻을 가지고 있다. 그렇다. 너무 당연하게도 스택은 데이터를 쌓아 올린 구조다. 흔히들 스택을 '바닥이 막힌 상자'로 비유하곤 한다. 우리가 바닥이 막힌 상자 위에 물건들을 하나씩 쌓아 올린다고 생각해보자. 이제 그 물건들을 다시 꺼낼 때에는 맨 위에 올라와있는 물건부터 역순으로 꺼내야 할 것이다. 바닥이 막혀있으니 맨 아래에서부터 꺼낼 수 없고, 중간에서 꺼내면 무너져 내리기 때문이다. 조금 전문적인 말을 통해 설명하자면, 스택은 LIFO(Last In First Out, 후입 선출) 구조를 가지고 있다. 즉, 나중에 들어온 데이터가 먼저 빠져나가는 자료구조다. 예시 위 그림은 스택 구조..
-
컴퓨터 부팅 과정Computer Science/Operating System 2022. 3. 21. 22:33
Bootstrap(부트스트랩, 부팅) PC의 전원 버튼을 누른 직후부터, 운영체제가 메모리에서 동작하기 시작할 때까지의 모든 과정 Bootstrap 과정 메인 보드에 전원 공급 ROM 혹은 EEPROM에 저장된 BIOS 루틴 시작 POST 진단과정 시작 BIOS는 셀프 테스트를 통해 주변 하드웨어 체크 (컴퓨터 부팅에 필요한 하드웨어들이 정상인지 확인) MBR에 존재하는 부팅 정보를 읽어오는 부트스트랩 실행 RAM에 Bootloader를 적재 (RAM에는 운영체제가 적재될 Boot Sector가 따로 있음) 디스크에 있는 OS(커널) 코드를 복사하여 메모리에 적재 용어 설명 BIOS (Basic Input Output System) 컴퓨터에 전원이 들어왔을 때 가장 먼저 컴퓨터 제어를 맡아 기본적인 기능..
-
ArrayList와 LinkedListComputer Science/Data Structure 2022. 3. 20. 23:45
ArrayList ArrayList란? Java의 Collection Framework에서 가장 많이 사용되는 Collection Class 배열같이 인덱스를 통해 인자를 관리한다는 특징이 있지만 배열과는 다르게 크기가 동적으로 할당됨 기본 저장용량은 10이며, 10을 넘어가면 1.5배씩 증가 정확히 설명하자면, 기존 ArrayList의 크기가 동적으로 변하는 것이 아니라 기존 저장용량을 넘어서면 기존 ArrayList의 저장용량보다 1.5배 큰 ArrayList를 만들고, 이 리스트에 기존 ArrayList의 값들을 복사하는 것 값이 하나 삭제되면 해당 인덱스 뒤의 모든 인자가 한 칸씩 당겨지고, 값이 하나 추가되면 해당 인덱스 뒤의 모든 인자가 한 칸씩 밀림 Generic을 이용해 타입 안정성을 제공..
-
Array(배열)와 List(리스트)Computer Science/Data Structure 2022. 3. 19. 16:27
Array(배열) Array(배열)이란? 여러 데이터를 그룹으로 관리하기 위하여 사용하는 자료구조 데이터들은 메모리 상에 연속적(논리적인 저장 순서와 물리적 저장 순서가 같음)으로 배치됨 즉, 연속된 메모리 공간에 순서대로 저장된 데이터 그룹을 배열이라고 함 배열 내의 각 원소들은 유일무이한 고유의 인덱스 번호를 가지고 있음 -> 원소의 인덱스 번호를 통해 해당 원소에 접근할 수 있음 처음 배열을 생성할 때 배열의 크기를 정해줌(pre-allocation). 이 크기는 고정적이기 때문에 데이터를 몇 개를 집어넣느냐와 상관없이 처음 생성할 때 크기를 그대로 유지 Cache Hit Ratio가 높음 (※ Cache Hit Ratio: CPU가 요청한 데이터가 캐시 메모리에 있는 경우 캐시 적중(Cache H..
-
DOM과 Virtual DOMComputer Science/Web 2022. 3. 2. 17:53
DOM(Document Object Model) DOM의 개념 문서 객체 모델(The Document Object Model, 이하 DOM)은 HTML, XML 문서의 프로그래밍 interface이다. DOM은 문서의 구조화된 표현(structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 돕는다. DOM은 nodes와 objects로 문서를 표현한다. 이들은 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결시켜주는 역할을 담당한다. 출처 https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Intr..
-
듀얼 모드(Dual Mode)란?Computer Science/Operating System 2022. 2. 13. 21:22
듀얼 모드(Dual Mode)란? 듀얼 모드(Dual Mode, 이중 동작 모드)란 공유된 시스템 자원을 유저 모드(User Mode)와 커널 모드(Kernel Mode), 두 가지로 나눠 사용하는 것을 말한다. 쉽게 말해 운영체제가 수행할 수 있는 기능 영역과 사용자가 수행할 수 있는 기능 영역을 각각 나눠놓았다고 생각하면 된다. 여기서 유저 모드는 커널 모드에 바로 접근하지 못한다는 것이 중요 포인트다. 유저 모드(User Mode) 우리가 일반적으로 프로그램을 사용할 때 OS의 모드를 뜻한다. 유저 모드에선 사용자가 실제로 사용할 수 있는 영역은 제한적이다. 즉, 유저 모드에선 허용된 범위 외의 시스템 자원에 함부로 접근하지 못한다. 커널 모드(Kernel Mode) 커널이란 운영체제의 가장 핵심적..
-
시스템 콜(System Call)이란?Computer Science/Operating System 2022. 2. 13. 20:54
시스템 콜(System Call)이란? '시스템 콜(System Call)'은 유저 모드에서 커널 영역의 기능을 사용하게 하는 인터페이스다. 즉, 프로세스가 하드웨어에 접근해 필요한 기능을 사용할 수 있게 하는 기능이다. 조금 풀어서 얘기하자면 응용 프로그램에서 운영체제에게 어떤 기능을 수행해달라고 신호를 보내는 것을 보고 '시스템 콜'이라고 한다. 시스템 콜을 왜 사용하는가? 운영체제는 유저 모드(User Mode)와 커널 모드(Kernel Mode)가 나누어져 있다. (이를 Dual Mode라고 한다.) 사실 유저 모드는 이름만 어느 정도 유추가 된다. 두 개로 나누어져 있는 운영체제에서 유저가 사용하는 부분이다. 유저 모드는 응용 프로그램을 실행할 때 사용된다. 우리가 컴퓨터를 사용할 때에는 보통 ..