기본 콘텐츠로 건너뛰기

Character Device Block Device File


Device File은 Special File이라고도 하며, 일반 regular file과 달리 data block을 가지고 있지 않고 Application이 H/W Access를
필요로 할 때, 직접 H/W를 제어하는 Kernel과 Application과의 Interface역할을 한다. 따라서 하나의 Device가 동작하기 위해서는 Kernel에 Driver가 적재되어 있어야 하고 /dev 디렉토리에 Device file이 존재해야 한다.
<그림 6.1> Kernel과 Device file의 관계

1. Device File Type
    Device File은 I/O 형태에 따라 Block Device file과 Character Device file로 나뉜고 각 Device File의 특징은 표 6.1과 같다.


Block Device
Character Device
데이터   전송
System Buffer를 사용하여 데이터를 전송
데이터를 한 번에 한 문자씩 전송
I/O 전송 속도
전송속도가 높다
시스템의 I/O Buffer를 사용하지 않아 느릴 수도 있으나 버퍼처리를 응용프로그램이 제어하므로 응용프로그램의 성능에 따라 다를 수 있다.
대표적인 장치
하드디스크
테이프 드라이버
플로피 디스크
광 자기 디스크
단말기
프린터
플로터 및 기억장치
<표 6.1> Block Device File과 Character Device File의 특징

  보통 우리가 PC에 운영체제를 설치하기 위해 가장 먼저 해야하는 작업은 파티션을 나누고 포맷을 하는 일이다. 포맷을 한다
  는 것은 물리적인 디스크를 운영체제가 사용할 수 있도록 파일시스템을 설치하는 작업을 말하는데 파일 시스템을 설치해야
  하는 이유는 바로 물리적인 디스크와 운영체제가 사용하는 가장 작은 데이터의 단위가 다르기 때문이다.

  디스크는 최소단위가 섹터로 512Byte로 디스크의 동심원을 따라 일정하게 배열되어 있는 반면, 운영체제의 최소 단위는 파
  일이고 파일은 제각각 크기가 다르다. 따라서 운영체제는 물리적인 디스크를 블록단위로 나누고 각 블록에 주소를 부여하여
  디스크를 관리하게 되는데, Block Device의 Block은 File System에서의 블록을 의미한다고 할 수 있다.

  Block Device와 Character Device의 가장 큰 차이점은 Application의 I/O 요구가 있을 시, 데이터를 File System에서 읽어오느냐
  Character Device(Raw device)에서 읽어오느냐의 차이인데 File System에서 읽어올 경우 운영체제의 File System Cache에
  Buffering을 사용하고 Character Device에서 읽어 올 경우에는 파일시스템이 없기 때문에 당연히 파일, 디렉토리, 억세스 컨트
  롤 등을 Application에서 직접관리 해야한다.

  raw Device를 사용하는 대표적인 Application으로는 DBMS가 있고, 데이타 베이스는 자체적으로 블록과 익스텐트 등의
  스토리지 관리 개념을 가지고 있기 때문에 이것을 Raw Device가 아닌 운영체제의 File System을 사용할 경우 DBMS와 운영
  체제에서 이중으로 Buffering을 하기 때문에 효율적이지 못하므로 Raw Device를 사용한다.

  Raw Device와 File system의 장단점을 말하자면 파일관리측면에선 파일시스템이, 성능면에서는 Raw Device가 좋다고 할 수
  있다. 앞에서 말한 바와 같이 DBMS가 자체 IO버퍼를 설정 하기 때문에 OS 의 파일시스템 캐시가 필요 없게되고, 운영체제와
  Application의 더블 버퍼링 를 막음으로써 운영체제는 메모리 파일시스템 캐싱을 위한 메모리 매니지먼트( 메모리에 적재하여
  Block이 꽉차면 Disk에 write)가 필요없어지고,DBMS 에서만 버퍼링을 하므로 메모리를 덜 소모하게 된다.

  RAW의 장점은 KAIO(kernal async IO)도 있다. raw device는 I/O요구가 발생될때 유저라이브러리를 사용 하지 않고 커널 레벨
  에서 I/O 가 이루어 지므로 명령이 단순해 져서 결과적으론 CPU를 덜 사용하게 된다.

  하지만 File System은 관리측면에서 OS에서 지원하는 여러가지 Tool을 사용하여 관리 할 수 있는 반면, Raw device는 초기
  Setup이 어렵고, File System이 없기 때문에 Backup 및 관리에서도 어려운 면이 적지 않다.
  

 
<그림 6.2>



2. /dev directory의 구조
 
<그림 6.3> /dev directory의 구조
 앞서 말한 device file들은 /dev 디렉토리에 존재하며 그림 6.1과 같이 device type에 따라 각각 다른 디렉토리에 저장되고, 같은 type의  device도 Block device와 Character Device의 구분에 따라 각각 다른 디렉토리에 저장, 사용된다. 예를 들어 DISK의 경우 Block
 Device file은 /dev/dsk 밑에 존재하고 Character device file은 raw device의 "r"자를 붙여 /dev/rdsk 디렉토리에 존재한다.
3. Device Naming Convention


<그림 6.4> Disk Device naming convention의 예
 
 각 device file들은 제각각의 naming convention을 가지고 있으며 ,그림 6.4는 disk의 naming convention의 예를 보여 주고 있다.
 Disk는 "c#t#d#"의 naming convention을 갖는데 각각이 의미하는 바는  "c#"은 Card Instance Number, "t#"은 SCSI Target Number,
 "d#"은 LUN Number를 뜻한다.
Card Instance Number


Card Instance Number는 Disk가 연결되어 있는 Interface Card의 Instance Number를 뜻한다. Instance Number란 같은 Class의 device를 구분하기 위해 시스템에서 할당하는 번호를 말하며, 그림 6.4와 같이 ioscan 명령을 사용하여 확인 할 수 있다.

SCSI Target Number

SCSI Target Address는 SCSI 장비 설치 시 SCSI 장비에서 Dip Switch나 Pin jumper로 직접 세팅할 수 있고, ioscan 명령으로 H/W Path를 확인하면 알 수
있다.

Logical Unit Number

LUN(Logical Unit Number)은 Disk 여러 개로 Array 구성 시 각 disk에 할당되는 순번이며 이 역시 ioscan 명령으로 H/W Path를 확인하면 알 수 있다.

<표 6.2> Device naming convention의 의미
  각 Device에 따른 naming convention의 형식의 예는 표6.3과 같다.


   
Device File의 종류
Example
Description
Disk Block device file
/dev/dsk/c0t3d0

Card Instance Number는 0, SCSI Target Numger는 3, LUN Number는 0

Disk Character device file
/dev/rdsk/c0t3d0

Card Instance Number는 0, SCSI Target Numger는 3, LUN Number는 0

DAT/DDS Tape device file
/dev/rmt/c0t2d0

Card Instance Number는 0, SCSI Target Numger는 2, LUN Number는 0

/dev/rmt/0m

Tape device는 disk와 같은 naming convention을 사용할 수 있지만 대부분 /dev/rmt/0m과 같이 기존의 방식을 더 많이 사용하고 있다. “0m”에서 숫자 0은 System에 설치된 Tape Device의 순서이다.

Option

/dev/[r]mt/cCtTdD[option]
/dev/[r]mt/T[option]

BEST

압축을 지원하는 Tape 사용 시 압축

h|m|l

밀도지정 high, medium, low

n

No Rewind로 data기록 후 되감지 않고
정지

Terminal device file
/dev/tty0p3

tty0p3에서 숫자 0은 MUX Card Instance Number이며, p3은 Port Number를 뜻한다.

Modem device file
/dev/ttyd0p3

모뎀의 device 파일은 Incomming, Outgoing, direct connection 세 가지가 각각 naming convention이 다르다.

ttyd0p3은 incoming modem의 device file이고, ttyd0의 숫자 0은 MUX Card Instance Number, p3은 Port Number를 뜻한다.

/dev/cul1p2

cul1p2는 outgoing modem의 device file이고, cul1의 숫자 1은 MUX Card Instance Number, p2는 Port Number를 뜻한다.

/dev/cua1p1,

cua1p1은 direction connection modem의 device file이고, cua1의 숫자 1은 MUX Card Instance Number, p1는 Port Number를 뜻한다.

MUX(Multiplexer)

복수회로에서 입력되는 신호 중 어느 하나의 입력신호를 선택하여 출력회로에 실어 주는 기능을 수행하는 데이터 선택 논리회로이며, 또한 이를 채용한 통신장비를 의미하기도 한다.

<표 6.3> Device file naming convention


댓글

이 블로그의 인기 게시물

UNIX C errno 정리( 에러 번호 )

#define EPERM   1   /* Operation not permitted      */ #define ENOENT  2   /* No such file or directory        */ #define ESRCH   3   /* No such process          */ #define EINTR   4   /* interrupted system call      */ #define EIO 5   /* I/O error                */ #define ENXIO   6   /* No such device or address        */ #define E2BIG   7   /* Arg list too long            */ #define ENOEXEC 8   /* Exec format error            */ #define EBADF   9   /* Bad file descriptor          */ #define ECHILD  10  /* No child processes           */ #define EAGAIN  11  /* Resource temporarily unavailable */ #define ENOMEM  12  /* Not enough space         */ #define EACCES  13  /* Permission denied            */ #define EFAULT  14  /* Bad address              */ #define ENOTBLK 15  /* Block device required        */ #define EBUSY   16  /* Resource busy            */ #define EEXIST  17  /* File exists              */ #define EXDEV   18  /* Improper link            */ #define ENODEV  19  /* No such

Baud Rate 와 Bit Rate 의 차이점

출처 - http://solvline.com/technical_info/tech_note_view.php?no=22&fno=&PHPSESSID=f5f096a5b1090ca017552de78745b8aa 1. Bit Rate 와 Baud Rate 의 정의 1.1 Bit Rate 정의 비트 레이트 (Bit Rate) 는 초당 얼마나 많은 데이터 비트 (‘1’ 또는 ‘ 0’) 를 전송할 수 있는가를 나타내는 말이다 . 또 우리가 자주 쓰는 BPS 라는 말이 있는데 이는 Bit Per Second 로서 초당 보낼 수 있는 비트의 수를 나타낸다 . 이는 모뎀의 전송속도를 측정하는 단위로 사용되어 졌다 . 일반적으로 28,800 모뎀이라면 28,800bps 의 전송속도를 나타내는 것이다 . 예를 들어 , 2400bit/second(bps) 라면 초당 2400 개의 비트 정보를 전달할 수 있다는 뜻이다 . 이는 반대로 이야기하면 1 비트 정보를 보내기 위해서 416.6us 의 시간 (1s/2400bit) 이 필요하다는 이야기이다 . 1.2 Baud Rate 보 레이트 (Baud Rate) 는 초당 얼마나 많은 심볼 (Symbol, 의미 있는 데이터 묶음 ) 을 전송할 수 있는가를 나타내는 말이다 . 이는 이론적인 통신 단위로 초당 신호 (Signal) 요소의 수 를 나타낸다 . 만약 하나의 신호요소가 2 비트로 구성되어 있는 경우라면 보는 BPS 의 반이 된다 . 즉 , 1 보 동안 2 비트가 전송된다 . 일반적으로 신호를 1 비트로 여긴다면 BPS 와 같은 단위가 된다 . 심볼이란 말은 의미 있는 데이터 비트의 묶음이다 . 일반적으로 시리얼 통신에서는 데이터 비트가 8-bit 를 사용하므로 이를 하나의 심볼이라고 이야기 할 수 있다 . 1 개의 symbol ( 또는 character) 는 8 개의 bit 정보와 같다 . 예를 들어 , 2400 baud rate 를 갖는다는 말은 1 초에 2400 개의

시리얼(Serial) 이란?

출처 - http://www.ni.com/white-paper/2895/ko/#toc4 시리얼은 거의 모든 PC에서 표준으로 사용되는 디바이스 통신 프로토콜입니다. 시리얼의 개념을 USB의 개념과 잘 구분하십시오. 대부분의 컴퓨터에는 2개의 RS232 기반 시리얼 포트가 있습니다. 시리얼은 또한 여러가지 디바이스에서 계측을 위한 일반 통신 프로토콜이며, 여러 GPIB 호환 디바이스에는 RS232 포트가 장착되어 있습니다. 뿐만 아니라, 원격 샘플링 디바이스로 데이터 수집을 하는 경우에도 시리얼 통신을 사용할 수 있습니다. 시리얼 통신의 개념은 간단합니다. 시리얼 포트는 정보의 바이트를 한번에 한 비트씩 순차적으로 송수신합니다. 한번에 전체 바이트를 동시에 전달하는 병렬 통신과 비교하면 시리얼 통신은 속도가 느리지만 훨씬 간단하며 장거리에도 사용할 수 있습니다. 예를 들어, 병렬 통신용 IEEE 488 스펙을 보면 기기간 케이블링은 총 20 m 미만이어야 하며, 두 개의 디바이스간은 2 m 미만이어야 합니다. 반면 시리얼 통신은 최대 1.2 Km의 통신거리를 보장합니다. 통상 엔지니어들은 ASCII 데이터를 전송할 때 시리얼 통신을 사용합니다. 이 때 송신용 (Tx), 수신용 (Rx), 그라운드용 (GND)의 세 가지의 전송 라인을 사용하여 통신합니다. 시리얼은 비동기식이므로 포트는 한 라인에서 데이터를 전송하고 다른 라인에서 데이터를 수신합니다. 핸드쉐이킹용 라인도 사용 가능하지만 필수 요구사항은 아닙니다. 시리얼 통신의 가장 중요한 특징에는 보드 속도 (baud rate), 데이터 비트, 정지 비트, 패리티가 있습니다. 두 개의 포트가 통신하기 위해서는 이러한 파라미터가 반드시 적절하게 맞춰져야 합니다. 보드 속도는 통신의 속도를 측정하는 수치이며 초당 비트 전송 숫자로 표시됩니다. 예를 들어 300 보드 속도는 초당 300 비트를 의미합니다. 엔지니어들이 흔히 말하는 클럭 주기는 보드 속도를 의미합니다. 따라서 프로토콜에 4800