Soft Ware 130

부동 소수점에 대해서 파헤쳐보았습니다 !!!

고정 소수점 보다 좀더 많은 소수를 나타 낼수 있는 장점이 있죠 !! 자 그럼 여기서 부동 소수점에 대해 알아 보겠습니다 ~~~ 부동 소수점은 부호 비트 , 지수부 , 가수부 로 나누워졌습니다 !!! float 형 같은 경우 부호 비트는 최상위 1비트인 31 번에 있는 비트가 부호 비트 입니다. 그리고 지수부는 음수와 양수를 나타내기 위해서 127이라는 바이너리라는것이 있습니다. 왜 있을까요? ㅡㅡ? 요건 위와 같이 음수를 나타내기 위한것입니다 . 8비트를 음수를 나타 내기 위해서 127 위의 값들은 양수가 되구요 127밑에 있는 숫자는 음수가 되겠죠 그럼 지수부를 어떻게 나타낼수 있는지 예제를 통해 알아보겠습니다. 음하하하하 오랜만에 블러그에 글을 올리니깐 기분이 좋네요 ^^ 자 2.14 와 -0.01..

#pragma 에 대해서 ^^ 어느분 블러그에서 가지고 왔습니다

#pragma는 Precompiler, 즉 전처리기로서 컴파일 하기 이전에 해당 명령을 처리해주는 명령어이다. #pragma once : 해당 소스가 한번만 포함되게 한다. → #ifndef와 같이 소스가 여러번 포함되는 것을 방지한다. #pragma pack : 구조체의 정렬방식을 지정한다. ##옵션 pack(n) : n으로 정렬 방식을 바꾼다. ex) #pragma pack(1) // 1byte 단위 정렬 사용 default : default 정렬 방식 사용. 4byte 단위 정렬 사용. pack(push, n) : n으로 정렬 방식을 바꾸고, 기존 정렬 방식은 스택에 저장한다. pop : 스택에 저장해두었던 정렬방식으로 되돌린다. #pragma comment(lib, "링크명.lib") : 해당 d..

캐시 인터페이스

캐시 관리자는 파일 시스템이 파일 데이터의 캐싱을 원할때 사용할수 있도록 복사 , 고정, MDL(Memory Descriptor List) 이 라는 세 가지 종류의 인터페이스를 제공 (1) 복사 인터페이스 1. 파일 시스템이 데이터에 대해 처음으로 발생하는 파일 액세스로 판단하면 파일 캐싱을 초기화한다. ↓ 2. 이때 캐시 관리자는 공유된 캐시 맵을 생성한다. ↓ 3. 파일 시스템은 캐시 관리자가 제공하는 복사 인터페이스인 CcCopyRead()함수를 호출 ↓ 4. CcCopyRead() 함수는 파일의 공유된 캐시 맵 구조체를 조사 ↓ 5. 캐시 관리자는 'Active'로 표시되지 않은 VACB(Virtual Address Control Blocks)를 찾으며 이를 'Active' 상태로 표시하고, 다른..

캐시 관리자

애플리케이션 --> 파일 시스템 드라이버 --> 캐시 --> 디스크 애플리케이션 --> 캐시 --> 파일 시스템 드라이버 --> 디스크 1. 논리적 블록 캐싱에서 운영체제는 I/O 동작이 발생하는 섹터와 관련된 메모리가 디스크의 동작을 요구하는 것보다는 디스크 I/O 요청을 만족시키기 위하여 메모리로 섹터에 있는 데이터를 캐시한다. --> 즉 여기서 중요한것은 메모리로 섹터에 있는 데이터를 캐시한다게 중요하다. 2. 가상 블록 캐싱은 디스크 레벨 보다 파일 시스템 레벨에서 데이터를 캐시한다. 3. 애플리케이션이 파일에 저장된 데이터를 액세스할 때, 파일 시스템은 데이터가 캐시에 있는지 검사 3-1. 디스크 I/O 요청을 발생 시킨다. 3-2. 파일 시스템은 캐시에 있는 데이터에 대해서만 단순히 동작 4...

유저 모드에서 windbg 로 디버깅

우선 디버거과 디버기의 차이점부터 설명하겠습니다. 디버기는 디버깅을 당하는 입장인 프로그램이구요 디버거는 디버깅을 하는 도구를 의미합니다 실행하고자하는 파일을 선택할때 ---> Open Executable에서 exe 파일을 선택 심볼 파일 설정하는 방법 ----> 메뉴에서 File을 선택 symbolFilePath 에서 SRV*저장경로*http://msdl.microsoft.com/download/wymbols 기입 여기서 심볼파일이 필요한 이유 : 심볼파일을 통해서 디버깅하는 소스 라인 디버깅이 가능하기 때문이다. 실행되어지고 있는 파일을 디버깅할때 ---> Attach to a process 실행 중지 하는 방법 ---> ctrl+breake 실행 시키는 방법 ----> g 입력 / f5 ------..

퀵정렬 이해 및 소스

퀵정렬은 정렬 중 제일 빠르다고 다들 알고 있을 것이다 . 그럼 퀵정렬를 이해부터 하고 소스에 대해 말씀드리겠습니다. 퀵정렬은 피봇이라는 기준점을 두고 왼쪽에서 오른쪽으로 증가하는 방향 과 오른쪽에서 왼쪽으로 가는 감소하는 방향으로 나눈다 . 왼쪽에서 오른쪽으로 가는 방향은 피봇보다 무조건 작아야 된다 . 만약 피봇보다 같거나 크면 증가하는것을 멈춘다. 오른쪽에서 왼쪽으로 가는 방향은 피봇보다 무조건 커야된다. 위와 비슷하게 피봇보다 작거나 같으면 감소를 멈춘다. 이 멈춘곳에 화살표가 있다고 가정해 보자 그럼 두개의 화살표가 존재 할것이다. 서로 멈춘 두개의 화살표가 가지고 있는 데이터를 SWAP을 한다. 그리고 다시 화살표들은 증가 및 감소를 하는데 여기서 오른쪽 에서 왼쪽으로 가는 화살표가 왼쪽에서 ..