본문 바로가기
IT★자격증/정보시스템감리사 기출문제 풀이

정보시스템 감리사 빈출 토픽 - 페이지 교체

by 꼬모부 2023. 12. 19.
728x90
시스템구조 토픽 중 운영체제(Operating System) 내용 중 페이지 교체, Unix/Linux 파일에 대해서 알아보고자 합니다.

운영체제(Operating System, OS)는 하드웨어(H/W)와 소프트웨어(S/W) 간의 인터페이스 역할을 하는 소프트웨어 시스템입니다. 사용자가 컴퓨터를 편리하게 사용할 수 있도록 도와주며, 다른 소프트웨어가 컴퓨터 하드웨어를 안전하고 효과적으로 사용할 수 있도록 관리를 합니다.

운영체제는 크게 4가지 주요 기능을 수행합니다.
  1. 프로세스 관리: 운영체제는 프로그램 실행을 관리하며, 프로세스 간의 효율적인 스케줄링과 동기화, 메모리 관리를 당담합니다.
  2. 메모리 관리: 컴퓨터의 주 메모리를 관리하는데 효율적으로 할당하고, 프로세스 간 메모리 공간을 격리하여 데이터의 안정성을 보장하고 있습니다.
  3. 입/출력 장치 관리: 키보드, 마우스, 디스플레이, 프린터 등의 입력/출력 장치를 관리합니다.
  4. 파일 시스템 관리: 사용자의 데이터를 파일 형태로 저장, 관리합니다. 파일 생성, 삭제, 수정 등을 관리하며, 데이터의 안정성과 보안성을 유지합니다.


대표적인 운영체제로는 Microsoft의 Windows, Apple의 macOS, Linux 등이 있습니다. 

윈도우 인증 과정에서는 사용자가 로그인하면 LSA가 SAM에 사용자 이름과 비밀번호를 전달하여 사용자 인증을 요청합니다. SAM은 요청받은 사용자 이름과 비밀번호를 자신이 가지고 있는 정보와 비교하여 인증 여부를 결정하고, 그 결과를 LSA에게 반환합니다. 이렇게 LSA와 SAM은 윈도우의 보안을 관리하는데 중추적인 역할을 수행하고 있습니다.


1. Windows 운영체제

Windows는 마이크로소프트가 개발한 운영체제로 그래픽 사용자 인터페이스(GUI)를 통해 사용자와 상호작용하며, 사용자가 마우스와 키보드를 사용해 명령을 입력하면 이를 해석하여 컴퓨터가 수행할 수 있도록 합니다.

Windows 인증과정

윈도우 인증 과정은 사용자가 운영체제를 사용하기 위해 필요한 절차로 사용자의 신원을 확인하고, 사용자가 윈도우를 합법적으로 사용하고 있는지 확인하는 과정입니다.
 

인증시스템
  • LSA(Local Security Authority): LSA는 윈도우에서 보안 정책을 생성하고 관리하는 구성 요소로, 사용자 인증, 로그인 세션 생성, 액세스 토큰 생성 등 사용자의 접근 제어와 관련된 작업을 수행합니다.
  • SAM(Security Accounts Manager): SAM은 로컬 사용자 계정과 그룹 계정에 대한 정보를 저장하고 관리하는 구성 요소입니다. SAM은 윈도우 레지스트리의 특정 부분에 위치하여, 로컬 사용자와 그룹의 보안 식별자(SID)를 생성하고 관리합니다. 

SAM 파일은 사용자, 그룹 계정 및 암호화된 패스워드 정보를 저장하고 있는 데이터베이스로 윈도우 설치 디렉터리에 위치하고 있는데 아래 그림을 참고하세요

SAM 파일 위치

 


2. Unix/Linux 운영체제

리눅스(Linux)는 Unix 기반의 오픈 소스 운영체제입니다. 리눅스 운영체제는 1991년 리누스 토르발스에 의해 처음 개발되었으며, 그 후 전 세계 수많은 개발자들의 기여를 통해 발전해 왔습니다. 리눅스의 가장 큰 특징 중 하나는 오픈 소스라는 점입니다. 이는 소스 코드가 공개되어 있어 누구나 자유롭게 사용, 수정, 배포할 수 있다는 의미입니다. 또한 UNIX와 호환성이 있어 많은 서버와 임베디드 시스템에서 사용되며, 안드로이드 운영체제의 기반이기도 합니다.
 

리눅스 운영체제의 주요 기능과 구성요소
  1. 프로세스 관리: 리눅스는 실행중인 프로그램(프로세스)을 관리하며, 각 프로세스에 필요한 자원을 할당하고, 프로세스 간의 충돌을 방지합니다.
  2. 메모리 관리: 리눅스는 컴퓨터의 주 메모리를 관리하며, 각 프로세스가 필요로 하는 메모리 공간을 할당하고, 사용되지 않는 메모리를 회수합니다.
  3. 입출력 장치 관리: 리눅스는 키보드, 마우스, 모니터, 프린터 등의 입출력 장치를 관리합니다. 사용자가 입력한 명령을 해당 장치가 이해할 수 있는 형태로 변환하고, 장치로부터의 출력을 사용자가 이해할 수 있는 형태로 변환합니다.
  4. 파일 시스템 관리: 리눅스는 하드 디스크나 SSD 등의 저장 장치에 저장된 파일을 관리합니다. 사용자가 파일을 생성, 수정, 삭제할 수 있도록 하며, 필요에 따라 파일을 암호화하거나 백업합니다. 

 
리눅스는 가변성과 유연성, 안정성으로 인해 전 세계적으로 많은 개발자와 기업들이 사용하고 있고, 대표적으로 Ubuntu, Fedora, CentOS, RedHat 등이 있습니다.
 

Linux 인증과정
  1. 로그인 과정로그인 과정 : 사용자가 리눅스 시스템에 로그인하려면 먼저 로그인 프롬프트에서 사용자 이름을 입력해야 합니다. 그 후 시스템은 해당 사용자의 비밀번호를 묻고, 사용자가 비밀번호를 입력하면 시스템은 입력된 비밀번호가 해당 사용자의 비밀번호와 일치하는지 확인합니다.
  2. 사용자 정보 : 리눅스에서 각 사용자의 정보는 '/etc/passwd' 파일에 저장됩니다. 이 파일에는 사용자 이름, 비밀번호, 사용자 ID, 그룹 ID, 홈 디렉터리, 로그인 쉘 등의 정보가 포함되어 있습니다. 비밀번호는 보안을 위해 '/etc/shadow' 파일에 암호화된 형태로 저장됩니다. 
  3. 사용자 관리 : 리눅스에서는 'useradd', 'userdel', 'usermod' 등의 명령어를 사용해 사용자 계정을 추가, 삭제, 수정할 수 있습니다. 각 사용자는 개별 홈 디렉터리와 로그인 쉘을 가지며, 필요에 따라 사용자 그룹을 만들어 권한을 관리할 수 있습니다.
/etc/passwd

 
파일리눅스 시스템에서 '/etc/passwd' 파일은 시스템의 모든 사용자 정보를 저장하는 중요한 파일입니다. 이 파일은 사용자 계정에 대한 다양한 정보를 포함하고 있으며, 각 라인이 하나의 사용자 계정을 나타냅니다. 각 라인은 7개의 필드로 구성되어 있으며, 각 필드는 콜론(:)으로 구분됩니다.

/etc/passwd 파일의 7개 필드

 

7개의 필드는 다음과 같은 정보를 담고 있습니다.
  1. Username : 사용자의 로그인 이름입니다.
  2. Password : 사용자의 비밀번호입니다.
    하지만 보안상의 이유로 실제 비밀번호는 이곳에 저장되지 않고, '/etc/shadow' 파일에 암호화되어 저장됩니다. 따라서 이 필드에는 통상 'x' 또는 '*' 문자가 들어갑니다.
  3. User ID (UID) : 사용자의 고유 번호입니다. Root 사용자의 UID는 항상 0입니다.
  4. Group ID (GID) : 사용자의 기본 그룹의 고유 번호입니다. '/etc/group' 파일에서 해당 그룹의 정보를 찾을 수 있습니다.
  5. User ID Info (GECOS) : 사용자의 전체 이름이나 연락처 등의 추가 정보를 포함할 수 있습니다.
  6. Home directory : 사용자의 홈 디렉토리 경로입니다. 사용자가 로그인하면 이 디렉터리로 이동합니다.
  7. Command/Shell : 사용자의 로그인 쉘입니다. 사용자가 로그인하면 이 쉘이 실행됩니다. 보통은 '/bin/bash' 또는 '/bin/sh' 등이 사용됩니다.
해커들이 자주 애용하는 방법

해커는 종종 시스템에 침입하여 '/etc/passwd' 파일에서 특정 사용자의 User ID (UID)와 Group ID (GID)를 0으로 변경하려고 시도합니다. 이는 UID와 GID가 0인 계정은 root 계정, 즉 시스템 관리자 계정을 나타내기 때문입니다. root 계정은 시스템의 모든 권한을 가지고 있으며, 파일을 읽거나 쓰는 것은 물론, 시스템 설정을 변경하거나 다른 사용자의 비밀번호를 변경하는 등의 작업도 가능합니다.

따라서 해커는 자신의 계정의 UID와 GID를 0으로 설정하여 root 권한을 획득하려고 시도하는 것입니다. 이렇게 되면 해커는 시스템의 제어권을 완전히 얻게 되어, 시스템을 마음대로 조작하거나 중요한 데이터를 탈취할 수 있게 됩니다. 그러나 이러한 행위는 일반적으로 시스템의 보안 메커니즘에 의해 방지되며, '/etc/passwd' 파일을 직접 수정할 수 있는 권한은 일반적으로 root 사용자만이 가지고 있습니다. 따라서 이미 시스템에 침입하여 root 권한을 획득하지 않는 한, 해커가 이 파일을 수정하는 것은 매우 어렵습니다.

보안을 위해 리눅스 시스템에서는 항상 필요한 경우에만 root 계정을 사용하고, 가능하면 일반 사용자 계정으로 작업을 수행하는 것이 좋습니다. 또한 정기적으로 패스워드를 변경하고, 시스템의 보안 패치를 최신 상태로 유지하는 것이 중요합니다.

 

리눅스 파일 관리

 

  1. 파일관리: 리눅스에서는 모든 것을 파일로 취급합니다. 텍스트 파일, 실행 파일, 디렉토리, 하드웨어 장치 등 모든 것이 파일로 관리됩니다. 이러한 파일들은 파일 시스템 내에 계층적으로 구성되어 있습니다. 또한, 각 파일은 사용자, 그룹, 그 외 사용자에 대한 권한을 가지고 있습니다. 이 권한은 읽기, 쓰기, 실행의 3가지 종류가 있습니다.

  2. inode : inode는 Index Node의 약자로, 리눅스 파일 시스템에서 파일의 메타데이터를 저장하는 자료구조입니다. inode는 파일의 소유자, 파일 타입, 접근 권한, 파일 크기, 파일이 마지막으로 접근/변경된 시간, 파일 데이터 블록의 위치 등의 정보를 담고 있습니다. 다만, inode에는 파일 이름이 저장되지 않습니다. 파일 이름은 디렉터리 엔트리에서 관리되며, 이 엔트리는 파일 이름과 해당 inode 번호의 매핑을 가지고 있습니다. 리눅스에서 파일을 열거나 수정할 때, 실제로는 파일 이름을 통해 해당 파일의 inode 번호를 찾아내고, 이를 통해 파일의 메타데이터와 실제 데이터를 접근하는 방식으로 동작합니다.

    간단하게 말하면, inode는 파일 시스템의 '목차'와 같은 역할을 합니다. 파일 이름을 통해 해당 파일의 '목차'를 찾아내고, 이를 통해 실제 파일 데이터에 접근하는 것이죠.

  3. 파일 시스템의 구성 요소
    • 부트 블록(Boot Block): 부트 블록은 디스크의 맨 처음에 위치하며, 시스템이 부팅될 때 필요한 부트 로더 코드를 담고 있습니다. 이 코드는 컴퓨터가 처음 켜질 때 운영체제를 메모리로 로드하는 역할을 합니다.
    • 슈퍼블록(Super Block): 슈퍼블록은 파일 시스템의 메타데이터를 저장하는 영역입니다. 파일 시스템의 크기, inode와 데이터 블록의 총 개수, 사용 가능한 inode와 데이터 블록의 개수, 마지막으로 마운트 된 시간 등의 정보를 담고 있습니다.
    • Inode 리스트: 이전에 설명드렸듯이, inode는 파일이나 디렉토리에 대한 정보를 담고 있는 데이터 구조입니다. inode 리스트는 이런 inode들의 목록을 말합니다. 각각의 inode는 파일의 크기, 소유자, 그룹, 수정 시간, 접근 권한 등의 정보를 담고 있습니다.

예를 들어, 우리가 'ls -l' 명령을 통해 파일의 상세 정보를 확인할 수 있는데, 이 정보는 실제로는 inode 리스트에서 가져온 것입니다. 또한, 시스템이 부팅될 때 부트 블록의 정보가 로드되고, 파일 시스템이 마운트 될 때는 슈퍼블록의 정보가 사용됩니다. 이렇게 각각의 블록과 리스트는 파일 시스템을 구성하고 운영하는 데 필요한 중요한 정보와 기능을 담당하고 있습니다.


페이지교체 알고리즘

 
페이지 교체 알고리즘은 컴퓨터의 메모리 관리를 위한 중요한 기법입니다. 운영체제는 한정된 물리 메모리를 효과적으로 사용하기 위해, 현재 실행 중인 프로세스들의 메모리 요구를 충족시키기 위해 이를 사용합니다. 페이지 교체 알고리즘이 필요한 상황은 '페이지 폴트'가 발생했을 때입니다. 페이지 폴트는 현재 실행 중인 프로세스가 참조하려는 메모리 페이지가 물리 메모리에 없는 경우를 말합니다.
 
이럴 때 운영체제는 페이지 교체 알고리즘을 사용하여, 메모리에 있는 어떤 페이지를 디스크로 내보내고, 요구된 페이지를 메모리로 불러옵니다. 페이지 교체 알고리즘에는 여러 종류가 있습니다.

  • FIFO (First In First Out): 가장 먼저 들어온 페이지부터 교체합니다. 단순하고 이해하기 쉽지만, 페이지의 사용 빈도나 중요성을 고려하지 않아 비효율적일 수 있습니다.
  • LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지부터 교체합니다. 페이지의 최근 사용 패턴을 반영하므로 FIFO보다 효율적일 수 있습니다.
  • LFU (Least Frequently Used): 가장 적게 사용된 페이지부터 교체합니다. 사용 빈도를 기준으로 하므로, 자주 참조되는 페이지를 보존할 수 있습니다.
  • OPT (Optimal): 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체합니다. 이론적으로 가장 최적의 방법이지만, 실제로는 각 페이지의 미래 사용 패턴을 알 수 없으므로 구현이 불가능합니다. 위의 예시와 같이, 페이지 교체 알고리즘은 프로세스의 메모리 요구와 한정된 물리 메모리 사이의 균형을 맞추는 데 사용됩니다. 다양한 알고리즘이 있으며, 각 시스템의 요구사항에 따라 적절한 알고리즘이 선택되어야 합니다.
  • SPN(Shortest Process Next): 가장 짧은 실행 시간을 가진 프로세스를 먼저 실행하는 방식으로, 프로세스의 평균 대기 시간을 최소화하는 효과가 있습니다. 하지만, 실행 시간이 긴 프로세스는 짧은 프로세스가 계속 들어오는 경우 계속해서 대기해야 하는 '기아' 현상이 발생할 수 있는데, 따라서 SPN은 일반적으로 임계치를 설정해서 '기아' 현상을 방지하는 방법과 합께 사용합니다.
  • Round-Robin: 각 프로세스에게 동일한 CPU 할당 시간(quantum)을 주고, 그 시간이 지나면 다음 프로세스로 넘어가는 방법으로 모든 프로세스는 공평하게 CPU를 할당받으므로, 어떤 프로세스도 배제되지 않습니다. 이 방식은 실시간 시스템이나 시분할 시스템에서 주로 사용되며, 프로세스의 응답 시간을 짧게 유지할 수 있습니다. 너무 짧은 할당 시간에 의해 오버헤드를 증가시키고, 너무 긴 할당 시간은 SPN처럼 '기아' 현상을 유발할 수 있습니다.

시스템구조 빈출 Topic인 Linux 파일과 페이지 교체 알고리즘에 대해서 알아보았습니다.
다음에는 컴퓨터구조의 RAID, Endian, 2의보수, CPU 스케줄링에 대해서 알아보겠습니다.
읽어주셔서 감사합니다.
반응형
LIST