[Database] 더블 버퍼링 (double buffering)
·
공부/Database
Program space : cpu가 사용 I/O space : 버퍼 관리자가 사용 디스크 속의 블록을 읽거나 쓰는 과정은 먼저 디스크에서 I/O space의 버퍼로 블록을 가져온다. 그리고 I/O space의 버퍼에 있는 것을 Program space로 가져와서 사용한다. 더블 버퍼링의 뜻은 버퍼가 두 개가 있다는 뜻이다. 더블 버퍼링을 사용할 경우 cpu가 I/O space의 한 버퍼를 사용중일 때 다른 버퍼는 디스크 안의 블록을 가져온다. 이런 식으로 교대로 동작하기 때문에 효율이 높아진다. pin-count : 현재 버퍼를 사용하고 있는 프로세서의 개수 dirty-bit : 비트의 업데이트 여부 버퍼 교체 전략 LRU(Least recently used) : 가장 최근에 잘 안 쓰인 것 MRU(M..
[Database] 디스크 안에 파일 레코드를 저장하는 방법
·
공부/Database
데이터는 파일 속에 레코드 형태로 보관이 된다. 이러한 레코드는 고정 길이 레코드 가변 길이 레코드 로 나뉜다. 고정 길이의 경우 길이가 고정되어 있기 때문에 원하는 정보를 얻기 쉬우나 가변 길이의 경우 구분자를 사용한다. 고정길이 가변길이 blocking factor (블록 당 레코드의 수) 블록의 크기가 512 Bytes이고 레코드의 크기가 100 Bytes라고 한다면 하나의 블록에는 5개의 레코드가 들어가고 12Bytes는 남게 된다. 즉 512/100에서 소수점을 버리면 이게 곧 blocking factor 이다. bfr(blocking factor) = B(블록 크기)/R(레코드 크기) 블록마다 남는 크기는 B - bfr * R 이다. 레코드들의 크기가 블록의 크기보다 커진다면 어떻게 할까? 두..
[Android/Kotlin] activity와 fragment에서 view binding 사용법
·
공부/Android Studio
view binding을 사용하면 view에 존재하는 값들에 접근할 수 있다. 이전에는 view에 존재하는 값들에 접근하기 위해서는 해당 ID를 사용해서 findViewById를 사용하였다. 이제는 view binding을 사용하면 쉽게 접근할 수 있다. 먼저 앱 수준의 build.gradle에 들어간다. 코드를 보면 android로 싸여있는 코드를 확인할 수 있다. 그 안에 다음과 같은 코드를 적으면 된다. viewBinding{ enabled=true } android에 들어있는 모습을 보면 아래와 같다. android { namespace 'com.example.practiceapplication' compileSdk 32 defaultConfig { applicationId "com.example..
[Database] 데이터 전송 연산 시간 계산
·
공부/Database
데이터 전송 연산 시간은 다음과 같이 계산된다. 탐구 시간 (seek time) : 헤드를 가지고 있는 암이 해당 실린더에 이동하는 시간 헤드 활동 개시 시간(head activation time) : 헤드가 활동을 시작하는 시간 회전 지연 시간(rotational latency) : 헤드가 트랙에서 해당 블록까지 가는 시간 전송 시간(transfer time) : 블록 안의 섹터 사이를 통과하는데 걸리는 시간 대랑 전송 (Bulk transfer) 대랑 전송은 문자 그대로 여러 블록을 전송한다는 뜻이다. 여기서 탐구 시간과 회전 지연 시간의 경우 첫 블록에 도달할 때만 시간이 걸리고 그 다음 연속된 블록에 도달할 때는 걸리는 시간이 0이다. 그렇기에 연속된 블록을 디스크에 배치시키는 것이 중요하다. 디..
[Database] 자기 디스크의 주소법
·
공부/Database
이전 포스팅에서 자기 디스크의 구조에 대해 포스팅 하였는데 이제 여기에 저장되는 데이터들의 주소법에 대해서 공부해보려 한다. 디스크 주소법은 다음과 같다. 디스크 주소법 random access한 특성을 가지며 바로 접근할 수 있다. 메인메모리와 디스크 사이의 transfer 단위가 블록을 이룬다. 여기서 하드웨어 주소는 실린더 번호, 트랙번호, 블록 번호로 이루어진 방식(실린더 주소법)과 0에서 n번까지 주소를 주고 상대적으로 접근하는 LBA(섹터 주소법) 방식이 있다. 디스크 주소법에 대한 설명에 앞서 하드웨어 주소에 대해서 알아야 한다. 1. 실린더 주소법 트랙의 특성상 가운데로 갈 수록 작아진다. 그럼에도 불구하고 모든 트랙의 용량은 일정하다. 가운데로 갈 수록 정보의 밀도가 높아지지 용량이 적어..
[Android Studio/Kotlin] fragment 사용법 1 (fragment 교체)
·
공부/Android Studio
프래그먼트를 활용하여 navigation bar를 만들어보려고 한다. 하단의 navigation bar의 메뉴를 선택하면 해당 메뉴로 fragment를 교체하는 방식이다. 먼저 레이아웃의 경우 위에는 프래그먼트가 들어가야하고 아래에는 navigation bar가 들어가도록 짜야한다. 메인 액티비티에서 linear layout (vertical)을 만들고 NavHostFragment를 검색하여 추가한다. NavHostFragment를 추가하면 다음과 같은 화면이 뜬다. +를 눌러서 원하는 이름을 입력하고 resource file을 추가해준다. 추가된 resource file을 선택하면 자동으로 필요한 라이브러리들을 추가해준다. 이제 navigation 디렉토리 안에 만든 xml 파일이 존재하는 모습을 확인..