1장. UNIX의 개관
      

    UNIX란 하나의 운영체제이며, 뒤에서 자세히 설명하겠지만 대략적인 특징은 다음과 같다.   
        
      강력한 멀티태스킹   
      다수사용자 수용   
      강력한 네트워킹지원등을 기본내포한 운영체제   
      연관된 유틸리티의 공존   
        
    이 운영시스템은 본래 AT&T의 Bell연구소가 프로그래머들의 소프트웨어 개발 작업에 편리한 환경을 지원하려는 목적으로 작은 규모의 운영체제에서 시작된 것이다. 이러한 UNIX가 현재에 이르러서는 다음과 같은 우수성이 있다.   

      하드웨어로 부터의 독립성   
      소프트웨어 호환성   
      다양한 하드웨어 플랫폼사이의 네트워킹등의 풍부한 컴퓨팅 환경을 제공   
        
    위와 같은 기능을 할 수 있어서 개방 시스템으로서의 이행에 중심 역할을 담당하고 있다.    
    UNIX를 잘 사용하기 위해서는 그룹별 작업을 위해 사용자들끼리 그룹을 이루어 정보를 교환하는 것이 핵심이라 할 수 있다. 이러한 맥락으로 그룹웨어(groupware)라고도 가끔 부른다.   

    UNIX는 USER ID와 GROUP ID를 갖으며 각 파일과 디렉토리의 접근여부를 USER, GROUP, OTHER로 구분하여 권한을 제어한다. 즉, 같은 그룹 안의 USER들까지는 공개할 수 있는 자료는 서로 공유할 수 있으며, 각각의 데이터에 읽기·쓰기 권한을 부여할 수 있어 데이터의 성격에 따라 관리할 수 있다. 그리고 root를 제외한 다른 USER에게는 공개를 안할 수도 있으며, 개인의 데이터에 보안성을 부여할 수 있다. 하지만 이러한 보안은 root에게는 해당되지 않음을 항상 기억하기 바란다. 그리고 복수의 File System이 존재하는데 각각의 File System의 성격에 맞게 id를 부여할 수 있으며 또한 용량도 정할 수 있다. 그리고 같은 File System또는 다른 File System간에 Link를 적용할 수 있어 공간의 효율성이 제공된다.   

    이 장에서는 UNIX의 운영체제로서의 특징과 UNIX가 어떠한 하드웨어 환경 하에서 잘 돌아가며 그 하드웨어 환경이 어떠한 것이고 강력한 네트워킹을 지원하는 환경을 살펴보기로 한다. UNIX는 워크스테이션급에서 아주 잘 맞는 운영체제라 할 수 있는데 이유는 다수의 사용자들의 작업을 동시에 처리를 할 수 있는 능력을 가지고 있어야 하며, 각 프로세스마다 제어를 할 수 있어야 하기 때문이다. 즉, 각 프로세스마다 독립적으로 수행될 수 있도록 하드웨어 환경이 받쳐줘야 한다는 뜻이다. 그리고 하드웨어의 효율성을 높여서 시스템의 낭비를 최소화 할 수 있는 시스템이라야 한다. 이것은 도스 같은 경우 시스템 자원의 효율화가 잘 이루어지지 않았지만 UNIX는 다중사용자를 수용하며 처리할 수 있는 작업이 많기 때문에 당연히 시스템의 효율이 높아졌다 할 수 있다.  

    1.1 UNIX의 중점 사항 

    1.1.1 UNIX의 운영체제로서의 특징  

    기본적으로 UNIX는 OS의 한 부류이기 때문에 OS의 기능을 알아보면 다음과 같다.  
       
      응용프로그램과의 인터페이스를 정의하는 기능  
      응용프로그램들 사이에 시스템 자원을 공동으로 사용할 수 있게 하는 기능  
      입출력과 네트워크 통신을 보조하는 기능  
      시스템 작동을 모니터링하여 에러의 발생을 탐지하고 처리하는 기능  
       
    그렇다면 UNIX는 다른 운영체제에 비하여 어떠한 장점을 가지고 있는지 살펴보기로 한다.   
    제일먼저 손꼽을 수 있는 기능은 시스템의 사용자를 다수 수용할 수 있는 점이다. 이는 시스템에 직접 로그인(console login)을 할 수도 있으며 원격로그인(terminal login)도 할 수 있어 네트워크 기능을 기본적으로 포함하고 있음을 알 수 있으며, 각 사용자들의 사용권한과 환경설정등을 각기 달리할 수 있으며 멀티태스킹이 가능하게 만들어져 있다. 이러한 장점으로 네트워크 접속사용자들은 정보를 최대한 동시에 공유할 수 있으며 그만큼 서비스를 할 수 있는 환경을 구축할 수 있다. 그리고 여러 가지 하드웨어 플랫폼을 운영체제에 맞게 최대한 맞추어주기 위해서 자체 드라이버와 유틸리티를 내포하고 있다. 그리하여 기본적인 운영체제로서의 기능과 유틸리티의 총체적인 집합이라 할 수 있다.  

    1.1.2 UNIX를 잘 지원하는 하드웨어 환경  

     일반적으로 UNIX를 사용하는 이유는 강력한 다중작업과 복수사용자들의 작업지원을 위해 사용한다. 그러므로 하드웨어 설계도 이에 맞게 고려해야 한다. 현재로서는 SUN社의 워크스테이션을 표준으로 삼고 있는데, 이유는 SUN에서 내놓은 Solaris Version(예전의 SUN UNIX)이 자사의 하드웨어 설계의 표준을 따르기 때문이다. 그리고 그 회사의 운영체제를 가장 많이 사용하고 있기 때문에 사용할 수밖에 없는 상황이 되어버렸다.    

    멀티태스킹을 한다는 의미가 보통 알기로는 시분할 시스템에서 고루 시간분할을 하며, 동작속도면에서는 사이클클럭을 빠르게 한다고 알고 있지만 이것은 다소 틀린 견해이다. 왜냐하면 멀티태스킹을 지원하기 위하여 하드웨어 설계부터가 기본적으로 메인보드 한 장에 두 개 이상의 CPU가 존재하며 이들의 성능을 가진 동급의 메인보드를 복수장 수용할 수 있도록 UNIX는 설계되어 있다. 그래서 수준 급의 워크스테이션은 메인보드가 보통 10장 이상을 지원하게 설계되어 있으며 이를 운용할 수 있는 운영체제는 대개 Solaris를 채택하고 있다.  

    Sparc CPU라든가 Ultra  Sparc CPU 같은 것은 이러한 메인보드의 핵심 CPU이다. UNIX자체의 시스템 커널이 복수의 CPU를 지원할 수 있게 설계가 되어있으므로 Double Sparc CPU라는 말을 하기도 한다. 그래서 CPU 하나는 마스터 그 외에는 슬래이브가 되며 개개의 슬레이브에 속해있는 CPU는 또 슬래이브가 되며 상위 권한을 가진 CPU는 제어를 받는 CPU의 마스터가 된다. 그러므로 중요한 작업 또는 먼저 실행되어야 할 작업은 마스터에서 실행되며 그 외의 작업은 슬래이브에게 넘겨주는 방식으로 만들어져 있다. 그렇게 해서 동일한 시간대에 여러 개의 작업을 할 수 있는 것이다.    

    메인보드에 연결되어 있는 보조기억장치의 인터페이스는 주로 SCSI를 따르고 있다. 이것은 PC에서 많이 쓰이는 EIDE와 근본적으로 병렬처리문제에서 틀린 의미를 가지고 있다. UNIX는 SCSI인터페이스를 가지고서 별도의 장치ID를 가진 보조기억장치를 ACCESS하여 고속으로 처리가 가능한 SCSI를 보다 효율적으로 관리할 수 있다.   
        
    기본적으로 SCSI방식을 채택한 장치가 속도가 빠른 이유는 버퍼 메모리가 많고 기분 클럭이 높기 때문이다. 그래서 워크스테이션의 경우 가격이 다소 비싸더라도 용도에 맞게 SCSI 방식의 기억매체를 이용한다. SCSI는 보통 장치를 0-7번까지 즉 8개의 장치 접속범위를 지원한다. 이 숫자는 한 개의 SCSI 인터페이스 카드에 0-7번까지 연결할 수 있다는 의미이므로, SCSI카드를 많이 수용할 수 있는 시스템이라면 그 만큼 많은 장치를 연결할 수 있다.   

     주기억장치인 RAM의 경우는 웍스테이션 전용 RAM이라 불리는 SCRAM(Synchronous DRAM)을 사용함으로서 속도와 처리율을 높일 수 있다. 이 방식은 먼저 처리되는 명령이 끝나기 전에 다음 명령어를 처리할 수 있다. 그리고 64비트의 데이타를 병목 없이 한 사이클에서 처리할 수 있다. 그래서 CPU는 오리지널 64비트 처리구조를 가지고 있으며 개별적으로 구할 수 없는 RISC CPU이다. 그리고 메인보드 또한 BIOS에 넣어진 프로그램에 맞는 하드웨어를 설계하게 되어있는데 이도 또한 CPU를 가장 잘 지원해줘야 하므로 별개의 문제가 될 수 없다.    

     SUN社의 제품을 가장 많이 사용하는 이유는 워크스테이션의 첫 번째에 꼽히는 사항인 안전성 때문이다. 대분분의 워크스테이션은 년간 1회정도만 시스템 하드웨어 확장이나 운영체제 업그레이드를 위하여 정지되는 때 외에는 정지를 하면 안되는 시스템을 원하게 된다.   
        
    이 경우는 미니 워크스테이션도 마찬가지이다. SUN社의 CPU를 탑재하고 있는 경우도 안정성이 첫째이기 때문에, 관리도 중요하지만 하드웨어적인 결함이 존재하면 안된다. 시스템의 확장을 위해서 메인보드 박스는 여분의 슬롯을 가진 콘트롤박스를 가지고 있어야 하며 그 외의 저장매체 확장을 위하여 외장형 인터페이스를 갖춘 하드박스를 소유하고 있는 것이 바람직하다.   

     또한 시스템의 데이터를 안전하게 백업하기 위해서 백업장치 또한 분명히 가지고 있어야 한다. 보통 일주일에 한번 하게 되는데 대개 두 개의 백업테잎를 가지고 있어야 한다.    
    parent와 son의 관계라고 보통 얘기하는데 금주에 한번 백업하고 차주에 한번백업하며 그 다음주에는 첫주의 테이프를 overwrite한다. 그리고 일별, 주별의 데이터를 보관해야 할 경우에는 더 많은 백업테이프나 기타 저장장치를 가지고 있어야 한다. CDROM 드라이브 또한 필수인데, 네트웍을 통하여 소프트웨어를 설치할 수 있기는 하지만 대용량의 프로그램을 설치하는 것이 보통이므로 CDROM 드라이브는 필수적으로 가지고 있어야 한다.   

     PC에서 UNIX를 사용하기를 원하는 경우에는 자신의 CPU가 x86계열이라면 Solaris 제품군 중 x86플랫폼으로 출시된 Solaris를 구하여야 한다. 왜냐하면 CPU의 내부구조와 인터페이스구조 자체가 SUN기준과 틀리기 때문에 SUN OS를 가지고 와서 설치하려해도 되질 않는다. 그러므로 x86 EDITION인 것을 확인하고 PC에 설치하여야 한다. 그리고 PC에서는 되도록 주기억장치로서는 SDRAM을 사용하기를 권장하며 케시메모리는 최소 256KB 또는 512KB이상을 추천한다.  

    VGA카드는 ET4000계열이 속도는 떨어지지만 UNIX또는 LINUX같은 체제등 기타 운영체제에서 기본적으로 지원되는 하드웨어로서 호환성은 뛰어나다. 그리고 사운드카드는 크리에이티브社(사운드블래스터)의 호환기종이면 설치가 가능하며 CDROM드라이브는 PC에서 SCSI를 추천하지만 EIDE형식도 지원된다.하지만 모두다 지원되는 것이 아니라 Solaris에서 지원되는 플랫폼을 따르는 것을 선택해야 하는데 이는 CDROM 드라이브 제조회사에 문의하거나 매뉴얼을 보면 알 수 있다. 제조회사에서 제품을 출시할 때 UNIX드라이버가 들어있다면 지원되는 것이다. 다만 버전과 지원기종을 잘 살펴야 한다.   

     모니터는 별상관이 없지만 Openwindows작업이나 기타 그래픽작업을 맘껏 누리기 위해서는 1600*1280이 지원되는 17인치 모니터 이상을 추천한다. FDD는 특성을 타지 않지만 만약을 위해서 가장 많이 사용하는 것을 고르도록 한다.  

    1.1.3 UNIX의 강력한 네트워킹 기능의 내장환경 

     이 부분에서는 UNIX시스템이 서브넷의 시스템 부분이 아니며 OS서버라고 가정하고 이 글을 전개해 나가도록 한다. UNIX 시스템을 워크스테이션이라고 가정한다. 그러면 네트워크 칩셋이 내장되어 있다. 그러므로 따로 네트워크 장비를 설치하지 않아도 된다. 다만 라우터와 CSU, DSU가 지역 망에 설치되어 있다고 가정한다. 이 환경 하에서 시스템에 따라서는 몇 천명에서 몇만 명의 동시접속인원을 확보할 수 있다. 이러한 숫자는 물론 네트워크 접속회선속도가 그만큼 지원되는 하에서 어느 정도 느리지 않고서 그 정도 인원이 무리 없이 네트워크를 사용할 수 있다는 의미인데 이것은 엄청난 의미를 갖는다고 할 수 있다.    

    도스나 윈95에서는 상상을 할 수 없는 일을 할 수 있는 것이다. 그만큼 UNIX는 네트워크 기능이 막강하기 때문에 실행될 수 있다. 하지만 정작 중요한 것은 속도나 접속인원이 아닌 안정성에서 유래된다. 아무리 속도나 동시접속인원을 많이 확보할 수 있다해도 처리할 데이터를 제대로 전송 못한다면 그것은 좋은 시스템이 될 수 없다. 그리고 UNIX시스템을 가지고서 네트워킹 기능을 이용한다면 mail server, WWW server, ftp server, pop server, news server등 여러 가지로 이용할 수 있는 것이 많다. 그런데 시스템의 성능을 잘 파악하고 네트워크 접속속도를 잘 따져봐서 효율적으로 운영할 수 있을 만큼만 서비스하는 것이 바람직하다. 시스템의 성능이 좋지 않다면 다른 서버를 구축하여 분산시키는 것이 바람직하다.  

    1.2 운영체제의 처리기법 

    ¶ 운영체제에서 자주 나오는 용어 

      Swapping  
    : 운영체제가 프로세스를 운용하기 위해서 필요한 용량보다 하드웨어 환경이 미약할 경우 하드디스크의 일정부분을 할당받아 그 부분을 주기억장치로 대신하여 작업을 하는데, 이를  Swapping이라 한다.  

      Temp  
    : 흔히 임시작업 디렉토리를 의미하는데 이것은 어떠한 프로세스가 특정한 디렉토리에 프로그램을 설치한다거나 실행 중에 잠시 머무르는 곳을 의미한다. 대개 Temp 디렉토리는 각 운영체제 마다 거의 적용된다.  

      Memory Manager  
    : 메모리 관리자는 하드웨어 환경에서 지원되는 메모리 량을 조금더 효율적인 분배와 사용을 위해서 존재하는 것이다.  

      Bitmap  
    : 특정데이터가 어디에 저장될 것인지를 결정하는 요소 중에 하나로서 메모리 구간을 여러 비트맵 구간으로 나누는데 이 비트맵 구간이 작을수록 정확히 파악할 수 있지만 속도는 떨어지게 된다.  

      List  
    : 특정 데이터의 저장위치를 찾아내는데 필요한 정보의 집합이다.  

      Buddy System  
    : 컴퓨터에서는 특정 위치의 데이터를 소거하거나 사용할 때에는 어드레스변환을 2진으로 변환한다는 것을 이용하여 그 어드레스를 파악하는 시스템을 말한다.  

    1.2.1 일괄처리 
    : UNIX는 여러 개의 작업을 일괄적으로 한꺼번에 처리할 수 있는 능력이 있다. 그 이유는 하드웨어도 그렇게 지원할 수 있게 설계되어 있지만 커널부터가 그러하다. UNIX에서는 이러한 다중 프로세싱에 강하다. 여러 개의 작업을 병렬적으로 처리할 수 있는 능력이 있다. 

    1.2.2 다중프로그래밍 
    : 호환성이 높아서 이식하기가 쉬어 UNIX에서는 한 개의 언어로 짜지어진 프로그램만 사용할 수 있는 것이 아니라 여러 개의 언어를 플랫폼만 UNIX로 맞추어 컴파일 하면 되므로 이식성이 높다. 

    1.2.3 다중 태스킹 
    : 여러 개의 작업을 동시에 할 수 있어서 백그라운드 처리로 작업을 할 수 있는 것이 그 첫째 요소이며, Openwindows상에서는 여러 개의 중첩된 Windows를 열어놓고서 각기 다른 작업을 병렬적으로 수행할 수 있다.  

    1.2.4 시분할 시스템 
    : 중요한 작업을 우선으로 하되 나머지 작업은 시간을 분할하여 작업의 성격에 맞게 처리해주므로 한정된 시간에 비해 효율적이다. 

    1.2.5 실시간 처리 
    : 다중 태스킹과 일괄처리의 도움으로 실시간의 처리가 가능하다. 온라인으로 터미널이 연결되어 동시에 운용될 수 있는 측면을 묘사한 것이다. 

    1.2.6 분산처리 
    : 여러 개의 프로세서를 두어 작업처리를 분산시켜 전체적인 시스템의 부담을 줄일 수 있다. 예를 들자면 메인보드도 10장씩 수용, 즉 프로세서 20개를 수용할 수 있는 시스템이라면 작업분담을 그 만큼 줄일 수 있다. 

    1.2.7 다중프로세서 처리 
    : UNIX는 복수개의 CPU를 지원하며, 복수개의 메인보드도 지원하여 여러 개의 프로세서가 동시에 작업을 할 수 있다. 이것이 일반 PC와 큰 차이점 중의 하나이다. 

    1.2.8 병렬처리 
    : 한 개의 작업이 끝나기도 전에 다른 일을 병행해서 수행할 수 있다. 이는 파이프라인 처리기술로 말미암아 가능하게 된다. 
     

    1.3. UNIX의 계보 

    1.3.1 BSD 
    : 버클리 대학에서 만든 것으로서 초기의 UNIX중 한 개인데 이것을 수용하면서 System V라는 버전을 가진 UNIX를 만들어 냈다. SUN OS도 BSD의 상당부분을 내포하고 있다.  

    1.3.2 System V 
    : 현재 많이 사용하고 있는 SUN OS는 대부분 System V의 특성을 많이 이어 받았다. 이것을 이어받아 약간의 표준화가 진행되어 SUN OS의 시초가 되었다.  

    1.3.3 XENIX, SCO UNIX 

    1.3.4 Ulltrix, Solaris(Sun OS), HP-UX, AIX 

    1.3.5 Mach, chorus 

    1.4 UNIX의 일반적 특성 

    1) 다중 사용자, 다중 태스킹의 대화형 시스템  
    2) 이식성과 확장성이 용이  
    3) 파일의 편성법과 액세스법 이라는 개념이 없음  
    4) 파일시스템이 tree형태의 계층적 구조로 되어있다.  
    : 블록의 단위(boot block, super block, i-nodes, file&directory)로 나뉘어 관리하고 있다.   
    5) 네트워킹 기능을 내장하고 있다.  
    6) 풍부한 소프트웨어 개발 환경을 제공한다.  
    7) 실시간 시스템 응용에는 기능이 부족하다.  
    8) 시스템 보안기능이 다소 미약하다. 



[ HOME ][ PREV ][ NEXT ]