Computer Science Basics 15

Unity에서 A* 알고리즘 구현해보기

개념A* 알고리즘은 출발 지점에서 목표 지점까지의 최단 경로를 찾는 그래프 탐색 알고리즘이다.다익스트라 알고리즘을 현실 세계에 적용하기에는 실제 경로를 모두 노드화시켜야 하고, 출근길 정체 같은 다양한 변수를 반영하기 힘들어 다익스트라를 확장해 만들었다.   A* 알고리즘은$g(x)$ : 현재 위치까지의 비용과$h(x)$ : 현재 위치에서 도착 위치까지의 예상 비용에 대해$f(x) = g(x) + h(x)$에 대해 $f(x)$가 최소가 되는 지점을 먼저 탐색한다.다익스트라 알고리즘에 $h(x)$라는 가중치를 두어 탐색을 더 빠르고 효율적으로 하는 알고리즘이다.$h(x) = 0$이면 A* 알고리즘은 다익스트라 알고리즘이 된다.여기서 예상 비용 $h(x)$은 정확히 구할 수 없는 값이다. 우리는 여기서 He..

DB - 4. Database Design Using the E-R Model

Design ProcessDesign PhaseDB 디자인은Initial Phase : 사용자가 필요할 데이터를 모두 정리Second Phase : 데이터 모델을 선정선택한 데이터 모델의 개념을 적용한다.데이터 모델의 요구를 데이터베이스 스키마로 변환한다.Final Phase : 추상적인 데이터 모델을 데이터베이스에 적용Logical Design : 데이터베이스 스키마 적용Physical Design : 데이터베이스의 물리적 구조 결정의 과정을 거친다.Design AlternativeDB를 디자인할 때 이 두 가지는 피해야 한다.Redundancy : 정보가 중복되면 두 정보가 일치한다는 보장이 없다.Incompleteness : 설계가 불완전하면 특정 부분을 모델링하기 어렵거나 불가능하다.그렇다고 피하..

DB - 1. Intro

What is Database System?데이터베이스기업의 고객 정보나, 학교의 학생 정보처럼, 특정 기관은 자신이 필요한 정보를 저장해둔다. 이러한 정보를 데이터라고 한다.데이터베이스는 데이터의 모임이다. 정보는 텍스트, 숫자, 이미지 등 다양한 형식이며, 데이터베이스를 통해 이를 체계적으로 저장하고, 읽기, 쓰기, 수정 등이 가능하다.| student_id | student_name | student_age | student_dept ||------------|----------------|-------------|-------------------|| 1 | John Doe | 20 | Computer Science || 2 ..

DB - 0. Index

1. Intro2. Relational Model3. SQL4. Database Design Using the E-R Model5. Normalization6. Data Indexing7. Transaction기업의 고객 정보나, 학교의 학생 정보처럼, 특정 기관은 자신이 필요한 정보를 저장해둔다. 이러한 정보를 데이터라고 한다.데이터베이스는 데이터의 모임이다. 정보는 텍스트, 숫자, 이미지 등 다양한 형식이며, 데이터베이스를 통해 이를 체계적으로 저장하고, 읽기, 쓰기, 수정 등이 가능하다.보통은 표의 형식으로 데이터를 보여줄 수 있다.포스트에서 예시로 사용할 데이터베이스는 가상의 대학교 학사정보 데이터베이스를 사용할 것이다.학생, 교수, 학과 등의 정보를 가지고 있는 데이터베이스로, 예시이기 때문에 ..

OS - 8. File System

RAM은 크기가 제한되고, 컴퓨터가 꺼지면 데이터가 사라진다.그러나 컴퓨터가 꺼져도 유지되고, 크기가 큰 데이터를 저장하면서, 여러 프로세스의 동시 접근 같은 CPU와 RAM의 작동을 감당할 수 있는 저장 방법이 필요하다.운영체제는 이런 데이터를 파일이라는 단위로 Secondary Storage에 저장해 관리한다.File파일은 연관된 정보의 묶음을 Secondary Storage에 기록한 것이다.사용자의 입장에서 파일은 Secondary Storage에서 가장 작은 할당 단위로, 파일에 데이터를 작성하는 방법 말고 Secondary Storage에 데이터를 기록할 수 없다.File Name & Extension우리가 파일 탐색기에서 흔히 보는 파일명은 이름 + 확장자의 구조이다.Lostark...

OS - 7. Virtual Memory

프로그램을 실행하면 프로그램 전체가 메모리에 로드되지만, 프로그램 전체가 사용되는 일은 드물고, 사용되더라도 동시에 필요한 경우는 더욱 없다. 이렇게 메모리에 일부만 있는 상태로도 프로그램을 구동할 수 있다는 점을 이용해 Virtual Memory를 구현할 수 있다. Virtual Memory란? 이전 단원에서 메모리 관리를 효율적으로 하기 위해 CPU는 Logical(Virtual) Memory Address라는 가상의 메모리 주소를 사용하고, 이 주소를 실제 RAM의 주소인 Physical Memory에 매핑시켜 사용한다고 했다. 프로그램의 일부만 Physical Memory에 로드되어도 구동할 수 있다면, Virtual Memory가 Physical Memory의 크기와 같을 필요가 없다. Virt..

OS - 6. Main Memory

메모리 기본 상식 Program Execution 프로그램은 하드 디스크에서 메모리에 로드되어야 CPU가 실행할 수 있다. 프로그램은 실행 전에 아래 절차를 거친다. 메모리에서 명령어 불러오기 명령어 해석 (Operand 불러오기) 명령어 실행 (메모리에 실행 결과 저장) Memory Access Speed CPU는 메모리와 레지스터만 직접 접근할 수 있다. 레지스터 접근은 1 CPU Clock Cycle 이내에 이루어진다. 메모리 접근은 몇 Cycle이 걸려, Stall을 일으킬 수 있다. Stall이 일어나면 CPU는 연산할 데이터가 없기 때문에 기다릴 수 밖에 없다. Stall을 줄이기 위해 CPU와 레지스터 사이에 Cache를 둔다. Memory Protection Hardware 프로세스는 메모..

OS - 5. Synchronization

Race Condition여러 프로세스가 공유하는 데이터에 동시에 접근하면 Data Inconsistency가 일어날 수 있다.공유된 변수 counter (= 5)가 있다고 하자.// P1{ ... counter++}// P2{ ... counter--}이렇게 두 프로세스가 동시에 count++과 count--를 실행하면P1은reg1 = counterreg1 = reg1 + 1counter = reg1을 실행하고, P2는reg1 = counterreg1 = reg1 - 1counter = reg1을 실행할 것이다.이 경우 counter는 5가 아니라 두 결과 중 나중에 적용된 4나 6일 것이다.이렇게 여러 프로세스가 공유된 데이터에 동시에 접근하..