C standard library에는 여러 함수가 존재한다.
게중에는 fopen, fwrite 와 같이 파일을 제어 할 수 있는 함수들 역시 존재한다.
여기서 알아 볼 것은 fopen이다.

fopen은 파일을 여는데 사용하는 함수이다.
fopen의 함수 원형은

FILE * fopen( const char * filename, const char * mode )

인데, 파일의 이름과 mode를 인자로 받는다. mode는 문자열로 되어 있으며 해당 함수에서 해당 문자를 parsing해서 원하는 mode로 설정하는 형태를 취하고 있다.
fopen은 실제 여러 옵션자가 존재하는데,
r, w, a 로 존재한다. ( 모드 설명은 아래 그림 참고 - 출처 : http://www.winapi.co.kr )

모드

설명

r

읽기 전용으로 파일을 연다.  모드로  파일은 읽을 수만 있으며 데이터를 기록하지는 못한다. 만약 파일이 없을 경우 에러가 리턴된다.

w

쓰기 위해 파일을 연다.  모드로  파일은 쓰기만 가능하며 읽지는 못한다. 도스나윈도우즈의 파일은 쓰기 전용 속성이 없지만 스트림은 쓰기 전용 상태로   있다.파일이 없으면 새로 만들고 이미 존재한다면 기존의 파일은 지워진다.

a

추가를 위해 파일을 연다. 추가란 파일의 끝에 다른 정보를   넣는다는 뜻이다. 모드로  파일은 오픈 직후에 FP 파일의 끝으로 이동한다. 파일이 없으면 새로 만든다.

r+

읽고 쓰기가 가능하도록 파일을 연다. 파일이 없을 경우 에러가 리턴된다.

w+

읽고 쓰기가 가능하도록 파일을 연다. 파일이 없을 경우 새로 만든다.

a+

읽기와 추가가 가능하도록 파일을 연다. 파일이 없으면 새로 만든다.



이런 옵션을 사용해서 우리가 원하는 파일의 입출력을 수정할 수 있다.


그렇다면 데이터 파일의 중간의 값을 변경하기 위해서는 어떤 옵션자를 주면 되는 것일까?


임시로 만든 파일에는 위와 같은 데이터가 있다. 여기서 0x02 번지의 값인 0x32 라는 데이터 값을 0x20 으로 변경하고 싶다. 이럴땐 어떤 파일 모드로 열어야 될까?
흔히하는 방법으로 write를 수행하기 위하여 w를 하거나 혹은 a 라는 모드를 사용한다. ( windows, linux에서 모두 binary로 처리한다는 가정하에)
만약 위와 같은 방법으로 데이터를 수정하려고 한다면 심각한 고민거리에 빠져들게 된다.

즉, w의 옵션자를 사용해서 해당 위치를 fseek 함수를 통해 파일 포인터를 이동시키게 된다면, 파일이 작성되는 순간부터 해당 데이터의 뒤에 저장된 데이터에 대한 안정성은 보장해 주지 못하게 된다.

직접 실험해 보면 알겠지만, 00 , 31, 32, 33, 34 라는 데이터 나열에서 32 라는 값을 변경하기 원하여 32에 64라는 데이터를 집어 넣는다고 가정할 때, 32의 지점으로 fseek으로 파일 포인터를 이동시켜 64라는 데이터를 집어 넣는다. 그렇게 된다면 파일내의 데이터는 00, 00, 64 로 뒤에 33, 34에 대한 데이터가 삭제됨은 물론 앞의 데이터 까지 버려지게 된다.

a라는 옵션을 줘서 모드를 바꾸게 된다면 어떻게 될까? 다시 위의 가정 대로, 00, 31, 32, 33, 34 라는 데이터가 존재한다. 마찬가지로 32 라는 데이터 값을 64로 바꾸고 싶다. fseek을 통해서 파일 포인터를 이동시킨후 64라는 값을 삽입한다. 이와 같은 경우는 00, 31, 32, 33, 34, 64 라는 값이 나온다. 즉 값이 파일에 추가되어 기록이 되는 것이다.

그렇다면 '+' 연산자를 사용하여 넣으면 어떻게 될까? 안타깝게도 w+ 는 기본 모태가 'w' 이므로 데이터 기록시 w와 별반 다를게 없이 된다.( 즉 앞의 데이터는 삭제되고, 뒤의 데이터 역시 날라간다. )
a+ 역시 마찬가지의 반응을 보였다.
rw 라는 옵션을 통해 read + write 가 되게 하면 않겠는가? 라고 물으시는 분들이 있을 것이다. 궁금하신 분들은 직접 실험을 해보면 될 것이다. 잘못된 접근으로 오류가 발생함을 알 수 있을 것이다.

그렇다면 마지막 남은 'r+'에 대해서 알아 보자.
옵션자의 모태는 Read이다. 즉 파일을 읽고 '+' 연산자(모드)에 의해서 기능이 추가되었다. 즉 읽어짐을 바탕으로 하면서 원한다면 데이터를 수정할 수 있는 것이다!


그렇다! 'r+' 옵션을 사용한다면 파일내의 어떠한 위치의 값이라도 수정이 가능한 것이다. 위의 빨간 네모에서 보는 것처럼 원하는 데이터 값이 바뀌었음을 알 수 있다.

보통, 그냥 파일을 수정하라고 하면 "rw" 나 혹은 "a"를 사용해서 파일을 수정하려고 한다.
물론 'r+'를 하던 'w'를 하던 보통 프로그래밍을 할 때 중요한 것은 아니다. 그냥, 안되면 메모리에 올려서 다시 생성하면 되기 때문이다. 주변에서도 이런 것에 대해 당연 이 되는 것으로 알고 있지 직접 해본 사람이 드물며 아울러 그렇게 하는 사람도 별로 없기 때문이다. ( 아는 것과 직접 해본 경험과의 차이는 크다. )


 
[지디넷코리아]경기불황으로 기업과 정부에서 가상화 도입을 적극 검토하고 있다. 그동안 가상화라고 하면 많은이들이 서버 통합을 생각했을 것이다. 그러나 2009년에는 많은 변화가 예상된다. 가상화는 서버는 물론 데스크톱, 스토리지, 네트워크에 이르기까지 IT 솔루션 전반에 걸쳐 확대 적용될 것으로 보인다.

2009년 가상화 시장을 주도할 트렌드 10가지를 꼽아보았다.

엔터프라이즈 데스크톱 가상화 확대
씬(thin) 클라이언트와 씩(thick) 클라이언트를 놓고 적합한 데스크톱을 고민하는 기업들이 많다. 씩 클라이언트는 많은 양의 데이터를 다루는 데는 효과적이다. 그러나 수 천대의 씩 클라이언트를 일일이 관리하는 것은 IT 관리자에게는 악몽과도 같다.

씬 클라이언트는 관리는 쉽지만 대용량 정보를 다루는데 한계가 있다. 유연성도 떨어진다. 이에 기업들은 어떤 방식의 데스크톱을 직원들에게 제공할지를 늘 고민하게 되는데, 이것이 바로 ‘데스크톱 딜레마’다.

2009년에 새롭게 등장할 데스크톱 가상화는 이같은 딜레마를 해결할 수 있는 최적의 솔루션이 될 것이다. 데스크톱 가상화는 시간과 장소, 디바이스 종류에 상관없이 사용자의 개인 데스크톱 환경을 구현하는 것은 물론 가상화된 클라이언트, 엔터프라이즈 애플리케이션 등의 관리 문제도 해결할 수 있는 형태로 진화하고 있다.

또 개인화된 가상 데스크톱을 통해 씩 또는 씬 클라이언트 여부에 관계없이 많은 양의 정보를 원활하게 전달하고 보안은 더욱 강화되는 방향으로 발전할 것이다. 이를 통해 가상화는 데스크톱 딜레마를 해결하고, 급격히 확산되는 모바일 환경도 끌어안으면서 데스크톱 관리를 위한 필수 플랫폼으로 자리잡을 것이다.

스토리지 가상화의 급증
가상 데이터센터에서 스토리지는 매우 중요한 구성요소로 자리잡았다. 스토리지 가상화는 2009년에도 더욱 확대 발전할 것으로 전망된다. 진보된 가상 스토리지는 가상 데이터센터를 보다 유연하고, 빠르며, 탄력적이고, 효율적으로 만들 것이다.

새로운 가상 스토리지 솔루션은 가상화 플랫폼과 스토리지 인프라스트럭처의 무인관제도 가능하게 할 것이다. 이에 따라 스토리지 운영은 더욱 간소화되고 스토리지 인프라스트럭처에 대한 효율적인 사용은 극대화 될 것이다.

하이엔드 애플리케이션 가상화의 활성화
하드웨어와 소프트웨어가 발전함에 따라 가상화 활용은 점점 증가할 것이다. 그 동안 많은 기업들이 가상화 기술을 적용해왔지만 이를 뒷받침할 수 있는 관련 분야 개발이 동반되지 못해 금융권의 재무, 회계 등 핵심 업무에 가상화 기술을 도입하는데는 한계가 따랐다.

그러나 관련 기술 발달과 가상화 솔루션에 대한 기술력이 검증되면서 앞으로는 가상화는 앞서 언급한 핵심분야는 물론 하이엔드 애플리케이션에까지 도입될 것으로 보인다.

예를 들어 그동안 가상화 관리소프트웨어는 메모리나 I/O 등의 자원을 관리하기 때문에 성능 부하가 클 수 밖에 없었다. 이러한 문제를 해결하기 위해 인텔 EPT(Extended Page Tables)와 AMD RVI(Rapid Virtualization Indexing) 등 가상화 환경에서 메모리 속도를 향상시킬 수 있는 기술이 개발됐다.

또한 프리-패키지(Pre-packaged) 가상 머신과 같이 보다 많은 애플리케이션이 포함된 가상 머신과 ISV(Independent Software Vendors)에 의한 가상화 라이선싱 및 지원 정책이 증가하면서 모든 애플리케이션들이 가상화 트렌드에 편승할 것으로 예상된다.

다수의 데이터센터를 아우르는 가상화
다국적 기업들은 전세계에 걸쳐 있는 다수 데이터센터를 관리하기 위해 가상화 플랫폼을 활용할 것이다. 예를 들어, 한 회사가 클라우드 컴퓨팅 환경을 갖춘 차세대 데이터센터를 구축했다면 가상화 플랫폼을 통해 이 데이터센터 환경을 미국, 일본, 한국, 이탈리아 지사 등 전 세계에 흩어져 있는 다른 곳에서 활용이 가능하다.

이러한 형태의 데이터센터들간 협업은 앞으로 더욱 일반화 될 것이다. 재해복구가 필요할 경우 워크로드를 다른 지역의 데이터센터로 즉시 마이그레이션시켜 신속히 문제를 해결할 수 있다.

완전한 가상화 기반 네트워크 환경 가능
지난 9월 VM웨어와 시스코는 가상화 환경에서 한층 강화된 확장성과 제어 기능을 보장한 데이터센터 구축을 위해 공동으로 데이터센터 솔루션 개발에 나섰다. 이를 통해 시스코 서버 가상화 지원 소프트웨어 스위치인 ‘시스코 넥서스 1000v’가 내년 상반기부터 VM웨어 인프라스트럭처에 통합, 옵션으로 제공된다.

이렇게 될 경우 고객들은 시스코 하드웨어 스위치 제품에서 제공하던 강력한 가상 네트워킹 기능을 VM웨어 가상화 환경에도 접목, 보다 안전하고 안정적인 가상화 혜택을 누릴 수 있을 것이다.

또 VM웨어 VDI(VMware Virtual Desktop Infrastructure) 솔루션과 시스코 AND(Application Delivery Networking) 솔루션을 통합함으로써 지사 등의 원거리 사무 환경에서 데스크톱 가상화 성능의 대폭적인 향상도 기대할 수 있을 것으로 예상된다.

스마트폰의 가상화 실현
가상화가 모바일 플랫폼까지 확대 적용될 전망이다. 기존에는 하나의 휴대폰으로 업무용과 개인용을 분리해 사용하고자 할 경우에는 휴대폰 안에 두개의 칩셋을 내장해야만 했다. 하나는 지정 번호 등 사용자가 직접 설정을 변경할 수 있게 하는 것과 사용자가 건드려서는 안될 것들, 예를 들어 휴대폰 주파수 및 전원을 통제하는 소프트웨어 등과 같은 부분들만 모아놓은 것이 별도로 장착돼 있어야 했다.

칩셋이 하나 더 늘어날 경우 가격이 올라가는 것은 물론, 휴대폰 전력 소모량도 크게 증가한다. 그러나 휴대폰에 가상화 기술을 적용할 경우 두개 운영체제를 동시에 운영, 하나는 시스템 관리 소프트웨어를 운영하는데 사용하고, 나머지 하나는 사용자들이 소프트웨어를 관리하는데 이용할 수 있다.

즉 가상화는 어떠한 하드웨어에도 구애받지 않고, 다양한 휴대폰에 걸쳐 동일한 소프트웨어 스택을 제공할 수 있도록 해준다. 이를 통해 휴대폰 업체들은 훨씬 풍부한 기능을 갖춘 애플리케이션 개발에 박차를 가할 수 있고, 일반 사용자들은 업무용과 개인용 등 휴대폰 한대에 다수의 프로파일을 가질 수 있다.

다시 말해 사용자들은 더 이상 통신업체와 휴대폰의 특성에 맞춰 자신을 적응시킬 필요가 없어졌음을 의미한다.

보안에 초점을 둔 가상화 기술 확산
지난 9월 라스베이거스에서 있었던 세계 최대 가상화 축제인 VM월드에서 맥아피, 시만텍, 트렌드마이크로 등 세계적인 보안회사들은 가상화를 중심으로 한 새로운 보안 솔루션을 발표한 바 있다. 전통적인 방화벽은 물론 IDS(Intrusion Detection System), 바이러스 탐지 프로그램 등이 가상 머신에서도 제공되고 있다.

또한 더 많은 고객들이 하이퍼바이저가 탑재된 환경에서 TPM(Trusted Platform Modules)을 사용하면서 가상화의 높은 보안성을 증명하고 있다.

가상 데이터센터 관리 툴의 증가
현재, 대부분의 제품들이 다양한 가상화 관리 옵션을 포함한 관리 툴을 제공하고 있다. 이러한 제품들은 쉽게 변형이 가능하고 이동이 용이하며 조종이 쉬운 하드웨어 독립적인 가상머신 컨테이너와 결합되었다. 또한 자동화된 IT 프로세스를 통해 일반적인 데이터센터보다 가상 데이터센터 운영 생산성을 2~3배 정도 더 높인다.

그린 데이터센터로 인한 가상화 수요 급증
전력사용과 쿨링은 데이터센터와 관련해 언제나 최고의 이슈가 되어 왔다. 가상화를 통한 서버 통합은 전력 사용을 줄이는 최고의 솔루션 중 하나다.

많은 VM웨어 고객들은 한 서버당 평균 15개의 가상 머신을 운영 중이며, 기존 서버 한 대당 10~15%에 그쳐왔던 활용율을 70~90%까지 끌어올렸다. 물리적 서버 대수가 줄어든 것과 더불어 VM웨어 고객들은 70~90%의 전력 감축 효과를 봤다. 전력 사용량을 줄이면서 이산화탄소 배출량도 함께 줄여 그린 IT를 실현한 것이다. 가상화를 도입한 각 서버는 시간 당 7,000 KW의 전력을 줄이고 4t의 이산화탄소 배출도 줄였다.

클라우드 서비스 확대에 따른 가상화 기술 확산
클라우드 컴퓨팅이 IT 산업에 있어 중요한 이슈로 떠오르면서 가상화는 이를 실현하기 위한 중요한 인프라스트럭처로 여겨지고 있다. 가상화 기술은 데이터센터와 외부 서비스 업체의 애플리케이션을 매끄럽게 연결해 고객이 손쉽게 클라우드 컴퓨팅 기반 서비스를 채택할 수 있도록 하기 때문이다.

2009년 클라우드 컴퓨팅의 발전은 더욱 가속화 될 것이다. 모든 기업들은 그들이 원하는 방식으로 완벽한 보안체계를 유지할 수 있으며, 내부 시스템과 아웃소싱되는 시스템에 상관없이 모든 애플리케이션을 사용할 수 있는 서비스 수준을 유지할 수 있게 될 것이다.






서버 가상화와 이를 사용하는 Desktop user를 위한 가상화를 말하는 것 같은데,
개개의 개인 PC 사용자가 서버 가상화를 통해 여러 운영체제의 서비스를 받는다면,
각각의 처리에 따른 데이터 전송으로 인해 반드시 해당 서비스가 늦어 지게 될 것이고
사용자들에게 많은 불편을 주게 됨은 물론이며, 관리자의 입장에서도 이런 서버의 도입은
많은 비용을 지불해야 함을 감수 해야 된다고 한다.
-> 대충 이렇게 들었음.

고로 같은 운영체제를 지원해 주는 서버일 경우에는 차라리 유저의 데이터를 관리하는 부분으로 나뉘어
이들에 대한 처리만 따로 전송해 주면 각 client 간의 데이터 전송이 독립적으로 이루어지는 것처럼 보인다는 것이다.

: ) 뭐... 자세히는 잘 모르겠지만, 고놈이 고놈같은데 =_- ..



 



괜찮은 아이템 같다.

포스트 잇으로 적으면 위에 달린 센서(?)가 인식해서 PC에서도 인식하고 말이다.

아이템은 괜찮으나... 그놈을 상업화 하기에는 많은 무리가 따를 것으로 보인다.

수익성도 별로고 ...

아무튼

MIT media lab은 재미난 것을 많이 개발하고 있는군 :)



 

 
출처 - ZDnet



Mobile virtualization

가상화는 최근 상당한 화제가 되고 있는 주제 중 하나이다.
모바일 시장에 보면 상당히 많다.
시간이 매우 중요

가능한 비용 최소화


time to market
cost
functionality
performance
update device


가상화는 이들 하드웨어 위에 하나의 소프트웨어 층으로 자리를 잡는다.
Device hardware

실제 애플리케이션들 및 기기 자체를 통제하고 조절하는 역할을 함

가상화 층 위에는 운영체제가 위치해 있다.

최근 들어 애플리케이션들이 기기가 구현하고자 하는 수준의 기능을 따라오지 못하는 현상들이 발생하기 시작하였다.

이 때문에 시장에 새롭게 등장

가상화 역시 증가되고 있다. 윈도우 역시 마찬가지로 되고 있다.

각각의 운영체제들을 격리시키고 어플리케이션들의 정보를 각각의 범주 안에서 격리 시켜야 한다.

그리고 보안 기능을 통해 각각의 애플리케이션들이 각각의 운영체제의 범주 안에서 머물 수 있도록 돕는 것 또한 상당히 괜찮은 부분이다.

새로이 도입한 운영체제가 보유하고 또 지원하는 기존의 애플리케이션들을 재활용할 수 잇다는 점에서 시장 경쟁력이 보다 강화된다는 측면도 간과할 수 없는 부분이다.

만약 개발자라면 가상화 소프트웨어가 시장 경쟁력에 어떤 영향력을 미치는지, 그리고 애플리케이션 기능성 면에서느 ㄴ어떤 향상된 효과를 유발해 주는 지에 대해 생각해 보는 것이 좋을 것 같고, 만약 운영자라면 기긱를 어떻게 하면 가장 최신의 경향에 맞게 업데이트 할 수 있을까 고민해봐야 할 것입니다.




 가상 파일시스템 


 PC를 사용하다보면 하나의 OS에서 여러 개의 파일 시스템에 접근해야 할 경우가 종종 있다. 최근의 윈도우 OS의 경우 FAT32 파일시스템 위에 OS가 설치되어 있다고 하더라도 별도의 설정 없이도 다른 파티션에 있는 NTFS를 읽고 쓸 수 있다. 또한 리눅스의 경우 지원하는 파일 시스템의 종류를 보면 10여 가지에 달한다. 이것은 OS 차원에서 가상 파일시스템(Virtual FileSystem)이라는 상위 레벨의 파일시스템 인터페이스가 존재하기 때문에 응용 프로그램에서는 아무 구분 없이 OS의 시스템 콜을 호출하면 커널은 미리 등록되어 있는 파일 시스템 함수를 호출하여 그 종류에 상관없이 같은 결과를 볼 수 있다. 만약 가상 파일시스템이 없다면 일단 OS를 설치하고 나면 다른 파일시스템에 설치된 파티션을 인식할 수 없을 뿐만 아니라 다른 파일시스템의 인식을 위해서 별도로 컴파일된 파일시스템 모듈을 덮어씌워야 할 것이다.

사용자 삽입 이미지


그림은 가상 파일스스템과 일반 파일시스템의 레이어 구조를 나타낸 것이다. 가상 파일 시스템은 로컬 영역이나 원격 영역의 파일 시스템을 실제로 제어하지 않기 때문에 OS 부팅 시에 사용 가능한 파일시스템 함수를 가상 파일시스템 쪽으로 등록해 주어야 한다. 일반적으로 하드디스크에서 사용하는 파일 시스템뿐만 아니라 CD-ROM 파일 시스템과 네트워크 파일시스템 등 기본적으로 등록하는 파일시스템이 여러 가지 있다.

가상 파일시스템의 아이디어가 최초 적용된 OS는 1986년 Sun Microsystems의 SunOS2.0이다. 당시 SunOS에서 로컬 영역의 UFS와 Remote 영역의 NFS를 동시에 지원하면서 그 개념이 도입되었고, 이후 대부분의 유닉스 계열의 OS들이 가상 파일시스템을 지원하였다.

+ Recent posts