본문 바로가기

전체 글115

[파일처리] Ch9 Multilevel Indexing and B-Trees Binary Search Trees장점1) 데이터가 물리적으로 정렬되지 않는다2) 트리가 balanced 상태일 때 성능이 좋다3) 삽입비용과 검색비용이 같다 단점1) 트리가 unbalanced 상태일 때는 더 많은 탐색이 필요하다 예를 들어 아래와 같이 정렬된 key들이 있다고 가정하자AX, CL, DE, FB, FT, HN, JD, KF, NR, PA, RF, SD, TK, WS, YJ 그럼 balanced 이진 탐색 트리는 아래와 같을 것이다. 그러나, 이진 탐색 트리가 비대칭적으로 형성된다면 아래와 같이 탐색 효율은 급격히 감소하는 것을 볼 수 있다. Paged Binary Tree  이진 트리를 페이지로 나눈 다음 각 페이지를 디스크의 연속 위치 블록에 저장하는 이진 트리를 칭한다.위와 같은 p.. 2024. 6. 5.
[파일처리] Ch7 Indexing Index우선 아래의 그림은 기본 인덱스 구조이다. 데이터 파일은 입력 순서에 따라 기록이 파일에 입력되는 순서에 따라 발생하는 것을 의미한다. 인덱스 파일은 고정 길이 레코드로 구성되며 데이터 파일보다 훨씬 작다. 그러나 이런 구조는 다음과 같은 문제를 야기한다. 단점1) 인덱스를 이진 탐색하려면 여러 디스크 검색이 필요하지만 성능이 좋지 않다.2) 레코드 추가 또는 삭제로 인한 인덱스 재배치는 secondary storage의 레코드를 이동하거나 정렬해야 하므로 비용이 많이 든다.  이런 문제를 해결하기 위한 방법으로 인덱스의 계층 구조를 형성하는 것이 있다. 이때 secondary key는 primary key와 다르게 중복을 허용한다.결합 중인 목록이 정렬된 순서대로 있으면 일치가 훨씬 쉬워진다... 2024. 6. 5.
[프로그래밍언어] Ch 10 Implementing Subprograms subprogram 반환값의 의미Out  mode 및 Inout mode 매개변수는 해당 값이 반환되어야 한다.stack-dynamic local variables의 할당 해제실행 상태 복훤caller에게 제어권 반환  Implementing “Simple” Subprograms1) Call Semanticscaller의 실행 상태 저장매개변수 전달 return address를 caller에게 전달called에게 제어권 이전2) Return Semantics만약 pass-by-value-result 또는 out mode parameters가 사용되는 경우, 해당 파라미터의 현재 값을 해당하는 실제 파라미터로 이동한다. 함수인 경우 함수 값을 caller가 얻을 수 있는 곳으로 이동한다.caller의 실행.. 2024. 6. 1.
[프로그래밍언어] Ch9 Subprograms Subprograms각 subprogram에는 단일 진입점(single entry point)이 있다.subprogram 이 호출되면 호출 프로그램은 중단(suspended)된다.호출된 subprogram 의 실행이 종료되면 항상 호출자에게 제어권이 반환된다. ☑️ 매개변수 대응 1. positional binding: 실제 매개변수와 형식 매개변수의 바인딩은 위치에 따라 결정됨을 의미한다. ABC (x , y)ABC (int a, int b)위의 코드를 예시로 들자면 x는 a로 가고, y는 b로 감을 의미한다.C, C++, Java, Python 모두 지원 가능하다. 특징으로는 안전하고 효과적이라는 것이다. 2. keyword binding: 실제 매개변수를 바인딩할 형식 매개변수의 이름이 실제 매개변.. 2024. 5. 31.
[지능형시스템] Neural Networks (3) Generative Models(생성 모델) : GAN, VAE 주어진 학습 데이터를 학습하여 데이터의 분포를 따르는 유사한 데이터를 생성하는 모델을 의미한다. GAN 직접적인 분포를 구하지 않고 그러한 분포를 따르는 샘플링을 그럴듯하게 수행하는 모델이다. 데이터를 생성하는 generator와 데이터를 구별하는 discriminator로 이루어져있다. generator: random noise에서 이미지를 생성한다. 생성된 이미지와 실제 이미지는 무작위로 판별기에 입력된다. discriminator: 수신된 이미지가 진짜인지 가짜인지 판별한다. 판별 후, 어떤 것이 맞느냐에 따라 학습의 방향이 결정된다. VAE 학습 데이터의 분포에 근사하는 분포를 구하는 모델이다. autoencoder를 기반으로 한다... 2024. 4. 21.
[지능형시스템] Neural Networks (2) Deep Neural Network and Deep Learning 아키텍처 : FNN, CNN, RNN, GAN 등 고급 모델 : Attention, Transformer, AutoEncoder 등 기본적인 딥러닝 방법 : Gradient Descent(경사 하강법), Back Propagation(역전파 방법) Gradient Descent (경사 하강법) 1차 근삿값 발견용 최적화 알고리즘으로써, 이 부분의 기본 개념은 함수의 기울기를 구하고 해당 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것을 말한다. 위 그림에서 가장 가운데에 있는 지점이 에러가 최소가 되는 지점이다. 밖으로 나갈수록 에러가 커진다. Back Propagation (역전파 방법) 출력층에서 입력층 방향으로.. 2024. 4. 21.
[지능형시스템] Neural Networks (1) Nerual Networks 현대 AI의 핵심: Deep Learning Acronym : NN. CNN, RNN 등 Neuron : 신경계를 구성하는 세포 Regression (회귀) 머신러닝 회귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀 계수를 찾아내는 것이다. Linear Regression(선형 회귀): 주어진 데이터 포인트x에 해당하는 실제 값으로 주어진 타켓 y를 예측하는 것이다. Multiple Regression(다중 선형 회귀 분석): 단순 회귀 분석에서 독립변수가 n개만큼 추가되는 분석이다. vector data (X,Y)를 통해 회귀모형 Y = BX를 설정할 수 있다. LMS (Leat Mean Square) regression에서 각 데이터들과 .. 2024. 4. 21.
[프로그래밍언어] Ch6 Concepts of Programming Languages C언어의 자료형 참고로 모든 배열은 구조체로 변환이 가능하다. 단, 구조체는 배열로 변환이 불가능하다. Java의 자료형 Java는 크게 기본 타입과 레퍼런스 타입으로 나뉘는 것을 볼 수 있다. Dangling Pointer Problem Dangling pointer 문제란 이미 해제된 메모리를 가리키는 포인터를 의미한다. 이를 해결하기 위한 방법으로는 포인터를 NULL로 설정하는 것이 있다. 이렇게 하면 포인터가 더 이상 유효하지 않은 메모리 주소를 가리키지 않게 될 것이다. Array Type Static Array(정적 배열): 정적 배열은 컴파일 시간에 그 크기가 결정되며, 프로그램의 실행 동안 크기가 변경되지 않는다. Subscript binding(인덱스 결정)과 Storage binding.. 2024. 4. 16.
[파일처리] NAND Flash Memory Overview NAND Flash Memory 구조 소블록 플래시 메모리 각 블록은 32개의 페이지로 구성 각 페이지는 (512 + 16) byte로 구성 대블록 플래시 메모리 각 블록은 64개의 페이지로 구성 각 페이지는 (2048 + 64) byte로 구성 특징 seek와 rotation 시간이 없다. 즉, 플래시메모리가 하드디스크보다 빠른 것이다. 그래서 플래시메모리는 어느 곳에 접근하든지 똑같은 비용이 발생한다. Asymmetric read/write write cost가 read 보다 10배 비싸다 no in-place update(덮어쓰기) 한 번 바뀌면 다시 write를 하지 못한다. 즉, 데이터가 차있으면 다시 overwrite를 하지 못한다는 특징을 가지고 있다. 그래서 이를 해결하기 위해 빈 페이지로.. 2024. 4. 16.
[파일처리] Ch3 Secondary Storage and System Software 위의 사진은 위에서 바라본 원반(platter)의 모습이다. 원반은 트랙(track)으로 구성되고, 트랙은 섹터로(sector)로 구성된다. 섹터의 크기는 512byte로 정해지며 가장 작은 단위이다. 섹터로 레코드를 구성하는 방법은 두 가지가 있다. 섹터당 하나의 레코드만 저장 (시간 효율성을 위해) 레코드를 섹터에 걸쳐 허용 (스토리지 효율성을 위해) 이번엔 입체적인 모습의 원반인데, 7개의 실린더(Cylinder)가 있는 것을 확인할 수 있다. 실린더란, 섹터보다 큰 단위로 전체 원반에서 같은 트랙의 부분을 의미한다. 다른 용어들도 같이 정리하자면 클러스터(Cluster) 일정한 수의 연속된 섹터를 의미한다. 파일에 할당할 수 있는 최소 공간 단위이다. 더 큰 클러스터는 검색하지 않고도 더 많은 섹.. 2024. 4. 16.
[파일처리] Ch2 Fundamental File Processing Operations Physical File 저장소에 실제로 존재하는 파일 OS에서 관리하는 파일 디렉토리에 있는 파일 Logical File 프로그램에서 볼 수 있는 파일 프로그램이 어떤 물리적 파일을 사용할지 모르는 상태에서 파일에서 수행할 작업을 허용한다.즉, 자신이 행하는 연산이 정확히 디스크의 어떤 위치에 적용되는지 알 필요가 없다 Opening Files 응용프로그램에서 물리적 파일에 접근하기 위해 논리적 파일을 생성해하는 과정이다. 파일을 여는 작업 파일이 존재하지 않으면 파일 생성 후, 파일을 연결한다. 파일 열기의 예시이다. fd = open(filename, flags [, pmode]); Closing Files 논리적 파일 이름 또는 파일 설명을 다른 파일과 함께 사용할 수 있도록 한다. 모든 것이 파.. 2024. 4. 16.
[프로그래밍언어] Ch5 Names, Bindings, and Scopes Variables 변수는 memory cell의 추상화이다. 다음과 같은 속성으로 특징지을 수 있다. Name, Address, Value, Type, Lifetime, Scope 1. Name - 가독성에 도움이 된다. - 키워드는 특정 컨텍스트에서만 특수한 단어이다. 2. Address - 변수는 실행 중 다른 시간에 다른 주소를 가질 수 있다. - 두 개의 변수 이름을 사용하여 동일한 메모리 위치에 액세스할 수 있는 경우 별칭이라고 한다. - Aliases는 포인터, 참조 변수, C 및 C++ 결합을 통해 생성된다. - Aliases는 가독성이 좋지 않다.(프로그램 판독기는 별칭을 모두 기억해야 함) 3. Value - 변수가 연관된 위치의 내용 4. Type - 변수 값의 범위와 해당 유형의 값에.. 2024. 4. 14.