RedHat Linux >> System Administration for Redhat Linux
|
[목차] |
제1장 운영체제(커널)와 쉘
1. what is an operating system ?
운영체제란 컴퓨터(하드웨어)를 제어하는 특수한 컴퓨터 프로그램(소프트웨어)을 말합니다. 운영체제는 소비자와 자원 사이에서 연락을 취하면서, 종종 제한 된 자원을 다수의 소비자들 사이에 할당하는 것을 조정합니다. 자원은 cpu, 디스크, 메모리, 프린터 등을 포함하며, 소비자들은 자원에 대한 액세스를 필요로하는 실행 프로그램들입니다. 한 예로서 사용자(또는 프로그램)가 파일을 디스크에 저장하도록 요청하면, 운영체제가 디스크에서의 공간할당을 관리하기 위해 끼어들며, 메모리의 정보를 디스크로 전송합니다.
사용자가 프로그램의 실행을 요청하면, 운영체제는 그 프로그램을 로드시키고 액세스하기 위한 메모리 공간을 할당해야 합니다. 프로그램이 실행 될 때, 중앙처리장치(cpu)를 액세스할 수 있습니다. 시분할 시스템에서는 몇 개의 프로그램이 동시에 cpu를 액세스하려고 하는 일이 빈번합니다.
운영체제는 경찰관이 복잡한 교차로에서 교통 정리를 하는 것과 유사한 방법으로, 프로그램이 cpu에서 기회를 얻게되는 시기와 방법을 제어합니다. 교차로는 한번에 하나만 사용할 수 있다는 점에서 cpu와 비슷합니다. 교차로로 진입하는 각각의 도로는 프로그램과 같습니다. 어떤 때라도 한번에 한 도로에서 오는 차량만이 교차로를 이용할 수 있으며, 경찰관은 어떤 도로가 교차로를 이용하는지 지정하고, 결과적으로는 모든 도로가 교차로를 이용할 수 있도록 합니다.
가. features of unix
unix 시스템은 컴퓨터의 활동과 자원을 제어하는 시분할 운영체제와 대화식의 융통성있는 운영 인터페이스를 제공합니다. 다중 프로세스들은 동시에 실행하고, 프로젝트 팀의 구성원들 사이에서 데이터의 공유를 쉽게 할 수 있게 다중 사용자를 지원하도록 설계되었습니다. 운영 환경은 모든 단계에서 모듈 구조로 설계 되었습니다. 유닉스 시스템을 설치할 때, 운영상의 요구와 관련된 것만 설치하면 되고, 그 외는 생략하면 됩니다. 예를들어, 유닉스 시스템이 상당량의 프로그램 개발 유틸리티를 제공하지만, 프로그램 개발을 하지 않는 다면 최소한의 컴파일러만 설치할 필요가 있습니다. 사용자 인터페이스는 또한 효과적으로 모듈식 원리를 지원합니다. 상호간에 전혀 알지 못하는 명령들이 파이프라인을 통해 쉽게 결합되어 다소 복잡한 조작을 수행할 수 있습니다.
나. 운영체제
커널은 운영체제입니다. 사용가능한 자원과 하드웨어에 대한 액세스를 관리하는 것이 그 책임입니다. 커널에는 그것이 인터페이스하는 각 하드웨어에 대한 모듈이 들어 있습니다. 이러한 모듈은 cpu, 메모리, 디스크, 단말기, 네트워크 등에 대한 프로그램 액세스를 허용하는 기능을 제공합니다. 새로운 종류의 하드웨어가 시스템에 설치되는 것처럼, 새로운 모듈들도 커널에 통합될 수 있습니다.
다. 도구와 응용 프로그램
유닉스 시스템 환경의 모듈식 설계가 이 계층에서 가장 분명합니다. 유닉스 시스템 명령 원리는 명령마다 한가지 일을 잘 수행하고, 명령들이 모이게 되면 도구 상자를 형성한다는 것입니다. 완성할 작업이 있을 때, 해당 도구들을 사용합니다. 복잡한 작업은 도구들을 적절하게 결합함으로써 수행될 수 있습니다.
처음부터 유닉스 시스템 도구상자에는 단지 시스템과 대화하는 데 필요한 기초적인 명령들 보다 훨씬 더 많은 명령이 들어 있습니다. 유닉스 시스템은 또한 다음과 같은 유틸리티들을 제공합니다.
전자우편(mail),
파일편집(vi),
프로그램 개발(cc, make 등),
프로세스 및 사용자 등록(ps, du 등)
유닉스 시스템 사용자 환경은 대화식의 조정할 수 있는 모듈식 구현으로 설계되었으므로, 새로운 유틸리티들이 쉽게 개발되고 사용자의 도구 상자에 추가될 수 있으며, 불펼요한 도구들은 시스템 작동을 손상시키지 않고 생략될 수 있습니다.
2. The shell
shell은 대화식 명령 해석기입니다. 명령은 쉘 프롬프트에서 입력되고, 명령을 내는 즉시 수행됩니다. 사용자는 쉘을 통해 컴퓨터와 통신합니다. 쉘은 사용자가 키보드에서 입력하는 입력을 모으고 명령을 커널이 이해할 수 있는 형태로 변환합니다. 그런 다음 시스템이 명령을 실행합니다.
쉘은 커널과 별개라는 것을 알아야 합니다. 공급된 쉘이 제공하는 인터페이스가 싫으면, 쉽게 다른 쉘로 바꿀 수 있습니다. 현재 사용할 수 있는 쉘들이 많이 있습니다. 어떤 쉘은 명령 위주로 되어있고, 또 어떤 쉘은 메뉴 인터페이스를 제공합니다. 유닉스 시스템과 함께 제공되는 일반적인 쉘은 명령해석기와 조정할 수 있는 인터페이스를 둘다 포함하고 있습니다.
유닉스 시스템 환경에서는 다음과 같은 쉘들이 주로 사용됩니다.
● bourne 쉘 - 벨연구소의 stephen bourne이 개발한 at&t 기반의 시스템에 제공된 초기 쉘로, 유닉스 시스템 명령 해석기를 제공하고 쉘 프로그램(일반적으로는 스크립트라고 함)을 개발하기 위한 저정할 수 있는 인터페이스를 제지원합니다. 조정이 가능한 대화식의 인터페이스는 변수 정의와 대체, 변수와 파일 검사, 분기, 루프 같은 기능을 제공합니다
● c 쉘(/usr/bin/csh) - 캘리포니아으 버클리 대학에서 bill joy가 개발한 쉘로 bsd 기반의 시스템에 제공됩니다. 이 쉘은 캘리포니아 쉘을 말하며, 간단히 c쉘이라고 합니다. 이것은 전에 입력된 명령으 단순한 재호출과 편집을 허용하고, 기존 명령을 개인에 맞게 대체한 이름을 제공하는 별명을 허용하는 명령 스택 같은 대화식 특징을 제공하므로 bourne 쉘보다 진보된 것입니다.
● korn 쉘(/usr/bin/ksh) 보다 최근에 벨연구소에서 david korn이 개발한 것입니다. bourne 쉘의 간단한 조정 가능 인터페이스를 지원하지만, c 쉘의 편리한 대화식 특징을 가지므로 향상된 bourne 쉘로 보면됩니다. 그 코드 또한 보다 빠르고 보다 효율적인 쉘을 제공하기 위해 최적화 되었습니다.
● posix 쉘(/usr/bin/sh) - 파일 /usr/bin/sh 에 상주하는 posix를 따르는 명령 프로그래 ald 언어와 명령해석기, 이 쉘은 korn 쉘 과 여러 가지 면에서 유사합니다. 명령 내역 처리 방법을 제공하고, 작업 제어를 지원하며, 기타 여러 가지 유용한 특징들을 제공합니다.
● bash 쉘 - gnu 프로젝트에서 나온 linux의 중요 프로그램, hash는 bourne again shell이라고도 불립니다. bash는 소스코드를 구할 수 있다는 장점이 있으며, 현재 사용자의 시스템에서 돌아가고 있지 않다 할지라도 쉽게 포팅이 가능합니다.
가. 자신의 작업 환경 관리하기 여러분의 작업 환경은 시스템에 로그인을 하거나, 다른 쉘을 실행시킬 때마다 정의 됩니다. 이것은 각개인의 작업 환경이 로그인을 하거나, 쉘이 시작될 때 , 자동으로 처음으로 읽혀지는 초기화 파일들에서 정의한 값들로 지정되기 때문입니다. 따라서, 관련된 파일을 편집해서 새로운 값을 부여할 수 있다면, 자신의 구미에 맞는 작업 환경을 꾸밀 수 있습니다. 이와 관련된 초기화 파일들은 각각의 쉘에 따라 조금 씩 다르며, 또한 그 값을 지정하는 방법도 조금씩 다릅니다. 먼저 여러분이 사용하고 계시는 쉘에 대해서 살펴보십시오. 나. 자신이 사용하는 쉘 알아보기 자신이 사용하는 쉘이 어떤 것인지 알아보려면, SHELL 환경변수 값을 조사해보면 됩니다. 그 방법은 다음과 같습니다. # echo $SHELL /bin/bash # 이렇게 명령을 치면, 이 환경 변수의 값을 보여줍니다. 이렇게 보여주는 내용은 경로이름으로 각 경로 명령이 뜻하는 쉘은 위와 같습니다. 다른 환경 변수를 보고 싶다면, # env | more 와 같이 하면 많은 환경변수가 나타날 것이다.
현재 시스템에서 사용할 수 있는 쉘이 어떤 것인지 알아보는 빠른 방법은 /etc/shells 파일을 vi나 pico, cat등으로 살펴보는 것입니다. 예를 들면 다음과 같습니다. # cat /etc/shells
이렇게 하면 현재 시스템에서 사용할 수 있는 쉘의 경로와 이름들이 나타납니다. 각 쉘을 실행시키기 위해서는 그 경로와 쉘을 명령행에서 쳐주면 됩니다. # /bin/csh 위와 같이 하면, C 쉘로 바꿀 수가 있습니다. 자신의 구미에 맞는 환경을 설정하기 위해서는 자신이 주로 사용하는 쉘의 종류를 확인하고 그 참조 파일을 수정하면 됩니다. -------------------------------------------------
3. 계층구조 파일 시스템
정보는 디스크에서 파일이라는 용기에 저장됩니다. 파일마다 이름을 지정받으며, 사용자는 파일의 이름을 참조하여 파일을 액세스합니다. 파일에는 보통 데이터, 문서, 프로그램 등이 있습니다. 유닉스 시스템에는 보통 수백개의 파일들이 들어 있는데, 디렉토리라는 또다른 용기가 있어 사용자들이 그들의 파일을 논리적 그룹으로 만들도록 합니다. 유닉스 시스템에서, 디렉토리는 파일이나 다른 디렉토리를 저장하는 데 사용할 수 있습니다.
파일 시스템의 구조는 매우 융통성 있으므로, 사용자의 조직에서 변화를 요구하는 경우 간단한 유닉스 시스템 명령을 통해서 파일과 디랙토리 쉽게 이동하거나 , 이름을 바꾸거나 새로운 또는 다른 디렉토로 그룹지을 수 있습니다. 그러므로 파일 시스템은 자자 파일링 캐빗넷과 같습니다. 사용자가 그들의 정보를 자신의 환경과 업무에 가장 적합한 디렉토리로 분리하고 편성하도록 합니다.
4. 다중 작업(multi tasking)
리눅스 시스템에서는 여러 개의 작업이 동시에 수행될 수 있습니다. 하나의 단말기에서 한명의 사용자는 모든 것이 동시에 수행되는 것처럼 보이는 여러 프로그램을 실행할 수 있는데, 이것은 사용자가 문서 파일을 편집하고, 동시에 다른 파일을 서식화 하고, 또한 동시에 다른 파일을 인쇄할 수 있다는 것을 의미합니다.
실제로, cpu는 한번에 한 작업만 실행 할 수 있으나, 유닉스 운영체제는 동시에 실행되도록 스케줄링된 다중 프로세스들 사이에서 cpu시간을 분할 하여 할당하는 기능을 가지고 있습니다. 따라서 사용자에게는 모든 프로그램이 동시에 실행되는 것처럼 보입니다.
5. 다중 사용자(multi-user)
다중 사용자 기능은 한 명 이상의 사용자가 동시에 로그인하여 시스템을 사용할 수 있도록 합니다. 여러개의 단말기와 키보드가 같은 컴퓨터에 접속될 수 있습니다. 이것은 다중 작업 기능을 자연스럽게 연장한 것입니다. 시스템이 여러 프로그램을 동시에 실행할 수 있으면, 그러한 여러개의 프로그램들 중 일부는 다른 사용자 세션을 지원할 수 있어야 합니다. 또한, 단일 사용자가 여러 단말기를 통해 같은 시스템에 여러번 로그인할 수 있는데, 이러한 구조의 큰 장점은, 개발 측면이나 사용자 관점에서 볼 때 작업 그룹의 구성원들이 같은 데이터를 동시에 액세스할 수 있다는 점입니다.
|
[목차] |