Our Honorable Finance Minister Mr. Arun Jaitley present union budget 2017 Lok Sabha on Ist February 2017.He Focus in his speech on farmers growth, youth growth and MSME sector of our Country and effect of demonetization on GDP and Growth of country .
The Main Headlines are following:
1. Corporate Tax decreases upto 25% from 30% for all Indian Company having Turnover upto 50 crores.
2. Changing Slab Rate
Individual fall in category of 250000 to 500000 has pay only 5% Tax on their income instead of 10% tax on taxable amount.
3 Threshold Limit under income tax increase 300000 instead of 250000.
4. No major changes in Indirect Tax because of GST. GST will be Implement near future.
5. First time in History union Budget come up with Railway Budgets.
Union Budget Include Railways Budgets.
Extreme Personas – Innovate through User ExperiencePavel Dabrytski
I was given a tour at a client’s office. My eyes caught beautifully drawn user profiles hanging on the wall next to one of the software teams. “What are those?” I asked my guide, the development manager. “Don’t worry about it, Pavel. It is some marketing crap,” he replied – that team apparently didn’t use them. We learned that personas are an important technique to get your teams to think of the end users, but that team found them boring and impractical. As in many other organizations, the user profiles were generic pseudo-people no one cared about. What if instead of having a boring 'Senior Citizen' persona we talked about Jacob Zuma, and instead of a ‘Young Mom' we imagined Kim Kardashian? Extreme personas help us innovate and give us a new thinking angle.
Our Honorable Finance Minister Mr. Arun Jaitley present union budget 2017 Lok Sabha on Ist February 2017.He Focus in his speech on farmers growth, youth growth and MSME sector of our Country and effect of demonetization on GDP and Growth of country .
The Main Headlines are following:
1. Corporate Tax decreases upto 25% from 30% for all Indian Company having Turnover upto 50 crores.
2. Changing Slab Rate
Individual fall in category of 250000 to 500000 has pay only 5% Tax on their income instead of 10% tax on taxable amount.
3 Threshold Limit under income tax increase 300000 instead of 250000.
4. No major changes in Indirect Tax because of GST. GST will be Implement near future.
5. First time in History union Budget come up with Railway Budgets.
Union Budget Include Railways Budgets.
Extreme Personas – Innovate through User ExperiencePavel Dabrytski
I was given a tour at a client’s office. My eyes caught beautifully drawn user profiles hanging on the wall next to one of the software teams. “What are those?” I asked my guide, the development manager. “Don’t worry about it, Pavel. It is some marketing crap,” he replied – that team apparently didn’t use them. We learned that personas are an important technique to get your teams to think of the end users, but that team found them boring and impractical. As in many other organizations, the user profiles were generic pseudo-people no one cared about. What if instead of having a boring 'Senior Citizen' persona we talked about Jacob Zuma, and instead of a ‘Young Mom' we imagined Kim Kardashian? Extreme personas help us innovate and give us a new thinking angle.
2. 메모리 맵 파일이란?
가상 메모리처럼 주소 공간을 예약
예약된 영역에 물리적 저장소를 커밋
가상 메모리와의 차이점
시스템 페이징 파일 대신 디스크 상에 존재하는 파일을 물
리적 저장소로 사용
3. 메모리 맵 파일의 사용 목적
Exe 나 DLL 파일을 실행
디스크에 있는 데이터에 접근
동일 머신 상의 다수의 프로세스간 데이터 공유
4. 메모리 맵의 장점
http://msdn.microsoft.com/en-
us/library/ms810613.aspx
프로세스가 파일 데이터를 메모리로서 바라보기 때문에 시스템 콜을 할 필요가 없음
큰 파일을 다룰 시 필요한 부분만을 실제 메모리에 올려놓으므로 많은 양의 메모리를 소
비하지 않아도 됨
5. 실행 & DLL 파일과 메모리 맵
CreateProcess 절차
CreateProcess 함수의 매개변수로 전달된 EXE 파일 검색
새로운 프로세스 커널 오브젝트 생성
새 프로세스를 위한 전용 주소공간 할당
EXE 파일을 수용할 수 있을 정도의 충분한 영역을 주소 공
간 내에 예약
예약된 영역에 사용할 물리적 저장소로 EXE 파일 자체를
지정 (페이징 파일 X)
6. EXE 파일 내에서 사용되는 DLL 로드 절차
DLL 파일을 위한 충분한 영역을 주소 공간 내에 예약
DLL이 선호하는 시작 주소에 이미 다른 DLL이나 EXE 파
일이 로드되어 있다면 다른 영역을 찾음
재배치 관련 정보가 없다면 Fail
재배치 작업을 위해선 시스템 페이징 파일에 추가적인 저장소를
필요로 하게 되고, 더 많은 시간을 소모하게 됨
예약된 영역에 매핑할 물리적 저장소로 디스크 상의 DLL
파일 자체를 지정 (재배치 시에는 페이징 파일에 매핑)
7. 매핑 작업 완료 이후…
시스템이 페이징, 버퍼링, 캐싱과 관련된 모든 작업을
직접 관리
아직 로드되지 않은 주소 공간으로 점프를 수행하면 폴트
발생
시스템이 폴트를 인지하고 자동으로 파일 이미지를 램의
페이지로 로드
해당 램 페이지를 적절한 프로세스 주소 공간에 매핑
이후 스레드 수행 재개
10. 여러 인스턴스 사이의 정적 데이터 공유
모든 EXE와 DLL의 인스턴스는 섹션들의 집합이다
.text : .exe나 DLL 코드 (execute / read)
.data : 초기화된 데이터 (read / write)
.bss : 초기화되지 않은 데이터
.debug : 디버깅 정보
…
섹션 특성
READ / WRITE / EXECUTE / SHARED(카피 온 라이트
X)
11. 사용자 정의 섹션
#pragma data_seg(“SectionName”)
Ex)
#pragma data_seg(“Shared”)
LONG g_lInstanceCount = 0;
LONG g_lInstanceCount2;
__declspec(allocate(“Shared”)) ind d;
#pragma data_seg()
- 기본적으로는 초기화된 변수만 섹션 내에 추가됨
- 링크 단계에서 링커 스위치를 이용하여 특정 섹션을 공유시킬 수 있음
/SECTION:name, attributes (EX : /SECTION:Shared, RWS)
12. 임의 공유 섹션의 문제점
잠재적으로 보안에 취약
다른 프로그램이 DLL을 로드하는 것을 막을 수 없음
특정 애플리케이션에서 발생한 에러가 다른 애플리케이션
에 직접적인 영향을 줄 수 있음
13. 공유 섹션 예제
#pragma data_seg(“Shared”)
Volatile LONG g_lApplicationInstances = 0;
#pragma data_seg()
// 코드 내에 링커 스위치를 포함시키는 방법
#pragma comment(linker,
“/Section:Shared,RWS”)
InterlockedExchangeAdd(&g_lApplicationInstances, 1); // 프로그램 진입 시
InterlockedExchangeAdd(&g_lApplicationInstances, -1); // 프로그램 종료
시
14. 메모리 맵 데이터 파일
파일의 내용을 바이트 단위로 뒤집는 4가지 방법
한 개의 파일, 한 개의 버퍼
파일 크기 만큼의 메모리 공간 필요
파일 저장 시 수행이 중단 되면 기존 파일 내용 손상
두 개의 파일, 한 개의 버퍼
기존 파일을 열고, 동시에 새로운 파일을 생성
작은 버퍼를 할당하여 기존 파일의 끝에서부터 특정 바이트만큼
읽어서 뒤집은 후 새로운 파일에 저장
이러한 작업을 기존 파일의 시작에 다다를 때까지 반복
단점 : 기존 파일 만큼의 디스크 공간이 추가로 필요, 작업 수행
속도 저하(파일 포인터 이동/읽기/뒤집기/쓰기)
15. 한 개의 파일, 두 개의 버퍼
두 개의 작은 버퍼를 할당하고 하나는 앞, 다른 하나는 뒤에서부터
차례로 특정 바이트 만큼 읽어들인다.
앞의 내용을 저장한 버퍼의 데이터를 뒤쪽에 덮어쓰고, 뒤의 내용을
저장한 버퍼의 데이터는 앞쪽에 덮어쓴다.
한 개의 파일, 버퍼 X
메모리 맵 파일을 이용하여 파일을 열고 가상 주소 공간 상에 영역
을 예약
파일의 첫번째 바이트와 예약된 영역의 첫번째 위치를 매핑
C 런타임 라이브러리의 _tcsrev 함수 호출
단점 : 갑작스럽게 중단될 시 데이터 소실 가능성이 있음
16. 메모리 맵 파일 사용하기
사용 시
메모리 맵 파일을 사용할 디스크 상의 파일을 나타내는 파
일 커널 오브젝트 생성
파일의 크기와 접근 방식을 고려하여 파일 매핑 커널 오브
젝트 생성
프로세스의 주소 공간 상에 파일 매핑 오브젝트의 전체나
일부를 매핑
해제 시
프로세스의 주소 공간으로부터 파일 매핑 오브젝트 매핑
해제
파일 매핑 커널 오브젝트를 닫음
파일 커널 오브젝트를 닫음
17. 파일 커널 오브젝트 생성
CreateFile 사용
391쪽 “CreateFile에 대한 세부사항 검토” 참조
GENERIC_READ
GENERIC_READ | GENERIC_WRITE
시스템에게 파일 매핑을 수행할 파일의 물리적 저장
소의 위치를 알려줌
18. 파일 매핑 오브젝트 생성
CreateFileMapping 사용
파일의 핸들
페이지 보호특성
PAGE_READONLY / PAGE_READWRITE /
PAGE_WRITECOPY / PAGE_EXECUTE_READ /
PAGE_EXECUTE_READWRITE
섹션 특성
SEC_NOCACHE | SEC_IMAGE | SEC_RESERVE |
SEC_COMMIT | SEC_LARGE_PAGES
파일 크기
파일 사이즈(최대 16EB)
파일 매핑 오브젝트명
다른 프로세스에서 공유 가능(3장 커널 오브젝트 참고)
19. 파일 데이터를 프로세스의 주소 공간에 매핑
MapViewOfFile 사용
파일 매핑 오브젝트의 핸들
접근 권한
FILE_MAP_WRITE / FILE_MAP_READ /
FILE_MAP_ALL_ACCESS / FILE_MAP_COPY /
FILE_MAP_EXECUTE
오프셋(시스템 할당단위의 배수, Windows는 64kb)
매핑할 데이터의 양
* FILE_MAP_COPY 플래그 사용 시 시스템 페이징 파일로
부터 물리적 저장소를 커밋하고, 뷰의 내용에 대한 수정 시
도 시 copy-on-write 기능 수행
20. 프로세스의 주소 공간으로부터 파일 데이터에 대
한 매핑 해제
UnmapviewOfFile 사용
파일 매핑 오브젝트의 핸들
* 파일 데이터의 페이지를 버퍼링하기 때문에 매핑된 뷰
의 내용을 변경 시 즉각 파일에 반영되지는 않음
- FlushViewOfFile 함수를 사용하여 강제 저장 가능
(p.624 참조 – 리모트 서버 저장소 관련 문제,
FILE_MAP_COPY 플래그 처리)
22. 메모리 맵 파일을 이용하여 큰 파일 처리
16EB 파일 전체를 주소 공간에 매핑하는 것은 불가능
파일 데이터의 일부분을 나타내는 뷰를 주소 공간에
매핑 -> 해제 -> 다음 부분 매핑하는 방식으로 처리 가
능
23. 메모리 맵 파일과 일관성
단일 파일 매핑 오브젝트에 여러 개의 뷰를 이용하여
매핑하는 경우 파일 데이터에 대한 일관성이 유지됨
서로 다른 프로세스에서 동일 파일 매핑 오브젝트를 이용
하여 뷰를 매핑하였을 경우 데이터 공유 가능
단일 데이터에 대한 여러 개의 파일 매핑 오브젝트를
생성한 경우에는 일관성 유지 X
24. 메모리 맵 파일의 시작 주소 지정하기
MapViewOfFileEx 사용
마지막 인자로 pvBaseAddress(파일을 매핑하고자 하
는 메모리의 시작 주소)를 전달하는 것을 제외하면
MapViewOfFile과 동일
EX) 메모리 맵 파일에 링크드 리스트를 구성하고, 이
를 다른 프로세스와 공유하는 경우
25. 페이징 파일을 이용하는 메모리 맵 파일
CreateFileMapping 함수에서 첫번째 인자로
INVALID_HANDLE_VALUE를 전달
페이징 파일 내에 메모리 맵 파일 생성
주의)
HANDLE hFile = CreateFile(…):
HANDLE hMap = CreateFileMapping(hFile, …);
- hFile이 NULL일 경우 의도하지 않은 결과를 초래