제 1 장 Unix 입문 1.1 Unix란 1.2 Unix의 구조
Unix 란? Unix란? 컴퓨터 운영체제, 즉 우리가 많이 접하는 DOS나 윈도우즈처럼 프로그램을 실행시키고 자원을 관리하는 제어 프로그램 DOS나 윈도우즈는 대부분 PC에서 쓰이고 있고, 워크스테이션에서는 Unix를 기본 운영체제로 사용하고 있는 것이 일반적 Unix에는 System V 계열과 BSD 계열이 있고 PC에서 쓰이는 Linux가 있음.
Unix 의 역사(1/5) Unix는 다른 운영체제와는 달리 통신으로 서로 대화하고 싶은 많은 프로그래머들에 의해 개발,발전 1965년 AT&T의 Bell 연구소는 MIT 대학, GE(General Electric) 사와 함께 새로운 운영체제인 Multics를 개발할 목적으로 공동연구에 착수 Multics 운영체제의 개발 목적 다중사용자(multi-user) 멀티프로세서(multi- processor) 계층구조 파일시스템(hierarchical file system)
Unix 의 역사(2/5) 1969년 Bell 연구소- Multics의 성능에 만족하지 못하여 Multics 프로젝트 취소 프로젝트에 참여했던 Bell 연구소의 일부 프로그래머들 중의 한 명인 Thompson은 Ritchie의 도움으로 DEC 사의 PDP-7이라는 시스템에서 프로그래밍 작업하여 파일 유틸리티(cp, mv 등)와 쉘(shell)이란 명령어 해석기를 개발 새로 탄생한 시스템은 Unix라고 명명. 이것은 Multics가 한 가지 일도 제대로 못하면서 많은 일을 수행한다는 느낌을 주는 "multi"라는 의미를 내포하고 있는 점을 비꼬아 어떤 한 가지 일을 잘한다는 의미를 가진 "uni" 라는 의미를 함축하고 있는 Unix라는 이름으로 명명 이 후 Bell 연구소에서는 많은 연구원들이 성능이 뛰어난 Unix 시스템을 사용하기 시작 1971년 Ritchie는 B 언어를 기초로 하여 작성한 C 언어를 개발 이때 Unix 시스템은 PDP-11상에서 실행되었고, 시스템 환경은 8K 바이트의 사용자 메모리를 포함하여 16K 바이트의 메모리에 512 바이트의 디스크를 장착한 상태
Unix의 역사(3/5) Unix 시스템의 첫 번째 용도 Bell 연구소의 특허담당 부서에서 문서처리 도구로 사용 프로그래머 환경 단순한 사용자 인터페이스 강력한 기능을 수행하기 위해 결합해서 사용할 수 있는 단순한 유틸리티 계층적인 파일 시스템 파일 포맷과 일관성을 갖는 단순한 장치 인터페이스 다중사용자, 멀티프로세서 시스템 사용자에게 독립적이고 투명한 시스템 구조
Unix의 역사(4/5) 1973년 모든 Unix 시스템을 이식성과 속도를 높이기 위해 C 언어로 재작성 1970년대에 들어서 AT&T 사에서는 Unix 시스템을 판매하고자 하였 으나 그때 당시의 독점금지법으로 인하여 이를 판매 불가 이로 인하여 Bell 연구소에서는 아주 싼 가격으로 여러 대학에 Unix 시스템을 판매 그 중에 Berkely 대학에서는 이를 꾸준히 발전시켜 BSD 계열의 Unix 시스템을 일반에 배포 1977년 500개의 Unix 사이트 개설 1980년 BSD 4.1 (Berkely Software Development) 1983년 SunOS, BSD 4.2, SysV
Unix의 역사(5/5) 1984년 - 다양한 능력을 가진 수많은 플랫폼에서 100,000 개의 Unix 사이트 운영 1988년 - AT&T와 Sun Microsystems 사가 공동으로 System V Release 4(SVR4)를 개발. 이후 UnixWare와 Solaris 2로 발전 1993년 - Novell 사가 AT&T 사로부터 UNIX를 구매 1994년 - Novell 사는 X/OPEN을 "UNIX"로 명명 1995년 - SCO(Santa Cruz Operations) 사가 Novell로부터 UnixWare를 구매. SCO 사와 HP(Hewlett-Packard) 사는 공동으로 64-비트 Unix 버전을 개발할 것을 발표 1996년 - IDC(International Data Corporation)에서는 1997년에 3백 만 개의 Unix 시스템이 배포될 것이라고 예측
간략한 Unix 계통도
Unix의 구조 운영체제 Unix는 여러 층(layered)으로 구성된 운영체제 사용자 프로그램은 표준 시스템 콜(system calls)의 집합을 포 함하고 있는 커널(kernel)을 통하여 서로 대화 Unix는 다중사용자(multi-user), 멀티프로세서(multi-processor) 운영체제
파일 시스템(1/2) Unix 파일 시스템은 역트리(inverted tree) 구조의 모양 루트(/) 디렉토리로부터 시작하여 위에서 아래로 서브디렉토리들을 따라가면서 작업 가능
파일 시스템(2/2) 노드 디렉토리 경로명: 파일 혹은 디렉토리를 지정 파일 혹은 파일들로 구성된 디렉토리 중의 하나 다른 파일 혹은 다른 디렉토리(서브디렉토리)를 포함 경로명: 파일 혹은 디렉토리를 지정 절대경로명 파일 시스템의 루트(/)부터 출발하여 각 서브디렉토리를 슬래쉬(/)로 분리하면서 원하는 파일에 도달할 때까지 기술 상대경로명 현재의 작업 디렉토리에서 상대적인 경로를 지정하는 것 . 현재의 디렉토리 .. 현재 디렉토리의 부모 디렉토리
Unix 디렉토리, 파일, Inodes(1/2) 커널 inode라고 하는 구조로 각 파일에 관한 정보를 관리 사용자가 이러한 정보를 볼 수 있는 방법은 ls 명령을 이용하는 것 예) "ls -al /bin/csh"라고 입력하면 파일 유형과 접근권한(permissions)을 의미하는 모드(mode), 크기, 최종 갱신 날짜, 소유자, 그룹, 링크 카운트, 유형 등을 보여줌
Unix 디렉토리, 파일, Inodes(2/2) 첫 번째 필드는 파일의 유형과 접근권한 모드를 지정 첫 번째 문자는 하이픈(-)으로 이는 정규 파일을 의미 Unix에서는 파일의 여러 가지 유형을 이처럼 한 문자로 인코딩하여 표시하는데 전체 내용은 <표 1.1>과 동일.
inode inode 번호 모든 디렉토리와 파일은 부모(parent) 디렉토리에서 볼 수 있음 루트(/) 디렉토리의 경우에는 그 자신이 부모 디렉토리이기도 함 디렉토리란 자신이 포함하고 있는 파일들의 목록을 테이블로 가지고 있는 파일 그 목록을 보면 파일명에 inode 번호를 부여 inode는 인덱스 노드(index node)라고 부르며, 각 파일마다 하나의 inode를 부여 inode 번호는 DOS에서의 FAT(File Allocation Table)과 유사 inode 테이블은 커널이 파일에 관한 정보를 알 수 있도록 각 파일의 위치에 관한 자세한 정보를 담고 있는 테이블 inode는 파일에 관한 접근권한, 소유자, 생성된 날짜, 최근 접근 시간, 그 파일을 포함하고 있는 디스크상의 데이터 블럭(data blocks)의 위치 등 파일에 관한 모든 사항을 포함
논리적인 디스크 설계 및 Inode 블록 내용
Unix 파일 시스템의 특징 Unix 시스템은 파일 자체에 데이터를 위한 어떤 특별한 구조도 요구하지 않음 파일은 ASCII 혹은 바이너리(binary)로 구성될 수 있고, 텍스트, 쉘 스크립트, 컴파일된 목적코드, 디렉토리 테이블 등 그 어떤 것도 표현 가능 주의!! Unix는 DOS와 달리 파일의 일부로 헤더(header), 트레일러(trailer), 레이블(label) 정보, EOF(End_Of_File) 문자가 존재하지 않는다는 점
Unix 프로그램 프로그램 혹은 명령(커맨드) 쉘 시스템 프로그램 환경을 제공하기 위해 커널과 대화하며, 사용자가 요청한 기능을 수행 쉘 스크립트라는 실행 가능한 쉘 파일 내장된 쉘 명령 소스를 컴파일한 목적코드 파일 쉘 명령어 해석기 사용자는 쉘을 통하여 커널과 대화하며, 쉘 상에서 ASCII(텍스트) 스크립트를 작성 시스템 프로그램 대개 C 소스 코드를 컴파일한 바이너리 코드 주로 /bin, /usr/bin, /usr/local/bin, /usr/ucb 등에 위치 사용자가 Unix에 대해서 기대하는 대부분의 기능들을 제공