본문 바로가기

분류 전체보기

(12)
윈도우에서 하드디스크 접근 분석하는 방법 먼저 windows adk 프로그램을 설치한다. https://support.microsoft.com/ko-kr/help/4027209/oems-adk-download-for-windows-10 https://support.microsoft.com/ko-kr/help/4027209/oems-adk-download-for-windows-10 쿠키가 사용되고 있지 않습니다. 쿠키를 사용하고 페이지를 새로 고치세요. support.microsoft.com 윈도우 시작 창에서, Windows Performance Recorder 실행 Start 버튼 클릭 이후 Save 버튼 누르고 Open in WPA 버튼 누르거나 저장된 파일을 더블클릭 Storage -> Disk Usage 의 IO Time by Proce..
SSD 전원 인가가 주기적으로 필요한 이유 SSD에 주기적으로 전원을 주어야 하나? 에 대한 질문이 많다. 아마도 서랍장에 오랜 기간 넣어둔 SSD가 부팅이 되지 않는다라는 글이 인터넷 상에 떠돌아다니니 그런 것 같다. 결론적으로 말하면, 해주는게 좋을 것 같다. SSD는 가격을 낮추기 위해, SLC -> MLC -> TLC -> QLC 제품군이 출시되고 있다. (용어정의참고: https://terms.naver.com/entry.nhn?docId=2422230&cid=51399&categoryId=51399) 즉, 셀당 비트 수가 많아지는 추세이다. 가격은 낮아진 것은 좋은 소식이지만 endurance 측면에서는 유리하지 않을 것이다. SSD 업체들은 이를 극복하기 위해 분명 다양한 FW 알고리즘들을 적용할 것이다. 인터넷 검색을 해보면, 동적..
현업에서 자주 겪었던 코딩 실수 - 배열 인덱스 관리 오류 현업에서 의외로 고생했던 문제들은 배열의 인덱스를 넘친 값을 사용하여 메모리를 훼손하는 경우였다. 메모리 훼손이 어떻게 되는지에 대한 간단한 예이다. 블로그 ARM 카테고리에서 사용한 실습 환경을 이용하였다. 먼저, 110~114라인의 코드를 추가한다. (사용하지 않으면 최적화되서 어셈블리어를 아예 만들지 않아서 몇가지 코드가 더 추가되었다) array 배열의 메모리 값이다. array는 10개의 int값을 저장할 수 있으니, 인덱스는 0~9 까지 사용할 수 있다. 훼손되는 것을 보기 위해 메모리 size 공간을 48로 증가시켰다. 어떤 값들이 이미 있는 것이 보인다. Disassembly 창에서 F5(step)으로 코드를 수행한다. 메모리를 보면, array배열의 다음 공간의 값이 훼손된 것을 볼 수 ..
SSD 모델 확인하는 법 윈도우키+Pause 키를 동시에 누른다. "장치 관리자"를 누른다. 윈도우 탐색기의 "내 PC"에서 우측 마우스버튼의 "관리"를 눌러도 된다. "장치관리자"에서 "디스크 드라이브"를 누른다. mzvlv128 로 구글에 검색하면, 모델명이 나온다. 찾아보니 PM951이 제품모델명이다. 벤치마크 성능도 검색이 된다. PCIe SSD라면 고유 ID로 찾는 방법도 있다. 하기 저장소 컨트롤러에서 속성을 누른다. "자세히" 탭에서 "하드웨어 ID"를 선택한다. "A802"로 구글에 검색한다. PCIe SSD 제품은 고유의 PCIe 장치 ID를 가진다. "144D"가 vendor ID로 Samsung을 의미하며 "A802"는 SM951/PM951 제품임을 찾을 수 있다.
SSD 상태나 수명 관련 정보 확인하는 법 윈도우에는 SSD 상태를 미리 진단하여 알려주는 기능은 없기 때문에 보통은 갑자기 부팅이 되지 않으면 재설치해보거나 재설치해도 동작하지 않으면 그때서야 SSD를 교체하는 경우가 많을 것이다. 이렇게 먹통이 되기 전에 SSD의 상태를 어느정도 미리 진단해 볼 수 있는데 그것은 SMART 정보를 이용하는 것이다. (단, 갑자기 불량이 다발하는 경우 등. 모든 불량을 예측할 수는 없는 한계는 있다) S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology, "자가 진단, 분석, 보고 기술", 간단히 SMART)는 컴퓨터 하드 디스크 드라이브의 신뢰성을 검사하여 잠재적인 실패 가능성을 진단, 보고하는 감시 체계이다. 하드 디스크 드라이브 - 위키백과, 우리 ..
ARM Register 동작이해 지난 글에 이어 ARM register 들이 어떻게 동작하는지 살펴본다. sorts.c 에 qs_string_compare 에 breakpoint를 잡는다. 이 함수는 a, b 인자를 가진다. 변수 창에 보면 파란색 값이 보인다. 이제 레지스터 탭을 가보자 R0에 a의 값이, R1이 b의 값이 있음을 알 수 있다. Disassembly 창을 보자 R0, R1을 활용하고 있다는 것을 알 수 있다. 어셈블리어 LDR r1, [r1, #0] 는 r1의 주소값의 offset 0의 값을 r1에 로드하라는 것이다. 로드 되는지 확인해보자. 메모리 탭에서 해당 주소의 값을 보면, 0x800D09E8의 주소의 0번째 offset 값은 0x800CFEC4 이다. 자 이 값이 R1에 로드되는지 F5(step)를 눌러 확인..
ARM Stack 동작 이해 지난 실습에 이어 ARM의 stack 동작을 살펴본다. sort.c 파일에서 qs_string_compare함수 진입 전 후에 breakpoint를 잡고 F8로 진행시킨다. Disassembly 창을 보면 push {r4,lr} : r4, lr을 stack에 저장 pop {r4,pc} : stack 포인터 위치에 저장된 값을 r4, pc 로 복원 함수 진입 전에 저장해야할 레지스터 값과 돌아올 PC 값을 stack에 저장한 뒤 함수 처리가 끝나면 복원하는 동작이다. 스택 동작을 직접 눈으로 보기위해서 SP 주소(0x800CFAE8, 가장 우측 창의 파란색 표시)를 메모리 창에 입력한다. 스택이 보는 방향에서 위로 자라나서 (낮은 주소 방향) 확인하기 쉽도록 0x800CFA00주소를 입력했다. F8을 눌러..
ARM Exception 디버깅 실습 지난 시간에 이어 ARM exception을 강제로 일으켜보고 디버깅해보겠다. 하기 회색 부분을 더블클릭하거나 아이콘을 누른다. sort.c 에 breapoint를 설정한다. 112라인에 더블클릭을 하였다. F8을 눌러 진행시키면 breakpoint 에 멈춘다. Disassembly 창을 보자 현재 프로그램이 수행될 위치, 즉 PC(Program counter)는 초록색 부분이다. 그 다음 수행할 명령어에 우측 마우스 버튼을 누르면 보이는 Show in Memory 버튼을 누른다. 해당 값을 0x77777777 로 바꾼다. 다시 Disassembly 탭을 클릭하면, 하기와 같이 ARM 이 인식하지 못하는 명령어(Undefined)라고 표시된다. F5(step)나 F8(go)를 눌러 수행시키면, 더이상 프..