일기

운영체제

Realuda72 2025. 4. 22. 23:17

운영체제란?

운영체제(OS, Operating System)는 하드웨어와 소프트웨어 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다. 사용자가 하드웨어를 직접 제어하지 않고도 프로그램을 실행하거나 자원을 관리할 수 있도록 지원합니다.

주요 역할

  • 하드웨어 자원 관리 (CPU, 메모리, 디스크, 네트워크 등)
  • 프로세스 관리 (프로그램 실행, 스케줄링, 동기화 등)
  • 파일 시스템 관리 (데이터 저장 및 접근)
  • 사용자 인터페이스 제공 (CLI, GUI)
  • 보안 및 접근 제어 (인증, 권한 관리)

운영체제 종류

  • Windows: GUI 기반, 마이크로소프트
  • Linux: 오픈소스, 유닉스 계열, 서버 및 개발 환경
  • macOS: 애플, 유닉스 기반 GUI
  • Unix: 멀티태스킹, 멀티유저 시스템
  • 모바일 OS: Android, iOS

운영체제 구성 요소

커널 (Kernel)

커널이란 무엇인가?

  • 커널은 운영체제의 핵심 소프트웨어로, 하드웨어 자원을 직접 제어하고 사용자 프로그램이 안전하게 하드웨어를 사용할 수 있도록 중재합니다.

커널은 어떻게 존재하는가?

  • 커널은 부팅 시 메모리에 적재되어 항상 실행됩니다.
  • 메모리는 커널 공간 (Kernel Space)사용자 공간 (User Space)으로 나뉘며, 커널은 커널 공간에서 상주하고 동작합니다.
  • 사용자 프로그램은 사용자 공간에서 실행되며, 시스템 콜을 통해 커널 공간과 상호작용합니다.

커널은 어떻게 구성되는가?

  • 커널은 여러 관리자 모듈로 구성되어 있으며, 주요 구성 요소는 다음과 같습니다:
    1. 프로세스 관리자: 프로세스 생성, 종료, 스케줄링 등
    2. 메모리 관리자: 메모리 할당, 가상 메모리 관리 등
    3. 장치 관리자: 디바이스 드라이버를 통해 입출력 장치 제어
    4. 파일 시스템 관리자: 파일 생성, 삭제, 읽기, 쓰기 등
    5. 네트워크 관리자: 네트워크 통신 처리
    6. 보호 및 보안 모듈: 메모리 보호, 사용자 권한 검증 등

커널은 어떻게 역할을 수행하는가?

  • 시스템 콜 인터페이스를 통해 사용자 프로그램의 요청을 처리합니다.
  • 인터럽트 핸들링으로 하드웨어 이벤트에 즉시 대응합니다.
  • 컨텍스트 스위칭을 통해 여러 프로세스를 효율적으로 전환하며 실행합니다.

커널과 운영체제의 관계는?

  • 커널은 운영체제의 핵심 구성 요소로, 하드웨어 자원을 직접 제어합니다.
  • 그러나 운영체제는 커널뿐 아니라 시스템 유틸리티, 셸(shell), GUI 환경 등을 포함하는 더 넓은 개념입니다.
  • 예시:
    • Linux 운영체제는 Linux 커널 + 셸(bash) + 각종 유틸리티
    • Windows 운영체제는 Windows NT 커널 + GUI + 다양한 서비스

프로세스 관리 (Process Management)

프로세스 관리란 무엇인가?

  • 프로세스는 실행 중인 프로그램을 의미하며, 운영체제는 이러한 프로세스의 생성, 실행, 종료를 관리합니다.
  • 하나의 프로그램이 여러 프로세스를 생성할 수 있습니다.

프로세스 관리의 주요 기능

  1. 프로세스 생성 (Process Creation)
    • 새로운 프로세스를 생성하여 실행할 수 있도록 준비합니다.
    • 부모-자식 관계를 가지며, 부모 프로세스가 자식 프로세스를 생성합니다.
  2. 프로세스 종료 (Process Termination)
    • 프로세스 실행이 완료되거나, 오류 발생 또는 외부 요청으로 종료됩니다.
  3. 프로세스 스케줄링 (Process Scheduling)
    • 여러 프로세스가 CPU를 공유할 때, 어떤 프로세스에 CPU를 할당할지 결정합니다.
    • 스케줄링 알고리즘: FCFS, SJF, Round Robin, Priority 등
  4. 문맥 교환 (Context Switching)
    • 실행 중인 프로세스의 상태(레지스터, 프로그램 카운터 등)를 저장하고, 다른 프로세스의 상태를 복원하여 CPU를 전환합니다.
  5. 프로세스 동기화 (Process Synchronization)
    • 여러 프로세스가 공유 자원에 접근할 때, 충돌 없이 안전하게 처리하도록 동기화합니다.
    • 예: 세마포어, 뮤텍스
  6. 프로세스 간 통신 (Inter-Process Communication, IPC)
    • 프로세스 간 데이터를 주고받을 수 있는 메커니즘을 제공합니다.
    • 방식: 메시지 전달(Message Passing), 공유 메모리(Shared Memory)

프로세스 관리의 중요성

  • 시스템 자원을 효율적으로 분배하여 CPU 활용률을 극대화하고, 공정한 프로세스 실행을 보장합니다.
  • 교착 상태(Deadlock)를 예방하거나 해결하여 시스템이 정상적으로 운영되도록 합니다.

메모리 관리 (Memory Management)

메모리 관리란 무엇인가?

  • 메모리는 프로그램 실행에 필요한 데이터를 저장하는 공간입니다.
  • 운영체제는 메모리 공간을 효율적으로 할당하고 회수하며, 여러 프로그램이 동시에 실행될 수 있도록 메모리를 가상화합니다.

메모리 관리의 주요 기능

  1. 메모리 할당과 해제 (Memory Allocation and Deallocation)
    • 각 프로세스에 필요한 메모리 공간을 할당하고, 사용이 끝난 후 이를 해제합니다.
    • 정적 할당(Static Allocation), 동적 할당(Dynamic Allocation)
  2. 가상 메모리 (Virtual Memory)
    • 물리적 메모리보다 더 큰 주소 공간을 제공하여, 프로세스가 필요한 만큼 메모리를 사용하는 것처럼 동작하게 합니다.
    • 디스크의 일부를 메모리처럼 사용 (스왑 영역)
  3. 페이징 (Paging)
    • 가상 메모리를 일정 크기의 페이지(Page) 단위로 나누고, 물리적 메모리도 같은 크기의 프레임(Frame)으로 나누어 관리합니다.
    • 페이지 테이블(Page Table)을 통해 가상 주소와 물리 주소를 변환합니다.
  4. 세그먼테이션 (Segmentation)
    • 메모리를 논리적인 단위(코드, 데이터, 스택 등)로 나누어 관리합니다.
    • 각 세그먼트는 크기가 다를 수 있습니다.
  5. 메모리 보호 (Memory Protection)
    • 각 프로세스가 할당받은 메모리 영역 외에는 접근하지 못하도록 보호합니다.
    • 하드웨어적으로는 MMU (Memory Management Unit)를 통해 주소 변환과 보호를 수행합니다.

메모리 관리의 중요성

  • 여러 프로세스가 동시에 실행되더라도 메모리 충돌을 방지하고, 효율적인 메모리 사용을 보장합니다.
  • 가상 메모리를 통해 물리적 메모리 한계를 극복하여 더 많은 프로그램을 실행할 수 있게 합니다.

파일 시스템 (File System)

파일 시스템이란 무엇인가?

  • 파일 시스템은 데이터를 파일과 디렉토리 형태로 저장하고 관리하는 방식입니다.
  • 하드디스크, SSD, USB 등의 저장 장치에 데이터를 구조화하여 저장하고, 쉽게 접근할 수 있도록 지원합니다.

파일 시스템의 주요 기능

  1. 파일 저장 및 접근
    • 데이터를 파일 단위로 저장하고, 읽기/쓰기/수정/삭제 기능을 제공합니다.
  2. 디렉토리 구조 관리
    • 파일을 체계적으로 관리하기 위해 디렉토리(폴더)를 사용합니다.
    • 디렉토리는 트리 구조를 가지며, 하위 디렉토리와 파일을 포함할 수 있습니다.
  3. 파일 메타데이터 관리
    • 파일 이름, 크기, 생성일, 수정일, 접근 권한 등 파일 속성 정보(메타데이터)를 관리합니다.
  4. 저장 공간 할당 및 관리
    • 파일을 저장할 때, 저장 장치의 블록 단위로 공간을 할당하고, 비어 있는 공간을 효율적으로 관리합니다.
  5. 파일 접근 제어
    • 파일에 대한 읽기, 쓰기, 실행 권한을 설정하여 보안과 접근 제어를 수행합니다.

주요 파일 시스템 종류

  • FAT32, exFAT: 간단한 구조, 호환성 높음
  • NTFS: Windows 기본 파일 시스템, 권한 관리와 저널링 지원
  • ext4: Linux 기본 파일 시스템, 저널링 지원
  • APFS: macOS 기본 파일 시스템, 스냅샷, 암호화 지원

파일 시스템의 중요성

  • 데이터를 영구적으로 저장하고, 효율적으로 검색하고, 보안적으로 보호할 수 있도록 합니다.
  • 안정적인 데이터 관리와 복구 기능을 제공하여 데이터 무결성을 보장합니다.

입출력 시스템 (I/O System)

입출력 시스템이란 무엇인가?

  • 입출력 시스템은 컴퓨터와 외부 장치(디스크, 키보드, 마우스, 프린터, 네트워크 장비 등) 간의 데이터 전송을 관리합니다.
  • CPU와 메모리는 상대적으로 속도가 빠르지만, 입출력 장치는 속도가 느리기 때문에 효율적인 관리가 필요합니다.

입출력 시스템의 주요 기능

  1. 디바이스 드라이버 (Device Driver)
    • 각 하드웨어 장치를 제어하는 소프트웨어로, 운영체제와 장치 간의 인터페이스 역할을 합니다.
    • 하드웨어에 따라 다양한 드라이버가 필요합니다.
  2. 입출력 스케줄링 (I/O Scheduling)
    • 여러 입출력 요청이 발생할 때, 어떤 순서로 처리할지 결정합니다.
    • 디스크 I/O의 경우, 탐색 시간 최소화를 위해 스케줄링 알고리즘(SSTF, SCAN 등)을 사용합니다.
  3. 버퍼링 (Buffering)
    • 데이터 전송 시 속도 차이를 완화하기 위해 버퍼(임시 저장 공간)를 사용합니다.
    • CPU와 입출력 장치 간 데이터 흐름을 원활하게 유지합니다.
  4. 캐싱 (Caching)
    • 자주 사용하는 데이터를 빠르게 접근하기 위해 캐시에 저장합니다.
    • 디스크 캐시, 파일 시스템 캐시 등이 있습니다.
  5. 인터럽트 기반 I/O와 폴링 (Polling)
    • 인터럽트 기반 I/O: 입출력 장치가 작업을 완료하면 CPU에 신호(인터럽트)를 보내 처리합니다.
    • 폴링 (Polling): CPU가 주기적으로 장치 상태를 확인하며 입출력 완료 여부를 확인합니다.

입출력 시스템의 중요성

  • 입출력 시스템은 CPU와 입출력 장치 간 속도 차이를 조율하고, 효율적인 데이터 전송을 지원합니다.
  • 디바이스 드라이버를 통해 다양한 하드웨어를 추상화하여, 사용자와 애플리케이션이 하드웨어 세부사항을 몰라도 입출력을 수행할 수 있게 합니다.

네트워크 (Networking)

네트워크란 무엇인가?

  • 네트워크는 컴퓨터와 다른 장치 간에 데이터를 교환할 수 있도록 하는 시스템입니다.
  • 운영체제는 네트워크 통신을 관리하여, 프로세스가 다른 컴퓨터와 데이터를 주고받을 수 있도록 지원합니다.

네트워크의 주요 기능

  1. 프로토콜 스택 (Protocol Stack)
    • 네트워크 통신 규약인 프로토콜(Protocol)을 계층적으로 구성하여, 데이터를 송수신할 때 필요한 절차를 정의합니다.
    • 대표적인 프로토콜 스택: TCP/IP 스택 (애플리케이션 계층, 전송 계층, 인터넷 계층, 네트워크 인터페이스 계층)
  2. 소켓 인터페이스 (Socket Interface)
    • 네트워크 통신을 위한 API로, 프로세스가 네트워크 연결을 생성하고 데이터를 송수신할 수 있도록 지원합니다.
    • 소켓을 통해 IP 주소와 포트 번호를 이용하여 통신 상대를 식별합니다.
  3. 패킷 처리 (Packet Handling)
    • 네트워크에서 데이터를 작은 단위인 패킷(Packet)으로 분할하여 전송하고, 수신 측에서 다시 조립합니다.
  4. 에러 처리 및 흐름 제어
    • 데이터 전송 중 발생할 수 있는 오류를 검출하고 복구합니다.
    • 흐름 제어를 통해 송수신 속도 차이를 조정합니다.

네트워크의 중요성

  • 운영체제는 네트워크를 통해 분산 시스템, 인터넷, 클라우드 서비스 등 다양한 환경에서 데이터 교환을 가능하게 합니다.
  • 효율적인 네트워크 자원 관리와 보안을 통해 안정적인 데이터 통신을 보장합니다.

보안 및 보호 (Security and Protection)

보안 및 보호란 무엇인가?

  • 보안(Security)과 보호(Protection)는 시스템 자원과 사용자 데이터를 외부 공격이나 내부 오류로부터 안전하게 보호하는 기능입니다.
  • 보안은 외부 위협(해킹, 악성코드)으로부터 시스템을 지키는 것이고, 보호는 내부 사용자 간의 자원 접근을 제어하는 것을 의미합니다.

보안 및 보호의 주요 기능

  1. 사용자 인증 (Authentication)
    • 시스템에 접근하는 사용자의 신원을 확인합니다.
    • 예: 아이디/비밀번호, 생체 인식, OTP 등
  2. 권한 부여 (Authorization)
    • 인증된 사용자가 어떤 자원에 접근할 수 있는지 결정합니다.
    • 예: 파일 읽기/쓰기/실행 권한, 관리자 권한
  3. 접근 제어 (Access Control)
    • 시스템 자원에 접근할 수 있는 사용자나 프로세스를 제한합니다.
    • 방식: ACL (Access Control List), RBAC (Role-Based Access Control)
  4. 암호화 (Encryption)
    • 데이터를 암호화하여 외부에서 접근하거나 탈취하더라도 내용을 해독할 수 없도록 보호합니다.
    • 저장 데이터와 전송 데이터 모두 암호화할 수 있습니다.
  5. 감사 및 로깅 (Auditing and Logging)
    • 시스템에서 발생하는 행동을 기록하여, 보안 위반이나 오류 발생 시 추적할 수 있도록 합니다.
  6. 악성 코드 방지 및 침입 탐지 (Malware Prevention and Intrusion Detection)
    • 바이러스, 웜, 트로이 목마 등의 악성 코드를 탐지 및 차단합니다.
    • IDS (Intrusion Detection System)IPS (Intrusion Prevention System) 를 통해 외부 공격을 탐지하고 대응합니다.

보안 및 보호의 중요성

  • 시스템 자원과 사용자 데이터를 보호하여 무단 접근, 데이터 유출, 시스템 파괴 등을 방지합니다.
  • 운영체제는 이러한 보호 기능을 기반으로, 사용자 신뢰성과 시스템 안정성을 유지합니다.

운영체제 기능 요약

운영체제의 주요 기능은 크게 두 가지로 나눌 수 있습니다:

  1. 하드웨어 관리 기능 (자원 관리)
    • CPU 관리: 프로세스 스케줄링, 문맥 교환 등
    • 메모리 관리: 가상 메모리, 메모리 보호 등
    • 입출력 장치 관리: 디바이스 드라이버, 입출력 스케줄링 등
    • 네트워크 관리: 프로토콜 스택, 소켓 인터페이스 등
    • 이 기능들은 커널이 직접 수행합니다.
  2. 유틸리티 기능 (시스템 서비스)
    • 파일 시스템 관리: 데이터 저장, 디렉토리 구조 관리 등
    • 보안 및 보호 기능: 사용자 인증, 권한 부여, 암호화 등
    • 사용자 인터페이스: CLI, GUI 환경 제공
    • 이 기능들은 커널 위에서 동작하는 시스템 유틸리티서비스가 수행합니다.

*이 글은 ChatGPT 캔버스로 작성함

'일기' 카테고리의 다른 글

커널  (0) 2025.04.23
HTTP 정리  (0) 2025.04.22
WebSocket 정리  (0) 2025.04.22
탐색 알고리즘  (0) 2025.04.14
자동 전투 게임 - 로비 UI 만들기  (0) 2025.03.17