본문 바로가기

서버 자료/유닉스

유닉스 시스템의 구조

유닉스 시스템의 구조 


  • 하드웨어 : 변경 불가
  • 소프트웨어 : 변경 가능
  • 펌웨어 : 변경 가능하나 어려움


커널 (Kernel)


  • 유닉스 운영체제의 핵심으로 컴퓨터의 모든 자원을 초기화 하고 제어하는 기능
  • 프로세스 관리 : 여러 개의 응용 프로그램들이 동시에 수행되는 것처럼 실행 될 수 있도록 프로세스 스케줄링
  • 파일 관리 : 디스크 상에 파일 시스템을 구성하여 파일을 관리
  • 메모리 관리 : 메인 메모리가 효과적으로 사용 될 수 있도록 관리
  • 통신 관리 : 네트워크를 통해 정보를 주고 받을 수 있도록 관리
  • 주변장치 관리 : 모니터 , 키보드 , 마우스와 같은 주변 장치를 사용 할 수 있도록 관리


시스템 호출 (System Call)


  • 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역할
  • 시스템 호출에 기반하여 공통적인 함수들의 모임인 라이브러리가 존재
  • 응용 프로그램은 필요 시 시스템 호출과 라이브러리를 자유롭게 사용

쉘 (Shell)


사용자와 커널 사이의 중간자 역할을 담당하는 특별한 프로그램

사용자가 입력한 명령을 해석하여 커널이 넘겨준다 -> 커널이 명령의 수행 결과를 돌려준다 -> 쉘은 사용자가 이해할수 있는 형태로 바뀌어 출력된다.


예 : 본쉘(sh, Borune Shell), C쉘(csh, C Shell) , 콘쉘(ksh , Korn Shell), 베쉬 쉘(Bash , Borune Again Shell) 등


본쉘 : 기본 쉘이며 대부분의 시스템 환경 설정을 위한 쉘

콘쉘/배쉬쉘 : 시스템 관리에 적합하다.


쉘의 기능


명령어 해석 기능


  • 사용자와 커널 사이에서 명령을 해석하여 전달
  • 사용자가 입력한 명령이나 파일에서 읽어들인 명령을 해석하고 프로그램 실행

프로그래밍 기능


쉘은 자체 내에 프로그래밍 기능이 있어 프로그램 작성 가능하며  여러 명령을 사용해 반복적으로 수행하는 작업을 하나의 프로그램 제작가능

쉘 프로그램을 쉘 스크립트라고 부름.


예 : 주기적으로 백업 하는 프로그램


쉘 종류


본쉘(Bourne Shell, sh)


  • 최초의 본격적인 쉘로 유닉스 V7에 처음 등장
  • 스티븐 본이 개발하였으며 현재도 모든 유닉스 시스템에 기본적으로 설치된다.
  • 시스템 관리 작업을 수행하는 많은 쉘 스크립트들은 본쉘을 기반.
  • 히스토리 기능 , 앨리어스 기능 , 작업 제어등 사용자의 편의를 위한 기능을 다양하게 제공하지않음

콘쉘(Korn Shell , ksh)


  • 1980년대 중반 AT&T 벨 연구소의 데이비스 콘이 개발하였으며 
  • 유닉스 SVR4에 포함되어 발표되었는데 본쉘과의 호환성을 유지하고
  • 히스토리 기능 앨리어스 기능등 C쉘의 특징들도 모두 제공하며 처리 속도도 빠르다는 장점을 가지고 있음

C쉘(C shell, csh)


  • 캘리포니아(버클리) 대학교에서 빌 조이가 개발
  • 2BSD 유닉스에 포함되어 발표하였고
  • 본쉘의 기능을 확장한 것으로 앨리어스나 히스토리 같은 사용자 편의 기능을 포함함
  • 쉘 스크립트 작성을 위한 구문 형식이 C언어와 같아 C쉘이라 불림
  • 크기가 커지고 처리 속도도 느려졌다는 단점이 있으나 편리한 기능 때문에 사용자들이 즐겨 사용함

배쉬쉘(Bourne Again Shell, bash)


  • 본쉘을 기반으로 1988년 브라이언 폭스가 개발
  • 본쉘과 호환성을 유지하면서 C쉘, 콘쉘의 편리한 기능을 포함함
  • GNU를 따르는 공개 소프트웨어로 리눅스의 기본쉘로 동작하고 있어 리눅스 쉘로 알려짐

기타 쉘


TC 쉘(tcsh)


C 쉘의 기능 확장

명령행 편집, 명령어 완성 기능, 히스토리 목록에서의 시간 표시 등


데스크탑 콘쉘(dtksh)


X 윈도우의 기능을 지원할수있도록 콘쉘을 기능을 확장


Z쉘(zsh)


TC쉘과 콘쉘의 기능을 함께 가지고 있는 쉘


쉘의 변경


  • 기본 쉘 : 사용자 등록시 시스템 관리가 지정(/etc/passwd에 저장)
  • 사용자의 기본 쉘 변경은 시스템 관리자만 가능
  • 일반 사용자는 현재 실행중인 쉘을 임시로 바꿀 수 있음
  • 해당 쉘을 실행하면 된다.




















'서버 자료 > 유닉스' 카테고리의 다른 글

유닉스의 활용 분야  (0) 2019.01.22
유닉스의 특징  (0) 2019.01.22