[Unix] Unix의 구조와 특징

October 30 2021

Unix의 구조와 특징

1.Unix 시스템의 구조

Unix는 그림1 Unix의 구조처럼 커널(Kernel), 셸(Shell), 커맨드와 유틸리티(Commands and Utility), 파일과 디렉터리(Files and Directories)로 이루어져 있다.

unix_architecture

그림1 Unix의 구조 https://www.tutorialspoint.com/unix/unix-getting-started.htm

1.1 커널(Kernel)

커널의 의미는 “단단한 껍질안의 씨앗”이라는 뜻으로 OS내에 위치하여 하드웨어의 모든 주요 기능을 제어하기 때문에 붙여진 이름이다.

커널(Kernel)은 Unix 운영체제(OS)의 주요 구성 요소이며 그림1 과 같이 하드웨어(Hardware)와 프로세스(Process) 사이의 메모리에 위치하여 시스템을 통제하는 인터페이스 역할을 한다. 운영체제(OS)의 다른 부분 및 응용 프로그램을 실행하기 위한 여러가지 서비스를 제공한다.

1.1.1 커널의 기능

커널은 메모리 관리, 프로세스 관리, 장치 드라이버, 시스템 호출 및 보안의 4가지 기능을 수행한다.

  1. 메모리 관리 : 메모리가 어디에서 무엇을 저장하는데 얼마나 사용되는지 추적한다
  2. 프로세스 관리 : 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지 결정한다. 한정된 효율적인 시스템 자원 관리로 프로그램 실행을 원활하게 한다.
  3. 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다.
  4. 시스템 호출 및 보안 : 프로세스의 서비스 요청을 수신하며, 하드웨어와 프로세스의 보안을 책임진다.

커널은 메모리를 할당하고 저장되는 모든 항목을 추적하는데 시스템 호출 인터페이스(SCI)를 통해 사용자 애플리케이션과 커널(Kernel)이 통신한다.

1.1.2 커널의 종류

  • 단일형 커널(monolithic kernel) : 커널의 다양한 서비스 및 높은 수준의 하드웨어 추상화를 하나의 덩어리(주소 공간)로 묶은 것이다. 운영 체제 개발자 입장에서 유지 보수가 일반적으로 더 어려우나 성능이 좋다.

  • 마이크로커널(microkernel) : 하드웨어 추상화에 대한 간결한 작은 집합을 제공하고 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공한다.

  • 혼합형 커널(hybrid kernel) : 성능 향상을 위해 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 순수 마이크로커널과 비슷하다. 수정 마이크로커널이라고도 한다.

  • 나노커널(nanokernel) : 실질적으로 모든 서비스를 책임진다.

  • 엑소커널(exokernel) : 낮은 수준의 하드웨어 접근을 위한 최소한의 추상화를 제공한다. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 단일형 커널 수준의 추상을 제공한다.

1.2 셸(Shell)

셸(Shell)은 사용자의 명령어를 해석하고 운영체제가 알아 들을 수 있게 지시하여 사용자와 커널을 이어주는 프로그램이다.

1.2.1 셸의 종류

Unix의 셸 프로그램 종류로 sh, bash, ksh, csh , zsh, tc Shell 이 있다.

sh(Bourne Shell)

최초로 개발된 쉘로 상호대화형(Interactive)방식이 아니어서 다른 셸보다 미흡하지만, 셸 명령 대본을 작성할 때 이용하며, 강력한 명령 프로그래밍 언어 기능을 가진다.

  • 프롬프트 : $ (일반 유저) / # (root 유저)
csh(C Shell)

버클리 캘리포니아 대학에서 개발하였으며 C언어와 유사하다. sh(Bourne Shell)을 확장하여 sh(Bourne Shell)과 호환할 수 있지만 sh(Bourne Shell)과 달리 작업제어, 명령어 히스토리 등의 기능이 있다. 가장 큰 특징은 프로그램 작성기능이 있어 프로그래머들이 사용하기에 유용하다는 것이다. 하지만 명령행 편집 기능이 없고 처리 속도가 느리다는 단점이 있다.

  • 프롬프트 : %
tcsh(tc Shell)

코넬 대학에서 개발하여 C Shell의 95% 기능을 포함하고 있다. C Shell 에 명령행 완성과 명령행 편집 기능을 추가하였다.

  • 프롬프트 : >
ksh(Korn Shell)

벨 연구소에서 개발한 유닉스 셸로, sh(Bourne Shell)을 확장하여 sh(Bourne Shell)과 하위호환할 수 있고 csh(C Shell)의 많은 기능을 포함하고 있다. 달라진 점은 명령어 히스토리 기능과 앨리어스(alias), 작업 제어, 명령행 편집 등의 기능을 추가했다는 것이다. 유닉스에서 가장 많이 사용되고 있다.

  • 프롬프트 : $
bash(Bourne-Again Shell)

sh(Bourne Shell)을 기반으로 만들어져 csh(C Shell)과 ksh(Korn Shell)의 기능들을 통합시켰다. GNU(자유로운 소프트웨어를 희망하는 프로젝트)를 위해 개발되어 리눅스 표준 이고 맥OS 등 여러 운영체제에서 사용한다.

  • 프롬프트 : #

  • 실행파일 : /bin/bash

zsh(Z shell)

sh(Bourne Shell)을 확장한 유닉스 셸로 Korn Shell과 매우 유사한 셸이지만 Korn Shell보다 더 많고 유용한 기능 등을 추가였다. 새로운 기능은 실행 중인 shell끼리 명령어 history를 공유하며, 문법 오류를 정정해주고 다양한 테마를 지원한다.

  • 프롬프트 : %

1.3 유틸리티(Utility)

유닉스는 운영체제(OS)의 기본기능 외에 문서편집도구, 네트워크 관련 도구, 프로그래밍 개발 도구 등과 같은 유틸리티를 제공하는데 사용자가 컴퓨터 작업을 편리하게 도와주는 것이 바로 유틸리티다. 유닉스는 계층적으로 구성된 파일 시스템을 사용해 시스템 파일과 사용자 파일을 체계적으로 관리한다.

유닉스의 대표적인 유틸리티 프로그램으로는 vi 편집기, C코드를 기계어로 번역하는 GCC 컴파일러, 소스코드를 바로 실행하는 명령행 인터프리터, 프로그램을 디버깅하기 위한 GNU 디버거(GDB)가 있다.

Unix의 특징 작성중

Unix의 특징은

  1. 대화형 시스템: 명령어 기반 사용자 인터페이스를 통해 사용자와 Unix가 대화한다. 즉, 사용자가 명령어를 입력하면 Unix는 명령의 결과를 화면에 출력한다.
  2. 다중 사용자 시스템: 네트워크를 통해 여러 사람이 같은 컴퓨터에 동시에 접속해서 작업을 할 수 있다.
  3. 멀티태스킹 시스템: 하나의 컴퓨터에서 여러 작업을 동시에 수행할 수 있다.
  4. 높은 이식성, 확장성: Unix는 어셈블리어가 아닌 C로 작성돼 있기 때문에 이식성과 확장성이 높다.
  5. 계층적 트리 파일 시스템
  6. 다양한 부가 기능 제공: 개발, 디버깅 도구, 문서 편집 도구, 출력 도구 등을 제공한다.

유닉스의 특징

  • 대화형 시스템
  • 다중 사용자/작업용 시스템
  • 높은 이식성, 확장성, 개방성
  • 계층적 파일 시스템
  • 부가적 기능 제공이 다양

2. 유닉스의 장점

  • 멀티유저, 멀티태스킹
  • 높은 이식성
  • 구조적 파일 시스템(트리 구조)
  • 뛰어난 보안기능
  • 입출력의 방향 전환, 파이프 기능
  • 개발 언어 및 유틸리티가 다양하며 프로그램 개발 용이
  • 확장성과 조작성이 뛰어난 쉘 제공 각종 특수 장치의 독립성
  • 유연성 있는 커뮤니케이션 지원

2교시 [특징 및 구조]

유닉스의 특징

1) 단순성

  • 단순화시켜 최소한의 필요한 기능만 제공

  • 자원에 관한 일관성 있는 관점 제공, 주변 장치를 파일과 같은 형식으로 사용

2) 이식성과 확장성

  • C로 작성 → 다양한 플랫폼에 이식해 사용 가능

  • 각 기능이 모듈화 → 새 기능 추가시 모듈만 추가하면 됨

  • 주요 유닉스 계열의 운영체제 (OS : Operating System)

ex. 안드로이드(Adroid) OS, iOS, 맥(Mac) OS X, 리눅스(Linux) 등등

3) 개방성

  • 소스 코드 공개

4) 대화형 시스템 (Command Line Interface)

  • 명령어 기반 사용자 인터페이스 이용

  • 유닉스가 이해할 수 있는 ‘명령’을 사람이 입력, 유닉스는 명령 처리 결과를 화면에 출력

5) 다중 사용자 시스템, 다중 작업용 시스템

  • 여러 사용자가 컴퓨터에 동시에 접속하여 사용할 수 있는 운영체제

  • 사용자들은 직렬 회선 (Serial Cable)으로 연결된 단말기를 통해 유닉스에 접속

  • 한 대의 컴퓨터에서 여러 작업을 동시에 수행

6) 쉘 스크립트

  • 유닉스 명령어나 유틸리티 등을 사용하여 프로그램을 작성하여 사용

  • 큰 작업을 수행할 때 기존의 작은 프로그램들을 적절히 결합하여 수행하는 방식

7) 다양한 부가 기능 제공

  • 네트워크 관련 응용 프로그램 제공

  • 네트워크 서버 기능 지원

  • 프로그래밍 및 디버깅 도구, 문서 편집 도구, 출력 관련 도구 제공

Leave a comment