OS - 프로세스(Process)란?
2024. 1. 4. 20:05
CS/OS
프로세스(Process)란? 프로세스(Process)는 쉽게 말해서 실행중인 프로그램이다. 예를 들어 리그오브레전드 게임을 다운을 받으면 프로그램상태로 내 컴퓨터의 디스크에 저장이된다. 이를 실행하게 되면 메모리에 로드되게 되는데, 이때 프로세스가 되는 것이다. 즉 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 또한 프로그램이 여러 프로세스가 될 수 있다. 프로세스 상태(Process State) 프로세스는 상태를 가지고 있고 상태가 계속 변한다. 프로세스 상태는 다음과 같다. new : 프로세스가 생성되기 전 상태(아직 프로세스가 아님) ready : 메모리에 Load되어 CPU 할당받을 준비가 되어있는 상태 running : CPU에 의해..
DB - 인덱스(Index)란?
2024. 1. 2. 18:44
CS/DB
대학생 강의와 유튜브에서 데이터베이스에서 인덱스가 중요하다... 풀스캔은 안좋기 때문에 인덱스처리를 해줘라... 라는 내용을 들었고, 대충 인덱스가 무엇인지 알지만 스스로 깊이 공부해보고 싶어서 포스팅해본다. 실제로 팀 프로젝트를 하면서 조회 쿼리문을 더 빠르기하기 위해서 사용한적 있다. 개발자가 되기위해선 사용할 줄만 알면 안된다! 일상 생활에서 인덱스 책에서 인덱스를 많이 접해보았다. 만약 책에서 인덱스가 없다면 어떻게 될까? 매일 내가 원하는 부분을 보기위해 책을 드르륵? 긁으면서 찾을 것이다. 인덱스가 있기에 우리가 원하는 내용을 찾을때 바로 볼 수 있다. 데이터 베이스의 인덱스도 같은 맥락이다. 공공데이터를 이용하여 데이터베이스에 저장하면, 수 만개의 데이터가 한 테이블에 저장된다. 만약 모든 ..
이진 탐색 트리 (Binary Search Tree)
2022. 9. 5. 21:37
CS/DataStructure
이진 탐색 트리(Binary Search Tree)란? 각 노드에 중복되지 않는 키(Key)가 있다. 루트노드의 왼쪽 서브 트리는 해당 노드의 키보다 작은 키를 갖는 노드들로 이루어져 있다. 루트노드의 오른쪽 서브 트리는 해당 노드의 키보다 큰 키를 갖는 노드들로 이루어져 있다. 좌우 서브 트리도 모두 이진 탐색 트리여야 한다. 이진 탐색 트리의 특징 이진 탐색 트리는 기존 이진트리보다 탐색이 빠릅니다. 이진 탐색 트리의 탐색 연산은 트리의 높이(height)가 h라면 O(h)의 시간 복잡도를 가집니다. 이진 탐색 트리의 탐색 과정을 한번 보시죠! 루트 노드의 키와 찾고자 하는 값을 비교한다. 찾고자 하는 값이라면 탐색을 종료합니다. 찾고자 하는 값이 루트 노드의 키보다 작다면 왼쪽 서브 트리로 탐색을 ..
Binary Tree(이진 트리)와 그종류
2022. 8. 31. 20:51
CS/DataStructure
Binary Tree 란? 모든 노드가 정확하게 두개의 서브트리를 가지고 있습니다. 서브트리는 공백이 될 수 있습니다. 노드의 유한 집합으로서 공백이거나 루트와 두 개의 분리된 이진트리인 경우 왼쪽 서브트리와 오른쪽 서브트리로 구성 root가 0이 아닌 1에서 시작할 때, i 번째 노드에 대해서 parent(i) = i/2 , left_child(i) = 2i , right_child(i) = 2i + 1 의 index 값을 갖습니다. 위의 그림을 보겠습니다! 두개의 서브 트리가 모두 공백인 리프 노드 - D, H, F, I 공백이 아닌 서브 트리를 하나씩 가지고있는 노드 - E, G 노드 E는 공백 왼쪽 서브트리와 오른쪽 서브트리 H를 가지고 있으며 노드 G는 왼쪽 서브트리I와 오른쪽 공백 서브트리를 ..
트리(Tree)란?
2022. 8. 30. 23:06
CS/DataStructure
트리란? - 노드들을 간선으로 연결한 계층형 자료구조 - 제일위의 하나의 노드를 루트노드로 하여 나머지 노드들이 간선으로 연결 - 하나의 노드는 그자체로 트리이며 루트가 됩니다. - ㅌ스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조입니다. - 루트 노드는 0개 이상의 자식 노드를 갖습니다. - 자식 노드 또한 0개 이상의 자식 노드를 갖습니다. 1. 트리에는 사이클(cycle)이 존재할 수 없습니다. 트리는 사이클이 없는 하나의 연결 그래프구조라고 할 수 있습니다. 2. 트리의 노드는 self-loop가 존재 해서는 안됩니다. 트리와 관련된 용어 노드 node: 트리는 노드들의 집합으로 트리를 구성하는 것으로 보통 값과 부모 자식의 정보를 가지고 있다. 엣지/간선 edge: 엣지는 노드들을 연결하는..
맥 어드레스(MAC Address)란?
2022. 8. 17. 21:13
CS/Network
MAC Address 가볍게 알기 MAC는 미디어 액세스 컨트롤(Media Access Control)의 준말입니다. 만약 컴퓨터가 서로 통신을 할때 어떻게 네트워크상에서 서로를 구분해서 인식할까요?! 통신을 하기위해서 서로를 구분할 일종의 주소가 필요하게 되는데 이 역할을 바로 MAC Address가 담당하게 됩니다. "그러면 IP 주소가 뭐지? IP주소도 통신을 위해서 각 장비마다 IP주소를 배정하게되고 그 주소를 가지고 통신하는 것 아니야?" 라고 생각할 수 있습니다. 앞에서의 질문은 맞습니다. 인터넷은 TCP/IP로 통신을 하고 따라서 통신을 하기 위해서 IP주소를 사용합니다. 하지만 이 경우에도 맥어드레스를 사용합니다! 즉 우리가 통신을 할때 IP주소를 다시 MAC으로 바꾸는 절차(ARP : A..
Stack and Queue
2022. 8. 16. 19:22
CS/DataStructure
스택(Stack)이란? 최근에 삽입된 데이터가 가장 먼저 나가는 LIFO(Last In First Out) 구조를 가진 자료구조(Structure) 스택이란 단어의 사전적 용어는 '차곡 차곡 쌓여진 더미'를 의미합니다. 메모리에서의 스택 영역은 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값등의 임시데이터를 저장합니다. 스택에서 top을 통해 삽입하는 연산을 push, top을 통한 삭제하는 연산을 pop이라고 합니다. Stack 실생활 예시를 들자면 과자 프링글스 다들 아시죠? 제일 나중에 넣은 칩 조각을 가장 먼저 먹게되는 것과 같은 이치라고 생각하시면 됩니다! 위의 그림을 보시면 스택은 top으로 정한 곳을 통해서만 접근할 수 있습니다. top은 가장 최근에 들어온 자료를 가리키고 있으며 만약..
Array vs Linked List
2022. 8. 15. 16:05
CS/DataStructure
배열이란? 배열은 연관된 데이터를 모아서 관리하기 위해서 사용되는 데이터 타입입니다. 배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있고, 반복문과 결합하면 많은 정보도 효율적으로 처리할 수 있습니다. 위의 예시를 보면 크기가 4인 과일에 대한 배열이 있습니다. 사과, 바나나, 포도, 수박은 배열에 저장된 값이고(Value) 그리고 밑에 있는 숫자들은 Value를 식별하는 Index입니다. 배열의 값을 찾기 위해 Index를 사용합니다! 그렇기 때문에 찾고자 하는 element의 인덱스 값을 알고 있다면 Big-O(1)에 해당 element로 접근할 수 있습니다. 즉 random access가 가능하다는 장점이 있습니다. random access란? - 인덱스 번호를 이용해서 빠르게 접근하는 것 임..