3 분 소요

1. 운영체제의 정의와 필요성

1.1 운영체제란?

  • 정의: A. Silberschatz에 따르면, “운영체제는 사용자와 하드웨어 간의 중개프로그램이다.”
  • 역할: 컴퓨터 하드웨어와 애플리케이션 사이의 추상화 계층을 제공하여 사용자와 하드웨어 간의 효율적인 상호작용을 가능하게 함
    OS

1.2 운영체제 학습의 필요성

  • 새로운 하드웨어 운영을 위해
  • 기능의 추가, 수정 및 개선을 위해
  • 시스템 성능 조정을 위해

1.3 운영체제의 주요 목표

  1. 자원의 효율적 사용 (Efficient Use of Resources)
    • 성능에 영향을 미치는 병목현상(bottlenecks) 방지
    • 모든 구성 요소의 최대한 활용
  2. 사용자 편의성과 생산성 (Convenience and Productivity for Users)
    • 사용자 비용이 기계보다 중요
    • 기능을 최대한 효율적으로 제공
  3. 가용성과 신뢰성 (Availability and Reliability)
    • 컴퓨터 시스템의 중요성
    • 시스템 실패가 기업의 실패로 이어질 수 있음

2. 현대 컴퓨팅 패러다임

2.1 컴퓨팅의 종류

  1. 전통적 컴퓨팅 (Traditional computing)
    • 수치 계산 중심
  2. 웹 기반 컴퓨팅 (Web-based computing)
    • 정보 처리 중심
  3. 임베디드 컴퓨팅 (Embedded computing)
    • 특정 목적의 하드웨어/소프트웨어 시스템
    • 예: 휴대용 모바일 기기
      • 제한된 메모리
      • 저속 프로세서
      • 작은 디스플레이
      • 배터리 의존성

3. 하드웨어 보호와 이중 모드 동작

3.1 하드웨어 보호 메커니즘

  • 잘못된 프로그램이 다른 프로그램의 실행에 영향을 주지 않도록 보장
  • 이중 모드 메커니즘을 통한 시스템 보호

3.2 이중 모드 동작 (Dual-Mode Operation)

  1. 사용자 모드 (User Mode)
    • 사용자를 대신하여 실행되는 작업
  2. 커널 모드 (Kernel Mode)
    • 운영체제를 대신하여 실행되는 작업
    • 별칭: supervisor mode, system mode, monitor mode

3.3 모드 전환

  • 보호된 프로세서 레지스터의 status bit로 모드 설정
  • Intel 80x86의 경우:
    • 4가지 실행 상태 존재
    • CPL(Current Privilege Level) 2비트 필드 사용
  • UNIX 커널: User Mode와 Kernel Mode만 사용
  • 특권 명령어(Privileged Instructions)
    • 특정 기계어 명령은 보호된 특권 명령어로 지정
    • 커널 모드에서만 실행 가능
    • 시스템 보호를 위한 핵심 메커니즘

3.4 모드 전환이 발생하는 경우

  1. 하드웨어 인터럽트 (Hardware Interrupt)
  2. 소프트웨어 인터럽트 (Software interrupt/exception)
  3. 시스템 콜 (System call)

4. 운영체제 서비스

4.1 사용자 서비스

  1. 프로그램 실행
    • 메모리에 프로그램을 로드하고 실행하는 기능
  2. 입출력 작업
    • I/O 작업 수행을 위한 중개
  3. 파일 시스템 조작
    • 파일의 읽기, 쓰기, 생성, 삭제 기능
  4. 통신
    • 프로세스 간 정보 교환
    • 동일 컴퓨터 또는 네트워크로 연결된 다른 시스템 간 통신
  5. 오류 감지
    • CPU, 메모리, I/O 장치, 사용자 프로그램의 오류 감지

4.2 시스템 서비스

  1. 자원 할당
    • 다중 사용자/작업 환경에서의 자원 할당
  2. 계정 관리
    • 사용자의 자원 사용 추적 및 기록
  3. 보호
    • 시스템 자원에 대한 접근 제어

5. 시스템 콜 인터페이스

5.1 시스템 콜(System Calls)의 개념

  • 실행 중인 프로그램과 운영체제 간의 인터페이스
  • 함수 호출 형태로 제공

5.2 시스템 콜 원칙

  • 애플리케이션과 하드웨어 사이의 추상화 계층 제공
  • 장점:
    • 프로그래밍 용이성
    • 시스템 보안 향상
    • 프로그램 이식성 증가

6. POSIX API와 시스템 콜

6.1 API (Application Programming Interface)

  • 특정 서비스를 얻기 위한 함수 정의
  • 예: POSIX APIs (malloc(), calloc(), free())
  • libc에서 구현되며 brk() 시스템 콜 사용

6.2 시스템 콜 특징

  • 소프트웨어 인터럽트를 통한 커널 요청
  • 구현:
    • 사용자 공간의 libc에서 래퍼 함수로 구현
    • 정수값 반환 (실패 시 -1 반환 및 errno 설정)

7. 시스템 프로그램

7.1 시스템 프로그램의 개념

  • 프로그램 개발과 실행을 위한 편리한 환경 제공
  • 대부분의 사용자는 실제 시스템 콜이 아닌 시스템 프로그램을 통해 운영체제를 경험

7.2 시스템 프로그램의 분류

  1. 파일 조작 프로그램
    • UNIX의 셸 명령어
    • 생성, 삭제, 복사, 이름변경, 출력, 덤프, 목록 등
  2. 상태 정보 프로그램
    • date, df, du, top 등
    • 시스템 상태 및 성능 모니터링
  3. 파일 수정 프로그램
    • 텍스트 편집기
  4. 프로그래밍 언어 지원
    • 컴파일러
    • 어셈블러
    • 인터프리터
  5. 프로그램 로딩 및 실행
    • 로더
    • 링키지 에디터
    • 디버거
  6. 응용 프로그램
    • DBMS
    • 웹 브라우저
    • 워드 프로세서
    • 게임
    • 그래픽 도구

8. 운영체제 설계

8.1 설계 목표

  1. 사용자 관점
    • 편리성, 학습 용이성, 신뢰성, 안전성, 속도
  2. 시스템 관점
    • 설계/구현/유지보수 용이성
    • 유연성, 신뢰성, error-free, 효율성

8.2 메커니즘과 정책

  • 메커니즘: 작업 수행 방법
  • 정책: 수행할 작업 결정
  • 예시:
    • 메커니즘: time slicing in time-sharing system
    • 정책: time quantum

8.3 계층화 접근법

  • 장점:
    • 모듈성
    • 디버깅과 시스템 검증 용이
  • 단점:
    • 계층 정의의 어려움
    • 성능 저하 가능성

9. 마이크로커널

9.1 모놀리식 커널 vs 마이크로커널

  1. 모놀리식 커널(Monolithic Kernel)
    • 모든 OS 서비스가 하나의 큰 커널에 구현
    • 모든 프로시저 간 호출 가능
  2. 마이크로커널(Microkernel)
    • 핵심 OS 기능만 커널에 포함
    • 나머지 서비스는 사용자 모드에서 실행
      OS-structure

그림: 모놀리식 커널과 마이크로커널의 구조 비교 (출처: Wikipedia)

9.2 마이크로커널의 특징

  • 장점:
    • 확장성, 모듈성
    • 작은 커널로 디버깅 용이
    • 효율적인 유지보수
  • 단점:
    • 성능 저하 (모드/프로세스 전환 필요)

10. 가상 머신

10.1 가상 머신의 필요성

  • 네트워크 컴퓨팅에서의 이식성
  • CPU 혁신의 제약 해결
  • 보안 강화
  • OS 개발 및 디버깅 용이성

10.2 가상 머신의 종류

  1. 프로세스 VM
    • 개별 프로세스 가상화
    • ABI 에뮬레이션
  2. 시스템 VM
    • 전체 시스템 가상화
    • 전체 ISA 에뮬레이션

10.3 시스템 VM 구현 방식

  1. Hosted 방식
    • 기존 OS 위에서 프로세스로 실행
    • 예: VMWare Workstation, VirtualBox
  2. Stand-alone 방식
    • 하드웨어 직접 제어

    • 예: VMWare ESX, IBM z/VM

      VM

11. Linux

11.1 Linux의 특징

  • UNIX 계열 OS
  • 오픈 소스 (GPL 라이선스)
  • 높은 이식성
  • 효율성과 안정성

11.2 Linux의 주요 기능

  1. 모놀리식 커널 구조
    • 복잡하지만 고성능
  2. 모듈 지원
    • 동적 커널 코드 로딩/언로딩
  3. 커널 스레딩
    • 제한적인 커널 스레드 사용
  4. 선점형 커널
    • 2.6 버전부터 지원
  5. 다중 프로세서 지원
    • SMP 지원

참고 자료

  • A. Silberschatz의 운영체제 개론
  • Linux 커널 문서 (www.kernel.org)

댓글남기기