Tuesday, July 26, 2011

Linux Socket Programming

Concurrent threaded chatting server-client example

Monday, March 21, 2011

[Linux Study] GNOME

리눅스에서는 작업 표시줄, 시작 메뉴, 트레이 아이콘, 바탕 화면, 그리고 제어판, 각종 보조 프로그램 등등 데스크톱 환경 전반을 관장하는 시스템을 '데스크톱 환경(Desktop Environment)'라고 부릅니다.


GUI인터페이스라는 말은 많이 들어 보셨지요?
GRAPHIC USER INTERFACE의 약자로 운영체제에서 손쉬운 실행 방법중에 하나로 사용이 되고 있습니다. UNIX에서도 윈도우즈와 같이 아이콘을 이용한 단일화된 명령을 실행시킬 수가 있습니다.
하지만 UNIX에서는 윈도우즈의 일정한 GUI인터페이스의 시스템과는 달리 여러형태로 개발되어 배포되어 있습니다.
위의 제목에서 말씀하신 GNOME라는 것은 GUI형태의 인터페이스 개발명이며 GNU OBJECT MODEL ENVIROMENT 의 약자로 오픈소스 개발그룹에서 개발을 하고 있습니다.
이와 유사한 형태로 배포되거나 개발되어진 인터페이스는 KDE, Fvwm등등 UNIX상에서 구동되는 많은 윈도우즈 형태의 인터페이스가 존재를 합니다.
이를 통칭하여 X윈도우라고 합니다.




GNOME(GNU Network Object Model Environment)은 유닉스(혹은 유사 유닉스) 운영체제를 위한 오픈 소스/자유 소프트웨어 데스크탑 환경이다. 그놈은 GNU 프로젝트의 공식 데스크탑입니다.

그놈 프로젝트는 1997년 8월, 미겔 데 이카사 페데리코 메나에 의해 KDE의 대안을 제공할 목적으로 시작됐으며 KDE는 Qt 툴킷에 기반한 자유 소프트웨어 데스크탑 환경입니다.
초기의 Qt는 GNU GPL과 호환되지 않는 QPL 하에 배포되었고 GNU 프로젝트의 회원들은 자유 소프트웨어 데스크탑과 응용프로그램에 Qt가 쓰이는 것에 대해 염려했으며, 이에 새로운 두 가지 프로젝트를 착수하게 되었는데, 그것이 바로 Qt 라이브러리의 대체물을 작성하기 위한 "하모니(Harmony)"와 Qt를 전혀 사용하지 않는 새로운 데스크탑을 위한 그놈 프로젝트였습니다.
그놈이 어느 정도 기능을 갖추면서 인기를 얻자, 트롤테크는 2000년 9월에 Qt 라이브러리는 GPL QPL 버전을 함께 배포하기 시작했으며, 이로써 수년간 지속된 라이선스 문제에 대한 비판이 상당 부분 해결되었으나 GPL의 코드 링크에 대한 라이선스 제한 문제로 Qt의 라이선스 문제는 여전히 논쟁의 여지가 있습니다.
Qt 툴킷의 대용으로 그놈 데스크탑에는 김프 툴킷(GTK+)이 선택됐다. GTK+는 소프트웨어 링크를 허용하는 라이선스인 GNU LGPL를 사용하고 그놈 데스크탑은 자체(라이브러리 등)는 LGPL 하에 배포되며 그놈 프로젝트의 일부인 응용프로그램들은 GPL을 사용합니다.
그놈 데스크탑은 C (프로그래밍 언어)로 작성되었고 다수의 언어 바인딩이 존재하기 때문에 C++, 자바, 루비, C#, 파이썬,  등의 다양한 언어로 그놈 응용프로그램을 작성할 수 있습니다.

 그놈 프로젝트에서는 두 가지를 제공하는데,

하나는 최종 사용자를 위한 직관적이고 아름다운 데스크탑인 그놈 데스크탑 환경이고,

다른 하나는 데스크탑의 다른 부분을 통합하는 응용프로그램 제작을 위한 프레임워크입니다.

그놈 데스크탑은 간결함과 사용성, 그리고 모든 것이 "그저 동작"하게 만드는 것을 강조하고 그 결과로 그놈 개발 과정에는 두 가지 특징점이 있습니다.
  • 접근성 — 데스크탑과 응용프로그램을 전문적 기술이나 신체적 장애에 상관없이 누구나 사용 가능하도록 설계하고 작성
  • 국제화 — 테스크탑과 응용프로그램이 많은 언어로 이용 가능하도록 고려
그놈은 본래 GNU/리눅스 데스크탑으로 출발했지만, 현재는 대부분의 유사 유닉스 환경(BSD 류, AIX, IRIX, HP-UX, 솔라리스)에서 동작하고. 썬 마이크로 시스템즈는 또한 자바 데스크탑 시스템이란 이름의 수세 리눅스와 그놈 데스크탑 기반의 기업용 데스크탑을 출시했습니다. 또한 Cygwin을 통해 마이크로소프트 윈도우즈에서도 사용할 수 있습니다.
그노픽스, 모픽스, 우분투 리눅스 등 그놈 기반의 라이브 CD도 여럿 있고 라이브 CD를 이용하면 기존의 운영체제를 지우거나 변경할 필요 없이 CD에서 직접 컴퓨터를 부팅할 수 있습니다.

요약하면

GNOME은(이하 그놈) 일반 사용자에게 완전하고 자유로우며 사용하기 편리한 데스크탑 환경을 제공하는 동시에, 개발자들에게 응용프로그램 제작을 위한 강력한 프레임워크를 제공하는 것을 목표로 하고 있습니다.

그놈은 자유 소프트웨어이며 GNU 프로젝트의 일부입니다. 여기서 이야기하는 '자유(free)'의 의미는 윈도우즈(Windows)나 맥OS 등 독점소프트웨어 제품과 비교할 때 '무료'로 다운받아 사용할 수 있다는 뜻 이외에도 관심있는 사람이면 누구나 자유롭게 개발에 참여할 수 있다는 것을 의미합니다. 꼭 프로그래밍에 대한 전문 지식이 없어도 번역이나 문제점 보고를 통해 자유로운 그놈 데스크탑을 만드는데 기여할 수 있습니다.

Saturday, March 19, 2011

Monday, March 14, 2011

Play with Facebook API

1. Facebook Developer page : http://developers.facebook.com/docs/guides/mobile/#android
2. Followed the steps
3. When I need to export the signature for my app, I used following keytool command in Command.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore 
| openssl sha1 -binary
| openssl base64
    -> But then I got " 'openssl' is not recognized as an internal or external command, operable program or batch file. " message. I was supposed to have openssl program.. So I installed it and then runned it again. (I think I've done it few weeks ago.. It should be working without any additional work I guess.. It's weird.)
    - Well I re-installed 'openssl' and tried everything on facebook sdk page and run an example app but my app kept saying 'invalid key' so I googled it.. After looooong struggling with this problem, finally I got to see the solution from https://github.com/facebook/facebook-android-sdk/issues/140. I found many developers faced the same problem I have.

Friday, February 11, 2011

[Linux Study] Linux commands

Linux Command 정리

/bin

cat - 파일의 내용을 화면에 출력하거나 만드는 명령어 [logcat?, vi]
chmod - 권한 설정 변경 Owner/Group/Other r+w+x = 4+2+1 [chmod u+wr program]
chown - 소유권 변경 [ chown filename username ]
cp - 복사 [ cp -r . /home/somewhere ?]
date - 날짜 출력
echo - 어떤 것을 echo 화면에 출력한다.
kill - 프로세스 종료 [kill pid]
ln - 바로가기 생성 [ln -s filename linkname]
ls - 디렉토리 내용물 보여주기 [디렉토리만 출력?]
mkdir - 디렉토리 만들기
more - cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

mount - 장치 연결
mv - 파일/디렉토리 이동 [mv filename destination 파일이나 디렉토리 이름 수정시에도 사용]
ps - 지금 작동 중인 프로세스 출력
pwd - 현재 위치한 디렉토리 경로 출력 [print working directory]
rm - 파일/디렉토리 삭제 [rm -rf dir]
su - root로 로그인 하겠다. [ su test ]
vi - 편집기
man - 매뉴얼 페이지
whereis - 프로그램이 인스톨 되어 있는지, 어디에 있는지 알수있음[whereis perl]
sudo apt-get install - 패키지 인스톨
apt-cache search - 특정 패키지 검색
ctrl+u - 현재 입력된 명령어 모두 지우기
ctrl+w - 한 단어만 지우기

/sbin
fdisk - 파티션 삭제
mkfs - 포맷 [mkfs -t ext2 /dev/sda1]
init - 초기화
halt - 시스템 종료

/ 절대경로
vi editor cat viewer를 사용하기위한 명령어
kill - 숫자 옵션으로 signal을 전송하는 데 사용
symbolic link(그냥 링크, 하늘색, ->)/hard link (복사와 같음)
login 했던 유저에서 logout->exit
menu.lst // 9.04 grub.cfg //10.0
리눅스는 모든 것을 파일로 생각함...
shell shell program 할 수 있는 환경
history |(파이프) more 스페이스를 치면 한 페이지
cat -b 번호 -n 빈행도 포함
echo 문자 찍을 때

[References]

Thursday, February 10, 2011

[Linux Study] 2. Linux Directory Structure


[ Introduction ]
리눅스의 디렉토리 구조는 전체적으로 트리(Tree) 구조를 하고 있으며, 명령어의 성격과 내용 및 사용 권한 등에 따라 디렉토리로 구분되고 있다. 리눅스 파일 시스템 구조는 기본적인 구조를 제외하고는 사용자의 설정에 따라 달라질 수 있다. 하지만 리눅스의 디렉토리 구조는 파일 시스템 표준안(FSSTND, Linux File System Standard)*을 기반으로 하는 것이 바람직하다. 이것은 리눅스상에서 어떻게 파일 시스템을 구성할 것인지에 대한 표준안을 제정하기 위해서 만들어진 문서이다. 이 표준안을 무조건 따르라는 강제역은 없지만 리눅스 파일 시스템 표준안을 따라 파일 시스템을 구성할 경우 파일들의 위치가 일관되게 유지되어 프로그램 작성, 포팅은 물론 시스템 관리도 쉬워지는 이점이 있기 때문에 대부분의 배포판들이 이 표준안을 지키고 있다.


1. < / > : 모든 디렉토리의 출발점이자 다른 파티션의 연결점
일반적으로 루트 디렉토리라고 부르는 리눅스 시스템에서 가장 최상위 디렉토리이며 디렉토리 구조의 시작이다. 일반적으로 데이터를 저장하지 않는다. 시스템 관리자의 홈 디렉토리인 /root 디렉토리와는 별개이며 다른 것이다. ‘/’ 디렉토리를 제외한 디렉토리인 /bin, /etc, /boot, /mnt, /usr, /lib, /home, /dev, /proc, /var, /sbin, /tmp, /root, /lost+found는 ‘/’ 디렉토리 안에 존재한다.
In Windows, (C:\)


2. < /bin > : "binary" 기본 명령어가 위치하는 디렉토리, 가장 필수적인 실행파일들이 있는 곳
리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리이다. 해당 디렉토리 안을 들여다보면 대부분의 파일들이 녹색으로 구성된 파일이 실행 파일임을 알 수 있다. 특히 이곳에는 부팅에 필요한 명령어들이 위치하며 부팅 후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치하고 있다. (예: cat, chmod, chown, cp, date, echo, kill, ln, ls, mkdir, more, mount, mv, ps, pwd, rm, su, vi 등등) 즉 $ cp hello.txt good.txt 는 $ /bin/cp hello.txt good.txt 와 같은 의미이다.
In Windows,(C:\windows\commands) + 곳곳에 산재



3. < /boot > : 부팅에 필요한 커널과 파일 그리고 LILO 같은 파일이 들어있는 디렉토리
시스템 부팅에 관련된 모든 파일을 담고 있다. 커널에 대한 link, 기타 초기화 파일들이 있다. 특히 커널 이미지인 vmlinuz- 가 위치하고 있는데 LILO가 아닌 다른 부트로더 프로그램들 모두가 공통적으로 vmlinuz를 이용해 시스템을 부팅하므로 이 디렉토리가 매우 중요하다고 할 수 있다. 이 디렉토리의 파일들은 직접 편집할 수 없으며 커널 컴파일 등의 과정으로부터 생성된다.
< /boot/grub > 는 부트매니저 grub의 설정이 들어 있다. 이 곳의 menu.lst 파일을 조작하면 부팅설정 변경이 가능하다.


4. < /dev > : "devices" 리눅스에서 사용하는 장치를 쓸 때 필요한 특수파일이 위치하는 디렉토리
시스템의 각종 디바이스들에 접근하기 위한 디바이스 드라이버들이 저장되어 있는 디렉토리이며 물리적인 용량을 갖지 않는 가상 디렉토리이다. 리눅스는 입출력을 파일로 대신하는 구조로 이루어져 있다. 플로피나 하드드라이브는 MS 윈도우에서 드라이브명(a:, c:)을 할당 받지만 리눅스에서는 단지 단순한 파일로 대체된다. 따라서 시스템은 각각의 장치로부터의 정보를 /dev 디렉토리에 존재하는 해당 장치 파일로부터 가지고 온다.
크게 블록장치(block device)와 문자장치(character device)로 나뉠 수 있다. 블록장치란 HDD와 같은 주변 장치를 말하는데, 데이터가 블록 단위로 읽고 쓰여지며 랜덤하게 액세스할 수 있다. 반면 문자장치는 입출력이 한 바이트 단위로 이루어지며 데이터가 순차적으로 읽고 쓰여진다. 장치를 새로 만들때에는 mknod 명령을 이용하면 되며 /bin에 위치해 있다.
* 플로피 디스크 디바이스: fd0, 첫 번째 FDD의 디바이스로 두 번째의 경우는 0 대신 1을, 세 번째의 경우는 2를 써준다.
* IDE 하드 디스크 디바이스*: hda, hda1, 마지막 부분의 hda에서 'a'는 위치를 나타내는 것으로, 'a'는 primary master, 'b'는 primary slave, 'c'는 secondary master, 'd'는 secondary slave를 의미한다. 그리고 그 뒤 숫자가 없을 경우에는 전체를 의미, 숫자를 달 경우에는 파티션을 의미한다. (요즘은 거의 sda로 대체되고 있음)
* SCSI 하드 디스크 디바이스*: sda, sda1, IDE 하드 디스크 디바이스와 같으나 h 대신 s를 쓴다.
* CD-ROM 디바이스: cdrom
* 블록단위입출력장치: hda, hdb, hdc, hdd 등(SCSI 장치는 sda, sdb, sda1, ...)
* 콘솔장치: tty1, tty2, tty3, ...
* 프린터: lp, lp0, lp1 ...
* 포트: ttys0, ttys1, ttys2, ttys3 ...


5. < /etc > : 응용프로그램과 서버프로그램의 환경설정파일이 존재하는 디렉토리
리눅스에서 없어서는 안 될 디렉토리이며, 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리이다. 이 디렉토리에 있는 대부분의 파일들은 시스템 관리자에 의해서 관리되는 파일들이다. 여기 파일들을 조작해 프로그램 설정을 변경할 수 있다. 시스템을 백업하고자 할 때는 꼭 이 디렉토리를 가장 먼저 백업해야 한다. 웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스 워드 관리, 시스템의 파일 시스템 관리 파일, 여러가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스템 전반에 걸친 거의 모든 환경 설정 파일들이 모두 저장되어 있다. (여기를 자주 들려야 리눅스 실력이 향상됩니다.)
* /etc/profile - 윈도우의 autoexec.bat에 해당. 여기서 프롬프트를 변경하거나 시작 프로그램을 추가할 수 있다. bash나 csh, tcsh 사용자가 로그인할 때 기본으로 읽어들여 초기화시키는 파일이다. 그러므로 모든 사용자에게 공통으로 적용할 쉘 관련 사항이 있다면 이 파일을 수정하면 된다. 각 사용자들은 자신의 홈 디렉토리에 개별 설정 파일이 있으므로 역시 원하는 대로 설정할 수 있다.
* /etc/fstab - 시스템 부팅시 처리되는 마운트와 관련한 사항들이 기록되어 있다. 파일 시스템의 마운팅 여부를 설정한다. 하드나 파티션을 추가한 경우 이 곳의 설정을 변경한다.

/dev/hda1    /          ext2 defaults  1 1 
/dev/hdb5    /home      ext2 defaults  1 2 
/dev/hdb2    /public    ext2 defaults  1 2 
/dev/hda2    /public2   ext2 defaults  1 2 
첫 번째 항목은 마운트 될 디바이스가 적혀 있다. 두 번째 항목은 마운트 시킬 마운트 포인트가 적혀 있다. 세 번째 항목은 해당 디바이스의 파일 시스템 타입이 적혀 있다. ext2는 리눅스에서 사용하는 파일 시스템이며, msdos와 vfat는 각각 msdos와 windows에서 사용하는 파일 시스템이고, iso9660은 CD-ROM에서 지원되는 파일 시스템이다.
* /etc/group - 사용자 그룹이 정의되어 있으며 다음과 같은 형식으로 쓰여져 있다.

Group Name:Password:GID:Member
* /etc/issue - 시스템에 로그인할 때 나타나는 'login:'위에 나타나는 메시지. 만약 로그인할 때 나타나는 메시지를 바꾸고 싶으면 /etc/rc.d/rc.local 파일의 맨 아래 부분에 # 로 시작되는 주석을 참고하자.
* /etc/motd - 'message of the day'의 약자로 로그인 직후의 메세지를 담고 있다. 관리자가 공지를 띄우는데 유용한 파일
* /etc/passwd - 사용자들의 계정 정보와 패스워드, 홈 디렉토리에 대한 정보를 담고 있으며 다음과 같은 형식으로 쓰여져 있다.

user ID:passwd(암호화상태):UID:GID:사용자 정보:홈디렉토리:로그인쉘
* /etc/shadow - 사용자들의 패스워드 파일
* /etc/init.d와 rcx.d - MS윈도우의 config.sys에 해당. 하지만 파일이 하나가 아니고 한 디렉토리가 꽉 찬다. 리눅스 시작시 시동해야 할 데몬이나 스크립트들이 모여 있다.
In Windows, Registry


6. < /home > : 일반 사용자의 홈 디렉토리
시스템 계정 사용자들의 홈 디렉토리와 ftp, www 등과 같은 서비스 디렉토리들이 저장된다. 이곳의 디렉토리와 파일들은 시스템에서 사용되지 않는다. 사용자들을 위한 공간으로 사용자의 개인설정 파일과 바탕화면, 문서 등이 저장된다.
In Winodws, C:\windows\profiles, c:\MyDocuments


7. < /lib > : 부팅과 시스템 운영에 필요한 공유라이브러리와 커널모듈이 들어 있음


8. < /mnt > : 임시용 마운트용 디렉토리
외부 장치인 플로피 디스크, CD-ROM, Samba 등을 마운트하기 위해서 제공되는 디렉토리이다. 이 디렉토리는 임시로 사용되므로 프로그램은 /mnt 디렉토리에 어떠한 파일 시스템이 마운트되었는지 자동으로 인식하지 않는다. 또한 /mnt는 보통 여러 개의 하위 디렉토리로 나누어 사용하며, 평소에는 각 디렉토리는 비어 있는 상태이다.


9. < /proc > : 프로세스와 시스템 정보를 담은 가상 파일 시스템
실제 파일이 아니라 메모리에서 실행되고 있는 프로세스를 보여주는 곳이다. Process란 실제 메모리에서 실행되는 프로그램이라 생각하면 된다. 디렉토리내에 파일명으로 존재하는 디렉토리는 커널정보를, 숫자로 존재하는 디렉토리는 현재 실행되는 프로세스의 정보를 담고 있다. 하나의 프로그램이 구동되면 해당 프로세스의 PID 번호 디렉토리를 생성하여 프로세스의 진행상황을 추적, 관리할 수 있음 우리가 흔히 사용하는 ps 프로그램이 여기에서 프로세스 정보 등을 참조한다.

10. < /root > : 시스템 관리자인 root의 홈디렉토리


11. < /sbin > : "safe binary"시스템 관리용 실행 파일들이 있는 곳
시스템 관리자가 사용하는 실행 명령어들이 들어 있다. fdisk, mkfs, init, halt 등 시스템 관련 파일이 위치한다. 잘못 조작할 경우 전체 시스템에 이상을 초래할 수도 있다.


12. < /tmp > : 임시 파일 생성용 디렉토리
프로세스 진행과정에서 발생하는 임시파일을 저장하는 디렉토리. 시스템 재구동시 모두 삭제되므로 중요한 파일을 넣어두면 안된다. 디렉토리내 파일을 임의 삭제하면 안된다.

13. < /usr > : 다양한 응용프로그램이 설치되는 곳
시스템에 필수적인 요소는 아니지만 사용자에게는 아주 중요한 디렉토리이다. 거의 모든 응용프로그램이 이 곳에 위치하며 일부 설정 파일도 들어 있다. 라이브러리도 존재하고 컴파일 환경도 위치하고 X Window가 여기 있다. (MS윈도우의 /Program Files해당)
* /usr/X11R6 - /usr/X11, /usr/X386 이 모두 /usr/X11R6 의 심볼릭 링크이다. /usr/X11R6/lib/X11 에는 X-윈도와 관련한 여러가지 파일 및 디렉토리가 있다.
* /usr/bin - /bin 에서 짐작되듯이, 대부분의 사용자 실행 명령어들이 담겨 있다. gcc나 perl등의 개발도구도 여기에 담겨 있다.
* /usr/doc - 역시 doc에서 유추할 수 있듯이 각종 리눅스에 관한 문서들이 담겨 있다. 책 사는 데 돈이 아까우신 분들은 이 디렉토리를 이용하면 좋을 것이다. 최신버젼의 문서를 보길 원한다면 kldp.org(Korea Linux Documentation Project)를 방문하면 많은 도움이 될 것이다.
* /usr/include - C, C++ 프로그램의 헤더 파일들이 담겨 있다.
* /usr/info - 여기에는 여러가지 GNU 프로그램들(gcc, make, autoconf...)의 info 파일들이 담겨 있다. 이 디렉토리를 이용하는 방법은 단순히 'info 프로그램 - ex) info gcc -'라고 치면 된다. 상당히 유용하므로 기본적으로 알아두자.
* /usr/local - 새로운 프로그램들이 설치되는 곳으로 프로그램 관리를 용이하게 할 수 있도록 되어 있다. make install로 프로그램 설치시 기본 디렉토리가 대부분 /usr/local 로 되어 있는 이유가 바로 그것이다. MS 윈도우에 있는 'Program Files'라는 디렉토리와 유사하다고 보면 된다.
* /usr/man - info 와 비슷한 역할을 한다. 메뉴얼 페이지가 담겨 있는 것으로 역시 'man 프로그램'을 쳐서 이용할 수 있다. 모르는 명령어들은 꼭 한 번씩 man으로 확인하는 습관을 갖길...
* /usr/src - 프로그램 소스들이 보관되어 있는 것으로 리눅스 커널이 위치하고 있는 곳이다.

12. < /var> : 시스템 운영 중에 생성되는 각종 임시 파일들이 있는 곳
내용이 자주 변경되는 가변자료가 저장되는 디렉토리. 시스템 운영 시 발생되는 log, 메일 송수신시 임시로 저장되는 spool, 프린트 spool, 웹서버 자료(/var/www) 등

[파일 시스템 표준안(FSSTND)]
1993년 8월, 리눅스의 파일 및 디렉토리의 구조를 다듬고자 표준 파일시스템 구조를 개발하는 움직임이 일었다. 그래서 탄생한 것이 1994년 2월 14일에 발표된 FSSTND(Filesystem Standard) 이다. 같은 해 10월 9일, 이듬해 3월 28일에 수정안이 발표되었다. 허나 1996년 초 리눅스 뿐 아니라 Unix에 기원을 두고 있는 다른 시스템에도 적용 가능하도록 범위를 확장하는 의미에서 이름이 Filesystem Hierarchy Standard (FHS)로 변경되었다.


[IDE(Integrated Device Electronics)/SCSI(Small Computer System Interface)]
메인보드와 저장장치(하드)를 연결하는 인터페이스
요즘 말하는 IDE는 EIDE를 지칭한다. 구 IDE에서 인식할 수 있는 하드 용량이 너무 작아서 개선시킨 인터페이스이다. 일반적인 하드를 연결시키는 가장 대중적인 인터페이스이다. SCSI는 IDE에 비해서 전송속도가 빠르고, 장치의 연결과 분리가 쉽고, 장비간의 호환성이 높다는 장점이 있고, 전용 호스트 어댑터가 입출력 데이터 전송을 처리하고 있기 때문에 입출력 데이터 처리를 프로세서가 직접 처리하는 IDE 방식에 비해 상당히 독립적으로 작동하기 때문에 프로세서의 점유율이 낮은 이점이 있다. SCSI 하드는 일반 IDE하드의 최고 분당회전수가 7,200RPM인데 반해 10,000, 15,000RPM의 고속으로 돌아가기 때문에 속도면에서는 유리하지만 소음과 비용문제에서 부담이 된다. 따라서 SCSI제품은 데이터베이스 서버, RAID, 오디오 및 비디오 편집 시스템 등 고급 시스템에서 많이 사용된다.

[ References ]