OSI7계층

  • 최하위인 물리계층, 데이터링크계층, 네트워크 계층, 전송 계층, 세션계층, 표현계층, 응용계층으로 이루어 져있다
  • 전달기능 : 물리계층 데이터링크계층, 네트워크계층, 전송계층
  • 통신기능 : 세션계층, 표현계층, 응용계층
  • 계층     전송단위    역할/프로토콜
    응용계층 Data 사용자에게 직접 제공하는 서비스 및 응용 프로그램 간의 정보 교환 / HTTP,SMTP,POP3,IMAP,FTP,TELNET,SSH
    표현계층 Data 송수신할 정보의 표현에 차이가 있는 응용프로그램에게 연결 제공 / SMB,AFP,ASN.1
    세션계층 Data 응용프로그램 간의 통신을 관리하기 위한 방법으로 동기화를 유지하는 서비스제공 / SSL,TLS,NESBIOS
    전송계층 Segments 정보의 신뢰성있고 투명한 데이터 전송에 관한 서비스 제공 / TCP,UDP,RTP
    네트워크계층 Packets 정보의 전송을위한 경로 선택 / IP, ICMP, ARP, RIP, IPX
    데이터링크계층 Frames 물리적인 링크를 통해 신뢰성 있는 정보의 전송을 위한 통신로설정 / 이더넷, 토큰 링, ATM
    물리계층 bits 전송매체를 통한 전송 / RS-232, 10BASE-T, 100BASE-TX, DSL

네트워크 장비

LAN 구성장비

  • 네트워크 카드
    • 네트워크 안에서 컴퓨터끼리 통신하는데 쓰이는 하드웨어로 네트워크 어댑터
  • 케이블
    • 신호를 전송하게 되는 물리적인 전송매체
    • 장점 : 잡음에 강함, 대역폭이 넓어 여러 채널 동시 사용가능, 빠르게 전송가능
    • 단점 : 한 개의 컴퓨터가 문제가 생기면 전체 네트워크에 영향을 받을수 있어 그리 안전하지 않다
  • 광케이블 : 빠른 전송속도와 넓은 대혁폭을 가지고 있다. 또한 빛을 이용해 정보를 보내 전기적 간섭을 받지않고 오류 발생도 매우적다
  • 허브
    • 이더넷 네트워크에서 여러 대의 컴퓨터 및 네트워크 장비를 연결하는 장치
  • 인터네트워크 장비(게이트웨이)
    • 네트워크와 네트워크를 연결하는 것
    • 게이트웨이는 서로 다른 통신망과 프로토콜을 사용하는 네트워크 간에 통신 기능을 가능하게 해주는 장치를 뜻함
    • 리피터
      • osi모델에서 첫번쨰 물리계층에서 동작
      • 물리적으로 입력된 신호를 증폭하여 중계하는 장치
  • 브리지
    • 데이터 링크계층에 있는 여러 개의 네트워크 세그먼트를 연결해준다
  • 라우터
    • 물리계층, 데이터링크계층, 네트워크 계층의 기능을 지원하는 장비

Ethernet/LAN의 기본이해

LAN(Local Area Network)

  • 집, 사무실, 등 건물과 같은 가까운 지역을 네트워크 매체를 이용해 하나로 묶는 근거리 통신망

스타(star)형

  • 중앙에 위치한 중앙 컴퓨터가 각 컴퓨터 통신하는 방식(point to point 연결)
  • 고속의 대규모 네트워크에 이용
  • 일부장애 발생시에도 전체 네트워크에 영향을 주지 않음
  • 단말기 추가나 오류 진단이 용이
  • 단점 : 중앙 컴퓨터 고장시 전체 네트워크 중단, 회선수 증가시 제어 복잡, 고비용

버스(BUS)형

  • 하나의 통신 회선에 여러 컴퓨터를 연결해 전송하는 방법
  • 한번에 한컴퓨터만 전송가능
  • 단점 : 장애발생시 발생지 위치 주적 어려움

링형

  • 원형의 통신회선에 컴퓨터와 단말기를 연결하는 형태
  • 연결된 앞 컴퓨터로부터 수신한 내용을 다음 컴퓨터에 재전송하는 방법

망형

  • 스타형과 링형의 혼합된 형태로 각 네트워크 장비가 여러 인터페이스를 가지고 상호간에 그물망 형태로 연결
  • 장애발생시에도 다른 시스템에 영향이 적고 신뢰성이 높다
  • 단점 : 설치비용과 운영이 어렵고 장애발생시 고장지점 찾기어려움

LAN 전송방식

이더넷과 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)

  • MAC주소를 기반으로 상호간에 데이터를 주고 받을수 있도록 만들어졌다

토큰링

  • 여러 스테이션을 하나의 링에 이어져 형성되고 데이터는 한쪽 방향으로 흐르도록 하여 한컴퓨터에서 다른 컴퓨터 순으로 순서대로 전달된다
  • 특히 데이터 전송을 위한 네트워크 채널을 사용하려면 토큰이라는 일종의 사용권을 획득해야한다

FDDI(Fiber Distributed Data Interface)

  • 광섬유 케이블을 사용해 설계된 링 구조의 통신망으로 네트워크 액세스를 제어하기위해 토큰 패싱 방법을 사용

MAN(Metropolitan Area Network)

  • LAN과 WAN의 중간 형태로 위성 도시등을 연결한 형태를 말한다

WAN(Wide Area Network)

회선 교환방식

  • 송식 호스트와 수신호스트가 데이터를 전송하기 전에 연결 경로를 설정하여 일종의 물리적 전용선을 연결하는 방식
  • 모든 데이터는 같은 경로로 전달되고 고정된 대역폭을 할당받아 전송됨, 안정적인 데이터 전송률을 지원한다

패킷 교환방식

  • 패킷이라고 부르는 정보블록을 이용해 전송하는 방식
  • 전달하고자 하는 정보를 일정 크기로 분할하고 각각에 송수신 주소를 비롯한 관련 정보를 추가해 만든 데이터 블록
  • 고정대역을 할당 하지 않기 때문에 이론상 호스트들을 무제한 수용가능하고 패킷별로 우선순위 부여가능
  • 단점 : 회선 교환 방식에 비해 더많은 지연이 발생가능, 각패킷마다 오버헤드 비트가 존재
  • 패킷 교환방식
    • 데이터그램 방식: 비연결형 서비스를 이용해 전달되는 패킷들이 독립적으로 전송되고 연결설정하기 위한 과정이없고 경로를 미리 할당하지 않아 패킷도착순서를 예측할수 없다.
    • 가상 회선 방식 : 연결형 서비스를 지원하기 위한 기능으로 모든 패킷이 동일한 경로로 전송되어 도착순서를 알수 있다

X.25

  • 패킷망에서 DCE(회선 종단 장치)와 DTE(데이터 단말 장치)사이에 이루어지는 상호작용을 규약한 프로토콜
  • 네트워크 계층의 대표적인 프로토콜로 가변길이 프레임 전송을 지원하는 프레임릴레이의 근간을 이룬다

프레임 릴레이

  • LAN또는 WAN상에서 단말 지점간의 효율적인 데이터 전송을 위한 고안된 방법으로 패킷 대신에 프레임이라고 불리는 가변 길이 단위에 데이터를 넣고 재전송과 같은 오류 정정 기능은 단말지점에 맡기는 방식

셀릴레이 : ATM(Asynchronous Transfer Mode)

  • 셸이라고 부르는 고정길이패킷을 이용해 순서대로 자료를 전송하는 방식
  • 가상 채널 기반의 연결형 서비스로 프레임 릴레이 처럼 양 끝의 단말간의 오류제어와 흐름 제어를 한다

프로세스의 정의

  • 실행중인 프로그램
  • PCB(Process Control Block)를 지닌 프로그램
  • 프로그램 카운터를 지닌 프로그램
  • 능동적 개체로 순차적으로 수행하는 프로그램

프로세스의 생성

  • 시스템 호출 방법
    • fork : 새로운 프로세스 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그대로 실행됨, 새롭게 생성된 프로세스는 원래 프로세스랑 똑 같은 코드를 기반으로 실행됨
      따로 말이 없을 경우 fork형태 수행
    • bash 라는 프로세스를 할당받고 명령내리면 fork형태로 실행
    • exec : 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌워버린다 새로운 프로세스를 위한 메모리를 할당하지않고 exec에 호출된 프로세스만 메모리에 남겨둔다

프로세스의 종류

  • 포어그라운드 : 보통 셸에서 명령실행시 해당 프로세스가 종료될때까지 기다리는프로세스
  • 백그라운드 : 뒤에서 실행시키는 프로세스 , 다중작업을 수행시 유용, 작업번호[1]로 나타내고 뒤에는 PID가 붙음

멀티태스킹과 작업변환

  • 다수의 프로그램들을 백그라운드 프로세스로 실행시킨 상태에서 추가로 포어그라운드 프로세스로 다른 작업을 수행하는 것
  • [CTRL]+[z] : 포어 프로세스를 백그라운드 프로세스로 전환시키기
  • ”jobs “: 작업상태 확인하기
  • bg : 포그라운드 프로세스를 일시중단된 상태에서 백그라운드 프로세스로 전환
  • fg [%]작업번호 : 백그라운드 프로세스를 포어그라운드 프로세스로 전환하기
  • 나타나는 결과에서 +는 가장늦게 실행한 프로세스 작업번호없이 fg명령수행하면 이 작업이 포어그라운드 프로세스로 전환됨
  • 결과에서 -가 붙으면 +붙은작업 다음우선순위 작업

시그널

  • 특정 프로세스가 다른 프로세스에게 메시지를 보낼 때 시그널이 발생한다
  • kill-l’에서 명령어 확인가능
  • 일반적으로 사용하는 시그널
  • 종류
    이름: 설명
    SIGHUP : 로그아웃과 같이 터미널 접속이 끊겼을때 보냄
    SIGINT: 키보드로부터 오는 인터럽트 시그널로 실행을 중시 [ctrl]+[c]입력시 보냄
    SIGQUIT : 키보드로부터 오는 실행 중지 시그널 [ctrl]+[]입력시 보냄
    SIGKILL : 무조건 종류, 프로세스강제종료할때 보냄
    SIGTERM : 정상종류 시그널로 kill명령의 기본 시그널
    SIGCONT : STOP시그널 등에의해 정지된 프로세스를 다시 실행시킬 때 보냄
    SIGSTOP : 터미널에서 입력된 정지 시그널
    SIGTSTP: 실행정지후 다시 실행을 계속하기위해 대기시키는 시그널 [ctrl]+[z]입력시 보냄

프로세스 관리의 이해

데몬

  • 데몬 - 주기적이고 지속적인 서비스를 요청하기위해 계속 실행되는 프로세스로 백그라운드로 실행된다. 주로 이름에 d를 붙임
  • standalone방식 - 프로세스의 상태를 확인하는 ps명령으로 확안한다. 보통 부팅시실행되어 해당 프로세스가 메모리에 계속 상주하면서 클라이언트의 서비스 요청을 처리하는 방식
  • inet방식: 프로세스가 메모리에 항상 상주하는 것이아니라 클라이언트의 서비스 요청이 들어왔을때 관련 프로세스를 실행 시키고 접속 종료후에는 자동으로 프로세스를 종료시키는 방식

데몬의 실행

  • 주기적이고 지속적인 서비스 요청을 처리하기 위한 프로세스
  • /etc/rc.d/init.d 디렉터리
    • 서비스에 대해 시작과 중지를 시킬수있는 스크립트를 포함하고있다
    • service : /etc/rc.d/init/d 디렉터리에 존재하는 스크립트를 쉽게 시작하거나 중지시킬수 있는 스크립트로 절대경로로 전부 입력하는 대신 간단히 서비스명과 인자값을 지정해 실행가능
  • rc0.d~rc6.d 디렉터리
    • init프로세스가 실행 레벨 n을 시작하면 rcn,d디렉터리에 존재하는 모든 링크를 점검한다
    • 기본형식 : [K|S] [번호] [init.d_이름]
    • 의미
      • K : Kill을 의미하며 실행되지 않을 서비스를 말한다
      • S : Start를 의미하며 해당 실행 레벨에서 실행되어야하는 서비스를 말한다
      • 번호 : 순차적인 번호로 시작이나 중지순서를 나타내는 번호이다
      • init.d_이름 : 관습에 따라 링크가되는 스크립트명을 사용

데몬관련 유틸리티

  • ntsysv
    • 텍스트 환경에서 커서를 이용하여 부팅중 자동으로 실행되는 서비스를 설정할 수 있는 유틸리티
    • 사용법 : #ntsysv[option]
    • 주요옵션
      • level 실행레벨: 특정실행 레벨을 편집 없을 경우 현재 구동중인 레벨 의 서비스 데몬 설정
  • chkconfig
    • 텍스트 기반의 명령 프로그램으로 실행 레벨에 따른 서비스의 on off설정 리스트를 출력하거나 설정
    • 사용법 : #chkconfig option [service]
    • 주요옵션
      • --list : 각실행 레벨에서의 서비스의 설정 상태를 보여준다
      • --add/del 서비스: 서비스를 추가 /삭제
      • -level 레벨서비스 /on/off/reset : 해당레벨에서 특정서비스의 상태를 설정

1. 셸의 이해

1. 셸의 개념과 특징

(1)

-커널과 사용자간의 다리 역할

-사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할

-커널에서 분리된 별도의 프로그램이어서 다양한 종류의 셸이 존재

-사용자가 시스템에 로그인 하게되면 각 사용자에게 설정된 셸이 부여되면서 다양한 명령을 수행 가능(사용자에게 셸을 부여하지 않으면 로그인을 하더라도 명령 수행 불가능)

 

(2)주요 셸의 특징

-Bourne Shell : 유닉스 버전 7의 기본 셸

-bash : 현재 리눅스의  표준 셸

명령어 문법 ‘sh’와 호환됨, 명령어 히스토리,명령어 완성기능, 히스토리치환 , 명령어

편집 지원

-C Shell : C언어를 기반으로 만들어졌고 강력한 프로그램 작성기능을 가짐

           히스토리기능, 별명기능, 작업제어 기능포함

           명령행 편집기능 지원하지않음

-tcsh : The Enhanced C Shell

           Csh의 기능을 강화시킴 명령어 완성기능, 명령행 편집 기능 추가 지원

-ksh : 본셸을 확장하고 C셸의 기능을 추가

작업제어, 앨리어스(별명기능),히스토리기능, viEmacs스타일의 명령행 편집기능, 명령행 완성기능 제공

 

2. 셸확인과 변경

(1)셸확인

-환경변수 SHELL을 통해 확인

-명령프롬프트 상에 ‘echo $SHELL’

-‘chsh-l’ (change shell)or ‘cat /etc/shells : 다른 셸을 사용하기위해 변경가능한 셸확인

 

(2)셸의 변경

-‘chsh’ : 사용자가 로그인 셸은 변경

           셸을 절대경로로 입력하면 변경가능 대신 적용은 다음 로그인부터 가능

 

(3)사용자의 로그인 셸 정보확인

- /etc/passwd7번쨰 필드에 기록됨

-‘$ grep 사용자명 /etc/passwd’로 확인가능

 

3. 셸 환경설정

(1)셸 변수

- 특정 셸에서만 적용되는 변수

-리눅스에서는 명령행에서 변수명 =형태로 지정하고 변수값 출력시 변수명 앞에 $붙이고echo명령으로 확인가능

 

(2)환경 변수  

-프롬프트 변경, PATH변경 등과 같이 셸의 환경을 정의하는 중요한 역할을 수행하는 변수

-미리예약된 변수명을 사용

-evn : 현재설정된 전체 환경변수 값 확인명령

-특정환경변수의 값 확인과 설정은 일반 셀변수 설정과 같다

 

(3)주요 환경변수

           변수 : 내용

-> HOME: 사용자의 홈 디렉터리

->PATH: 실행파일을 찾는 디렉터리경로

->LANG: 셸사용시 기본으로 지원되는 언어

->TERM: fhrmfldsgks 터미널 종류

->PWD:사용자의 현재 작업 디렉터리

->SHELL:사용자의 로그인셸

->USER:사용자의 이름

-> DISPLAY :X에서 프로그램 실행시 출력되는 창

->PS1: 프롬프트 변수

->PS2:2차프롬프트 변수

->HISTFILE:히스토리파일의 절대경로

->HISTSIZE:히스토리 파일에 저장되는 명령어의 개수

->HISTFILESIZE:히스토리 파일의 파일 크기

->HOSTNAME:시스템의  호스트명

-> MAIL: 도착한 메일이 저장되는 경로

->  TMOUT: 사용자가 로그인한후 일정시간동안 작업을 하지 않을경우 로그아웃 시키는 시간의 단위는 초

->UID: 사용자의 UID

(3)환경 변수의 사용 및 변경

-환경변수를 사용해 각 사용자의 고유의 셸환경 구축 및 명령어와 별합하여 사용가능

Cf)주요 프롬프트 형식

           \d : ‘요일 월 일 형태로 날짜 표시

           \h: 호스트 이름 표시

           \s:사용중인 셸의 이름을 표시

           \t: 24시형태의 현재시간을 표시

           \T:12시 형태의 현재시간을 표시

           \@:12시형태의 현재시간에 AM/PM을 추가로 표시

           \u:현재 사용자의 이름을 표시

           \w: 현재 작업 디렉터리를 절대경로로 표시

           \W: 현재 작업 디렉터리의 전체경로중 마지막 디렉터리만 표시

           \!: 현재 명령의 히스토리 넘버를 보여준다

 

4. 배시셸의 주요기능     

(1) 명령행 완성기능

-명령시 글자 일부분만 입력하고[TAB]키를 눌러나머지 부분을 자동 완성 시키는 기능

-첫글자입력후 [ TAB]여러 개 존재시 다시한번  누르면 확인가능

 

(2)명령어 History 기능

-위아래 방향키를 이용해 검색 및 편집해 특정명령어를 반속해서 수행가능

-history명령은 !로 대처 가능

-명령입력하면 히스토리 리스트에 있는 명령어들이 출력됨

-사용법 : $ history[숫자값]

-!와 히스토리 명령문

           !! : 마지막에 사용한 명령 실행

           !n :n번쨰 사용한 명령 실행

           !-n:역으로 n번째 사용한 명령실행

           !문자열: 가장최근 사용한 명령중 문자열로 시작하는 명령 찾아 실행

           !?문자열? : 가장최근명령중 문자열을 포함하고 있는 명령을 찾아 실행

           ^문자열1^문자열2 : 마지막에 사용한 명령문의 문자열 1’문자열2’로대체후 실행

-히스토리 관련 환경변수

           변수명 : 설명

           HISTSIZE : 히스토리 스택의 크기가 지정되어 있는 변수

           HISTFILESIZE : 실질적인 히스토리 파일의 크기

           HISTFILE :히스토리 파일의 위치

           HISCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수

           HISTIMEFORMAT : history명령 실행시 출력되는 시간형식을 지정할떄 사용

-관련 파일 : .bash_history

-> 사용자들이 입력했던 명령이 기록되는 파일

-> 파일명이 ‘.’로 시작되어 숨겨진 파일형태로 존재하고 로그인해 내린 명령들은 로그아웃할 때 기록됨 그래서 다음 로그인시 확인가능

-history관련키

-> [Ctrl]+[r] : 특정문자 입력시 최근 그문자로 수행한 명령 보여줌

->[ESC] [.] : 최근 사용한 명령행을 붙여주는데 한번실행할때마다 하나씩 역으로 호출됨

->[ALT]+[.] :두키를 계속누르면 최근 사용된 인자를 하나씩 호출됨

 

(3)alias 기능(별명)

-어떤 명령 지정해 놓으면 사용자가 그 명령 실행시 alias로 지정해 놓은 명령이 대신 실행됨

-alias만 실행시 별명이 설정된 목록 확인가능

-unalias는 설정된 명령 해제

-사용법 : $alias [별명=’명령어’]

           $unalise 별명

(cf) alias를 지정했을 때 원래 명령을 설정 해제하지 않고 명령을 일시적으로 실행하려면 which명령을 이용해 해당 명령어의 위치를 파악후 절대 경로 로 실행하는 방법과 명령어앞에 \을 붙이는 방법이 있다

셸상태에서 설정한 alias는 재로그인하거나 시스템 부팅시 다시 설정해야 해서 ㅈㅣ속적으로 사용하려면 홈디렉터리 안에 있는 /bashrc에 설정하면된다)

 

(4)명령행 편집 기능

-주요 커서 이동 명령

           [ctrl]+[b] : 커서를 왼쪽으로 한칸이동

           [ctrl]+[f] : 커서를 오른쪽으로 한칸 이동

           [esc][b]:커서를 왼쪽으로 한단어 이동

           [esc][f] : 커서를 오른쪽으로 한 단어 이동

           [Ctrl]+[a] : 맨왼쪽으로 이동

           [Ctrl]+[e] : 맨오늘쪽으로 이동

-주요 삭제 명령

           [ctrl]+[d] : 커서 오른쪽 한 글자 삭제

           [esc] [backspace] : 커서 왼쪽 한 단어 삭제

           [esc] [d] : 커서 오른쪽 한단어 삭제

           [ctrl]+[k]: 커서 왼쪽 행 전체 삭제

           [ctrl]+[u] :행전체삭제

           [ctrl]+[y] : 삭제취소

 

(5)명령 대체 기능

-특정 명령의 결과를 다른 명령어의 인자값으로 사용하는 것

-$() ‘’를 이용해 대체가능

 

(6)그룹 명령 실행

- ;  :  단순히 한줄에 여러명령을 나열하기 위해 사용하고 입력순서대로 순자처리됨

- || : 논리적 or이라고 부름 명령성공시 결과출력 그렇지않으면 뒤에 명령 실행

- && : 논리적 and라고 부름 앞에 명령이 성공이여야만 다음 명령수행됨

-ex : $ls;find/-type>list.txt  -> find/-type 의 명령결과를 list.txt파일로 저장

 

(7) 표준입출력 제어 기능

-표준 입력과 출력이라는 이름의 데이터 흐름을 말함

-종류

->표준 입력(Standard Input) : 입력을 담당하는 키보드 약어 stdin 셸에서는 0으로 표시

->표준 출력(Standard Output) : 명령 결과값이 보여지는 화면 약어 stdout 셀에서는 1(생략가능)으로 표시

->표준 에러(Standard error) : 에러값이 보여지는 화면 약어 stderr 셸에서는 숫자 2

 

(8) 라다이렉션

-표준 입출력이 아닌 다른입출력으로 변경시 사용

-출력결과 파일로 저장하거나 파일의 내용을 프로세스의 입력으로 사용하는 기법

-종류

           > : 프로세스출력을 표준출력에서 다른 출력으로 변경

           >> : 프로세스의 출력을 지정한 출력에 추가

<< : 기호 뒤에 지정한 문자열을 입력받아 해당 문자열이 나오기 전까지의 표준 입력을 삼아 해당 내용을 출력

 

(9)파이프 |

-어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 하는 것

-여러 개의 파이프 라인을 구성하면 데이터들은 파이프 라인에 따라 흐르게됨

-사용법

$명령어1 | 명령어 2 : 명령어 1의 결과값이 명령어 2의 입력으로 사용됨

- “tee

-> 파이프 연결출력을 두갈래로 나눌 때 사용하는 명령어

-> 사용법 : $tee [option] [파일]

-> 옵션

           -I : 인터럽트를 무시하도록 한다

           -a : 지정된 파일로 출력을 덮어쓰지않고 파일뒤에 내용을 추가

Ex) $find /-name ‘*.txt’ 2>error.txt >result.txt

=>결과값은 result.txt에 저장하고 에러값은 error.txt에 저장

 $find /-name ‘*.txt’ 2>error.txt

=> 결과값은 화면에 출력하고 에러는 error.txt파일에 저장

 

2. Shell Programming

- 셀프로그래밍  : 셸에서 사용되는 여러 명령어들을 모아 하나의 파일로 만드는 과정

(1)셸 스크립트 작성 방법

           1. vi편집기를 사용하여 파일생성 -> $vi who.sh

           2. 첫번째 줄은 사용할 셸을 명시 -> #!/bin/bash

           3. 두번째 줄부터 원하는 명령 및 구분 입력

           4. 스크립트를 실행가능한 파일로 만듦 -> $chmod 755 who.sh

           5. 실행 시킨다   -> $./who.sh

            Cf) ./는 현재 디렉터리 안에 있는 해당파일을 실행시키라는 것

           실행권한 없이도 실행하는 방법

$sh who.sh

$soure who.sh

$ . who.sh

 

2. 셸 프로그래밍 문법

(1)주석

#

(2)변수

-변수형은 문자열만 가지며 변수형 선어는 필요가 없다

-사용법

Var=var

-기타변수 대응법

           종류 : 설명

           ${name} : name이라는 변수에 들어있는 값으로 치환

${name:=value} :  namenull이면 value로 할당하여 지정 name값이 있으면 그값을 사용

${name:+value} : 기존의 name null이 아니면 value를 사용하지만 name에 저장하지는 않는다

${name:-value} :  기존의 name값이 있다면 그값을 사용하고 값이없으면 value 값을 대입한다. Namevalue값을 저장하지는 않음

${name:?value} : 기존에 name값이 있다면 기본값으로하고 없으면 error을 내면서 value값을 보여준다

${#name} : name의 문자열 길이 반환

${name:offset} : name값에서 offset만큼 삭제후 값을 반환

${name:offset:length} : name값에서 offset만큼 삭제한후 length만큼 센뒤 값을 반환

-관련 환경변수

$IFS : 입력필드 구분자로 셸 상에서 입력을 읽어 들일때 글자를 구분하기 위한 목적으로 사용되는 문자 목록을 말한다. 스페이스, , 개행문자 사용

-아규먼트 변수(위치 매개변수)

-> 이변수는 매개변수를 불러올 때 스트립트의 명령행 인자를 담당

           $0 : 실행된 셸스크립트명

           $1 : 스크립트에 넘겨진 첫번째 아규먼트

           $2 : 스크립트에 넘겨진 두번쨰 아규먼트

           $# : 스크립트에 넘겨진 아규먼트의 개수

           $$ : 셸스크립트의 PID

$* : 스크립트에 전달된 인자 전체를 하나의 변수에 저장하면 IFS변수의 첫번째 문자로 구분

$@ : $*와 동일하지만 IFS변수를 사용하지 않음

$? : 실행한뒤반환 값 참이면 0거짓이면 1

$- : 현재 shell이 호출될 때 사용한 옵션

-Shell변수의 출력과 제거

           명령 : 설명

           set : 현재 정의되어 있는 모든 변수와 그값을 출력

           env : export된 변수의 값만 출력

export: 특정 변수의 범위를 환경 데이터 공간으로 전송하여 자식 프로세스에서도 그 특정 변수를 사용할수 있게함

           upset : 선언된 변수 제거

 

(3) echo문과 escape문자

-echo문은 라인을 제어하는 명령 해석기 -e옵션과 같이 \로 시작하는 escape특수문자 사용가능

-escape특수 문자

-> \f : 앞문자열 만큼 열을 밀어 이동

->\n : 새로운 줄로 바꿈

->\r : 앞문자열의 앞부분부터 뒷문자열만큼 대체하고 반환

->\t : 탭만큼 띄움

-> \\ :\를 표시

(4)간단한 조건식

-사용법

           Test 표현식

           [ 표현식 ]

-표현식

           문자열비교

           산술비교

           [ expr1 -eq expr2 ] : 두 표현식이 같다면 참 (Equal)

           [ expr1 -ne expr2 ]: 두표현식이 같지않다면 참(not equal)

           [ expr1 -gt expr2 ] : expr1>expr2면 참(greater then)

           [ expr1 -ge expr2 ] : expr1>=expr2이면 참(greater equal)

           [ expr1 -lt expr2 ]: expr1<expr2면참(less then)

           [expr1 -le expr2 ]:expr1<=expr2 면 참(less equal)

           [ ! expr ] : expr이 참이면 거짓, 거짓이면 참

           [ expr1 -a expr2 ] : expr1 AND expr2의 결과

           [ expr1 -o expr2 ] : expr1 OR expr2의 결과

파일의 조건

 

3. 조건문

(1)if

-사용법

           If [조건1]

           then

                      실행문장1

           elif [조건2]

           then

                      실행문장2

           else

                      실행문장3

           fi

(2)case

-사용법

           case 문자열

           in

                      정규식)명령어1;;

                      정규식)명령어2;;

                      *)해당하지않는 경우

           esac

(3)select

-사용법

           select 변수 in 1,2,,,,

                      do 실행문장

                      done

4. 반복문

(1)for

-사용법

           for 변수 in 1, 2

           do 실행문장

           done

(2)while

-사용법

           while 조건문

           do 실행문장

           done

(3)until(while 과 같지만 조건이 반대일때실행)

-사용법

           until 조건문

           do 실행문장

           done

5. 함수

-사용법

(function) 함수이름       //function 은 생략가능

{ command }

6. 패턴과 패턴비교

-일종의 문자열을 연산한 것으로 특정 패턴을 놓고 변수의 문자열 값이 일부분이라도 이 패턴과 일치하는지 검사할때사용

-종류

${variable#pattern} : 처음부터 패턴과 맞는 variable의 부분을 찾아 이중 가장 작은 부분제거하고 나머지 반환

${variable##pattern}: 처음부터 패턴과 맞는 variable부분을 찾아 가장 큰 부분을 제거하고 나머지 반환

${variable%pattern}:끝에서부터 패턴과 일치하는variable의 최소부분 제거하고 나머지반환

${variable%%pattern}: 끝에서부터 패턴과 일치하는 variable의 최대부분을 제거하고 나머지 반환

1. X윈도의 개념 및 특징

1.종류

-XFree86

-X.org

 

2.특징

-네트워크 프로토콜에 기반을 둔 그래픽 사용자 인터페이스 환경

-디스플레이 장치에 의존적이지 않고, 서로 다른 이 기종을 함께 사용할수 있다

-다양한 종류의 컴퓨터에서 구동될 수 있을 정도로 이식성이 높다

-그래픽 환경에 필요한 자원들이 특정형태로 정의되어 있지않아 사용자가 원하는대로 변경가능

-구조 : 클라이언트/ 서버 구조

->서버 : 그래픽하게 보여주는 하나의 시스템

->클라이언트: X서버 위에 동작하는 일종의 응용프로그램

 

3. XlibX관련 라이브러리

-Xlib : Cdjsdjfh 구현된 클라이언트 라이브러리로 X서버와 대화를 해주는 역할

-개발자들은 관련 프로토콜에 관한 자세한 정보 없이도XLib를 통해 다양한 프로그램을 구현할수 있다

-XCBXlib에 비해 향상된 쓰레딩 기능을 지원하고, 확장성이 뛰어나다 또한 라이브러리의 크기가 작고 단순하여 직접 x프로토콜에 접근도 가능하다

 

2. X윈도설정과 실행

-X위도 사용시 가장 중요한 것은 그래픽 카드 설정이다

1. X윈도 실행방법

(1)Runlevel 5

-> 부팅시 바로 X원도 사용

(2)Runlevel 3

-> 텍스트 모드(runlevel 3)에서 실행하는 방법이다

-> 사용자 계정으로 먼저 로그인후  startx명령을 이용해 X윈도 실행

2. 디스플레이 매니저

-종류 : XDM(X Display Manager), GNOME에서 사용하는 GDM(GNOME Display Manager), KDM(KDE DisplayManager)

3. startx

- X윈도를 실행시키는 스크립트로 시스템환경을 초기화 시키고 시작하는데 필요한 여러 프로그램을 호출하고 최종적으로는 xinit를 호출하는 명령어

-사용법 : $startx[option]

-옵션

           -- : 명령행의 인자값을 xinit에 넘겨준다

3. 데스크톱 환경

-데스크톱 환경 : GUI환경을 이용하기 위해 사용자에게 제공되는 인터페이스 스타일을 말한다

-보통 윈도 매니저를 포함하여 파일관리자, 아이콘, , 도구모음,폴더, 배경화면,데스크톱위젯을 제공, Drag&Drop과 프로세스 간의 통보와 같은 기능도지원

-GNOME, KDE,Xfree,LXDE등 과 같은 환경이 있다

 

-종류

1. KDE환경(K Desktop Environment)

-‘yum install konq-plugins라고 입력하면 패키지 다운가능

-주요 프로그램

-> konqueror : 웹 브라우저 및 파일관리 프로그램

-> dolphin : 파일 관리 프로그램

->kwrite: 텍스트 편집기 프로그램

-> Gwenview : 이미지 뷰어 프로그램

-> KColorChooser : 색상 선택 프로그램

-> KColorEdit: 색상 파렛트 편집 프로그램

->KlconEdit : 아이콘 편집 프로그램

->KRuler: 스크린자 프로그램

->KSnapshot: 스크린캡처 프로그램

->KolourPaint : 페이트 프로그램

->Okular: 문서 뷰어 프로그램

->KGet: 다운로드 관리자 프로그램

->KMail : 메일 클라이언트 프로그램

-> Konsole: 터미널 프로그램

->KDiskFree: 디스크 사용량 뷰어 프로그램

->KSystemLog: 시스템 로그 뷰어 프로그램

->KUser: 사용자 관리 프로그램

->Krfb: 데스크톱 공유 프로그램

->Dragon Player: 비디오 재생 프로그램

2. GNOME(GNU Network Object Model Environment)

-GNU에서 만든 공개형 데스크톱환경-

-단순하고 사용하기 쉽게 동작하는 것이 목표

-재사용이 쉽고 소스코드 공개, 특별한 기술 없이도 손쉽게 하용가능

-자유로운 프로그래밍 언어 허용

-주요 프로그램

->nautilus : 파일관리 프로그램

->Cheese : 웹캠을 이용한 사진 및 비디오 추출 프로그램

->GIMP : 이미지 편집, 변환,생성 프로그램

->Rhythmbox: 인터넷 라디오 및 음악 연주 프로그램

-> gThumb: 이미지 뷰어 및 편집 프로그램

-> gnome-terminal : 터미널 프로그램

-> gedit: 문서 편집 프로그램

->evince: 문서 뷰어 프로그램

->totem : 사운드 및 비디오 플레이어

-> gnome-system-monitor: 프로세스 및 자원 모니터링 프로그램

-> sound-juicer : CD플레이어 프로그램

-> evolution: 메일, 달력,주소록 관련 프로그램

4. 윈도 매니저

-X위도 환경에서 윈도의 배치와 표현을담당하는 시스템 소프트웨어

-대부분의 윈도 매니저 프로그램은 데스크톱 환경 구성에 도움을 주기위해 설계됨

-종류 : GNOME에 사용되는 Mutter Metacity, KDE에 사용되는 KWinKWM, twm,dxwm,hpwm,tekwm,olwm,pswm,vtwm,tvtwm,olvwm,Blackbox 등등

5. X윈도 활용

1. 원격지에서 X클라이언트 이용

-X윈도는 X서버와 X클라이언트가 독립적으로 동작하는 네트워크 지향 시스템이기 때문에 원격지의 X클라이언트를 다른 시스템의 X서버에서 실행 시킬수 있다.

(1)xhost

-X서버에 접근할 수 있는 클라이언트를 지정하거나 해제하는 명경어

-사용법 : #xhost [+|- ] [IP주소 or도메인명]\(딱히 기호가없으면 +로 간주)

Ex) #xhost +183.333..43.22 -> 해당번호 접속을 허가한다

(2)DISPLAY

-X클라이언트 프로그램이 실행될떄 표시되는 창이 설정되어 있는 환경변수

Ex) #export DISPLTY=”222.333.43.133:0.1” -> X클라이언트 프로그램을 해당주소의 첫번째 실행된 X서버의 두번쨰 모니터로 전송

(3)xauth

-xhost를 사용해 전체 클라이언트를 허가하거나 또는 IP주소 및 호스트명으로 허가한다고해도IP변경 등의 방법을 사용해 원치않는 불필요한 클라이언트가 접속할수 있다 이경우 해결하기위해 xauth를 사용한다

-X접근허가(authority)파일 관련도구

6. 윈도 응용 프로그램

1.GIMP(gnu Image Manipulation Program)

-사진이나 그림 편집하는 자유 소프트웨어

2. Totem

-GNOME데스크톱 기반의 Movie Player이다

3. KMid

-미디 및 노래방 파일 플레이어

4.ImageMagic

-비트맵 이미지를 보여주고 생성 및 편집이 가능하도록 지원해주는 프로그램 패키지

5.ego

-GNOME데스크톱에서 제공하는 이미지 뷰어 프로그램

6. kdegraphics

-KDE에서 제공하는 그래픽 관련 프로그램 패키지

7. Rhythmbox

-GStreamer media Framewor에 기반을 둔 통합형 음악 관리 프로그램

8. evince

-멀티 페이지 문서 프로그램으로 PDF,PS,EPS지원

9. LibreOffice

-무료로 배포되는 오피스 프로그램 패키지로 워드프로세서인 LibreOffice Writer,프레젠테이션 프로그램인 LibreOffice Impress, 스프레드시트 프로그램인 LibreOffice Calc,드로잉프로그램인 LibreOffice Draw등으로 구성되어 있다

1. 부트 매니저(부트 로더: 부팅매니저 프로그램)

-부트 매니저: 부팅을 도와주는 역할을 하는 프로그램

-하드디스크 맨 앞쪽 MBR(Master Boot Record)에 설치가 된다

(MBR: 부트 섹터로 디스크의 첫 번째 섹터(0)에 해당되고 크기는 512 바이트이다/ 부티매니저프로그램과 파티션 정보이 기록됨)

 

1.LILO(Linux Loader)

- 특정 파일 시스템에 구애받지 않고 플로피 디스크와 하드디스크를 이용한 부팅을 지원한다

- 현재는 잘사용하지 않음

 

2.GRUB(Brand Unified BootLoader)

-LILO에 비해 다양한 파일시스템을 지원하고 커널 인자를 조정하여 동적인 부팅을 지원한다

-메뉴인터페이스 방식을 사용하고 Bash와 같은 명령행 인터페이스를 추가로 제공

-그래픽 메뉴와 배경그림 삽입도 가능

(1)GRUB의 부팅보드

-> [a] : grub.conf에서 kernel과 관련된 부분의 매개변수를 추가할 수 있게 해준다.

           싱글모드로 진입할 때 이키를 누르고 맨위에 single또는 1이라고 입력하면됨

-> [e] : grub.conf에 등록된 부팅목록의 모든 항목을 직접 편집할 수 있게해준다

           이때 메뉴를 편집한다고해서 grub.conf가 바뀌는 것이아니고 현재 부팅시에만 일시적으로 적용됨

           편집을 잘못 했을 경우 esc누르면 됨

           지원키

-      e : 커서가 위치한 줄 편집

-      d: 커서가 위치한 줄 삭제

-      o : 명령 줄을 커서가 위치한 줄의 아래에 추가

-      O : 명령줄을 커서가 위치한 줄의 위에 추가

-      b : 부팅을 시작한다(최종 편집후 부팅시 사용)

->[c] : 상호 대화식으로 직접 입력할수 있는 모드로 사용방법은 명령어를 입력하는 bash shell과 비슷하다

           [Tab]를 이용하여 명령행 자동완성

           [Esc]키를 사용하여 취소

           순차적으로 입력후 맨마지막에서 boot입력시 부팅됨

 

(2) GRUB의 환경 설정 파일

-> 내용

#boot=/dev/sda             //부팅되는 하드디스크를 지정하는 항복으로 시스템에 장착된 하드디스크가 하나인경우 주석처리됨

default=0                     //전원켰을떄 기본적으로 부팅되는 운영체제를 설정하는 항복으로 grub메뉴 화면에서 선택하지 않았을시 이값을 기준으로 운영체제가 선택된다

timeout=10                  //grub메뉴 화면에서 대기시간으로 단위는 초이다 주석처리나 항목없으면 [enter]눌러야 부팅됨

splashimage=(hd0,3)/boot/grub/splash.xmp.gz        //grub화면의 배경이미지를 지정하는 부분

title CentOS                  //리눅스운영체제의 기본형태

titme Dos  //윈도우 언엥체제의 기본형태

(cf)리눅스 디바이스와 grub디바이스와의 관계

           -(fd0) : 첫번째 플로피디스크 장치인 dev/fd0을 말함

           -(hd0) : 첫번째 하드디스크를 의미하는 것으로 /dev/sda또는 /dev.hda 가 해당

           -(hd1) : 두번째 하드디스트인 /dev/sdb또는 /dev/hdb를 의미

           Ex) (hd0,3) : /dev/sda4또는 /dev/hda4를 의미

 

2. 디렉터리 구조 및 역할

-디렉터리: 파일을 보관하는 곳

-종류

-> / : 최상위에 있는 디렉터리로 루트 디렉터리

-> /bin : 일반적인 binbinary의 약자로 실행 파일들이 들어있다. 명경어 라는 것들이 있는 디렉터리

-> /boot : 부팅 이미지 파일이나 커널 등 시스템 부팅시 필요한 파일이 있는 디렉터리이다

-> /dev : 하드디스크, CD-ROM,터미널 등 실제 존재하는 물리적인 장치들을 파일화하여 관리하는 디렉터리

-> /home : 개인사용자들이 파일이나 디렉터리를 만들어 사용할수 있는 홈디렉터리가 위지한다

-> /etc : 시스템 환경 설정 파일 및 부팅과 관련된 여러 가지 스크립트 파일이 들어있다

-> /lib : 각종 라이브러리가 저장되어 있는 디렉터리로 커널 모듈도 포함됨

-> /lost+found : fsck명령어를 이용해 파일 시스템을 복구할 때 작업하는 디렉터리

-> /mnt : CD-ROM ,플로피디스크, 하드디스크, 등을 마운트 할떄 포인터가 되는 디렉터리

-> /misc : 자동마운트 프로그램인 autofs에 의해 사용되는 디렉터리

-> /opt : 응용 프로그램들의 설치를 위해 사용되는 디렉터리

-> /proc : 가상파일 시스템으로 시스템에서 운영되고 있는 다양한 프로세스의 상태정보, 하드웨어 정보ㅡ 기타 시스템 정보등을 담고있다

-> /sbin : ‘System Binary’의 약자로 주로 시스템 관리에 대한 명령어들이 있는 디렉터리로 보통 슈퍼유서인 root가 사용한다 여기에는 시스템 종료 명령, 네트워크 인터페이스 설정명령, 시스템점검과 복구 명령어가 있다

-> /tmp : 임시저장 디렉터리로 각종 프로그램이나 소켓파일, 프로세스 작업을 할 때 임시로 생성되는 파일을 저장하는 공간이고 이 디렉터리는 모든 사용자에게 접근이 가능하다

-> /usr: 시스템운영에 필요한 명령, 응용 프로그램들이 위치하는 디렉터리이다.

-> /var : 시스템 운영 로그 파일과 스풀링과 같은 가변적인 데이터를 보관하는 디렉터리

-> /sys : 하드웨어 정보를 가지고 있는 디렉터리이다. /proc디렉터리에서 기본적인 하드웨어 정보를 제공하나 /뇬에서는 계층적인 구조로 정보를 제공한다

-> /cgroup : control group 은 시스템상에 동작중인 태스크들을 임시로 그룹지어 제어할수있도록 도와주는 기능을 제공하는데 관련정보를 담고있는 디렉터리

-> /run : 부팅 이후 동작중인 프로세스의 런타임데이터를 저장하고있는 디렉터리

 

3.부팅과 셧다운

1. 부팅

-컴퓨터의 전원이 켜진후 운영체제가 가동되어 사용자가 컴퓨터를 사용할 수 있도록 만들어 주는 과정

-부팅은 하드웨어단계(시스템에 장착된 하드웨어를 인식하고 점검)와 소프트웨어적 단계(사용자가 운영체제를 사용하고 다양한 응용 프로그램을 사용할 수 있도록 메모리에 상주 시킴)

-하드디스트에 설치된 운영체제의 부팅 과정

           1.. 컴퓨터 전원을 켜면 바이오스는 컴퓨터에 장착된 HW를 점검

           2. 바이오스는 하드웨어검사가 끝나면 CMOS에 설정된 첫번쨰 부팅 하드디스크를 확인

           3. 첫번쨰 하드디스크의 MBR영역에 있는 부트 매니저 프로그램 실행

           4. 부트매니저 프로그램은 관련 환경파일을 참고하여 운영체제 부팅을 시작

 

2. 리눅스 부팅

-MBR에 설치된 부트매니저 프로그램인 GRUB의 실행을 시작으로 텍스트 기반의 콘솔 로그인 화면이 나타나거나 x-윈도가 구동되어 로그인창이 나타나기 전까지 의 과정

(1)리눅스 부팅의 하드웨어 인식단계

-> 부팅시 하드웨어 설정과 관련하여 특정 값을 지정하거나 변경시, 커널 매개변수 지정하면 설정 변경이 가능

-> grub인 경우 [e]를 누르거나 [a]를 눌러 커널 값을 추가로 지정가능

-> 리눅스는 하나의 덩어리 형태인 단일형 커널 형태이다

-> 모듈화 : 리눅슨는 사운드 카드나 이더넷 카드의 드라이버를 커널안에 전부 포함시킬수 없어 효율적으로 해결하기위한 방법

(2) 리눅스 부팅의 소프트웨어 구동 단계

->리눅스 시스템 부팅시 커널이 로드되면 커널은 우선 루트 파일 시스템을 읽기전용으로 마운트 하고 검사후 이상없으면 쓰기 가능 형태로 마운트 한다

-> 그후 커널은 init프로세스를 발생시킨다(init : 리눅스 부팅과 관련된 소프트웨어 구동을 위임 받는다)

-> /etc/initab : 부팅과 관련된 런레벨이 지정되어 있다

-> /etc/init/rcS.conf : 시스템 초기화와 관련된 내용이 설정되어있다. 주요 내용으로는 호스트명 설정, 시스템 점검, RAIDLVM장치 활성화, 쿼터 설정 활성화 등을 한다(/etc/rc.d/rc.sysinit스크립트 실행)

-> /etc/init/rc.conf : 부팅시 각 레벨별로 진행되는 내용이 설정되는 파일. rc스크립트는 런레벨이 3이면 /etc/rc.d/rc3디렛터리안에있는 실행 데몬 스크립트중 S로 시작되는 스크립트를 찾아 부팅되게 함(/etc/rc.d/rc스크립트 실행)

-> /etc/rc.d/rc.local : 실행레벨 2,3,5에서 가장 마지막에 실행되는 파일로 보통 사용자가 부팅시 필요한 서비스를 구동할 때 이파일 안에 등록하여 사용

 

3. 실행레벨(Runlevel)

-일반적인 실행레벨 : /etc/inittab에 정의됨(0~6까지)

-S레벨 : 기능적으로느 1번과 유사하지만 관련 ㅍ로세스나 데몬을 최소화 하기위해 유지보수나 점검에 적합하다. 특히 시스템에 심각한 오류 발생시 주로 사용되어 emergency모드라고 부른다

-일반적인 실행레벨

           0 : 시스템 종료할떄 호출되는 레벨(기본값으로 설정 불가)

           1 : 단일 사용자 모드로 로그인 과정없이 root사용자로 리눅스 시스템을 부팅하여 일종의 관리자 모드와 같은 역할을 한다. 네트워크, 서버, 파일 공유 와 같은 서비스를 하지않고, root패스워드를 잊었거나 파일 시스템 점검 및 복구, 시스템 점검등을 할 때 접근

           2 : 네트워크 사용하지 않는 다중 사용자 모드이다.

           3 : (텍스트 환경): 네트워크를 지원하는 다중 사용자 모드로 X윈도를 사용하지 않고 메모리를 효율적으로 이용할 때 추천

           4 : 사용되지 않는 레벨이지만 사용자가 정의 하여 사용가능

           5 :(그래픽 환경): X윈도를 사용하는 다중 사용자 모드로 최근 배포판에서 기본적으로 설정되는 레벨

           6 : 시스템 재부팅시 호출되는 레벨(기본값으로 설정 불가)

 

(1)로그인

-> 사용자의 아이디와 패스워드를 입력해 접근권한과 사용권한을 획득하는 단계

-> 런레벨이 3인경우 : [CTRL]+[ALT]+[F1~6]개의 가상콘솔을 통해 로그인 가능

getty라는 프로그램이 터미널이나 콘솔에 로그인 프로그램을 실행하는데 이때 메시지 파일인 /etc/issue의 상단 내용을 출력하고 login프로그램을 통해 아이디와 패스워드가 옳을시 셸을 실행시키고 틀리면 종료

-> 런레벨이 5인경우 : x-window기반 그래픽 로그인 창 나타남

                           [CTRL]+[ALT]+[F7] 에 그래픽 하게 나타남

->로그인 메시지 관련 파일

           /etc/issue : 사용자가 로그인할때 ‘login : ’보여주기전에 출력되는 내용

/etc/issue.net : issue와 역할은 같은데 issue는 로컬의 터미널로 접속시 출력되는 메시지를 기록하고 /issue.net는 텔넷을 통한 네트워크 접속시 출력되는 메시지를 기록

           /etc/motd : ‘Message Of The Day’의 약어로 성공시 접속된 사용자에게 보여주는 메시지

 

(2)로그아웃

-> ‘logout’ or ‘exit’ or [CTRL]+[D] : 콘솔이나 터미널창에서 로그아웃하는 명령어

-> X-window에서는 메뉴를 통해 로그아웃 가능

-> 자동로그아웃 :/etc/profile에서 ‘TMOUT=해당 초 이후 아무 것도안하면 로그아웃

 

(3) root패스워드 분실과 단일 사용자모드로 부팅

-> root패스워드 잃어 버렸을 경우 단일사용자 모드로 부팅해야한다. 여기에서는 root패스워드 변경이나 파일 시스템 복구 작업을 할수 있다.

-> 단일 사용자 모드로 부팅 방법

1. 재부팅으로 GRUB부트 메뉴가 나타나도록함 (레드햇의 경우 숨어있으므로 아무키를 눌러 나타나도록함)

2. 해당 리눅스 운영체제항목으로 이동후 [a]혹은 [e]를 눌로 커널 아규먼트로 수정할수 있는 상태로 만듦

3. [a]로 누르면 커널 아규먼트를 수정할수 있는데 줄끝에 single혹은 ‘1 ’를 입력하고 [enter]누르면 단일 사용자 모드로 부팅됨

4. 단일 사용자 모드로 진입시 패스워드 입력없이 자동 root로 로그인되고 passwd명령을 입력해 새로운root패스워드 설정

(4) GRUB패스워드를 잃어 버린경우

-> root 패스워드를 복구 할수 없는 경우에 설치 디스크를 이용해 응급 복구 모드로 진입후 /boot/grub/grub.conf에 설정한 password항목을 삭제해야함

           1. 설치디스크를 이용해부팅

           2. 응급 복구모드인 Resure installed system선택

           3. 기본선택후

4. 설치된 리눅스 시스템이 /mnt/sysimage디렉터리로 마운트된다 더쉬운 사용을 위해 /로 변경

#chroot /mnt/sysimage   

5. /boot/grub/grub.conf파일을 열어 password항목 삭제

#vi /boot/grub/grub.conf

6.재부팅하여 root패스워드 복구

4. 시스템 종료

- X-Window 종료법 :[끄기]

- 터미널 환경에서 종료법

(1) shutdown

- 시스템을 재시작하거나 전원 종료 root권한자만 사용가능

-사용법 : #shutdown [option] 시간 [경고 메시지]

-옵션

           -r : 시스템 재부팅시 사용 (reboot)

           -h : 시스템 종료할 때 사용(halt)

           -c : 예약된 셧타운 명령 취소

           -k : 실제 셧다운 하지 않고 경고 메시지만 접속한 사용자들에게 전송

Ex) #shutdown -r now -> 시스템 즉시 재부팅

(2) reboot

-시스템 재시작 하는 명령어

-로컬로 접속한 사용자 라면 모두가 사용가능

-사용법 : #reboot [option]

-옵션

           -w : 시스템을 재수팅 하지 않고 /var/log/wtmp 에 셧다운 기록만 저장

(3) halt

-시스템 종룡 명령어

-로컬로 접속한 사용자면 모두 가능

-사용법 : #halt [option]

-옵션

           -p : 시스템 종료하고 전원끄는 경우 사용(--poweroff)

(4) poweroff

-시스템 종료 및 전원끄는 명령어

(5) init, telinit

- init프로세스(모든 프로세스의 조상)에 직접 요청해 실행 레벨변경시 사용해 빠르게 실행되지만 실행중인 프로세스를 무조건 적으로 종료하여 권장하지는 않은

-사용법: #init 실행레벨

1. 하드웨어의 이해

-리눅스의 최적의 성능을 발위하기위해 알아야할 것

(1)CPU
(2)
메모리(RAM)

(3)하드디스크 드라이브

->리눅스는 초기에 사용하던 하드디스크 인터페이스인 IDE(Integrated Drive Electronices),E-IDE(Enhanced IDE), SCSI(Small Computer System Interface), S-ATA(Serial ATA)등 현존하는 하드디스크 대부분이 사용가능하다

-> 초고속 반도체 메모리를 저장매체로 사용한 USBSSD도 지원

-> IDEATAdev/hdx파일 형식 인식

-> S-ATA, USB메모리 , SSD SCSI /dev/sdx파일 형식으로 인식하여 사용

(4)모니터와 비디오 어댑터

->텍스트 기반의 콘솔 환경에는 모니터와 비디오 카드의 역할이 크게 중요하지 않으나. X-Window기반의 GUI환경에서는 정확한 정보가 필요하다

(5)네트워크 인터페이스

->이더넷, 모뎀, ISDN,ATM등 대부분의 네트워크 인터페이스를 지원한다 (특히 이더넷카드는 제조사에 상관없이 다지원)

-> 네트워트 설정하기위해서는 IP주소, 넷마크,게이트웨이주소, DNS서버의 IP주소를 알아야한다

(6)키보드 및 마우스

-> 키보드 는 PS/2,usb방식지원, 마우스는 표준시리얼 마우스, PS/2, USB방식 지원(x-window에서는 마우스의 휠기능도 지원)

(7)CD-Romdvd-rom

-> 하드디스크 인터페이스와 같이 사용되어 대부분 자동으로 인식된다

-> IDE를 사용하는 경우에는 /dev/hdx파일 형태로 사용

-> SCSI,S-ATA/dev/sdx

-> 최근은 /dev/cdrom, dev/dvd

 

2. 하드웨어의 선택

1. RAID(Redundant Array of Independent Disks)

- 여러 개의 하드디스크가 있을떄 동일한 데이터를 다른 위치에 중복해서 저장하는 방법

- 데이터를 여러 개의 디스크에 저장하여 입출력 작업이 균형을 이루게 되어 전체성능을 향상시키고 운영체제에서 하나의 raid는 논리적으로 하나의 디스크로 인식처리된다

-이용

->저용량 하드디스크를 하나의 디스크로 확장

->백업을 가능하게 하고, 안정적인 데이터의 보존과 유지기능, 속도 향상

- raid에서 사용하는 기술

 

(1)스트라이핑

-> 연속된 데이터를 여러 개의 디스크에 라운드 로빈 방식으로 기록하는 기술

-> 하나의 디스크에서 읽어 들이는 것 보다 더 빠르게 데이터를 읽거나 쓸수 있다면 매우 유용

(서로 겹쳐 읽거나 쓸수있도록 설계된 네개의 드라이브가 있는 경유 하나의 섹터에 읽을수 있는 시간에 네개의 섹터를 동시에 읽을수 있다)

(cf) 라운드 로빈: 하나의 중앙처리장치를 임의의 프로세스가 종료될 때까지 차지하는 것이 아니라 여러 프로세스가 조금씩 돌아가며 할당받아 실행되는 방식

 

(2)미러링

-> 디스크에 에러가 발생시 데이터의 손실을 막기위해 추가적으로 하나 이상의 장치에 중복 저장하는 기술

-RAID의 종류

(1)RAID-0

-> 스트라이핑 기술을 이용해 빠른 입출력 속도 제공

-> 데이터를 중복이나 패리티 없이 디스크에 분산하여 기록

-> 처리속도는 빠르나, 구성된 디스크중에 하나라도 오류 발생시 데이터 복구 불가

(2)RAID-1

->미러링 기술을 사용하여 두개의 디스크에 데이터를 똑같이 기록

-> 스트라이핑 기술은 사용하지 않으며 각 드라이블르 동시에 읽을수 있어 읽기 성능은 향상되나 쓰기성능은 단일 디스크와 같다

-> 디스크 오류시 데이터 복구 능력은 탁월하지만 중복저장으로 인한 디스크 낭비가 50%

(3)RAID-2

-> 스트라이핑 기술을 사용하여 구성

-> 디스크 에러감지와 수정을 위해 ECC(Error Check&Correction)정보 사용

(4)RAID-3

-> 스트라이핑 기술로 디스크 구성

-> 패리티 정보를 저장하기위해 별도로 하나의 디스크를 사용

-> 입출력 작업이 동시에 모든 디스크에 대해 이루어지므로 입출력을 겹치게 할 수는 없다

-> 보통 대형 레코드가 많은 시스템 에서사용

(5)RAID-4

-> 블록 형태의 스트라이핑 기술을 사용해 디스크구성

-> 단일 디스크로부터 레코드를 읽을수 있고 데이터를 읽을떄 중첩 입출력 장점이 있다

-> 쓰기 작업은 패리티 연산을 해야하고 패리티 디스크에 저장해야 되기 떄문에 입출력의 중첩이 불가하고 시스템 병목현상이 발생할 수 있다.

(6)RAID-5

-> 패리티 정보를 이용해 하나의 디스크가 고장이 발생한 경우에도 사용이 가능한 구성방식으로 최소 3개의 디스크로 구성해야함

-> 패리티 정보는 별도의 디스크를 사용하지 않고 구성된 디스크에 분산하여 기록하지만 데이터를 중복 저장하지는 않아 가장보편적으로 사용할 수 있다

-> 디스크에 쓰기 제한 주소를 지정하므로 모든 읽기 및 쓰기가 중첩될 수 있다

-> 작고 랜덤한 입출력이 많은 경우 더나은 성능 발휘

-> RAID-0의 단점인 결함허용을 지원하지 않고 RAID-1의 저장공간의 비효율성을 보완한 레벨로 디스크 개수를 늘릴수록 저장 공간의 효율성이 높아진다

(7)RAID-6

-> RAID-5와 전체적인 구성은 비슷하지만 디스크에 2차 패리티 구성을 포함해 매우 높은 고장 대비 능력

-> RAID-5 1개의 디스크 오류만 대처가 가능해 2개의 디스크오류 발생시 데이터 복구가 불가능 하지만 RAID-6 2개의 패리티를 사용해 두개의 디스크오류에도 데이터를 읽을수 있다

-> RAID-5에 비해 디스크 공간 효율성은 떨어진다

-> 복잡한 알고리즘으로 처리속도는 떨어지나 데이터에 대한 실뢰성은 향상된다

(8)RAID-7

-> 하드웨어 컨트롤러에 내장되어 있는 실시간 운영체제를 사용하여 구성하는 방식으로 속도가 빠른 버스를 이용한다

(9)RAID 0+1

-> 디스크 2개를 RAID-0을 스트라이핑 기술로 구성하고, 다시 RAID-1의 미러링 구성하는 방식

-> 최소 4개의 디스크가 필요하다(만약 6개의 디스크면 3개를 RAID-0으로 나머지는 RAID-1로구성)

(10)RAID-10

-> RAID 0+1과 반대

-> 미러링후 스트라이핑 하는 방식

(11)RAID-11

->RAID-3방식에 별도로 스트라이프 어레이를 구성하는 방식

 

2. LVM(Logical Volume Manager)

-리눅스 설치시 하드디스크를 추가하면 파티션을 분할하고 공간을 할당하는데 이때 설정한 공간의 크기는 고정이되어 변경이나 용량 증설이 어렵다 이를 해결하기 위한 방법이 LVM이다

-찰흙과 같은 개념으로 여러 개의 하드디스크를 하나의 뭉쳐서 하나의 디스크 인 것 처럼 만들수 있고 두개의 하드디스크를 세개의 하드디스크인 것처럼 만들수 있다 또한 사용중인 파티션의 크기 또한 늘릴수 있다

-LVM구성도와 관련된 용어

(1)물리적 볼륨(PV: physical volume)

-> 실제 디스크에 물리적 으로 분할한 파티션 /dev/sdb1과 같다

-> LVM에서는 이런 물리적 볼륨을 하나의 구성원으로 받아 들이는 형식으로 진행한다

(2)볼륨 그룸(VG: Volume Group)

-> 물리적 볼륨이 모여 생성한 덩어리

(3)논리적 볼륨(LG: Logical Volume)

->  VG에서 사용자가 필요한 만큼 할당하여 만들어지는 공간으로 물리적 디스크에서 분할하여 사용하는 파티션

(4)물리적확장(PE:Physical Extent)

-> PV에서 나누어 사용하는 일종의 블록 같은 영역

1. 리눅스의 철학

1. GNU(GNU’s Not Unix)

-유닉스와 호환이 되도록 만든 OS이지만 유닉스와는 다른 OS

-SW를 자유롭게 사용하는 것이 목적

 

2.FSF(Free Software Foundation)와 자유 소프트웨어

-자유 소프트웨어 : 사용자가 소프트웨어르 실행, 학습,개작프로그램재배포, 향상시킬 자유가 보장되어야함

 

3.카피레프트와 GNU GPL(General Public License)

 

4. 주요라이센스

(1) GPL(General Public License)(GNU GPL에서 다섯가지의 의무를 저작권의 한 부분으로 강제함)

-컴퓨터 프로그램은 법으로 제한하지 않는 한 어떤 목적으로든지 사용할 수 있다

-컴퓨터 프로그램의실행 복사본은 언제나 프로그램 소스코드와 함께 배포해야 한다.

-컴퓨터 프로그램의 소스코드를 용도에 따라 변경 가능하다

-변경된 컴퓨터 프로그램도 소스코드를 공개해야 한다

-변경된 컴퓨터 프로그램 역시 똑 같은 라이선스인 GPL라이선스를 적용해야한다

 

(2)LGPL(Library/ Lesser General Public License)

-SW라이브러리에 관한 라이선스

-소스 코드 수정시 2차적 파생물 저작권에 해당되므로 라이브러리의 소스코드 또한 제공해야한다

-LGPLGPL로 변경 가능 하지만 역은 불가능 하다

 

(3)BSD(Berkely Software Distribution)

-2차 파생물 원시 소스코드 비공개 가능

-소스코드를 공개하지 않는 상용 sw에서 사용

 

(4)아파치 라이선스

-수정된 소스코드 비공개 가능 하지만 재배포시 아파치 sw재단에서 개발된 것을 발혀야함

 

(5)MPL(Mozilla Public License)라이선스

-MPL소스코드 수정시 코드 공개 필수 이지만 MPL+다른 소스코드일 경우 다른 소스코드를 공개 안해도된다

 

(6)MIT라이센스

-저작권 관련명시 하면 소스코드 비공개 가능

라이선스명

무료이용

배포

소스코드

취득 및 수정

2차 저작물

소스코드공개

특정 SW

와 결합

GPL

O

O

O

공개

X

LGPL

O

O

O

공개

O

BSD

O

O

O

비공개가능

O

Apache

O

O

O

비공개가능

O

MPL

O

O

O

공개

O

MIT

O

O

O

비공개가능

O

 

2.리눅스의 역사

1. 커널

-운영체제의 핵심

-시스템이 부팅될 때 로드되는데, 주된 역할은 시스템의 하드웨어 제어

Ex) 3.8.10

ð  3 -> 주버전: 커널의 큰변화시 증가

ð  8-> 부버전:작은 기능상의 변화나 추가된경우(짝수 : 안정 버전/ 홀수: 개발버전)

ð  10 -> 패치레벨: 버그가 수정되고 새로운 기능의 계획 추가 시 증가

 

2. 리눅스 배포판

-리눅스 커널 이외의 핵심적인 부분을 GNU정신을 바탕으로 만들어진 다양한 자유 소프트웨어와 공개 프로그램을 모아 하나의 운영체제로 만든 것이다

-패키지 관리 기법의 종류

-> 슬랙웨어 : 소프트웨어를 최상단에서 최대한 수정되어 배포되는 형식으로 사용자들이 내장된 프로그램을 사용하기에는 편리하나 패키지를 새롭게 적용하거나 수정하기는 힘들다.

                      그래픽 기반의 설치 절차가 없고, 소프트웨어 패키지의 의존성도 자동으로 해결해주지 않는다, 또한 모둔 설정이나 관리를 편집기를 이용해 텍스트 파일을 직접 수정하는 형태로 이루어 져있다

->데미안 : 데미안과 슬릭웨어는 sls기반으로 만들어 졌으나, 이 배포판의 차이점은 패키지에 있다 슬랙웨어는 사용자가 패키지를 새롭게 추가하거나 수정하기 어려운반면 데비안은 ㅍㅐ키지 설치 및 업그레이드 등 패키지 관리가 매우편하다

-> 레드햇: 현재 가장 인기 있는 리눅스 배포한이다.

           쉬운 설치와 독자적인 패키지 관리가 있다. 레드햇 리눅스의 설치과정은 텍스트 기반의 이넡페이스 뿐만 아니라 그래픽 사용자 인터페이스를 제공하여 초보자들도 쉽게 설치할수 있다. 또한 RPM(Red hat Package Management)YUM(YYellowdog Updater, Modified)라는 패키지 관리 도구를 제공해 손쉽게 설치, 관리, 업그레이드를 할수 있다.

-수세

-우분투

 

3. 리눅스 클러스터링(Linux Clustering)

-클러스터: 무리, 송이 또는 한 덩어리 라는 뜻으로 컴퓨터 데이터 통신 분야에서는 단말 제어 장치와 그에 접속된 복수 단말의 총칭을 말한다.

           여러대의 컴퓨터를 연결하여 하나의 컴퓨터를 사용하는 것처럼 구성된 시스템을 말한다.

-사용목적

(1)고계산용 클러스터(HPC)

-> 고성능의 계산 능력을 제공하기 위한 목적으로 제작되는데 주로 과학계산용으로 활용된다(슈퍼컴퓨터)

-> 병렬처리용 슈퍼컴퓨터의 개발에서 시작됨

->  switch/hub =>node1

                      =>node2

                      =>node3

-> 하나의 작업을 3개의 노드를 이동하여 수행

(2)부하분산 클러스터

-> 대규모의 서비스를 제공하기 위한 목적으로 사용되는 클러스터 기법(이용자가 많은 웹서비스이용시 활용가치가 높다)

-> 여러대의 리얼 서버에 부하를 분산해 주는 로드 밸런서를 두고 운영하는 방법

-> user => load balancer =>real server

                                 =>real server

                                 =>real server

(3)고가용성 클러스터(HA)

-> 지속적인 서비스 제공을 목적으로 하는 클러스터로 위에 열거된 부하분산클러스터와 연동하여 많이 사용된다

-> 부하분산 클러스터에서 로드 밸런서에 오류가 발생해 동작하지 않으면 리얼 서버가 정상적인 동작을 하더라도 서비스를 제공하지 못한다. 이를 해결하기위해 primary node가 부하분산의 처리를 수행하고 다른 하나의 backup nodeprimary node의 상태를 체크하고 있다가 이상이 발생하면 서비스를 이어받도록 구상됨

-> user => primary => backup node

           =>=>=>=>=> backup node

(backup nodeprimary node상태를 체크하다가 primary node 이상시 서비스를 이어받음)

 

4. 임베디드 시스템

-마이크로컨트롤러, 마이크로프로세서, DSP(Digital Signal Processor)등을 내장하여 특정 기능을 반복적으로 수행하기 위해 하드웨어와 소프트웨어를 결합하여 만든 전자제어 시스템

-장점

-> 별도의  로열티나 라이선스 비용이없다

-> 리눅스를 사용한지 오래되었고, 커널이 안정적이다

-> 관련 소프트웨어 개발 및 지운하는 업체가 많이 존재한다

-> 소스가 공개되어 있어, 변경하고 재배포가 용이하다

-단점

->커널과 루트 파일 시스템등에 상대적으로 많은 메모리를 차지한다

-> 사용자 모드와 커널 모드 메모리 접근이 복잡하다

-> 디바이스 드라이버 프레임 워크가 복잡하다   

  

5. 클라우드 컴퓨팅

-사용자가 필요한 작업을 제시하면, 여기에 필요한 컴퓨팅 자원이 할당되어 작업하고 결과를 얻도록 해주는 것

-서로 다른 물리적인 위치에 존재하는 컴퓨팅 자원을 가상화 기술로 통합하여 제공하는 기술 개념을 말하낟

- 인터넷을 이용한 IT자원의 주문형 아웃소싱 서비스로 서버에 개별적으로 저장해 둔 프로그램이나 문서를 인터넷 접속이 가능한 곳이라면 다양한 단말을 통해 웹 브라우저등 필요한 응용 소프트웨어를 구동하여 작업을 가능케 하는 이용자 중심의 컴퓨팅 환경을 말한다

-서비스 종류

(1) Iaas(Infrastructure as a Service) : 업무처리에 필요한 서버, 데스크톱 컴퓨터, 스토리지 같은 IT하드웨어 자원을 클라우드 서비스로 빌려 쓰는 형태

(2)PaaS(Platform as a Service): 업무에 필요한 소프트웨어를 개발할수 있는 환경을 클라우드에서 제공받는다

(3)Saas(Software as a Service): 기업에서 사용하는 소프트웨어를 통째로 클라우드 서비스 사업자에게 빌려 쓰는 개념

 

6. 빅데이터

-기존의 데이터베이스 관리도구로 데이터를 수집, 저장, 관리, 분석 할 수 있는 역량을 넘어서 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술을 말한다

-빅데이터 분석기술: 데이터마이닝, 기계학습, 자연어 처리, 패턴인식

 

7. 사물인터넷

- 생활속 사물들을 유무선 네트워크로 연결해 정보를 공유하는 환경

- 사물인터넷 플랫폼

-> 사물간에 인터넷을 할 수 있는 물적 기반인 통신네트워크가 원활하게 작동하도록 하는 운영체제를 말함

(플랫폼 : 서로 이해관계와 관점이 다른 이들 간에 복잡도를 추상화하고, 일관된 인터페이스를 제공함으로써 서비스제공이용이하고, 서비스 활용이 용이하도록 기능을 제공하는 것)

->운용플랫폼 : 디바이스가 제공하는 HW자원과 HW자원기능을 이용하는 디바이스 응용간의 플랫폼 ex) iOS, Windows, Linux, Android

->독립적 사물인터넷 플랫폼: 사용자가 센서 혹은 구동기 등을 추가하여 새로은 사물 프로토타입을 만들수 있는 HWSW를 제공하는 오픈소스 하드웨어 플랫폼 ex)라즈베리파이, 아두이노

->사물 연결 플랫폼: 디바이스와 디바이스 간 연결을 통한 서비스 제공 측면에서 디바이스들이 서비스제공자들이고 다른 디바이스의 기능을 이용하는 디바이스 응용이 사용자가 된다,

-> 다양한 응용 서비스의 용이한 생성 및 실행을 지원하는 플랫폼

-> 디바이스로부터 획득되는 엄청난 양의 데이터를 수집/저장/분석한 결과를 이용하는 응용 서비스 입장에서는 다양한 정보가 데이터 제공자가되며, 분석 결과를 이용하는 응용 서비스가 사용자가됨

1.운영체제

-컴퓨터 HW와 컴퓨터 사용자 간의 매개체 역할을 하는 시스템 SW로 사용자가 프로그램을 수행할 수있는 환경을 제공

-좁은의미: HW와 응용 프로그램간의 다리역할을 하는 커널

-넓은의미: 커널, 미들웨어, 응용프로그램 실행환경과 사용자 인터페이스 프레임 워크를 포괄하여 정의

-역할

-> 컴퓨터 HW제어

->작업순서결정 및 입출력제어

-> 프로그램 실행제어 및 데이터와 파일의 저장을 관리,

->사용자들 간의 HW자원을 공유할 수 있도록한다

->시스템자원을 시케줄링하여 효율적으로 활용할수 있게함

->입출력을 쉽게하는 기능을 제공

->응용프로그램 작성 및 실행을 편리하게 제공

->오류 발생을 막고 복구를 지원

->데이터의 조직화 및 네트워크 통신 처리기능 수행

->편리한 사용자 인터페이스를 제공

-특징

->다중사용자 시스템

->다중작업 시스템

->강력한 네트워크 지원

-> 편리한 사용자 인터페이스 지원

->계층적파일 시스템 지원

-> 가상메모리 지원

-> 고성능 프로세스의 최적화

-> 개방형 운영체제화

->뛰어난 이식성지원

-> 가상화지원

2.운영체제의 종류

1.서버 및 데스크톱 OS

-유닉스 : 다중사용자, 다중작업 지원, 강력한 네트워크 지원, 뛰어난 이식성과 확장성지원, 계층적 파일구조, 가상메모리 및 공유 라이브러리 지원

-윈도 : 멀티테스킹을 지원하는 GUI기반 OS

-Max OS X : BSD유닉스 기반으로 만든 넥스트스텝을 확장하여 만듦

2.리눅스 기반 모바일 OS

-타이젠, 모블린, 미고, 라모, 구글의 안드로이드, 바다 OS, 마에오, 모블린

3.스마트 TV

-TV와 인터넷을 연결하는 일종의 인터페이스 허브

4.IVI(In-Vehicle Infotainment =ICE(In-Car Entertainment))

-자동차내에서 CD,DVD등 재생과 오디오,비디오등을 제공하는 HW장치의 모음

-종류와 특징

(1)MSWindows Imbedded Automotive

           Windows CE r기반으로 만든 것으로 자동차에 내장되어 있는 컴퓨터 System을 위한 OS

(2)QNS

유닉스형태의 RTOX(Real-Time Operation System)으로 임베디드 시스템에 내장되어있는 OS

(3)GENIVI

           공개형 리눅스 OS기반의 표준화된 자동차형 IVI플랫폼을 만들기위해 설립한 비영리조직

(4)안드로이드

           모바일기기에 탑재되어 있는 안드로이드가 IVI에 진출

(5)MeeGo/ TizenIVI

5. 웹운영체제

-웹브라우저를 기반으로 동작하는 가상의 운영체제

-사용자는 별도의 OS설치과정없이 최소크기의 커널 위에서 동작하는 웹브라우저를 통해 서비스제공자 웹사이트에 접속하여 다양한 서비스를 이용하는 형태

-EX) 크롬 OS

           ->동일한 작업현경을 어디에서나 사용가능(모든 데이터가 구글 서버에 저장됨)

-> 네트워크가 지원되는 환경에서 빠르게 이용가능(부팅 프로세스의 불필요한 부팅은 버리고 빠른 부팅시간 제공)

->크롭웹스토어로 일부만 다운 받아 사용가능

-> 높은 보안성 제공

6. 리눅스의 특징

(1)다중사용자 및 다중 처리 시스템

-하나의 시스템에 다수의 사용자들이 동시에 접속하여 사용가능

-각 접속자들은 다수의 응용프로그램을 실행할 수있다

(2) 완전히 공개된 시스템

-커널 뿐만 아니라 같이 내장되어 배포되는 응용 프로그램 소스 공개됨

(3) 뛰어난 네트워크 환경

-다양한  네트워크와 네트워크 프로토콜 지원

(4) 다양한 파일 시스템 지원

(5) 뛰어난 이식성

- 어셈블러와 C언어로 작성되어 C컴파일 가능하면 어셈블러 부분만 새롭게 만들고 C를 다시 컴파일하여 이식

(6) 유연성과 확장성

- 리눅스는 커널소스가 공개되어 다양한 채널을 통해 다양한 하드웨어 관련 지원을 받을 수 있다

(7) 뛰어난 안정성과 보안성

-오류 수정 과 보안 관련 패치가 다양하다

(8) 우수한 가격대 성능비

(9) 다양한 배포판이 존재

7. 리눅스의 기술형 특징

(1)계층적인 파일 구조

(2)장치의 파일화

-특정 하드웨어에게 명령을 수행하려면 해당하는 장치 파일에 명령을 내리면됨

(3)가상메모리 사용(=swap영역사용)

-하드디스크의 일부를 메모리 처럼 사용

-swap “free”-스왑확인

(4) 동적라이브러리 지원

(5) 가상콘솔

-하나의 모니터에 장착한 시스템에 여러 가상화면제공

-“CTRL+ALT+F1~6“

-“[SHIFT]+[PAGEUP]”,[SHIFT]+[PAGEUP]” : 가상 콘솔 사용시 지나간 작업 보기

(6) 파이프

-어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 하는 것

(7)라다이렉션

-어떤 프로세스의 입/출력을 표준 입출력이 아닌 다른 입출력으로 변경시 사용

+ Recent posts