1 / 51

UNIX Unbounded A Beginning Approach

UNIX Unbounded A Beginning Approach. 이 성 현 Home : nimilx2.hannam.ac.kr E-mail : shlee@netwk.hannam.ac.kr Tel : +82-42-629-7559. 목차. 파일 시스템 개요 UNIX 파일 유형 디렉토리 디렉토리 명령어 파일 내용 화면에 출력하기 파일 내용 프린팅 파일 삭제. 요약 질의 및 응답 실습 예제. 파일 시스템 개요. 개요 파일 시스템 인터페이스는 비교적 안정적 , 점진적으로 발전

betha
Télécharger la présentation

UNIX Unbounded A Beginning Approach

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX UnboundedA Beginning Approach 이 성 현 Home : nimilx2.hannam.ac.kr E-mail : shlee@netwk.hannam.ac.kr Tel : +82-42-629-7559

  2. 목차 • 파일 시스템 개요 • UNIX 파일 유형 • 디렉토리 • 디렉토리 명령어 • 파일 내용 화면에 출력하기 • 파일 내용 프린팅 • 파일 삭제 • 요약 • 질의 및 응답 • 실습 예제

  3. 파일 시스템 개요 • 개요 • 파일 시스템 인터페이스는 비교적 안정적, 점진적으로 발전 • 프레임워크는 초기 버전과 달리 완전히 바뀜 • 초기 유닉스 시스템은 한 타입의 파일 시스템 지원 • 로컬 파일만 지원 • 최근 유닉스 시스템은 여러 시스템 타입을 지원하는 vnode/vfs 인터페이스로 대체 • 로컬 및 원격 파일 지원 • 시스템 V, BSD 4.2 이전은 s5fs 지원 • BSD 4.2는 Fast File System(FFS) 채택

  4. / bin etc dev usr vmunix local lib passwd passwd hosts 파일 시스템 개요 • 파일에 대한 사용자 인터페이스 • 파일, 디렉토리, 파일 디스크립터, 파일 시스템 등의 개념을 제공

  5. 파일 시스템 개요 • 파일과 디렉토리 • 서로 다른 타입의 파일 시스템은 고유 내부 디렉토리 포맷 사용 • POSIX.1 은 디렉토리 연상용의 표준 라이브러리 루틴을 규정 • dirp = opendir (const char *filename); • direntp = readdir (dirp); • rewinddir(dirp); • status = closedir(dirp); • 복귀되는 디렉토리의 포맷은 파일 시스템 독립적 struct dirent { ino_t d_ino ; /* inode 번호*/ char d_name [NAME_MAX+1] ; /* null로 끝나는 파일 이름*/; }

  6. 파일 시스템 개요 • 파일 속성 • i-node가 파일의 속성 보관 • i-node의 포맷 및 내용은 파일 시스템 종속적 • Stat와 fstat 시스템 콜이 파일 속성 복귀 • 파일 시스템 독립적 포맷 • 파일 속성을 조작하는 시스템 콜 • link, unlink, utimes, chown, chmod • 일반적인 파일속성 • file type ( 디렉토리, FIFO, 심볼릭 링크, 특수파일) • 하드 링크의 수, - 파일 크기(바이트 수) • 디바이스 id, - inode number • 타임스탬프, 허가 및 모드 플래그 • 세 개의 모드플래그 - suid, sgid, sticky • suid가 on이면 수행시 effective UID를 파일의 소유자로 변경 • 파일이 group-execute 허가 없고, sgid=on이면, mandatory file/record locking이 enable 상태임 • sticky 플래그는 수행 파일 수행 후 프로그램 이미지를 스왑 영역에 유지 요구

  7. file offset fd1 offset fd2 파일 시스템 개요 • 파일 디스크립터 • fd = open(path, oflag, mode); • 파일 디스크립터는 오픈 파일의 핸들(또는 참조 번호) 역할 • 파일 디스크립터는 프로세스별 객체임 • 파일 처음 오픈 시 옵셋=0 으로 설정 • dup, dup2 시스템 콜로 디스크립터 복사가능

  8. 파일 시스템 개요 • 파일 디스크립터 • Data structure after Open fd1 = open(“/etc/passwd”, O_RDONLY); fd2 = open(“local”, O_WRONLY); fd3 = open(“/etc/passwd”, O_RDWR);

  9. 파일 시스템 개요 • 파일 디스크립터 • Data structure after Two Process Open files (in process B) fd1 = open(“/etc/passwd”, O_RDONLY); fd2= open(“private”, O_RDONLY);

  10. 파일 시스템 개요 • 파일 디스크립터 • 알고리즘

  11. 파일 시스템 개요 • 파일 디스크립터 • A Reader and a Writer Process

  12. 파일 시스템 개요 • 파일 디스크립터 • Table after Closing a File

  13. 파일 시스템 개요 • 파일 입출력 • 디폴트는 순차 액세스 • 옵셋 유지 • nread = read(fd, buf, count) • 파일 시스템 • 루트 파일 시스템에 다른 파일 시스템이 마운트 됨 • /usr 디렉토리의 원래 파일들은 hidden(covered) • 원래의 s5fs와 FFS 구현은 마운팅 테이블 사용하여 마운트된 파일 시스템 관리 • 현태의 유닉스는 vfs 리스트 사용

  14. 파일 시스템 개요 • 파일 시스템

  15. 파일 시스템 개요 • 파일 시스템 • 논리 디스크 • 논리 디스크는 저장장치에 대한 추상화 개념 • 고정 크기, 무작위 액세스 기능 블록의 선형 순서로 구성 • newfs 또는 mkfs가 유닉스 파일 시스템 생성 • 하나의 논리 디스크는 하나의 파일 시스템만 포함 • 일부 논리 디스크는 스왑 공간으로 사용(파일 시스템을 포함하지 않음) • 논리 디스크는 물리 디스크를 다양하게 매핑 • 단순한 경우 : 각 논리 디스크가 하나의 물리 디스크 전체로 매핑 • 일반적인 경우 : 하나의 디스크를 물리적으로 연속된 파타션(하나의 논리 장치)으로 분할 • 현대 유닉스 시스템은 다수의 디스크를 하나의 논리 디스크로 구성 가능

  16. 파일 시스템 개요 • 특수 파일 • 파일 추상 개념을 일반화 • 모든 입/출력 관련 객체 • 디렉토리, 심볼릭 링크, 하드웨어 장치, 가상 장치(메모리)와 파이프, 소켓 등을 포함 • 파일을 단순한 바이트 스트림으로 취급 • 심볼릭 링크 • symlink 시스템 콜로 생성 • 다른 파일을 가리키는 특수 파일 • 디렉토리를 링크 가능(파일 트리를 논리적으로 재구성 가능) • 다른 파일 시스템의 파일을 링크 가능

  17. reference count = 1 /usr/joe description of file … foo … /usr/sue reference count = 1 … /usr/joe/foo bar … directories 파일 시스테 개요 • 특수 파일 • 심볼릭 링크

  18. 파일 시스템 개요 • 특수 파일 • 파이프와 FIFO • FIFO는 mknod로 생성 • Pipe는 pipe 시스템 콜로 생성 • 파이프는 액티브 리더와 라이터 수를 유지 • BSD 변형들은 소켓으로 파이프 구현 • SVR4 pipe는 양방향임

  19. System calls Vnode layer PC file System 4.2 BSD file System NFS NFS server Network Disk Floppy 파일 시스템 개요 • VFS(Virtual File System) • 다수 파일시스템 타입을 동시 지원(s5fs, vfs, DOS 등) • 디스크 파티션마다 파일 시스템 타입이 다를 수 있음 • 이들이 서로에게 마운트 된 후에는 단일 균질 파일 시스템으로 보여야 함 • 네트워크 상에서 파일 공유 지원 • 새로운 파일 시스템 타입을 쉽게 생성 추가 가능

  20. System open file list struct file struct file *file f_vnode vfs mount list VNODE VNODE rootvfs v_data v_data VFS VFS v_vfsp INODE INODE vfs_next vfs_next v_op v_op vfs_data vfs_data vfs_mountedhere root vnode super block root vnode super block vnodeops vnodeops vfs_op vfs_op vfs_vnodecovered vfsops vfsops vsw_vfsops v_vfsp vfssw[] vnode of mounted on directory in rootvfs 파일 시스템 개요

  21. 파일 시스템 개요 • 파일 시스템의 마운팅 • Mount(spec, dir, flags, type, dataptr, datalen) • spec : 파일 시스템을 나타내는 장치 파일 • dir : 마운트 포인트 디렉토리 • type : 파일 시스템 종류 • dataptr : 파일 시스템 의존 인수에 대한 포인터 • datalen : 이들 인수의 전체 길이

  22. UNIX 파일 유형 • 유닉스 파일 • 유닉스 운영체제에서의 파일은 바이트들의 순서를 의미 • 유닉스는 다른 운영체제와 달리 레코드나 필드와 같은 구조를 지원하지 않음 • 유닉스 파일의 범주 • 일반 파일(Regular file) • 프로그래밍 코드, 데이터, 텍스트 등과 같은 바이트들의 순서 • Vi 편집기를 이용하여 생셩한 파일들은 일반 파일로서 사용자가 다루는 대부분의 파일 유형 • 디렉토리 파일(Directory file) • 일반적인 관점에서 다른 파일과 다른점이 없음 • 표준 ASCII 텍스트 파일 형태를 가지고 있지 않다 • 다른 파일에 대한 정보(예: 파일명)가 포함되어 있는 파일 • 운영체제가 지정한 특정 형식으로 여러 개의 레코드로 구성 • 특수 파일(Special file) • 프린터, 디스크 등과 같은 주변장치에 대한 특수 정보가 포함 • 유닉스는 파일로 입/출력 장치를 다루고, 시스템에 있는 프린터, 플로피 디스크, 터미널과 같은 각 장치는 별도의 파일을 소유

  23. 디렉토리 • 디렉토리 • 유닉스 파일 시스템의 필수적인 요소 • 디스크 상의 파일을 구성하는 구조를 제공 • 유닉스에서 디렉토리 구조는 계층적인 구조인 레벨로 나누어진다 • 사용자에게 특정 파일을 쉽게 찾을 수 있도록 파일을 구성할 수 있다 • 디렉토리는 사용자 파일에 포함되어 있는 정보가 들어있지는 않지만, 사용자가 파일을 구성하고 찾을 수 있는 참조 경로를 제공

  24. 디렉토리 • 중요한 디렉토리들 • 유닉스 시스템 파일을 표현하는 표준이 존재 • 디렉토리 접근 권한 • 일반 사용자는 자신의 홈 디렉토리에 생성한 자신의 디텍로리와 파일에 대해서만 모든 접근 권한을 가짐 • 유닉스 중요 디렉토리 요약 • / • 루트 디렉토리로서 최상위-레벨 디렉토리이며, 다른 모든 디렉토리가 이 디렉토리에서 파생 • /usr • 사용자 홈 디렉토리를 포함 • 대부분의 유닉스 시스템에서 /usr 디렉토리는 /home 디렉토리 • 사용자 중심의 디렉토리를 포함 • /usr/docs • 다양한 문서를 포함 • /usr/man • man 페이지를 포함 • /usr/games • 게임 프로그램을 포함

  25. 디렉토리 • /usr/bin • 사용자 중심의 유닉스 프로그램을 포함 • /usr/spool • 전자 우편 파일등을 포함하고 있는 mail과 프린터 파일을 포함하고 있는 spool과 같은 여러 개의 서브 디렉토리를 포함 • /usr/sbin • 시스템 관리 파일을 포함 • 일반 사용자가 접근하기 위해서는 특별한 권한을 가진 사용자로 변경해야 함 • /bin • 다양한 기본적인 유닉스 프로그램 파일을 포함하고 잇다. • /dev • 장치 파일을 포함 • 프린터와 디스크 등의 물리적인 컴퓨터 구성요소를 나타내는 특수한 파일 • /sbin • 유닉스 시스템에 의해 자동적으로 실행되는 시스템 파일을 포함 • /etc • 다양한 유닉스 구성 파일을 포함하고 있는 서브디렉토리들을 포함 • 일반적으로 텍스트로 구성된 파일을 포함 • 시스템 구성을 변경 가능하도록 편집할 수 있는 설정파일들이 존재

  26. 디렉토리 • 홈 디렉토리 • 홈 디렉토리란? • 사용자와 연관된 특정 디렉토리 • 사용자가 로그인할 경우 자동적으로 사용자의 홈 디렉토리에 위치 • 작업 디렉토리 • 사용자와 연관된 혹은 작업중인 디렉토리를 작업(working) 디렉토리 또는 현재(current) 디렉토리라고 부름

  27. 디렉토리 • 경로와 경로명 이해하기 • 경로명? • 파일 시스템 내의 파일의 위치 • 모든 파일을 경로명을 가진다 • 사용자는 루트 디렉토리부터 중간 디렉토리를 따라가면서 파일까지 경로를 추적하여 파일의 경로를 결정

  28. 디렉토리 • 절대 경로명(absolute pathname) • 루트부터 파일까지의 경로를 나타낸다 • 절대 경로는 항상 루트 디렉토리 이름인 /로 시작 • 예 • /usr/david/myfirst • 상대 경로명(relative pathname) • 경로명의 짧은 형식 • 작업 디렉토리로부터 파일까지의 경로 • 많은 디렉토리를 통하여 경로를 설명 • 예 • david/REPORT

  29. 디렉토리 • 파일명과 디렉토리 사용 방법 • 모든 일반 파일과 디렉토리 파일은 파일이름(파일명)을 가짐 • 유닉스 파일과 디렉토리 이름은 자유롭게 지을 수 있다 • 파일명이 최대 길이는 유닉스 버전과 시스템 제조사에 따라 다르다 • 모든 유닉스 시스템은 최소한 14자까지 허용하고 대부분 255문자까지 지원 • 사용자는 문자와 숫자를 조합하여 파일명을 결정 • 파일명에서 사용을 피해야 하는 문자 • <>, (), {}, [], *, ?, “, ‘, _, $, ^(탈출문자) • 유닉스 운영체제는 대소문자를 구분 • 일반 파일명과 디렉토리 파일명에 대한 구분이 없다 • 같은 이름을 가지는 디렉토리와 파일이 가능 • 파일명 확장자 • 파일의 내용을 분류하고 설명하는데 도움을 준다 • .c, .cpp 등

  30. 디렉토리 명령어 • 디렉토리 경로 보기 : pwd • 사용자의 작업 디렉토리의 절대 경로명을 표시

  31. 디렉토리 명령어 • 작업 디렉토리에 잇는 파일 위치 알아내기 • myfirst 파일의 위치 • 현재 작업디렉토리에 존재하므로 /usr/david/myfirst가 절대 경로명이 된다. • 다른 디렉토리에 있는 파일의 위치 알아내기 • 파일이 사용자의 작업 디렉토리와 다른 디렉토리에 잇을 경우, 사용자는 파일이 포함되어 있는 디렉토리를 지정할 필요성이 있다 • 예) • 사용자 작업 디렉토리 : usr • 사용자의 source 디렉토리에 있는 first.c파일의 경로 • david/source/first.c가 상대 경로명이다.

  32. 디렉토리 명령어 • 디렉토리 변경 : cd 명령어 • 작업 디렉토리를 지정한 디렉토리로 변경

  33. 디렉토리 명령어 • 홈 디렉토리로 돌아가기 • 특정 작업 디렉토리에서 홈 디렉토리로 돌아가기 위해서는 경로 변수를 사용 • $HOME : 홈 디렉토리의 경로를 포함 • cd $HOME

  34. 디렉토리 명령어 • 디렉토리 만들기 • 유닉스에는 디렉토리 구조에 대한 제한이 없음 • 효율적인 디렉토리 구조를 생성해야 할 필요성이 있음 • 디렉토리 생성의 이점 • 하나의 디렉토리안에 관련된 파일들을 그룹으로 만들면 해당 파일을 기억하고 액세스하기 쉽다 • 화면에 나타내는 파일들의 목록이 짧을수록 원하는 파일을 보다 빨리 찾을 수 있다 • 서로 다른 디렉토리 안에 저장된 파일에 대해 같은 파일명을 사용할 수 있다 • 디렉토리른 각 사용자에 대해 잘 지정한 공간을 이용하여 다른 사용자와 함께 저장 규모가 큰 디스크를 공유할 수 잇게 만들 수 있다 • 사용자는 디렉토리를 다루는 유닉스 명령어들을 이용할 수 있다

  35. 디렉토리 명령어 • 디렉토리 만들기 : mkdir 명령어 • 사용자가 작업 중인 디렉토리 아래나 명령어의 일부분으로 지정한 어떤 디렉토리 아래에 새로운 서브 디렉토리를 만든다.

  36. 디렉토리 명령어 • -p 옵션 • 단일 명령문 라인을 이용하여 전체 디렉토리 구조를 만들 수 있다 • 현재 디렉토리 밑에 다른 디렉토리 레벨을 만들기 위해서 사용하는 옵션

  37. 디렉토리 명령어 • 디렉토리 없애기 : rmdir 명령어 • 지정된 디렉토리를 삭제 • 반드시 비어 있는 디렉토리를 삭제 • 서브 디렉토리를 포함하지 않는 경우 • . 또는 ..으로 된 디렉토리가 아닌 파일을 포함하고 있지 않은 디렉토리

  38. 디렉토리 명령어 • 디렉토리 나열하기 : ls 명령어 • 지정한 디렉토리의 내용을 보여주기 위해서 사용 • 파일명의 알파벳 순서로 정보를 나열 • 목록에는 파일 이름과 디렉토리 이름을 포함

  39. 디렉토리 명령어 • ls 명령어의 옵션 • 사용자 파일에 대한 더 많은 정보를 얻거나 다른 형식으로 된 목록을 원할 때 사용

  40. 디렉토리 명령어 • ls –l 옵션에 의한 명령어 실행 결과

  41. 디렉토리 명령어 • ls 명령어 출력 유형 • 1열 • 10개의 문자로 구성되어 있다. 첫번째 문자는 파일의 유형을 나타내고 나머지는 접근 모드를 나타낸다. • 2열 • 숫자로 된 링크의 개수를 나타낸다. • 3열 • 소유자의 이름을 나타낸다. • 4열 • 그룹의 이름을 나타낸다. • 5열 • 파일의 크기를 바이트로 나타낸다 • 6열 • 파일의 수정한 최근 날짜와 시간을 보여준다. • 7열 • 파일의 이름을 보여준다.

  42. 디렉토리 명령어 • 파일 유형 • - : 일반 파일을 나타낸다 • d : 디렉토리 파일을 나타낸다 • b : 디스크와 같은 블록 중심의 특수 파일을 나타낸다 • c : 프린터와 같은 문자 중심의 특수 파일을 나타낸다 • 파일 접근 모드 • r : 읽을 수 있는 접근 권한이 부여됨 • w : 쓸 수 있는 접근 권한이 부여됨 • x : 실행 권한이 부여됨 • - : 접근권한이 부여되지 않음 • 링크의 숫자 • 해당 파일과 연결된 링크의 수 • 파일 소유자 • 파일의 소유자이며, 일반적으로 파일을 만든 사용자 ID와 같다. • 파일 그룹 • 시스템 관리자로부터 할당받은 사용자 ID와 그룹 ID를 표시한다. • 일반적으로 한 프로젝트에서 작업하고 있는 사람들은 동일한 그룹 ID를 얻는다 • 파일 크기 • 날짜와 시간 • 파일명

  43. 디렉토리 명령어 • 보이지 않는 파일 • . 으로 시작하는 파일 • . 과 .. 으로 구성된 디렉토리 엔트리 • 자동적으로 생성되는 엔트리 • 현재의 디렉토리와 한단계 상위 디렉토리를 의미 • 다중 옵션 사용하기 • 하나의 명령어 라인에 여러 개의 옵션을 사용할 수 있다. • ls –alr • ls –a –l –r • 명령어 옵션 출력하기

  44. 파일 내용 화면에 출력하기 • 파일의 화면 출력 : cat 명령어 • 파일의 출력, 생성, 연결을 위해서 사용

  45. 파일 내용 프린팅 • 프린팅 : lp 명령어 • 파일의 하드카피를 만들기 위해 프린터에 파일의 복사본을 보낸다

  46. 파일 내용 프린팅 • 명령어 옵션

  47. 파일 내용 프린팅 • 프린팅 : 리눅스에서 lpr 명령어 • 리눅스에서 사용하는 프린팅 명령어 • 파일을 지정하여 출력하기 위해서 사용 • 프린팅 요청 취소하기 : cancel 명령어 • 프린터 작업에 대한 요청을 취소하기 위해 사용하는 명령어 • 프린터 상태 보기 : lpstat 명령어 • 프린팅 요청에 관한 정보와 프린터 상태를 알아보기 위해 사용하는 명령어

  48. 파일 삭제 • 파일 삭제 : rm 명령어 • 파일을 삭제하기 위한 명령어

  49. 요약 • 유닉스 시스템에서의 파일 시스템 구조 • 디렉토리의 의미 • 디렉토리 명령어 이해 및 실습 • 파일 내용의 출력 • 파일 삭제

  50. 질의 및 응답

More Related