OS

[쉽게 배우는 운영체제] 1. 운영체제 개요

noahkim_ 2023. 12. 26. 20:38

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다

 

1. 소개

프로그래밍의 도입

  • 초기 컴퓨터는 하드웨어에 설계된 기능만 수행할 수 있는 기계였습니다.
  • ✅ 범용성 부족: 새로운 문제를 해결하려면 하드웨어 변경이 필요함
  • ➡️ 이 문제를 해결하기 위해 프로그래밍이란 개념이 도입됨

 

Stored Program Concept (폰 노이만)

  • 명령어를 데이터처럼 메모리에 저장하고 실행할 작업을 프로그램 형태로 기술하여 같은 하드웨어에 다양한 작업을 수행함
  •  계산 중심의 기계 → 범용 컴퓨터
  •  하드웨어 중심 소프트웨어 중심
  •  제한된 기능   확장 가능한 시스템
  • ➡️ 원하는 프로그램을 추가하고 실행할 수 있게 되었습니다.

 

2. 역사

발전 과정 정의 특징
ENIAC 세계 최초의 전자 디지털 범용 컴퓨터  - 약 18,000개의 진공관 사용 
- 대규모 데이터 처리
- 회계, 급여 계산, 통계 분석 등
일괄작업 시스템
프로그램과 데이터를 한 번에 입력 후 자동 실행
- 작업을 스케줄링하여 실행 
- 사용자와의 상호작용 부재 
대화형 시스템 사용자와 컴퓨터 간의 양방향 커뮤니케이션
- 실시간 입출력
- 실행 중 입력 및 중간 결과값 표시 가능
시분할 시스템 CPU 시간을 짧은 단위로 나누어 여러 작업에 번갈아 할당 - 다중 프로그래밍: 하나의 CPU를 여러 프로세스가 공유
- 효율적: CPU 대기시간 감소
다중 사용자 시스템 (유닉스) 여러 사용자가 동일 시스템을 동시에 사용 가능 - 여러 사용자에 의한 자원 공유 허용
- 각 사용자는 고유한 계정을 가짐
분산 시스템 여러 대의 컴퓨터가 하나의 네트워크로 협력하여 작업 수행
논리적으로 하나의 통합된 시스템처럼 작동
클라이언트-서버 시스템
서버가 클라이언트의 요청을 처리하는 방식
클라이언트와 서버로 나뉜 이중 구조
P2P 시스템 서버 없이 클라이언트끼리 직접 연결 서버 과부하 문제 해결 목적
클라우드 컴퓨팅 인터넷을 통해 서버, 스토리지 등의 컴퓨팅 서비스 제공
유연한 자원 할당 및 확장 가능

 

3. 기능

기능 설명 예시
자원 관리 프로그램들이 사용하는 자원들을 안전하고 효율적으로 사용하도록 관리 CPU, 메모리, 디스크, 네트워크
사용자 인터페이스 제공 사용자와 컴퓨터 사이의 중간 다리 역할을 담당함
➡️ 하드웨어를 직접 다루지 않아도 컴퓨터를 사용할 수 있게 해줌
GUI, CLI
동시성 관리 여러 작업이 동시에 실행되는 것처럼 보이도록 관리함 멀티태스킹, 스레드 스케줄링

 

4. 역할

역할 설명
안정성 (자원 보호)
- 사용자가 직접 자원에 접근하지 못하도록 제한
- 자원을 보호하고 관리하여 시스템의 안정성 유지
- 결함 포용: 문제가 발생하면 이전 상태로 복구
효율성 (자원 관리)
- 스케줄링: 자원을 어떤 프로그램에 어떤 순서로 할당할지 결정
- 독점 방지: 특정 프로그램이 자원을 독점하는 것을 막아 공정한 자원 할당 유지
확장성 (하드웨어 인터페이스)
- Plug & Play 지원: 하드웨어 종류와 관계없이 연결 후 바로 사용 가능
- 다양한 하드웨어 자원의 추가 및 제거가 용이 (단, 드라이버 필요)
편의성 (사용자 인터페이스)
- 사용자가 시스템과 쉽게 상호작용할 수 있도록 인터페이스 제공 (GUI, CLI 등)

 

5. 구조

커널

  • 운영체제에서 사용자와 시스템의 인터페이스 역할을 담당하는 프로그램
  •  운영체제의 핵심이 되는 프로그램
  • ✅ 프로세스 관리, 메모리 관리, 저장장치 관리 등

 

시스템 호출
  • 커널이 자신을 보호하기 위해 만든 인터페이스 입니다.
  • 커널이 제공하는 서비스를 시스템 호출로 제한함으로써 컴퓨터 자원을 보호합니다.

 

디바이스 드라이버

  • 커널과 하드웨어의 인터페이스 입니다.
  • 하드웨어의 특징이 반영된 프로그램으로 커널이 실행될 때 같이 실행됩니다.
  • 이를 통해 커널이 하드웨어를 제어할 수 있습니다.

 

출처