✅ 운영체제 기본
운영체제는 컴퓨터 하드웨어 바로 위에 설치되어, 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 프로그램이다.
운영체제의 핵심은 커널이다.
좁은 의미의 운영체제는 커널 자체를 의미하며 넓은 의미로는 커널과 여러 주변 시스템을 다루는 유틸리티를 포함한다.
-
커널은 컴퓨터 전원이 켜지면 항상 메모리에 상주하는 프로그램으로, 일반적으로 커널이 같으면 동일한 운영체제로 취급
-
컴퓨터를 켠다는 의미의 부팅은 커널을 로딩함으로써 컴퓨터를 시작하는 것
- 시스템의 파워가 켜지면 처음 부트스트랩 프로그램이 위치한 메모리에서 실행한다.
✔️ 운영체제 역할
컴퓨터 시스템은 하드웨어(Hardware), 운영체제(Operating System), 각종 소프트웨어, 사용자(User)로 나뉨
이러한 시스템들 사이에서 운영체제의 역할은 사용자 관점과 시스템 관점으로 나뉨
- 사용자 관점
- 사용자 관점에서는 컴퓨터를 쉽고 편하게 사용하는 것이 주 목적
- 따라서 운영체제는 사용자들이 컴퓨터 자원을 공평하게 사용할 수 있도록 도와주고, 그에 따라 사용자가 자원에 대해 신경 쓰지 않도록 해줌
- 사용자가 컴퓨터를 쉽게 사용하고, 수행 능력을 높여줌
- 시스템 관점
- 시스템 관점에서는 운영체제는 자원 할당자(Resource allocator), 제어 프로그램(Control Program)
- 운영체제가 컴퓨터 자원을 적절하게 할당하고 제어함으로써 효율적으로 시스템이 돌아갈 수 있도록 만들어줌
- 따라서, 위의 역할을 정리하면 운영체제의 목적은 다음과 같음
- 컴퓨터 시스템의 자원을 효율적으로 관리 → 사용자 간의 형평성을 유지, 주어진 자원으로 최대한의 성능
- 컴퓨터 시스템을 편리하게 사용하도록
- 여러 사용자/프로그램이 각각 독자적으로 컴퓨터에서 수행되는 것 같은 환상 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
✔️ 운영체제 종류
동시 작업 가능 여부
- 단일 작업(Single Tasking) : 한 번에 한 작업만 가능한 운영체제이다.
- 한 명령이 끝나기 전에 다른 명령을 수행할 수 없다.
- (ex. MS-DOS)
- 다중 작업(Multitasking) : 동시에 두 작업 이상 처리가 가능한 운영체제
사용자의 수 (동시에 여러 사용자 접속 가능 여부)
처리 방식
- 일괄 처리(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
- 제일 먼저 CPU가 ON되고, CPU는 ROM에 있는 BIOS(Basic Input Output System) 데이터를 읽어온다.
- BIOS는 POST(power on self test)를 진행하여 하드웨어의 정상적인 작동을 검사한다.
- POST에 이상이 없으면 BIOS는 부트스트랩을 실행하여 부팅 정보를 메모리로 읽어온다.
- 부트스트랩: Disk의 MBR의 저장된 부팅 정보를 RAM(메모리)으로 읽어옴
- bootstrap loader : reset location in ROM
- MBR(Master Boot Record): Disk의 첫번째 섹터
- 부트로더는 디스크에 있는 운영체제 코드를 메모리로 읽어온다.
- 즉, 앞에서 읽어온 부팅 정보는 부트로더이며 운영체제는 메모리에 상주하지 않지만 커널은 메모리에 상주
- 부트스트랩은 컴퓨터의 초기화 및 부트로더의 실행을 포함하는 전체 부팅 프로세스를 나타내는 개념이며, 부트로더는 이 프로세스 중에서 특히 운영체제 커널을 로드하고 실행하는 역할을 하는 특정 프로그램
- 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)
- 시스템 커널을 실행한다.
- 커널이 실행되기 전에, 운영체제는 트랩 테이블을 초기화하고 특정 트랩에 대한 핸들러 함수나 코드의 주소를 설정
- 운영체제는 특정 명령어를 사용하여 하드웨어에게 트랩 핸들러의 위치를 알려준다.
- 운영체제가 커널을 실행하고 프로세스를 시작한다.
- 읽어온 운영체제 명령에 의해 CPU는 첫 프로세스(Daemon)을 즉시 실행
- 이후 인터럽트가 발생하면 CPU는 각종 작업을 처리한다.
💡 UEFI (Unified Extensible Firmware Interface)
- BIOS를 대체할 목적으로 개발됨
- 파일 시스템을 지원하여 boot sector에 의존없이 OS 커널 부팅 가능