본문 바로가기

OS

[영남이공대 사이버보안과] 각종 운영체제와 그 구성에 대해 알아보자.

운영체제사용자가 컴퓨터 시스템을 쉽게 사용하도록 시스템 자원을 효율적으로 관리하는 프로그램 집합이다. 여기서 시스템 자원이란 프로세서나 기억장치 등을 일컫는 말이다.


운영체제의 기능은 5가지 서브 시스템 관리자(메모리, 프로세서, 장치, 파일, 네트워크)가 있고 사용자 명령 인터페이스가 있다. 사용자 명령 인터페이스는 간단하게 GUI 를 생각하면 된다.


여기서 잠깐, 5가지 서브 시스템 관리자에 대해 알아보자.

  • 메모리 관리자 : 프로그램이 요청한 메모리의 적합성을 점검하고 할당된 메모리를 관리하며 프로그램 종료 시 메모리를 회수한다.
  • 프로세서 관리자 : 명령어들이 체계적이고 효율적으로 실행되도록 작업 스케줄링을 사용한 사용자의 작업 관리를 한다.
  • 장치 관리자 : 프린터, 디스크 드라이버, 모니터 등과 같은 시스템의 모든 장치에서 프로그램을 실행하거나 종료한다.
  • 파일 관리자 : 사용자별로 파일 접근 권한을 부여하고 파일을 실행하거나 종료한다.
  • 네트워크 관리자 : CPU, 메모리, 모뎀. 프린터 등의 자원을 관리한다.

가장 많은 사용자들을 보유한 운영체제는 윈도우 운영체제이다.

윈도우 운영체제 관리자보다 상위 시스템을 담당하는 커널(Kernel)이 있다.

커널이란 인터럽트(interrupt)를 처리하고 각종 서브 관리 인터페이스를 제공한다.


아래는 윈도우 운영체제의 구성을 간략화한 것이다.


윈도우 운영체제 관리자의 역할들이 있다.

  • 입출력 관리자
  • 객체 관리자 : 파일, Port, thread 등의 객체들을 관리
  • 보안 참조 관리자 : 각 데이터 또는 자원 제어
  • 프로세스 관리자 : thread를 관리
  • 로컬 프로시저 호출 관리자 : RAM의 메모리 할당과 가상 메모리 페이징 제어
  • 그래픽 장치 관리자 : 화면에 도형을 나타내거나 폰트 관리
  • 기타 관리자들.. 캐시, PNP, 전원 등
윈도우의 파일 시스템은 3가지가 있다.
  • FAT : 2GB까지 한 파티션, 기본 크기는 16비트이며 클러스터는 32KB이다. 그러므로 전체 용량이 2GB 이다.
  • FAT32 : 윈도우 95에서 처음 도입, 클러스트당 32비트, 접근제어 불가능, 보안설정 불가능
  • 윈도우7 나 윈도우2008서버 이상은 NTFS 를 사용한다.
이제 윈도우 운영체제의 부팅 순서를 알아보자. 이 기준은 윈도우 XP의 기준이다.
  1. Power On Self Test : BIOS에서 POST 실행
  2. 기본 부팅 환경설정 LOAD : BIOS는 CMOS에 설정된 환경 정보들을 읽어 적용한다.
  3. Mater Boot Record LOAD
  4. NT Loader : 부팅 파티션에 있으며 간단한 파일 시스템 실행과 boot.ini 내용을 읽는다.
  5. NTDETECT 실행 : 하드웨어 장치들을 검사한다.
  6. ntoskrnl.exe 실행 : HAL.dll을 불러오는 단계이다.
    - 커널 불러오기 : 시스템 설정을 HKEY_LOCAL_MACHINE\System\CurrentControlset\Services에 저장
    - 커널 초기화 : 드라이브의 현재 설정을 검사하고 작업 시작
    - 서비스 불러오기 : 세션 관리자(smss.exe)와 서브 시스템 불러오기
    - 서브 시스템 시작
사실 부팅 순서에서 HKEY ... 같은 자잘한 건 필수적인 것은 아니다. 일단 알아두면 좋은.. 그런것이다. 다음은 윈도우 운영체제의 비스타, 7의 부팅 순서 기준을 알아보자.
  1. Power On Self Test
  2. 기본 부팅 환경설정 LOAD
  3. Master Boot Record LOAD
  4. Window Boot Manager 실행 : bootmgr.exe 실행, 부트 설정 데이터 읽기
  5. Winload.exe 실행 : NTDETECT과 같이 장치 드라이브를 불러오고 ntosknl.exe 실행
이번엔 리눅스유닉스의 부팅 순서에 대해 알아볼 것이다.
  1. Power On Self Test
  2. 기본 부팅 환경설정 LOAD
  3. Master Boot Record LOAD
  4. Boot Loader 실행
  5. init 에 따른 실행
    /etc/inittab 파일을 토대로 실행된다.
    - init 0 : 시스템 종료
    - init 1 : 단일 관리자 모드, 소수의 daemon만 실행된다.
    - init 2 : Network File System을 지원하지 않는 다중 사용자 모드
    - init 3 : 일반 Shell 인터페이스, 다중 사용자 모드
    - init 4 : 빈 공간
    - init 5 : GUI, 다중 사용자 모드
    - init 6 : 재부팅


리눅스와 유닉스의 구조


리눅스는 윈도우 운영체제보다 훨씬 단순하다.


리눅스와 유닉스에는 셸(Shell)이라는 것이 있는데 이건 껍데기를 가리키는게 아니라 응용프로그램에서 명령을 받아 커널에 전송하는 역할을 가지고 있다.


Shell의 종류는 본(Bourne), 콘(Korn), C 등이 있다.

Shell은 다양한 기능을 포함하고 있는데 그것은 내장 명령어, 입출력 및 오류 방향 변경, 와일드카드, 파이프라인, 유무 조건부 명령, Sub shell, 백그라운드, 스크립트 작성 등이 이다.


리눅스와 유닉스의 파일 시스템은 간단하게 4가지가 있다.

  • 일반 파일
  • Directory : 유닉스에선 파일이다. 리눅스에서는 여러 파일과 하위 Directory이 담긴 폴더이다.
  • 특수 파일 : 물리적인 장치에 접근한다. 보통 /dev 에 위치하고 있다.
  • 파이프 파일 : ' | ' 문자를 의미, 다수의 명령을 연결하며 임시적으로 수행하였다가 사라진다.

 Directory

 의미

 /bin

 기본 파일, 기본 명령어(echo, mv, copy, pwd ...)

 /etc

 시스템 환경 설정(passwd, hosts, ...)

 /tmp

 임시 파일, 임의로 삭제될 수 있다.

 /lib

 기본 모듈(library)

 /boot

 커널 파일, 부팅할때 읽는다.

 /dev

 물리적인 장치 접근 파일

 /home

 각 사용자의 Directory 이면서 시작 위치

 /usr

 사용자가 쓰는 파일

 /usr/lib

 C언어나 Fortran의 library

 /usr/include

 C언에 사용하는 header 파일