본문 바로가기
서버 보안/리눅스 이론

Unix 운영체제_unix 기반 시스템

by 어깨 :) 2023. 3. 30.
728x90

Unix 기반 시스템

 

 

 

1) 개요

▪  유닉스 시스템 개요
✓  1969년 미 AT&T 벨 연구소에서 개발된 운영체제
✓  1973년(Dennis Ritchie) 커널의 일부를 제외하고 고급언어인 C로 작성
✓  Open System
✓  다양한 플랫폼에 탑재
✓  멀티 유저, 멀티태스킹 환경을 지원


▪  유닉스 시스템의 용도
✓  고성능 I/O
✓  멀티태스킹 서버
✓  SMTP 서버
✓  뉴스 서버
✓  CPU 집약적인 애플리케이션 실행

 

 

 

2) 종류

▪  System V 계열 : Unix의 표준이 되는 버전. Business 및 서비스 중심의 OS. 리눅스도 SVR 계열임.
▪  SunOS : BSD 계열. 현재는 BSD 중심의 운영체제
▪   Solaris : System V 계열. 기업용이나 학술용
▪   HP-UX : System V 계열. HP의 64비트 RISC칩인 PA-RISC 칩에서 작동. 주로 업무용 및 공학, CAD/CAM/CAE에서 많이 쓰임.
▪  AIX(Advanced Interactive eXcutive) : System V 계열. IBM. 워크스테이션용 64비트 운영체제.
▪  Linux : 유닉스 운영체제의 변종으로 원래 Intel기반 8086 프로세서 개인용 컴퓨터용으로 설계. 현재 다양한 플랫폼으로 이식. 1991년 Linux Torvalds에 의해 개발. Linux는 무료로 사용. 개인용 컴퓨터용으로 가장 널리 사용되는 유닉스 버전
▪ 안드로이드(Android) : 휴대전화를 비롯한 휴대용 장치를 위한 운영체제와, 미들웨어, 사용자 인터페이스, 표준응용프로그램, SMS, MMS 등을 포함

 

 

 

3) 기능과 구조

▪  Shell(Command Interpreter)
✓  사용자-Kernel 사이 Interface/해석기 역할
✓  Login시 자동 형성되어 명령어를 해석
✓  입출력 방향을 결정
✓  Foreground/Background 처리
✓  Pipe 및 Filter 처리
✓  Bourne Shell (sh), Berkerley C shell (csh), Korn Shell (ksh) 


▪  Kernel : 컴퓨터의 자원(Resource)들을 관리하고 File System을 구성하는 등 모든 잡다한 작업들을 처리해 주는 Program이며 Shell Program을 수행.
✓  프로세서 컨트롤러
✓  서브시스템
✓  내부 프로세스 통신
✓  스케줄러
✓  메모리 관리자

 

 

4) 유닉스 시스템 명령

1. 일반적인 파일 조작 명령

• rm, mv, , cp, cat, split, chmod, chgrp, chown

 

2. 디렉터리 조작 명령

• cd. ls, mkdir, rmdir, pwd

 

3. 볼륨, 장치 조작 명령

• mount, devinfo, umount, fsck, dump, restor, tar

 

4. 시스템 조작 및 관리 명령

• ps, passwd, su, useradd/userdel, df 

 

 

 

 

 

5) 유닉스 시스템의 디렉터리 구조

 

 

▪       /dev          special files (I/O devices)
▪       /etc           Administrative program and tables
▪       /tmp         Temporary files
▪       /usr/bin     Unix utilities
▪ /usr/includeInclude files used by the UNIX language processors
▪       /usr/lib      Archive libraries, test-processing macros
▪       /usr/adm   Administrative commands and files
▪       /usr/spool  Spool files for printing, mail, uucp, cron

 

 

 

 

6) 파일시스템

▪  특징
✓  계층적 디렉터리 구조 : Hierarchical tree structure
✓  Unix는 모든 것을 파일로 취급 : 디렉터리, 주변장치 등
✓  세 가지 유형의 파일 : 일반 파일(Ordinary File), 텍스트 파일(Text File), 특수파일(Special File)
✓  모든 파일에 대한 순차 접근 허용, 임의 접근은 디스크 파일에만 가능
✓  파일들의 동적인 확장 가능
✓  파일 소유자, 소유자가 속한 그룹, 그 외 다른 사람들로 사용자를 구분하여 파일 보호
✓  주변기기를 하나의 파일로 간주하여 처리
✓  디스크는 일반적으로 고정된 크기의 블록으로 관리

 

 

 

7) 파일 시스템 구조

▪  부트블록 : 부트 스트랩시에 사용되는 코드
▪  슈퍼블록 : 파일 시스템 상태에 대한 종합적인 정보


▪  Inode 블록 : 각 파일에 대한 상태 정보 보관
✓  파일 소유자의 user ID(UID) 및 group ID(GID)
✓  파일의 보호 권한 (Protective modes)
✓  Data block address : 데이터가 저장된 block의 시작 주소
✓  파일의 크기, 생성 시각, 최근 사용된 시각, 최근 변경된 시각, 링크된 개수
✓  파일 타입 : Ordinary file, Directory file, Special file


▪   데이터 블록 : 실제 파일의 데이터 보관

 

 

 

8) 프로세스 관리 

▪  유닉스에서는 프로세스가 다중 프로그래밍 방식으로 처리되므로 기억장치에 여러 프로 
세스가 동시에 위치
▪  프로세스 상호 간에 서로 침해할 수 없도록 보호 및 재배치가 수행되어야 함


▪  프로세스 테이블
✓  상태정보기록, 프로세스의 크기
✓  프로세스 테이블에 등록된 프로세스만 시스템에 알려짐.
✓  프로세스 테이블의 한 엔트리마다 한 프로세스에 대한 정보가 기록

 

 

 

9) CPU 스케줄링

▪  CPU는 시분할 방법으로 운영되어 정해진 시간 동안만 프로세스에게 할당되는 라운드 로빈(Round-Robin) 스케줄링 이용


▪  스케줄러가 고려하는 변수
✓   프로세스가 기억장치 내에 머무른 시간 또는 교체 공간에 머무른 시간
✓   프로세스가 들어오기 위해 요구되는 기억장치의 크기
✓   프로세스의 현재 위치
✓   프로세스의 상태

 

 

 

10) 파이프라인과 필터

▪  파이프(Pipe)
✓  한 프로그램 프로세스에서 다른 프로세스로 정보를 전달하는 기술
✓  파이프는 한 프로세스의 출력과 같은 매개변수를, 다른 프로세스의 입력으로서 전달
✓  파이프는 받을 프로세스가 읽을 때까지 전달할 정보를 임시로 가지고 있음.
✓  파이프에는 일정한 크기의 공간이 할당.


 어떤 프로세스가 파이프에 데이터를 기록하려고 할 때 충분한 공간이 남아있다면 기록이 즉시 수행, 공간이 부족하다면 그 프로세스는 차단


▪  파이프(Pipe) 종류
지명 파이프(named pipe) : 관련이 없는 프로세스들도 공유
익명 파이프(anonymous pipe) : 무명 파이프는 서로 관련된 프로세스들만 공유


▪  필터
✓ 단일 입력 스트립을 입력받아 처리하여 단일 출력 스트림으로 출력하는 프로그램

 

 

 

 

11) 메모리 관리

▪  스와핑
✓ 컴퓨터의 주기억 장치의 한계로 인해 준비상태에 있는 모든 프로세스를 동시에 수용할 수 없으므로 중단된 프로세스의 일부를 디스크로 옮기는 과정


▪  페이징
✓  유닉스 메모리 관리는 페이지 단위로 수행, 페이지 제어를 위해 Free list와  loop라는 두 개의 자료 구조를 관리
✓  빈 공간의 페이지 프레임(Frame)은 Free list에 더해져 재사용되고 페이지 대체는  LRU(Least Recently Used) 알고리즘을 이용

 

아래 사이트에서 페이지 교체 알고리즘 종류 참고!!

 

https://zangzangs.tistory.com/143

 

[OS] 페이지 교체 알고리즘 (FIFO, LRU, LFU, NRU, NUR)

페이지 교체 알고리즘 (FIFO, LRU, LFU, NRU, NUR) 안녕하세요? 장장스입니다. 가상 메모리 기법을 구현하는 방식 중 하나인 요구 페이징 방식은 페이지 부재가 발생하게 됩니다. 페이지를 교체하는 작

zangzangs.tistory.com

 

 

12) 입출력 관리

▪  블록 버퍼 캐시
✓    목적 : 입출력 작업 중첩으로 인한 디스크 접근 횟수를 줄이는 것
✓    Read 요청이 발생하면 시스템은 주기억장치 내의 버퍼에서 기록된 데이터를 읽음
✓    만일 원하는 블록이 버퍼에 없으면, 디스크로부터 직접 데이터를 읽음
✓    버퍼에는 가장 최근에 읽은 블록을 기록
✓    Write 시 버퍼에 저장된 데이터가 실제 디스크에 기록되지 않은 상태에서 시스템 손상이 발생하면 데이터를 손실할 경우가 생길 수 있으므로, 주기적으로 Sync 시스템 호출을 실행하여 아직 디스크에 쓰이지 않은 버퍼 블록을 디스크에 저장.


▪  C-리스트 : 단말과 같은 저속장치의 소량 데이터 전송에 도움이 되는 간단한 버퍼 메커니즘

 

 

 

 

 

13) 로그 

▪  로그 설정 확인
✓   유닉스 시스템은 시스템 로그 데몬(syslogd)이 실행될 때 참조되는 로그 설정이 /etc/syslog.conf 파일에 정의


✓   포맷


✓   의미 : A 서비스( 데몬 )에 대하여 B의 경우에 해당하는 상황이 발생하였을 때에  C 파일에 그 기록을 남김
- facility는 해당서비스를 의미함. mail, cron, kern, uucp 등이 이에 해당함.

- priority는 각 서비스( facility ) 들의 상황정도는 나타내는 우선순위임.
- logfile-location 은 해당 서비스의 로그내용이 기록될 파일위치를 지정한 것.

 

※"데몬(Daemon)"

"데몬(Daemon)"은 백그라운드에서 동작하는 프로그램으로, 시스템에서 특정한 작업을 수행하거나, 서비스를 제공하거나, 이벤트를 감지하거나, 사용자의 입력을 기다리거나, 다른 프로그램과의 상호작용을 조율하는 등의 역할을 수행합니다.

데몬은 보안 측면에서 중요한 역할을 합니다. 예를 들어, 시스템에 침입한 해커가 데몬을 이용해 백도어(backdoor)를 설치할 수 있습니다. 이러한 경우, 디지털 포렌식 수사관은 데몬의 로그와 설정 파일 등을 분석하여 해커가 접근한 정보를 추적하고, 시스템 보안을 강화하는 조치를 취할 수 있습니다.

 

 

▪  Facility(메시지 종류)

 

 

▪  Priority(메시지 우선순위를 의미)

 

▪ Action : 메시지를 어디에 보낼 것인가에 대해 행해지는 목적지나 행위를 가리킴
✓    로그 파일에 될 수 도 있고 터미널/콘솔, 특정 유저에게 전송가능

 

 

 

 

 

14) 유닉스 로그 파일의 종류

 

★ 여기서 주의!

리눅스, 유닉스 버전에 따라서 로그 파일명 위치가 달라질 수 있기 때문에 고정적이 아니라 유동적인 점을 유의하자!!

728x90