운영체제란?
- 컴퓨터 시스템에서 핵심적인 역할을 하는 소프트웨어
- 사용자와 하드웨어 간의 중재자 역할
- 프로그램이 효과적으로 실행되도록 돕고, 자원을 효율적으로 관리하고, 시스템을 안정적으로 유지하는 책임이 있음
- 운영체제는 가상화, 병행성, 영속성이라는 세 가지 주요 아이디어를 중심으로 동작
1. 가상화 (Virtualization)
- 물리적 자원(프로세서, 메모리, 디스크 등)을 가상 자원으로 추상화하여 사용자에 제공
- 이를 통해 사용자는 하드웨어의 복잡성을 알 필요 없이 프로그램 실행 가능
- 물리적 자원을 여러 프로그램이 공유할 수 있도록 가상화하여 CPU, 메모리, 파일 시스템 등의 자원을 효율적으로 관리
- 운영체제는 자원 관리와 프로그램 실행을 돕는 역할을 하며, 이러한 이유로 자원 관리자(resource manager) 라고도 불림
2. 병행성 (Concurrency)
- 여러 프로그램이 동시에 실행될 수 있도록 하는 개념
- 현대의 컴퓨터 시스템은 멀티코어 프로세서 및 멀티태스킹 환경을 통해 여러 프로그램이 병렬로 실행 가능
- 모든 프로그램이 항상 독립적으로 실행되는 것은 아니며, 때로는 같은 자원을 공유해야 함
- 운영체제는 이를 효율적으로 처리하기 위해 프로세스와 스레드의 스케줄링, 동기화, 상호 배제와 같은 기법을 사용하여 자원 충돌을 방지하고 시스템의 성능을 최적화함
3. 영속성 (Persistence)
- 데이터가 시스템의 전원이 꺼지더라도 보존되는 특성
- 운영체제는 파일 시스템을 통해 데이터를 디스크와 같은 비휘발성 저장 장치에 안전하게 저장
- 사용자는 파일 시스템을 통해 데이터를 저장, 읽기, 수정이 가능
- 운영체제는 이러한 작업이 안정적이고 일관되게 이루어지도록 보장
- 영속성을 통해 컴퓨터는 재부팅 후에도 이전에 저장된 데이터를 계속 사용 가능
운영체제가 하는 일
- 사용자가 프로그램을 쉽게 실행하고, 프로그램 간의 메모리를 공유하며, 장치와 상호작용 할 수 있도록 함
- 시스템이 올바르게 동작하고 사용자에게 편리하게 사용될 수 있도록 책임을 짐
- 프로그램 실행: 여러 프로그램이 동시에 실행될 수 있도록 지원
- 메모리 관리: 프로그램이 사용할 메모리를 할당하고 관리
- 파일 시스템 관리: 데이터를 영속적으로 저장하고 관리
- 자원 관리: CPU, 메모리, 디스크 등의 자원을 효율적으로 할당 및 관리