가치 있는 정보 준비 중
3초만 투자해 보세요!
Preparing valuable information
Just invest three seconds!
본문 바로가기
IT/OS

UNIX 유닉스의 역사 회사별 제품 x86특징 커널 쉘의 역할 기본명령어

by 콰나 | Quanna 2024. 1. 16.

<유닉스의 역사>

-UNIX/LINUX

-1960년대 중반에 MIT공대와 AT&T, 미국의 국방성의 지원을 받아 멀틱스(Multics) 프로젝트 진행

-다중사용자, 다중프로세서, 다중프로세스 기반의 시스템을 개발하기 위한 프로젝트

-프로젝트 사실상 실패

-AT&T에서 프로젝트에 참가했던 캔 톰스라는 사람이 사무실 컴퓨터에 멀틱스 프로젝트를 응용해서 게임을 개발

-켄 톰스와 데니스 리치 1971년에 개발된 C언어로 이전의 프로젝트를 바꾸면서 재개발하게 된다.(이전 프로젝트는 어셈블리어로 제작)

-한가지 작업이라도 제대로 하는 시스템을 개발 목적으로 Unics라는 프로젝트 진행 (발음대로철자가 Unix 불림)

-버클리 대학의 소프트웨어 재단에서 소스 코드를 구입

-해당 프로젝트에 네트워크 기능 탑재된 BSD버전을 기반으로 sun microsystems BS버전 기반으로 SunOs 출시

-너무 많은 회사들이 참여하다 보니 하나의 기준, 표준이 필요하게 되고 POSIX라는 표준 만듬

 

<회사별 Unix 제품>

 

HP: HP-UX   

      IBM: AIX 

Oracle: Solaris

<Solaris 종류>

SPARC 시스템용: Sun사가 오라클에 합병하기 전에 Sun사가 만든 프로세서로 만든 시스템

X86 시스템용: 가장 알려진 인텔 사에서 만든 32-비트 프로세서로 만든 시스템

(흔히 우리가 쓰는 데스크탑 환경)

 

             Intel 프로세서             SPARC 프로세서

 

<x86 특징>

  1. 안전성과 신뢰성
  2. 다중사용자
  3. 높은 이식성과 확장성
  4. 다중 작업
  5. 계층적 파일시스템
  6. /: 루트 파일시스템

 

<운영체제 주요 구성요소>

1) 커널
- 파일시스템, 하드디스크, CPU, 메모리, 프로세스 등을 관리
- 하드웨어 관리
2)
- 사용자의 명령어를 커널이 알아먹을 수 있게 커널과 사용자의 인터페이스 사이에서 사용자의 명령을 번역 또는 해석한다. (명령어 해석기)
3) 디렉토리
- 계층적으로 구성되어 있다.

 

<커널(Kernel)>

 

 

 

 

 

 

 

커널 - 프로세스 관리, 메모리 관리, 파일 관리 등등 여러 가지 등을 관리하는 역할을 가능하게 하는 함수들의 집합이나 총칭을 이라고 부른다.

 

*System Call Interface 응용프로그램과 커널 간의 연결을 위한 인터페이스(경로)

<커널의 역할>

- 커널의 역할에는 크게 프로세스 및 메모리 관리, 파일 관리, 입출력 관리 등으로 나뉜다.

 

1) 프로세스/메모리 관리

 

 

 

 

 

 

 

 

 

컴퓨터의 주기억 장치 사용을 관장한다. 한 번에 하나의 작업만을 수행하는 컴퓨터 환경에서는 메모리 관리자가 하는 일이 많지 않으며, 지정된 위치에 현재 작업 옮겨놓고 실행한 후, 다음 작업을 수행하기 위한 프로그램을 같은 위치에 다시 옮기는 정도이다. 그러나 다중 사용자 또는 multitasking 환경에서는 컴퓨터가 동시에 여러 요구에 답해야 하며, 메모리 관리자가 할일이 많아진다. page기법이나 여러 스케쥴링 기법 등으로 관리한다.

 

 

2) 파일 관리

 

 

 

 

컴퓨터의 대용량 저장장치 이용을 관장하는 것으로 구체적으로는 대용량 저장장치에 저장된 모든 파일에 관한 정보를 유지하는데, 이에는 각 파일의 저장 위치, 파일에 접근이 허용되는 사용자들에 대한 정보, 새로운 파일이 추가되거나 기존의 파일이 확장될 경우 사용할 수 있는 대용량 저장장치의 비어있는 공간에 관한 정보 등이 포함된다. 이러한 정보는 관련 파일을 포함하는 개별 저장매체 상에 유지되며, 해당 매체가 시스템에 연결될 때 정보들을 읽어옴으로써 해당 매체에 무엇이 저장되어 있는지 파악할 수 있게 된다.

3)입출력 관리

 

 

 

 

 

 

 

 

컴퓨터에 연결된 주변장치에 동작들을 수행하기 위해 제어기와 통신하거나 또는 주변장치와 직접 통신하는 프로그램을 제어한다. 프린터, 디스크 장치, 모니터 등의 각 장치 유형마다 각자의 장치 관리자가 있으며, 일반화된 요청을 개별 장치가 요구하는 독자적인 일련의 명령들로 변환시켜 준다.

 

 

 

 

 

<쉘의 역할과 종류>

 

쉘은 커널과 사용자의 인터페이스 사이에서 사용자의 명령을 번역 또는 해석하는 것이다.

 

1) 명령어 해석기 기능

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

 

2) 프로그래밍 기능

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

 

3) 사용자 환경설정 기능

초기화 파일 기능을 이용해 사용자 환경을 설정
명령을 찾아오는 경로 설정, 새로운 파일의 기본 권한 설정, 다양한 환경변수 설정 등 사용자별로 사용 환경의 특성을 초기화 파일에 설정 가능
로그인할 때 이 초기화 파일이 실행되어 사용자의 초기 환경이 설정됨

 

 

<Shell 의 종류>

1) Bourne Shell (sh)

구조적 프로그램을 만들 수 있는 프로그램 언어를 내장했고, 특히 입/출력 제어에 강력한 기능을 제공했다. 그러나 이 shell의 프로그램 환경 (비대화식 사용자 환경 : non-interactive user interface)은 매우 훌륭한 반면 대화식 사용자 환경(interactive user interface)은 매우 빈약하여 히스토리 기능, 앨리어스 기능, 작업 제어 등 사용자의 편의를 위한 기능을 다양하게 제공안함

 

2) C shell (csh)

Bourne shell의 단점인 대화식 사용자 환경을 강화하고 몇 가지 새로운 개념(job control, history, alias)을 도입한 C-shell을 캘리포니아 대학교 버클리 분교에서 만들었다. 그러나 초기의 C-shell은 많은 결함(bug)이 발견되어 이것을 사용하여 완전한 shell script를 만드는 데는 문제가 있었다. 그래서 많은 사람들이 C-shell의 사용에 주저했으나, 편리한 사용자 환경으로 인해 대화식 사용자 환경은 C-shell을 사용하고 비 대화식 환경(shell program)에는 주로 Bourne shell을 사용하는 기현상이 나타났다. 언어 구조가 C 언어와 유사하기 때문에 이해하기가 쉽다.

 

(3) Korn Shell (ksh)

AT&TDavid Korn에게 이러한 혼돈을 정리할 수 있는 idea가 있었고, 그 결과로 Korn shell(ksh)을 만들었다. Bourne shell의 비 대화식 사용자 환경에 C shell의 훌륭한 대화식 사용자 환경을 덧붙인 것이다. Korn shell은 곧 system V의 일부가 되었지만 나머지 다른 shell들과는 달리 "공짜"가 아니어서 ksh을 사용하려면 AT&T에 사용료를 지불해야 하는 문제가 있었다.

 

 

 

 

(4) Bourne Again Shell (bash)

GNU project에서 Korn shell에 버금가는 기능을 갖는 "공짜" shell이 필요하다는 결정을 하였고, 그 결과 bash(Bourne Again Shell)가 탄생했다. BashKorn shell과 마찬가지로 Bourne shell 에 기초하여 c-shell의 여러기능을 추가했고, Korn shell과는 달리 "공짜"였으므로 급속히 전파되어 리눅스의 기본 쉘로 동작하고 있어 리눅스 쉘로도 많이 알려져 있다.

 

(5) TC shell (tcsh)

C Shell의 결함을 고치고 다수의 새로운 기능(command line editing, spelling correction, login/logout watching )을 추가하여 TC shell(tcsh)이 만들어 졌다. 그러나 대다수의 UNIX시스템 제조업체에서 TC shell을 선택하지 않고 표준 C shell을 기본적으로 탑재했기 때문에 지금까지 비표준 shell로 남아 있다.

(6) Z-shell (zsh)

더 완전한 shell을 향한 끝없는 추구는 지금도 계속되고 있고, 그 결과 Bourne shell에 기초한 또 다른 shellZ-shell(zsh)이 나타났다. shell에는 전문가도 정확히 사용하기 힘든 여러 가지의 다양한 기능이 많이 추가되었다

 

   
   

 

- 사용자 등록시 시스템관리자가 지정하며, /etc/passwd에 정보가 저장된다.

< CLI (CommandLine Interface) >

  •  명령어기반의 프롬프트 환경 (ms-dos, Linux, unix)
  • [명령어] [옵션] [추가적인 전달인자(argument)] 명령어구조
   

 

 

 

 

 

<명령어>

<기본명령어>
/etc/passwd : 사용자 계정파일
/etc/shadow : 비밀번호 정보
Init 6 : 재부팅
echo $SHELL : shell 확인
 
man [찾을 명령어] : 찾을 명령어에 대한 매뉴얼 페이지 보기
매뉴얼페이지 space : 한페이지 보기
매뉴얼페이지 enter : 한줄씩 보기
매뉴얼페이지  b : 이전 페이지 보기
 
/[패턴] : 해당 문자열패턴을 검색
h : 단축키 확인
n : 다음검색
  q : 매뉴얼페이지 종료
 
pwd : 현재 디렉토리의 출력
cd : 작업 디렉토리 변경
ls : 특징디렉토리 내의 존재하는 파일이나 디렉토리의 목록을 출력 (/usr/bin/ls)
    ls –a : 숨겨진 것 포함하여 전체 출력
ls l : 파일이나 디렉토리의 상세정보
ls i : i-node번호 표시 (i-node: 실제 디스크에 파일이 존재하는 위치를 가르키는 정보)
ls d : 지정한 디렉토리 정보 (ex) ls –d /etc
ls F : 파일의 타입 표시
  /: 디렉토리
  @: (심볼릭)링크 파일
      *: 실행파일
      없는 : 파일
 
ls -R : 계층적 구조 모두 표시 (하위 디렉토리 모두 보기)
 
cat : 파일의 내용을 출력 (/usr/bin/cat)
cal : 달력출력
date : 날짜출력
uname : OS종류를 알려주는 명령어
clear: 화면 지움
which [명령어] : 파일의 위치
 
<시스템 제어 명령어>
Ctrl+c : 현재 실행중인 명령어를 종료
Ctrl+u : 현재 명령어 라인을 모두 제거
Ctrl+s : 화면출력을 정지
Ctrl+q : 정지한 화면을 다시 시작

 

<옵션>
 
netstat –a –n –o , netstat –ano
: 명령어를 사용할 옵션은 –a n -o처럼 따로 사용할수 도 있지만 -ano처럼 한번에 붙여서 사용할 수 있다.
 
[명령어]; [명령어] :  ‘;’ 명령어를 따로 구분해서 바로 다음 명령어 순차 실행

 

 

 

<디렉토리>
 
/ : 최상위 루트 디렉토리
. : 현재 디렉토리
.. : 상위 디렉토리
.파일명 : 숨겨진 파일
 
*명령어의 실행파일을 저장하는 디렉토리
/bin
/sbin
/usr/bin
/usr/sbin

 

<파일/디렉토리 필드 정보>
 


 
d       rwx r-x r-x         41         root         sys          1024       2013  3 16      usr
파일형식       권한        링크의 개수     소유자   소속된 그룹      크기         마지막 수정시간      파일이름
d: 디렉토리
-: 디렉토리 아님(파일을 의미)
l: 링크 (윈도우의 바로가기 아이콘 같은 역할)

 

<솔라리스 설치 설정>

기본값 설치: 1
언어 : us-en(F2)
 
network : 사용
hostname: Solaris 10
host IP :192.168.88.100
subnet mask: 255.255.255.0
 
IPv6 : 사용안함
(특별한 한개) router : 192.168.88.2
DNS 사용 : abc.com
서버IP: 168.126.63.1 (KT DNS 서버)
search domain: abc.com
NFSv4 domain name - 기본
관리자 비밀번호: dkagh1.(암호1.)
원격연결: 사용
오라클등록: 안함
 
나머지 기본값