(10101101)173/Others2008. 11. 19. 02:36

File System :: 파일 시스템

파일 시스템은 Disk의 데이터를 구조화하고 쉽게 찾을 수 있도록 하는 구조를 정의합니다. 데이터는 클러스터(미리 정의된 Byte 수를 저장할 수 있는 단위)에 저장됩니다. 한 파일은 여러 클러스터에 저장 가능하지만 한 클러스터에 여러 파일을 저장할 수는 없습니다. 이는 클라스터 크키가 512KB인대 파일 크기가 128KB라면 남은 384KB는 낭비가 일어납니다. 때문에 파일 시스템마다 각기 다른 방법으로 클러스터를 다루게 됩니다. 파일 시스템의 기능은 여기서 끝나지 않고 보안 기능등의 여러 기능을 가지고 있습니다.

대부분의 파일 시스템은 계층 트리 구조에 데이터를 저장 합니다. 디렉토리(폴더)라 불리는 컨테이너는 파일을 저장할 수 있는데 하위 디렉터리나 하위 폴더도 저장 가능 합니다. 여기에 관리를 편하게 하기 위해 구릅 형태로 구성돼어 있습니다. 계층의 시작점 즉, 계층 구조의 맨 위를 루트(Root) 또는 루트 디렉토리 라고 하는대 Windows System에서는 "C:\"가 되고 UNIX System계열 에서는 " / "가 됩니다. 여기에서는 Windows에서 사용되는 파일 시스템에 대해서 말하고 있습니다.

1. FAT12 : File Allocation Table 12
이 파일 시스템은 MS-DOS 운영 체제 용으로 개발 되었으며 FAT의 첫번째 버전 입니다. 첫 버전 이지만 뒤에 붙은 12에 의미는 클러스터의 크기를 의미 합니다. 즉 12Bit의 클러스터를 사용해 "FAT12"가 됐습니다.
수용 가능한 최대 용량 = 지정 가능한 주소의 갯수(2^12 = 4096 섹터) X 당시 최대 클러스터 용량(4096 Byte)으로
4096 X 4096 = 16,777,216으로 알아보기 쉽도록 1024값으로 나누면
16,777,216 / 1024 = 16,384
16,384 / 1024 = 16
약 16MB까지 수용 가능한 최대 용량이 나옵니다. 때문에 16MB이하에 HDD에서 사용되었으며 더불어 3.5인치 디스켓을 포맷하는대도 사용하게 됩니다. 용량 단위가 적고 플로피 디스크에서 많이 사용되다 보니 따로 MBR[각주:1]영역이 필요하지는 않았습니다.


2. FAT16

FAT12에서 16MB이상에 HDD는 지원하지 못하다 보니 이보다 큰 디스크를 지원하기 위해 개발 됐으며 오랫동안 하드디스크를 포맷하기 위한 표준 파일 시스템으로 존재하게 됩니다. 이는 OS/2나 UNIX계열 OS에서도 FAT16을 지원했기 때문입니다. 비단 비 MS계열의 OS 뿐만 아니라 MS-DOS에서 WindowsXP에 이르기 까지 넓은 OS 지원폭을 가지고 있습니다. FAT16의 수용 가능한 최대 용량은 FAT12와는 조금 다릅니다.
2^10 = 65,536개의 섹터를 가지며, 다라서 한 섹터가 512 Byte가 됩니다.
65,536 X 512 = 33,554,432 / 1024 = 32,768 = 32MB로 32MB의 파티션을 만들 수 있습니다.
도 여기에 섹터를 최대인 64개를 하나의 클러스터로 묶어 사용하면
65,536 X 64 X 512 = 2,147,483,648 / 1024 = 2,097,152 / 1024 = 2,048로 약 2GB의 공간을 하나의 파티션으로 사용할 수 있습니다.
때문에 10GB 용량의 HDD를 FAT16으로 포맷 하면 가장 효율적인 방법은 2GB씩 5개로 분할하는 방법 입니다. 이는 하드 자체는 효율적으로 사용할 수 있으나 사용자가 과연 반가워 하지 않습니다. 여기에다가 분할한 파티션에 용량이 크면 클수록 클러스터 낭비도 커집니다. 하지만 FAT16은 무조건 2GB로 나눈건 아닙니다. 2BG이상으로 나눌 수 있지만 비 효율 적입니다. 이는 일반 MS-DOS나 Win9x 계열에서는 인식이 되지 않지만 Windows NT, 2000 OS에서는 FAT16 으로 포맷한 4GB의 파티션을 사용 가능 했습니다.


3. VFAT : Virtual FAT

이 파일 시스템은 사실 파일 시스템이 아니라 파일 시스템의 확장판 또는 패치라고 보면 이해가 빠릅니다. 이 파일 시스템은 Windows for Workgroups 3.11에 처음 나왔으며 Windows 95에서도 지원하는 파일 시스템으로 기존 FAT16에서 파일 및 디렉토리 표현 방법 이었던 8.3표현의 제한을 벗어나기 위함입니다. 즉 MS-DOS나 Windows에 DOS모드(창)에서 파일명이 모두 출력하게 해줍니다.


4. FAT32
FAT32부터는 32Bit 할당 테이블(Allocation Table)을 사용 합니다. Windows 95 OSR2 버전(Windows 95b)부터 쓰이기 시작 했으며 기존 FAT16기능의 다음과 같은 추가 기능이 들어가게 됩니다.
크기가 작은 클러스터 사용으로 대용량 하드 디스크의 공간을 효율적으로 사용
이론상 2TB까지 파티션 지원(하지만 윈도우는 32GB 파티션 까지만 지원)
디스크 장애 발생시 디스크 루트 디렉토리를 다시 배치하여 부트 레코드에서 백업한 FAT 데이블을 사용해 안전성의 향상
하지만 이로 인해 MS-DOS나 Windows 3.1, Windows NT등의 OS에서는 호환이 되지 않았나, 한 PC에 다른 버전의 OS를 설치해 가능해 지는 멀티 부팅이 가능해 집니다. 하지만 다시 FAT32는 NTFS같은 보안 기능이 없어 컴퓨터에 액세스 가능한 모든 사용자가 파일을 읽을 수 있습니다. 또한 오버헤드가 있어 성능이 약간 떨어질 수도 있습니다. 물론 Windows NT같은 OS들은 써드 파티 벤더에서 나온 FAT32드라이버를 사용해 FAT32를 사용할 수 있었습니다.


NTFS : New Technology File System
NTFS는 다른 MS사의 파일 시스템 보다 훨씬 강력한 보안 기능과 강화된 파일 시스템으로 설계 됩니다. NTFS는 이론상 16EB(Exabyte)를 지원하며 2개 이상의 파티션을 포함하는 볼륨(Volume)을 사용 할 수 있습니다. 실제로는 2TB가 한계 입니다. NTFS의 클라스터 크기는 512Byte, 1KB, 2KB, 4KB까지 사용자 지정이 가능 하니다. 그리고 파일에 접근 권한을 설정하여 파일의 사용자 외의 사용자가 파일을 읽고, 변경하고, 기타 다른 작업을 할 수 있는지를 제어 할 수 있습니다. 또한 이러한 제어는 로컬에서 뿐만 아니라 원격지 네트워크에서 접근하는 사용자에게도 적용 되 네트워크 공유 권한과 함께 동작 합니다. NTFS는 핫 픽싱(Hot Fixing)이라는 기능으로 안정성을 강화했습니다. 이 기능은 OS에서 디스크의 배드 섹터를 발견했을 경우 자동으로 그곳에 있던 데이터를 다른 섹터로 옮긴 다음 해당 배드 섹터를 앞으로 사용하지 않겠다고 표시하는 기능 입니다. 이 기능은 사용자나 Application이 모르게 자동적으로 수행 됩니다. 또한 NTFS에서 제공하는 압축 방법을 사용하면 파일 단위로 데이터를 압축함으로써 디스크 공간을 줄일 수 있습니다. 이는 Windows 9x에서 사용되던 하드라이브 단위의 압축방법보다 훨씬 안전한 방법 입니다. 왜냐하면 드라이브 단위 압축방법에서는 압축 파일 하나를 읽어버리면 드라이브의 모든 내용을 잃어버리게 돼있기 때문 입니다. 여기서 끝나지 않고 NTFS는 NTFS 5.0이상 버전부터 EFS(Encrypting File System)라는 암호화 파일 시스템을 지원 합니다. 이는 공개 키 암호화와 전자 서명 기술을 사용 합니다. 또 NTFS 5.0부터는 디스크 쿼터를 지원해 관리자는 디스크 쿼터를 이용해 사용량을 각 사용자, 각 디스크 별로 제한 할 수 있게 됩니다.



각주 ▽

  1. MBR(Master Boot Record) OS가 어디에, 어떻게 위치해 있는지 식별하여 컴퓨터 주기억 장치에 적재될 수 있도록 하기 위한 정보로 하드디스크 첫 번째 섹터에 저장되어 있습니다. 또는 "파티션 섹터", "마스터 파티션 테이블"이라 불리는데, 이는 하드디스크가 포맷 될 때 나뉘는 각 파티션의 위치에 관한 정보를 가지고 있기 때문입니다. [본문으로]
Posted by Special Alex
(10101101)173/Others2008. 11. 14. 15:16

Mainboard = Main(주된) + Board(판), 결국 "주된판"입니다.
메인보드는 일반적인 PC에서 메인보드, 또는 마더보드라 불리우는 주기판을 말합니다.
다른 구성 요소(H/W 구성 요소)들를 연결 할 수 있으며 이런 구성 요소간 통신 인터페이스를 버스라고 합니다. 이를 통해서 메인보드와 다른 구성 요소들 끼리 통신이 가능해 집니다. 그럼 여기서 메인보드가 하는일을 한번 보도록 하겠습니다.

1. 전압 조절, PSU(Power Supply)에서 나오는 5V 신호를 프로세서에서 사용하는 3.3V나 그 이하로 봐꿔 주는 역활
2. 구성 요소간의 인터페이스를 제어하기 위해 직접된 칩셋
3. 구성 요소를 추가하기 위한 확장 슬롯(RAM, PCI Card 등..)
4. I/O장치를 위한 컨트롤러(SCSI, IDE, SATA, Sound, Video 등..)
5. 시스템 H/W제어를 위한 EPROM(Erasable Programmable Read-Only-Memory) 직접
6. 사용자 정보제공을 위한 장치들(파워 스위치, LED 등..)

이 외에도 많은 기능을 메인보드가 하고 있습니다. 이렇게 많은 일을 하는 메인보드를 구조에 따라 "~~폼 팩터(Form Factor)"라고 구분 하는대 이 폼팩터에 대해 알아보겠습니다.

이선 폼팩터를 나누는 기준은 몇가지 있습니다. (메인)보드의 크키, 통합포트에 위치, 부품 배치 등이 있습니다. 때문에 메인보드 폼 팩터와 일치하는 컴퓨터 케이스를 사용해야 합니다. 현제 일반적으로 사용되는 폼 팩터는 ATX입니다.


ATX : Advanced Technology Extended / PCB Size : 305 x 244 mm


(ATX : ASUS P5B-E Plus)
1995년 Intel에서 개발며 펜티엄 프로세서와 함께 짝을 맞추어 사용될 메인보드 규격으로 발표되었습니다. ATX이전 규격이었던 Baby AT(AT)규격이 오랜시간 변화없이 사용되었기 때문에(약 10여년) PC 업계는 파란이 불게 됩니다. 이는 규격의 변화로 위에서 말한 바와 같이 보드의 크기, 부품의 배치등 많은 부분이 봐뀌었기 때문입니다. 하지만 이전 규격이었던 Baby-AT규격보다 더 많은 확장 카드(VGA, Sound Card 등)를 수용 가능해 졌으며 다양한 장비의 단자 배열에 유연성 있게 변했습니다. 또한 보드에 PS/2 마우스 커넥터가 내장됩니다.


AT/Baby-AT : (Baby-)Advanced Technology
PCB Size : AT 350 x 305 / Baby-AT 330 x 216mm
AT 폼 팩터는 1984년 IBM이 모델 5170이라는 PC를 발표하면서 같이 세상에 알려졌습니다. 하지만 이 폼 팩터는 1985년 IBM이 다시 폭을 좁게하고 메인보드 여백을 줄인 Baby-AT를 발표 하면서 세상에서 멀어 졌습니다. Baby-AT는 1997년 이전까지 가장 많이 사용 되었으며 이 후에는 ATX가 그 자리를 물려 받게 됩니다. 특징으로 PSU에 P8, P9라는 2개의 커넥터가 있는대 이를 메인보드에 바꿔 연결하면 메인보드가 타버리는 특징아닌 특징이 있습니다. 또 현제 PC들은 종료 명령을 내리면 알아서 PC에 전원이 OFF 되지만 Baby-AT 폼 팩터 보드는 종료 명령 이후 종료해도 된다는 메시지를 화면에 띄워 사용자가 직접 OFF 해줘야 했습니다. 이는 고급전원관리모드(ACPI)이 지원되지 못하여 발생하게 되는대 Windows 95를 사용해 보신 분이라면 보았을 화면 입니다. 전원 버튼을 누르기 전에 "이제 PC를 종료 하셔도 됩니다."라는 화면 입니다.(이미지를 구하려 했으나 구하지 못하여 추후 업데이트 하도록 하겠습니다.) 무튼 이때는 PC의 전원 버튼이 PSU에 다이렉트로 연결되어 있어 PC에 ON, OFF를 PSU를 통해 하게 됩니다.

하지만 ATX로 넘어오면서 고급전원관리모드가 지원되었고 때문에 PC에 전원 버튼을 PSU에 연결하지 않고 메인보드에 연결하게 되면서 OS레벨에서 전원차단이 가능해 집니다.

AT가 Baby-AT로 발전 하듣이 ATX도 발전하게 되는대 BTX라는 폼 팩터로 발전하게 되지만 인기를 끌지 못하게 되고(2004년 Intel 제안) 홈시어터나 소형 PC를 위한 폼 팩터 DTX가 나옵니다.(AMD 제안) 그럼 ATX는 어떻게 되느냐? 작아지게 됩니다. 즉 기본적인 사이즈인 ATX에 Slim PC를 위한 Mini ATX와 micro ATX가 등장하게 됩니다.


Mini ATX(PCB Size : 284 x 208 mm)는 ATX보다 세로 가로 사이즈가 조금식 작아지게 됩니다. micro ATX(PCB Size : 244 x 244 mm)는 여기서 더 작아지지만 가로가 다시 ATX사이즈로 늘어나게 됩니다. micro ATX는 ATX를 축소하여 소형 시스템을 꾸미기 위한 표준이 됩니다. 때문에 Micro ATX 폼 팩터를 위한 제품이 생산 되는대 폼 팩터에 크기에 맞춰서 제작되다 보니 PSU도 작아 집니다. PSU가 작아지니 당연히 출력도 줄어들게 됩니다. 그래서 추가적으로 H/W를 설치하기는 무리가 갑니다. 하지만 micro ATX는 ATX 케이스에 장착이 가능하기 때문에 PSU역시 ATX PSU를 사용할 수 있습니다. 다만 micro ATX에 맞춰나온 작은크기에 PSU는 출력이 ATX를 위한 PSU보단 확실히 적습니다. 하지만 이 이야기는 옛날 이야기가 되버렸으며 지금은 micro ATX용 PSU도 정격출력 450W 이상에 PSU가 많이 나옵니다. 추가적으로 설치할 H/W가 micro ATX 케이스에 들어가기만 한다면 추가 설치에 문제가 없습니다.

(micro ATX : ASUS P5E-VM HDMI/XONAR DX)


이 외에 다른 폼 팩터는
LPX(Low Profile eXtension)

웨스턴디지탈(이하 WD)이 제안한 규격으로 한정된 내부에서 부품들의 배치가 되도록 설계되었습니다. 문제는 사이즈나 부품배치에 대한 일정한 규정이 없었기 때문에 그렇기 인기를 끌진 못하고 HP같은 일부 PC제조사에서 Slim PC를 출시하기 위해 사용한 사례가 있습니다. 이 폼 팩터의 특징은 위 그림과 같이 Rise Card를 메인보드에 꼽은 뒤 확장 카드들을 Rise Card에 꼽아야 하는 특징이 있습니다.


NLX(New Low Profile Extended)

1997년 발표된 폼 팩터로 IBM, Intel, DEC등의 회사들이 공동개발하였으며 펜티엄2 PC를 위해 메인보드 공간을 효율적으로 사용 할 수 있는 방법을 연구해 제시된 표준입니다. LPX를 참조해서 만들어 비슷한 구조를 보이지만 역시 큰 인기를 끌지 못하고 일부 PC제조사 들이 Slim PC를 출시하기 위해 사용했습니다.


ITX

(mini-ITX : VIA PC2000 Platform)
VIA사가 자사 제품에 특화된 초소형 PC를 만들기 위해 만든 독자적인 폼 팩터 규격입니다. 여기서 다시 이보다 작은 Nano ITX, Pico ITX등 용도별로 사이즈가 작은 다양한 폼 팩터가 있습니다.


ETX(Embedded Technology eXtended)
임베디드 및 회로설계를 위한 산업표준입니다. 고도의 통합된 소형 전자 기기(95 x 114mm)를 설계하는 데 사용하기 위한 것으로, CPU 및 메모리, PCI 버스, USB, 오디오, 그래픽, 이더넷 등 모든 회로 구성 요소를 통합 하였습니다.



참고 사이트 : http://blog.naver.com/bilipnet?Redirect=Log&logNo=70027337043
ATX 폼 팩터에 좀더 자세한 설명은 Wikipedia(영문)을 참고하시기 바랍니다.

Posted by Special Alex
(10101101)173/Others2008. 11. 12. 04:24

누군가 물었다.
"왜 기능은 다 쓰지도 않으면서 아니 쓸줄도 모르면서 왜 Visual Studio를 써?"
이렇게 답했다.
"디버그(Debug)하나는 끝내주거등.."

아무리 생각해도 Visual Studio는 프로그램을 디버그 하는대있어서 최고의 프로그램인것 같습니다. 물론 Visual Studio는 디버그 프로그램이 아니라 개발(Develop) 프로그램 기능도 나무랄 곳이 없습니다. 개발자(Developer)입장에서 잘~ 만들어진 프로그램이라 생각 합니다. 그러나 이런 프로그램 마저도 가끔 충돌이나 오류로 인해  오류메시지를 뿌리며 눈앞에서 사라져 갈때는 정말 가슴이 미어 집니다.
인류의 적은 많은것들이 있습니다. 바퀴벌레 부터 시작해서 다이옥신 까지.. 그렇다고 프로그램어의 적도 버그만 있느냐? 아닙니다. 똥배, 거북목, 무릎시림, 손저림, 허리 요통 등 많은 적들이 존재 하지만 이 때문에 이 적들이 존재하는 것입니다. 그이름 바로 "버그" 이 버그들이 존재 하기에 프로그램어의 상징 이자, 내공의 증거 똥배를 있게 합니다.
버그는 프로그램어가 원하던 원하지 않던 일어나게 됩니다. 컴퓨터가 아무리 머리가 좋다 한들.. 할일을 지정해 주지 않으면 일을 못하는 TV나 다름없는 바보상자가 아닐 수 없습니다. 때문에 이 컴퓨터를 좀더 인공지능적으로 보이기 위해 프로그램어는 매일밤을 뜬 눈으로 보내며 키보드와 씨름한판을 벌입니다. 하지만 아무리 컴퓨터 앞에서 키보드만 들면 전지전능해 지는 프로그램어 라도 인간인지라.. 실수도 하고 빼먹기도 하고.. 그렇다보면 원하지 않던 버그가 일어나게 됩니다. 여기서는 이 버그로 일어난 사건사고를 말해보겠습니다.


1. NASA 화성 착륙기
아래 주소에 나와 있는 뉴스를 보면 마스폴라랜더호에 대한 내용이 나옵니다.
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=001&oid=262&aid=0000001604&
1999년 1월에 발사된 마스폴라랜더호는 영어와 측정 단위간의 변환 계산 버그로 인해 화성에 도착할 궤적을 잘못 계산하여 너무 일찍 엔진을 꺼버리게 된것입니다. 그래서 쉬운말로 그냥 "추/ 락/ 사/" 해버린 겁니다. 차라리 이 전 1997 6월에 도착한 패스파인더 호에 착륙방식인 에어백 방식을 사용해도 괜찮았을것 같은대.. 어쨋든 NASA아저씨들 마음이니.. 다시 본론으로 돌아가 결국 단위 변환 프로그램에 버그로 인해서 1조 6,500만 달라짜리 세금 덩어리가 화성에서 아무것도 아닌 쇠조각으로 변해버린 겁니다.


2. 덴버 공항 수화물 핸들러

촬영위성 : 미국 Space Imaging Inc. IKONOS
촬영일 : 2003년 9월 5일
Credit : Space Imaging Inc. 상업적으로 이용할 수 없습니다.

덴버 국제 공항은 세계에서 가장 큰 공항 중 하나로, 악천후 속에서도 나란한 활주로에 세 대의 비행기가 동시에 착률할 수 있는 공항 입니다. 약 50억 달러의 비용을 들여 1995년 완공되었는대 뉴욕 맨하탄 섬의 두배 크기 입니다. 이 공항에는 자동화된 거대한 레일 시스템이 있었는대. 문제는 바로 이 레일 시스템에서 일어 났습니다. 처음 온라인에서 테스트 했을 때 카트를 제대로 탐지하지 못하는 S/W적 문제가 곳곳에 있었습니다. 카트와 시스템이 동기가 잘 맞지 않아 카트가 비어 있음에도 빈 카트에 짐을 싫지 않고 꽉 찬 카트 또한 비어 있음으로 인식해 가방을 싫어버려 결국 시스템이 멈춰버리는 대형사고가 일어났는대(물론 테스트 중에) 이 S/W적 문제를 해결 하기 위해 덴버공항의 오픈은 11개월이나 미뤄졌습니다.


3. MV-22 오스프리

MV-22 오스프리는 군사 항공기로 수직 상승 헬리콥터와 일반적인 비행기의 특성을 섞어 만든 비행기 였습니다. 이런 수직 이착륙이 가능한 비행기는 1994년에 나온 아놀드 슈왈제네거 주연에 영화 영화 트루 라이즈(True Lies)에 나오는 전투가 있으니 바로 해리어기입니다. 이런 비행기들은 영화에서 많이 보신바와 같이 성능좋은 H/W와 S/W가 탑제되어 있습니다. 즉 자잘한 작동 이상문제를 S/W적으로 인식하고 H/W컨트롤을 통해 해결이 가능합니다. 문제는 이륙하려 할 때 잘못 만들어진 수력 라인이 터져 버렸는대 이는 H/W적으로 심각한 문제이나 S/W적으로 어떻게든 회복할 수 있는 문제였습니다. 그러나 문제는 여기서 발생 됩니다. 잘못된(적절하지 못한) 백업 시스템을 S/W가 호출해 결국 항공기가 폭파되어 네 명의 군인이 사망하는 결과를 낳았습니다. 물론 MV-22 오스프리 항공기는 테스트중 총 4번의 사고가 발생하게 되는대, S/W적인 사고는 한번 뿐이었습니다.


4. US 비세네스
1988년, 미 해군 함정은 레이더에 잡힌 비행 물체를 추적 시스템이 적기라고 판단, 미사일을 발포하게 됩니다. 하지만 이 레이더에 잡혀져 표적이된 비행 물체는 에어버스에 A320이었습니다. 결국 미사일에 맞아 비행기가 폭파되었을때는 290여 명의 무고한 사람들이 목숨을 잃었습니다. 이후 미 해군에 공식 발표는 오해하기 쉬운 출력을 낸 추적 시스템 때문이라며 개발사를 비난했습니다.


5. Microsoft와 Love바이러스

Microsoft Outlook은 처음에 불명확한 곳에서 보낸 프로그램도 실행하도록 잘못 설계되어 있었습니다. 이를 이용한 대표적인 사례가 "I LOVE YOU" 바이러스 알려진 LOVE바이러스 입니다. 이 바이러스로 입은 사회적인 피해는 10억 달러에 달하는대 문제는 이 피해는 MS Outlook을 사용한 사용자에게서만 발생 했다는 점입니다. Outlook개발자는 바이러스가 Script를 사용해 어떤일을 할 수 있는지 생각해 보지 않은 결과 입니다.



참고서적 : 소프트웨어 보안 코드 깨부수기 / 정보문화사

Posted by Special Alex