[OS] 운영체제 기본

doongidoong·2024년 2월 10일
0

운영체제

목록 보기
1/8

✅ 운영체제 기본

운영체제는 컴퓨터 하드웨어 바로 위에 설치되어, 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 프로그램이다.

운영체제의 핵심은 커널이다.
좁은 의미의 운영체제는 커널 자체를 의미하며 넓은 의미로는 커널과 여러 주변 시스템을 다루는 유틸리티를 포함한다.

  • 커널은 컴퓨터 전원이 켜지면 항상 메모리에 상주하는 프로그램으로, 일반적으로 커널이 같으면 동일한 운영체제로 취급

  • 컴퓨터를 켠다는 의미의 부팅은 커널을 로딩함으로써 컴퓨터를 시작하는 것

    • 시스템의 파워가 켜지면 처음 부트스트랩 프로그램이 위치한 메모리에서 실행한다.

✔️ 운영체제 역할

컴퓨터 시스템은 하드웨어(Hardware), 운영체제(Operating System), 각종 소프트웨어, 사용자(User)로 나뉨
이러한 시스템들 사이에서 운영체제의 역할은 사용자 관점과 시스템 관점으로 나뉨

  • 사용자 관점
    • 사용자 관점에서는 컴퓨터를 쉽고 편하게 사용하는 것이 주 목적
    • 따라서 운영체제는 사용자들이 컴퓨터 자원을 공평하게 사용할 수 있도록 도와주고, 그에 따라 사용자가 자원에 대해 신경 쓰지 않도록 해줌
    • 사용자가 컴퓨터를 쉽게 사용하고, 수행 능력을 높여줌
  • 시스템 관점
    • 시스템 관점에서는 운영체제는 자원 할당자(Resource allocator), 제어 프로그램(Control Program)
    • 운영체제가 컴퓨터 자원을 적절하게 할당하고 제어함으로써 효율적으로 시스템이 돌아갈 수 있도록 만들어줌
  • 따라서, 위의 역할을 정리하면 운영체제의 목적은 다음과 같음
    1. 컴퓨터 시스템의 자원을 효율적으로 관리 → 사용자 간의 형평성을 유지, 주어진 자원으로 최대한의 성능
    2. 컴퓨터 시스템을 편리하게 사용하도록
      • 여러 사용자/프로그램이 각각 독자적으로 컴퓨터에서 수행되는 것 같은 환상 제공
      • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

✔️ 운영체제 종류

동시 작업 가능 여부

  • 단일 작업(Single Tasking) : 한 번에 한 작업만 가능한 운영체제이다.
    • 한 명령이 끝나기 전에 다른 명령을 수행할 수 없다.
    • (ex. MS-DOS)
  • 다중 작업(Multitasking) : 동시에 두 작업 이상 처리가 가능한 운영체제
    • (ex. UNIX, MS windows)

사용자의 수 (동시에 여러 사용자 접속 가능 여부)

  • 단일 사용자
    • MS-DOS, MS window
  • 다중 사용자
    • UNIX, NT server

처리 방식

  • 일괄 처리(Batch Processing) : 작업을 일정량 모아 한 번에 처리하는 방식.
    • 작업이 완전히 종료될 때까지 기다려야 한다.
  • 시분할(Time sharing) : 현대 컴퓨터가 사용하는 방식.
    • 여러 작업 수행 시 컴퓨터 처리 능력을 일정 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    • Interactive 방식
  • 실시간(Real time OS): 데드라인(Deadline)이 있음.
    • 정해진 시간 안에 어떤 일이 반드시 종료되어야 하는 시스템을 위한 OS
    • ex) 원자로/공장 제어, 미사일 제어, 로봇 제어 등

✅ 운영체제 부팅

✔️ 부트스트랩

Bootstrapping(booting)

  • 커널을 적재하여 컴퓨터를 시작하는 절차

Bootstrap loader

  • 커널을 찾아서 메모리에 적재하고 수행을 시작하는 일을 하는 ROM에 저장된 코드
  • 대개 시스템을 진단(diagnostic)하는 작업을 수행하고, 시스템 전체를 초기화 한 후에 운영체제를 시작시킴

Firmware

  • bootstrap 코드의 변경이 가능하도록 ROM대신 EPROM에 저장함
  • 하드웨어와 소프트웨어의 중간 특성을 가져서 firmware라고 부름
  • 실행속도가 RAM에서 실행하는 것보다 느려서 대개 빠른 수행을 위해서 RAM에 복사하여 실행함
  • 운영체제는 대개 디스크에 저장하지만, 일부 시스템은(smartphone, game console 등) 운영체제 전체를 firmware(EPROM/flash메모리)에 저장함

✔️ 부팅 과정

cpu on → bios → POST by bios → bootstrap by bios → Os code by bootstrap

  1. 제일 먼저 CPU가 ON되고, CPU는 ROM에 있는 BIOS(Basic Input Output System) 데이터를 읽어온다.
  2. BIOS는 POST(power on self test)를 진행하여 하드웨어의 정상적인 작동을 검사한다.
  3. POST에 이상이 없으면 BIOS는 부트스트랩을 실행하여 부팅 정보를 메모리로 읽어온다.
    • 부트스트랩: Disk의 MBR의 저장된 부팅 정보를 RAM(메모리)으로 읽어옴
      • bootstrap loader : reset location in ROM
    • MBR(Master Boot Record): Disk의 첫번째 섹터
  4. 부트로더는 디스크에 있는 운영체제 코드를 메모리로 읽어온다.
    • 즉, 앞에서 읽어온 부팅 정보는 부트로더이며 운영체제는 메모리에 상주하지 않지만 커널은 메모리에 상주
      • 부트스트랩은 컴퓨터의 초기화 및 부트로더의 실행을 포함하는 전체 부팅 프로세스를 나타내는 개념이며, 부트로더는 이 프로세스 중에서 특히 운영체제 커널을 로드하고 실행하는 역할을 하는 특정 프로그램
    • simple boot code : single block at block 0 of a boot disk.(boot block)
      • 나머지 bootstrap 프로그램(full bootstrap 프로그램)에 대한 디스크 주소와 길이만 알고 있는 간단한 코드
    • complex boot code (full bootstrap program)
      • 파일 시스템을 탐색하여 OS 커널을 찾고, 메모리에 적재하여 실행
        을 시작
      • (예) GRUB (Grand Unified Bootloader)
  5. 시스템 커널을 실행한다.
    • 커널이 실행되기 전에, 운영체제는 트랩 테이블을 초기화하고 특정 트랩에 대한 핸들러 함수나 코드의 주소를 설정
      • 운영체제는 특정 명령어를 사용하여 하드웨어에게 트랩 핸들러의 위치를 알려준다.
    • 운영체제가 커널을 실행하고 프로세스를 시작한다.
      • 읽어온 운영체제 명령에 의해 CPU는 첫 프로세스(Daemon)을 즉시 실행
    • 이후 인터럽트가 발생하면 CPU는 각종 작업을 처리한다.

💡 UEFI (Unified Extensible Firmware Interface)

  • BIOS를 대체할 목적으로 개발됨
  • 파일 시스템을 지원하여 boot sector에 의존없이 OS 커널 부팅 가능
profile
안녕하세요! 신입 개발자입니다.

0개의 댓글