- UNIX Kernel
- UNIX의 핵심
- 특정 컴퓨터 시스템에서 UNIX 환경을 구축하는 핵심기능을 구축
- 하드웨어와 직접적으로 관계하며 UNIX 시스템의 다른 부분이 하드웨어의 영향을 받지 않도록 함
- UNIX 유틸리티와 사용자 프로그램은 커널을 호출하여 서비스를 받음
- Kernel이 제공하는 서비스
- 파일관리와 보안, 입출력 서비스, 프로세서 스케쥴링과 관리
- 기억장소 관리, 인터럽트와 에러 처리, 날짜와 시간 서비스
- 시스템 작동 상황을 기록하는 사용상황통계 등
- UNIX의 이식 작업(Porting)은 커널의 하드웨어 의존부를 하드웨어에 맞게 변경하는 작업을 말한다.
- UNIX의 Kernel은 80개가 넘는 시스템 호출을 제공함.
- UNIX의 File System
- UNIX System은 여러 개의 물리적 디스크를 가지며 각각의 디스크는 하나 이상의 file system을 가지게 된다.
- 커널은 이런한 각각의 file system을 다루며 각각의 file system마다 device number(ex:/dev/dsk/c0t0d0s0)를 부여하며 이를 논리적 device로 다루게 된다.
- File System은 데이터를 file 단위로 저장하며 이 file들의 집합이 적절한형태로 구성된 것을 말하며 UNIX의 file system은 tree구조를 이룸
- 하나의 file system은 boot block, super block, inode list, data block으로 구성된다.
- Boot Block
- File System의 첫부분에 위치하며 Sun의 경우 첫번째 sector에 디스크 레이블이 들어가며 그 다음 15개 sector에 boot block가 들어감
- 이 16개의 sector는 8192byte(512*16)의 file system을 구성함
- Boot block에는 운영체제를 boot하거나 초기화 할 bootstrap code가 들어감
- 물론 시스템에서 boot하기위한 boot block이는 하나지만 각각의 file system은 boot block을 가지고 있음
- Super Block
- File System에 관한 중요한 정보를 저장하는 block
- 구성 요소
- File system의 크기, Free block의 수
- Inode list 크기, Free inode의 수, Free inod의 list, Free inode의 list 다음의 Free inode의 list
- Free block list와 Free inode의 list를 위한 lock field
- 이 Super block은 메모리에 적재되어 사용되므로 시스템을 정지하고자 할때는 항상 이 내용을 sync해야 함
- Inode list
- UNIX는 sequential file, index acess file, direct acess file 등의 파일 구조를 가지고 있지 않음
- 모든 파일은 index node 혹은 inode 라고 불리우는 정보 블록과 연결되어 있고 이 안에 다음과 같은 파일에 관한 정보를 포함한다.
- 파일의 길이
- 디스크 안의 파일의 소유 블록
- 파일의 소유주(UID & GID)와 이 파일을 다른 사용자가 이용할 수 있는지에 관한 정보
- 파일의 종류(일반, 특수, 디렉토리,…)
- 시스템 안에서의 reference counter(링크 수)
- 날짜 (생성일, 변경일, 접근일)
- 이 정보블럭 안에는 어떠한 파일이름도 들어있지 않으며 한 파일의 선택은 디렉토리라는 중간 과정을 통해서 이루어짐
- 디렉토리 또한 한 파일로 이루어졌기 때문에 이 안에는 시스템이 파일을 구별할 수 있도록 일련의 번호(Index)들과 이름이 나열되어 있음
- 이렇게 함으로써 어떠한 파일도 디렉토리를 통하여 쉽게 reference에 의한 구별이 될 수 있으며 한 파일이 여러 디렉토리안에 저장 가능함
- 만약 inode가 0이라면 이 파일은 완전히 삭제된 것을 의미함
- 디렉토리 또한 한 파일에 속하기 때문에 디렉토리는 다른 디렉토리의 reference를 가지고 있을 수 있음
- 이러한 구조는 우리가 일반적으로 생각하는 디렉토리 구조 tree구조와 유사하다.
- inode하나는 64byte의 크기를 갖는다.
- UNIX File의 종류\
- 일반 파일(ordinary file)
- 일반적인 데이터 파일과 소스코 등의 text file과 binary file을 말함
- UNIX에서는 확장자가 어떤 특별한 의미를 지니는 것이 아니고 단지 사용자가 편의상 사용하는 것이다.
- 따라서 확장자의 제한이 없다. 단지 컴파일러 등의 프로그램이 특별한 확장자를 요구할 뿐이다.
- File I/O는 커널 단계에서 buffering 작업을 해주기 때문에 file을 단순히 byte로 연결된 형태로 간주 할 수 있게 해준다.
- 이는 곧 디스크 상의 여러 곳에 저장되어 있는 file을 하나로 연결된 것처럼 해준다.
- UNIX에서 파일의 구조는 OS에 의해 제어되는 것이 아니고 이를 처리하는 프로그램에 의해 제어된다.
- Directory file
- 디렉토리는 파일을 저장하는 파일이다.
- 디렉토리는 파일을 포함하며 또한 파일을 포함하고 있는 서브 디렉토리를 가질 수 있다.
- 디렉토리는 일반 파일과는 다른 개념이지만 읽을 때는 일반 파일과 똑같이 취급되며 빈 디렉토리라도 ‘.’과 ‘..’ 두 파일을 가지고 있다.
- ‘.’는 자기 자신을 가르키며 ‘..’는 상위 디렉토리를 가르킨다.
- 특수 파일(special file)
- UNIX의 특별한 파일 타입으로 UNIX는 주변 장치도 하나의 파일로 간주하기 때문에 Printer, Tape, Memory 등은 파일 구조상의 하나의 파일로 나타낸다.
- 이러한 개념으로 UNIX는 모든 Device의 Input, Output 을 이 특수파일을 통해 Channel을 형성하여 처리한다.
- Hard link & Symbolic link file
- Link란 하나의 inode 에 여러 개의 파일이 연결되는 것을 뜻한다.
- 예를 들어 /home/user1/data라는 디렉토리가 있을 때 “..”파일은 user1 디렉토리의 ‘.’ 파일을 가르키고 있다.
- Hard link는 이러한 link의 개념과 같이 똑같은 inode를 가지는 파일을 생성하는 것이다.
- 이는 동일한 파일이 여러 곳에 존재하는 것과 같이 보인다.
- ‘ln’명령으로 새로 Hard link를 만들 수 있으며 새로운 Hard link 파일이 생성되어도 디스크 용량에는 변함이 없다.
- Symbolic link란 단지 한 파일
|