유닉스(UNIX)

UNIX?

  • 주로 서버용 컴퓨터에서 사용되는 운영체제

  • 원래는 멀티유저용 서버 운영체제이나 현재는 개인용 데스크탑이나 임베디드용으로도 쓰임

  • 대부분의 현대적 컴퓨터 운영 체제의 원형이 된 OS

  • 현대의 윈도우 계열이 아닌 리눅스, 안드로이드, macOS, iOS 등의 많은 운영 체제가 유닉스를 그 뿌리로 하고 있음


UNIX 특징

  • 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템

  • 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높음

  • 크기가 작고 이해하기가 쉬움

  • 다중 사용자, 다중 작업을 지원

  • 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합

  • 트리구조의 파일 시스템

  • 전문적인 프로그램 개발에 용이

  • 다양한 유틸리티 프로그램들이 존재


UNIX 구성

  • 커널(Knernel)

    • Unix의 가장 핵심적인 부분

    • 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주되면서 실행

    • 하드웨어를 보호

    • 프로그램과 하드웨어 간의 인터페이스 역할을 담당

    • 프로세스(CPU 스케줄링)관리, 기억장치 관리, 파일관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행

  • 쉘(Shell)

    • 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어해석기

    • 시스템과 사용자간의 인터페이스를 담당하며 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재

    • 보조기억장치에서 교체처리가 가능

    • 파이프라인 기능을 지원

    • 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있음

    • 자신이 만든 Shell을 사용할 수도 있음

  • 유틸리티프로그램(Utility Program)

    • 일반 사용자가 작성한 응용프로그램을 처리하는데 사용

    • Dos에서의 외부 명령어에 해당

    • 에디터, 컴파일러, 인터프리터, 디버거 등


UNIX 파일 시스템

  • UNIX파일 시스템의 디렉터리 구조는 트리구조

    • 디렉터리나 주변장치를 파일과 동일하게 취급

    • 파일 소유자, 그룹 및 그 외 다른 사람들로부터 사용자를 구분하여 파일을 보호

    • 파일 생성 및 삭제 기능, 보호 기능

    • 파일 형식은 일반파일, 디렉터일파일, 특수파일 이렇게 3가지 형식을 제공

  • UNIX 파일 시스템의 구조

    • UNIX파일 시스템의 구조는 디스크를 블록으로 분류하여 배치한 구조를 의미

    • 부트블록, 슈퍼블록, I-node블록, 데이터블록으로 구성

    • 부트블록 : 부팅시 필요한 코드를 저장하고 있는 블록

    • 슈퍼블록 : 전체 파일 시스템에 대한 정보를 저장하고 있는 블록

    • I-node블록 : 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록
      파일 소유자의 사용자번호(UID), 그룹번호(GID), 파일 크기, 파일 타입,
      생성시기, 최종변경시기, 최근사용시기, 파일의보호권한, 파일링크수, 데이터가 저장된 블록의 시작주소

    • 데이터블록 : 디렉터리 별로 디렉터리 엔트리와 실제 파일에 대한 데이터가 저장된 블록


UNIX 명령어

  • 프로세스 관련
명령어 의미
fork 새로운 프로세스 생성
exec 새로운 프로세스 수행
exit 프로세스 수행 종료
wait fork 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event를 기다림
kill 프로세스 제거
getpid 자신의 프로세스 아이디를 얻음
getppid 부모 프로세스 아이디를 얻음
& 백그라운드 처리를 위해 명령의 끝에 입력
signal 신호를 받았을 때 프로세스가 취할 동작 지정
pipe 프로세스 간 통신을 위한 경로 설정


  • 파일 및 디렉터리 관련 & 기타 관련
명령어 의미
create 파일 생성
open 파일을 사용할 수 있는 상태로 준비
close 파일 닫음
cp 파일 복사
mv 파일 이동 또는 이름 변경
rm 파일 삭제
cat 파일 내용을 화면에 표시
chmod 파일의 보호 모드를 설정 → 파일 사용 허가 지정
chown 소유자 변경
find 파일 찾기
mknod 특수 파일 생성
mount 파일 시스템 마운팅
unmount 파일 시스템 마운팅 해제
mkfs 파일 시스템 생성
fsck 파일 시스템 검사 및 보수
mkdir 디렉터리 생성
chdir 현재 사용할 디렉터리 위치 변경
rmdir 디렉터리 삭제
ls 현재 디렉터리 내의 파일 목록 확인
finger 사용자 정보 표시



리눅스(LINUX)

LINUX란?

  • 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어 (git)

  • 다양한 배포판이 있음

    • 리눅스 커널을 사용하면 전부 리눅스라고 부름

    image

  • [라이선스] GNU General Public License (GNU 일반 공중 사용 허가서)(GPL)라는 ‘소스 공개 및 자유로운 이용을 원칙으로 하는’ 라이선스에 의해 배포

    • GPL : 무료로 배포할 의무는 없고 돈이나 이런저런 조건 하에 배포할 수 있지만, 구매자에게는 소스만큼은 최대 3년내에 읽을 수 있는 형태로 배포해야 하며 이 구매자가 소스를 다시 배포하는 것을 제한해서는 안 되기 때문에 현실적으로는 무료나 다름없음
  • [보안] 타 OS에 비해 상대적으로 안전한 환경

    • 파편화돼 있는 리눅스의 여러 변종이 악성코드에 대해서는 오히려 강점으로 작용

    • 윈도우에 비해 보안 업데이트시 재부팅이 거의 없어서 유저들이 보안 업데이트를 굳이 끄지 않음

    • 리눅스를 사용하는 유저들 대부분이 컴퓨터에 대해 잘 아는 사람들이라 해커들이 리눅스를 타겟으로 한 바이러스를 많이 만들지 않음

    • 물론 리눅스용 바이러스도 없지는 않고, root 권한이 뚫리는 취약점이 발견되는 등 보안 허점도 있음


LINUX 계열

Debian 계열

  • Debian

    • 온라인 커뮤니티에서 제작하여 레드햇보다 더 먼저 배포되어 시장을 선점

    • 데비안에서 파생되어진 OS를 데비안 계열이라고 부름

    • 자발적인 커뮤니티에서 만드는 배포판

    • 전문적인 회사에서 서비스를 했던 레드햇계열에 비해 사후지원과 배포가 늦고 내장 유틸들의 성능이 레드햇계열에 비해 부족한감이 있어 오랫동안 레드햇에 밀렸었음

    • 현재는 무료 개인사용자 서버용으로 인기가 매우 높으며 최근에는 지속적인 업데이트를 거친 결과 레드햇계열에 비해 결코 성능이나 뒤쳐지지 않음

    • 넓은 유저층을 가지고 있는 데비안계열은 그 사용법이 온라인 웹사이트나 커뮤니티에 자세히 기술되어 있다는 점이 진입장벽을 낮추어 초보 리눅스유저들이 접근하기 쉬운 OS

  • 우분투

    • 영국의 캐노니컬이라는 회사에서 만든 배포판

    • 쉽고 편한 설치와 이용법 덕분에 진입장벽이 낮아 초보자들이 쉽게 접근할 수 있음

    • 데스크탑용 리눅스 배포판 가운데서 가장 많이 사용되어지고있는 배포판

    • 개인용 데스크톱 운영체제로 많이들 사용

    • 서버용으로도 기능이 부족하거나 성능이 부족하지는 않지만 서버용 리눅스 점유율로 볼때 CentOS에 많이 밀림

Redhat 계열

  • Redhat

    • 레드헷이라는 회사에서 배포한 리눅스

    • 2003년까지는 오픈소스 라이선스로 진행하다가 이후 상용화

    • 배포판 중에서 가장 인기가 많음

    • 커뮤니티가 아닌 회사에서 관리하는 레드햇계열의 리눅스는 다른 리눅스 배포판에 비해 패치가 빠르며 내장되어있는 유틸리티의 양도 많고 관리툴의 성능도 우수

    • 호환성이 좋음

    • 레드햇 계열의 리눅스에는 Fedora와 CentOS가 있음 (요즘은 CentOS를 더 많이 사용하는 추세)

  • CentOS

    • Community Enterprise Operating System

    • Red Hat이 공개한 RHEL을 그대로 가져와서 Red Hat의 브랜드와 로고만 제거하고 배포한 배포본

    • RHEL 과 OS 버전, Kernel 버전, 패키지 구성이 똑같고 바이너리가 100%로 호환

    • 무료로 사용 가능하지만 문제 발생시 레드햇이라는 회사가 아닌 커뮤니티를 통해 지원이 되므로 다소 패치가 느린감이 있음

    • 서버용 운영체제로 인기가 매우 높으며 서버용으로 리눅스를 운영할 목적이라면 아마 대부분 CentOS를 사용하는것이 대부분


LINUX 특징

  • 멀티 유저, 멀티 태스킹 운영체제

    • Multi-User : 여러 사용자가 동시에 하나의 시스템에 접근할 수 있음

    • Multi-Tasking : 여러 개의 태스크(작업)를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능

  • 높은 신뢰성과 성능

    • 유닉스의 기본 설계를 모태로 함

    • 시스템의 자원을 효율적으로 관리 및 사용할 수 있음

    • PC 서버에서도 엔터프라이즈 급의 성능 제공(성능이 낮은 PC에서도 리눅스가 작동함)

  • CUI(Command User Interface) 및 GUI(Graphic User Interface)의 지원

    • 키보드로 문자를 입력 받는 커맨드 방식의 CUI 환경의 지원

    • X 윈도우즈(X-Windows)를 활용한 GUI 지원

  • 뛰어난 안정성과 보안성

    • 커널 소스코드 및 모든 관련 자료가 공개되어 빠른 발전을 지원
  • 다양하고 완벽한 네트워킹 기능

    • 최다 프로토콜 지원 및 네트워크 서비스 기능 제공

    • 여러 종류의 파일시스템을 지원

    • 리눅스 파일시스템 ext2, ext3

    • NTFS, FAT32, FAT, Minix-1, Xenix 등 다양한 파일시스템을 지원, IS-9660 CD-ROM 도 지원

  • 폭넓은 하드웨어 장치 지원 (플랫폼 제약 없음)

    • 유닉스 기반의 운영체제로는 가장 많은 수의 하드웨어 장치 지원

    • 커널의 소스가 공개되어 있기 때문

  • 다양한 업무 환경을 만족시키는 다양한 배포판의 존재

    • 시스템 관리방식 및 구성 응용 프로그램의 종류나 범위 상이
  • 풍부한 응용 프로그램 제공

    • GUI 소프트웨어, 네트워크 툴, 편집기, 개발도구 등