Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자공부일기

운영체제 (Operating System)란? 본문

TIL(Today I Learned)

운영체제 (Operating System)란?

JavaCPP 2024. 12. 24. 20:40

운영체제 (Operating System)란?

운영체제(OS)는 컴퓨터 시스템의 핵심 소프트웨어로, 하드웨어와 소프트웨어를 관리하고 사용자와 컴퓨터 간의 인터페이스 역할을 수행합니다. 운영체제는 컴퓨터가 정상적으로 작동하기 위해 반드시 필요하며, 자원 관리, 프로세스 실행, 파일 시스템 관리, 보안 등의 역할을 수행합니다. 여기서는 운영체제의 구조와 역할을 더욱 자세히 살펴봅니다.

 

운영체제의 정의

운영체제는 컴퓨터 하드웨어를 제어하고, 다양한 응용 프로그램과 사용자 간의 상호작용을 지원하는 소프트웨어 계층입니다. 운영체제는 하드웨어를 직접 제어하며, 응용 프로그램이 이를 효과적으로 사용할 수 있도록 자원을 추상화합니다.

 

운영체제의 주요 역할

1. 자원 관리 (Resource Management)

운영체제는 컴퓨터 시스템의 하드웨어 자원을 효율적으로 관리합니다. 여기에는 CPU, 메모리, 저장 장치, 네트워크 및 입출력 장치 등이 포함됩니다.

CPU 스케줄링 알고리즘

  • FCFS (First-Come-First-Served): 프로세스가 도착한 순서대로 처리하는 방식으로 구현이 간단하지만, 긴 프로세스가 앞에 있을 경우 다른 프로세스들이 대기해야 하는 문제점이 있습니다.
  • SJF (Shortest Job First): 실행 시간이 짧은 작업부터 처리하여 전체 대기 시간을 최소화하는 알고리즘이지만, 실행 시간을 예측하기 어려운 경우도 있습니다.
  • Round Robin (RR): 각 프로세스가 고정된 시간 단위를 할당받아 순환하며 실행됩니다. 시간 단위(Time Quantum)가 너무 작거나 크면 성능 문제가 발생할 수 있습니다.
  • Priority Scheduling: 프로세스에 우선순위를 부여하여 높은 우선순위 프로세스가 먼저 실행됩니다. 우선순위가 낮은 프로세스가 무기한 대기할 수 있는 "기아 현상"(Starvation)을 방지하기 위해 에이징(Aging) 기법이 사용됩니다.
  • 멀티레벨 큐 스케줄링: 프로세스들이 여러 개의 큐에 분류되어 각 큐에 대해 다른 스케줄링 알고리즘이 적용됩니다. 예를 들어, 상위 큐는 우선순위 스케줄링을, 하위 큐는 Round Robin을 사용할 수 있습니다.

CPU 스케줄링 동작 과정

  1. 프로세스 대기열 관리: 운영체제는 대기열을 유지하며 프로세스가 도착하면 이를 큐에 추가합니다.
  2. 스케줄러 실행: 스케줄링 알고리즘에 따라 다음에 실행할 프로세스를 선택합니다.
  3. 문맥 교환: 선택된 프로세스를 실행하기 위해 현재 실행 중인 프로세스의 상태를 저장하고, 새 프로세스의 상태를 복원합니다.
  4. 프로세스 실행: 선택된 프로세스는 CPU에서 실행되며, 작업을 완료하거나 시간 단위가 끝나면 다시 대기열로 돌아갑니다.

이러한 알고리즘은 시스템의 성능 요구 사항과 응답 시간에 따라 선택됩니다. 예를 들어, SJF는 배치 작업(batch jobs)에 적합하고, Round Robin은 대화형(interactive) 시스템에 적합합니다.

자원 관리의 주요 기능

  • CPU 관리:
    • CPU 스케줄링: 여러 프로세스가 CPU를 사용할 때 우선순위를 정하고 할당.
    • 문맥 교환(Context Switching): 여러 프로세스 간에 CPU를 교체하며 실행.
  • 메모리 관리:
    • 메모리 할당 및 해제.
    • 가상 메모리(Virtual Memory)를 통한 메모리 확장.
    • 메모리 단편화 방지: 내부 단편화와 외부 단편화를 최소화하기 위한 알고리즘 사용.
  • 디스크 스케줄링:
    • 디스크 I/O 요청 처리 및 최적화.
    • 스케줄링 알고리즘: FCFS, SSTF, SCAN, C-SCAN 등.
 

2. 프로세스 관리 (Process Management)

프로세스는 실행 중인 프로그램을 의미합니다. 운영체제는 프로세스 생성, 실행, 종료 등 프로세스 수명 주기를 관리합니다.

주요 프로세스 관리 기능

  • 프로세스 생성 및 종료:
    • 새로운 프로세스를 생성할 때, 운영체제는 부모 프로세스의 주소 공간을 복사하거나 새로운 주소 공간을 할당합니다. 이 과정은 fork() 또는 exec()와 같은 시스템 호출을 통해 이루어집니다. 예를 들어, 유닉스 계열에서는 fork()를 통해 부모 프로세스를 복사하고, exec()를 통해 새로운 프로그램을 실행합니다.
    • 프로세스 종료는 exit() 시스템 호출로 수행되며, 종료된 프로세스의 자원은 운영체제에 의해 회수됩니다. 프로세스 종료 시 운영체제는 부모 프로세스에게 종료 상태를 전달하며, 이를 위해 wait()와 같은 시스템 호출이 사용됩니다.
  • 프로세스 상태:
    • 프로세스는 Ready, Running, Waiting 상태를 가집니다.
  • 스케줄링 알고리즘:
    • FCFS (First-Come-First-Served): 먼저 도착한 프로세스부터 실행.
    • Round Robin: 각 프로세스가 일정한 시간 동안 CPU 사용.
    • SJF (Shortest Job First): 실행 시간이 가장 짧은 작업부터 처리.
    • Priority Scheduling: 우선순위가 높은 프로세스부터 실행.
    • 멀티레벨 큐(Multilevel Queue): 프로세스를 우선순위별 큐로 분류하여 관리.
  • 프로세스 동기화 및 통신:
    • 공유 자원에 대한 접근 제어(Mutual Exclusion).
    • 세마포어(Semaphore), 모니터(Monitor) 등 동기화 기법 사용.
    • 프로세스 간 통신(IPC): 메시지 패싱, 공유 메모리.
 

3. 메모리 관리 (Memory Management)

운영체제는 메모리를 효율적으로 관리하여 여러 프로그램이 동시에 실행될 수 있도록 합니다.

메모리 관리의 주요 기능

  • 주소 변환:
    • 가상 주소를 물리적 주소로 변환.
    • MMU(Memory Management Unit)를 통해 동적 주소 변환 수행.
  • 메모리 할당:
    • 고정 분할(Fixed Partitioning).
    • 가변 분할(Variable Partitioning).
    • 페이징(Paging): 메모리를 고정 크기의 페이지로 나누어 관리.
    • 세그먼테이션(Segmentation): 논리적 단위로 메모리 분리.
  • 스왑핑(Swapping):
    • 메모리가 부족할 때 일부 데이터를 디스크로 이동.
    • 스왑 공간 관리.
  • 캐시 메모리:
    • CPU와 메모리 간의 데이터 접근 속도를 향상시키기 위한 고속 메모리.
 

4. 파일 시스템 관리 (File System Management)

운영체제는 데이터 저장과 관리를 위해 파일 시스템을 제공합니다. 파일 시스템은 데이터를 논리적으로 구성하며, 사용자가 쉽게 접근할 수 있도록 도와줍니다.

주요 기능

  • 파일 작업:
    • 파일 생성, 삭제, 읽기, 쓰기, 복사.
  • 디렉터리 구조:
    • 단일 레벨(Single-Level), 다중 레벨(Multi-Level), 그래프 구조 등 제공.
    • 파일 탐색 및 검색 기능.
  • 스토리지 할당:
    • 파일을 저장할 때 디스크 공간을 효율적으로 할당.
    • 연속 할당(Contiguous Allocation), 링크드 할당(Linked Allocation), 인덱스 할당(Index Allocation) 방식.
  • 파일 접근 권한:
    • 파일 소유자, 읽기/쓰기/실행 권한 설정.
    • ACL(Access Control List) 또는 RBAC(Role-Based Access Control) 지원.
 

5. 입출력 장치 관리 (I/O Management)

운영체제는 다양한 입출력 장치를 제어하고, 사용자와 하드웨어 간의 상호작용을 지원합니다.

주요 기능

  • 장치 드라이버:
    • 하드웨어 장치와 운영체제 간의 인터페이스 역할.
    • 다양한 장치를 지원하기 위한 플러그앤플레이(Plug and Play) 기능.
  • I/O 버퍼링:
    • 데이터 입출력 시 속도 차이를 줄이기 위해 임시 저장.
    • 싱글 버퍼링, 더블 버퍼링, 순환 버퍼링 방식 지원.
  • I/O 스케줄링:
    • 여러 작업이 동시에 요청될 때 장치 사용 우선순위 결정.
    • 병목 현상 방지.
 

6. 보안 및 접근 제어 (Security and Access Control)

운영체제는 데이터를 보호하고 불법적인 접근을 방지합니다.

주요 기능

  • 사용자 인증(Authentication):
    • 사용자 계정과 비밀번호로 접근 제어.
    • 이중 인증(Multi-Factor Authentication) 지원.
  • 권한 관리:
    • 각 사용자에게 자원 접근 권한 설정.
    • 최소 권한 원칙(Principle of Least Privilege) 적용.
  • 암호화:
    • 데이터 전송 시 암호화를 통해 보안 강화.
    • 대칭키, 비대칭키, 해싱(Hashing) 사용.
  • 침입 탐지:
    • 비정상적인 활동을 탐지하고 차단.
    • IDS(Intrusion Detection System), IPS(Intrusion Prevention System) 연동.
 

7. 네트워크 관리 (Network Management)

운영체제는 네트워크 연결을 설정하고, 시스템 간 데이터 교환을 지원합니다.

주요 기능

  • 프로토콜 관리:
    • TCP/IP, UDP, HTTP, FTP 등의 네트워크 프로토콜 지원.
    • OSI 7 계층 모델 기반.
  • 데이터 전송:
    • 데이터 패킷 생성, 송신, 수신.
    • 흐름 제어 및 오류 제어 수행.
  • 자원 공유:
    • 프린터, 파일 서버 등의 네트워크 자원 공유.
    • 클라우드 서비스와 통합.
 

운영체제의 구성 요소

1. 커널 (Kernel)

운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 인터페이스 역할을 합니다.

주요 기능

  • 프로세스 관리.
  • 메모리 관리.
  • 장치 드라이버 관리.
  • 시스템 호출 인터페이스 제공.
  • 시스템 성능 최적화.

2. 쉘 (Shell)

사용자와 운영체제 간의 인터페이스를 제공합니다.

종류

  • CLI(Command Line Interface): 명령어 기반.
  • GUI(Graphical User Interface): 그래픽 기반.
  • TUI(Text User Interface): 텍스트 기반.

3. 파일 시스템 (File System)

데이터를 저장하고 접근할 수 있는 구조를 제공합니다.

4. 장치 드라이버 (Device Driver)

하드웨어 장치를 제어하고 운영체제와 상호작용할 수 있도록 지원합니다.

운영체제의 종류

1. 범용 운영체제

  • Windows, macOS, Linux, Unix 등.
  • 개인용 컴퓨터와 서버에서 사용.

2. 모바일 운영체제

  • Android, iOS.
  • 스마트폰과 태블릿에서 사용.

3. 임베디드 운영체제

  • FreeRTOS, VxWorks.
  • 제한된 자원을 가진 임베디드 시스템에서 사용.

4. 실시간 운영체제 (RTOS)

  • QNX, RTLinux.
  • 실시간 응답이 중요한 시스템에서 사용.

'TIL(Today I Learned)' 카테고리의 다른 글

I/O(Input/Output) 최적화  (0) 2024.12.30
OSI 응용 계층  (0) 2024.12.26
인덱스  (0) 2024.12.20
IOCP  (0) 2024.12.19
OSI전송 계층  (0) 2024.12.18