hex edit

#vim <(xxd /usr/bin/filename)

hex compare

#vimdiff <(xxd /usr/bin/filename1) <(xxd /usr/bin/filename2)

'Development > C/C++' 카테고리의 다른 글

[scanf에서 공백을 포함한 문자열을 받는 방법]  (0) 2014.02.09
[objdump in linux]  (0) 2014.01.15
[코드에서 endian을 파악하는 방법]  (0) 2014.01.06
[C 올림 구현]  (0) 2013.12.01
[const 키워드]  (0) 2013.10.22
Posted by cyj4369
,

static void getEndian(void) {

int n = 0x11223344;

char *c = (char *)&n;


if(c[0] == 0x11) {

/*BIG_ENDIAN*/

}

else {

/*LITTLE_ENDIAN*/

}

}



'Development > C/C++' 카테고리의 다른 글

[objdump in linux]  (0) 2014.01.15
[vim에서 hexedit하기, hex비교하기]  (0) 2014.01.15
[C 올림 구현]  (0) 2013.12.01
[const 키워드]  (0) 2013.10.22
[가장 간단한 이진수 출력]  (0) 2013.10.17
Posted by cyj4369
,

openNFM 중

((FTL_capacity()+PM_PER_NODE-1) / PM_PER_NODE)

'Development > C/C++' 카테고리의 다른 글

[vim에서 hexedit하기, hex비교하기]  (0) 2014.01.15
[코드에서 endian을 파악하는 방법]  (0) 2014.01.06
[const 키워드]  (0) 2013.10.22
[가장 간단한 이진수 출력]  (0) 2013.10.17
[2차원 배열 파라미터 전달]  (0) 2013.04.26
Posted by cyj4369
,

ㆍ⦁∎◦∘∙⋅▪▫■○▲△▴▵▶▷▸▹►▻▼▽▾▿◀◁◂◃◄◅◆◇◈◉

ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ

ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ

 

⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇

⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿



❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴

➊➋➌➍➎➏➐➑➒➓

 

㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍         ㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭

㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛         ㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻

 

㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩                      ㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉

 

㈪㈫㈬㈭㈮㈯㈰                                ㊊㊋㊌㊍㊎㊏㊐

㋀㋁㋂㋃㋄㋅㋆㋇㋈㋉㋊㋋

㏠㏡㏢㏣㏤㏥㏦㏧㏨㏩㏪㏫㏬㏭㏮㏯㏰㏱㏲㏳㏴㏵㏶㏷㏸㏹㏺㏻㏼㏽㏾

 

[화폐기호] ==================================================================

¢£¥₩₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱

 

[로마자]=====================================================================

ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯↀↁↂ

ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽⅾⅿ

 

[분수]========================================================================

¼½¾⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞

 

[원, 괄호 한자, 일어]===========================================================

㈱㈲㈳㈴㈵㈶㈷㈸㈹㈺㈻㈼㈽㈾㈿㉀㉁㉂㉃

㊑㊒㊓㊔㊕㊖㊗㊘㊙㊚㊛㊜㊝㊞㊟㊠㊡㊢㊣㊤㊥㊦㊧㊨㊩㊪㊫㊬㊭㊮㊯㊰

㋐㋑㋒㋓㋔㋕㋖㋗㋘㋙㋚㋛㋜㋝㋞㋟㋠㋡㋢㋣㋤㋥㋦㋧㋨㋩㋪㋫㋬㋭㋮㋯

㋰㋱㋲㋳㋴㋵㋶㋷㋸㋹㋺㋻㋼㋽㋾

 

[화살표]=====================================================================

←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟↠↡↢↣↤↥↦↧↨↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯⇰⇱⇲⇳

➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➰➱➲➳➴➵➶➷➸➹➺➻➼➽➾

⟰⟱⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓

⤔⤕⤖⤗⤘⤙⤚⤛⤜⤝⤞⤟⤠⤡⤢⤣⤤⤥⤦⤧⤨⤩⤪⤫⤬⤭⤮⤯⤰⤱⤲⤳⤴⤵⤶⤷⤸⤹⤺⤻⤼⤽⤾⤿⥀⥁

⥂⥃⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⥱⥲⥳⥴⥵⥶⥷⥸⥹⥺⥻⥼⥽⥾⥿

¬ ̄¦￧│←↑→↓

 

[수학기호, 연산자]============================================================

∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱

⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿

 

[단위 기호 모음]==============================================================

㎀㎁㎂㎃㎄㎅㎆㎇㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏋㏌㏍㏎㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘㏙㏚㏛㏜㏝

 

[기타 기호 모음]==============================================================

㈜㉿〄

☎☏☐☑☒☓

♠♡♢♣♤♥♦

♲♳♴♵♶♷♸♹♺♻♼☢

♩♪♫♬♭♮♯♰♱

☼☀☽☾☁☂☃☄★☆☇☈☉☊☋☌☍

✓✔✕✖✗✘

✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋

‐‑‒–—―‖‗‘’‚‛“”„‟†‡•‣․‥…‧‰‱′″‴‵‶‷‸‹›※‼‽‾‿⁀⁁⁂⁃⁄⁅⁆⁇⁈⁉⁑

▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▐░▒▓▔▕

■□▢▣▤▥▦▧▨▩▬▭▮▯▰▱◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◧◨◩◪◫◬◭◮◯

☖☗☚☛☜☝☞☟☠☡☣☤☥☦☧☨☩☪☫☬☭☮☯

☰☱☲☳☴☵☶☷

☸☹☺☻☿♀♁♂♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♧♨

✁✂✃✆✇✈✉✌✍✎✏✐✑✒❍❏❐❑❒❖❘❙❚❛❜❝❞❡❢❣❤❥❦❧

⦅⦆⦿⧺⧻⧼⧽⧾

⨀⨁⨂⨃⨄⨅⨆⨇⨈⨉

、。〃々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〡〢〣〤〥〦〧〨

〩〪〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿

゠ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネ

ノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ

 

︰︱︲︳︴︵︶︷︸︹︺︻︼︽︾︿﹀﹁﹂﹃﹄﹅﹆﹇﹈﹉﹊﹋﹌﹍﹎﹏

﹐﹑﹒﹓﹔﹕﹖﹗﹘﹙﹚﹛﹜﹝﹞﹟﹠﹡﹢﹣﹤﹥﹦﹧﹨﹩﹪﹫

'Embedded Lab > linux, x86' 카테고리의 다른 글

[우분투에서 monaco 폰트 설정]  (0) 2014.04.27
[ln 명령어]  (0) 2014.02.06
[GFS(Google File System)]  (0) 2013.10.28
[top 명령어]  (0) 2013.10.23
[커널스택]  (0) 2013.08.13
Posted by cyj4369
,

GFS는 구글이 만든 분산 파일시스템입니다. Hadoop의 HDFS(Hadoop Distributed File System)는 GFS를 기반으로 만들어졌습니다.

Key Design Goals

* Component failures are the norm rather than the exception
GFS는 수천개의 값싼 PC로 이루어진 클러스터 위에서 동작할 것을 가정하고 만들어졌습니다.
한두개의 하드 디스크 불량이나 네트워크 문제에도 서비스는 원활하게 돌아가야 합니다.

* Files are huge
GFS는 수 GB 단위의 큰 파일에 특화된 파일시스템입니다. 작은 파일도 저장할 수는 있지만 많은 숫자의 작은 파일에는 효율적이지 않습니다.
때문에 64KB의 큰 block size를 이용합니다. (FAT/NTFS/ext3 등에서는 1KB~4KB 정도입니다.)

* Modify / Delete are rare
GFS는 구글이 사용하는 DBMS인 BigTable을 염두에 두고 설계되었습니다.
이 시스템의 특징은 file의 read / append가 집중적으로 이루어지며, modify / delete는 거의 없다는 것입니다. append 또한 sequential하게 이루어지는 경우가 많습니다.

* High Bandwidth over Fast Response
GFS는 응답시간보다는 높은 대역폭에 더 특화되어 있습니다.
몇몇 application은 빠른 응답시간을 필요로 하지만, 그보다 많은 application이 bulk data processing을 필요로 한다고 가정하고 있습니다.

Interface

일반적인 파일시스템과 같이 create, delete, open, close, read, write 등의 연산을 지원합니다.
그 외에 중요한 것으로 snapshot과 record append 연산이 있습니다.
snapshot은 현재 파일과 디렉토리의 copy를 빠른 시간 안에 만들어 냅니다.
record append는 여러 개의 client가 같은 파일에 동시에 접근하여 atomic append 연산을 할 수 있도록 지원합니다.
이로서 multi-way merge나 producer-consumer queue를 별도의 lock 없이 구현할 수 있습니다.

File Structure

파일은 여러 개의 블록으로 나누어 저장됩니다.
GFS는 각각의 블록을 chunk라고 부르며, 시스템 내부적으로 chunk는 고정된 크기(64MB)의 linux file로 저장됩니다.
각각의 chunk에는 64bit integer로 된 unique한 handle이 붙어 있습니다.

Architecture

GFS는 한 개의 master server와 여러 개의 chunkserver로 구성되어 있습니다.
master server와 chunkserver는 user-level linux process이며, 원한다면 master와 chunkserver를 같은 시스템에서 돌릴 수도 있습니다.
master는 각각의 파일과 chunk의 일련번호를 관리하고, 일정한 주기로 Heartbeat 신호를 보내 chunkserver가 살아있는지를 점검하며, access control을 관리하는 등의 일을 합니다. 파일시스템의 관리를 위한 metadata는 접근속도를 위해 master의 메인 메모리에 저장됩니다.
chunkserver는 각각의 chunk를 저장하는데, 한두대의 chunkserver가 죽어도 서비스가 유지되도록 여러 개의 chunkserver에 chunk의 사본이 3개 저장됩니다.

Client

API를 통해 GFS에 접근하는 프로그램을 client라고 부릅니다.
관리와 consistency 문제를 단순화하기 위해 전체 시스템에 master는 하나뿐이지만, master가 병목이 되는 것을 막기 위해 데이터 전송은 master를 통해서 이루어지지 않습니다.
예를 들어 client가 파일을 읽기 위해 파일 이름과 chunk 번호를 master에 전송하면, master는 client에 chunk의 복사본이 있는 위치와 handle을 반환합니다. client가 그 중 가까운 chunk server에 다시 요청을 전송하면, chunk server가 client에 데이터를 직접 전송합니다.

Metadata

master가 저장하는 metadata는 세가지입니다. 파일의 namespace(access control, 파일이름, 디렉토리 구조 등 일반적인 파일시스템이 갖는 정보), 파일과 chunk handle 사이의 mapping, 각각의 chunk 사본의 위치입니다. 모든 metadata는 master의 메인 메모리에 저장되며, 앞의 두 가지(namespace와 mapping)는 log의 형태로 디스크에도 저장됩니다. 디스크에 저장되는 정보를 log로 제한함으로서 master의 동작을 단순화할 수 있고, master가 다운되었을 때도 복원이 가능합니다.

 

==========================================================================================================================

 

GFS(Google File System)은 Hadoop의 HDFS에 대응한는 파일 시스템이다.

특징

  • very large
  • replicated
  • detect failure, recover algorithm
  • batch processing
  • single name space node(==directory), master징
  • java application
  • 일반 파일 시스템과 동일한 인터페이스 제공 : create, delete, open, close...
  • 파일 입력시, appen만 제공하는 것이 특징
  • os와 무관한 user level app, linux vnode layer 접근 불가

CHUNK

  • 파일은 고정 크기(64MB)의 chunk로 나눠짐
  • 하나의 chunk는 여러 chunkserver에 중복 저장
  • 장점
    • Master와 interection 줄일 수 있다.
    • TCP connection 줄일 수 있다.
    • Matadata 줄일 수 있다.
  • 단점
    • file의 크기가 chunk보다 작을 경우, 비효율적

구조

  • Master Server 
    • 메모리 상에 Matadata 로딩
    • Chunk Server와 heartbeat(Chunk Server들의 생사 확인)로 통신
  • Chunk Servers : 
    • File data 저장
  • GFS Client
    • Master Server와 Chunk Server와 통신하며 appication에 file system API제공
    • Master Server의 Matadata로 원하는 파일을 가지고 있는 Chunk Server의 위치 확인
    • Chunk Server로부터 데이터 교류

operation log file

  • Directory structure의 persistence 유지
  • Master Server는 operation log file을 replay함으로 file system복구 가능

    [출처] GFS (Google File System)|작성자 누룽지

출처 : http://blog.naver.com/PostView.nhn?blogId=say501&logNo=110082677976

'Embedded Lab > linux, x86' 카테고리의 다른 글

[ln 명령어]  (0) 2014.02.06
[특수문자표]  (0) 2013.11.04
[top 명령어]  (0) 2013.10.23
[커널스택]  (0) 2013.08.13
[커널 예전 버전 받기]  (0) 2013.08.06
Posted by cyj4369
,