Skip to content

Operating Systems

운영체제의 상세분야

운영 체제 또는 오퍼레이팅 시스템(OS, operating system)은 시스템 하드웨어를 관리할뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 (hypervisor)위에서 실행되기도 한다.

입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다. 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼 컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다. 운영 체제는 한 면으로는 소비자를, 다른 한 면으로는 프로그램 개발자를 함께 하나의 시장으로 데려다 놓을 수 있는 양면 플랫폼이다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도, 맥 OS X, 리눅스가 있다. 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재한다.

운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다. 운영 체제는 컴퓨터 과학의 연구 분야이기도 하다.

운영체제와 커널

운영체제는 컴퓨터를 운용하는 특별한 종류의 프로그램이다. 이 운영체제는 핵심이라고 할 수 있는 부분이 있는데, 이것을 커널이라고 한다. 커널은 컴퓨터 시스템을 제어하는 일, 그러니까 메모리를 관리하고, 디스크에 데이터를 읽고쓰고, 프로그램을 실행시키고, 네트워크 카드, 사운드카드, 그래픽카드등의 하드웨어 장치를 관리하는 일을 한다.

학문적인 관점에서 보자면 운영체제란 바로 이 커널을 가리키는 것이다. 예를 들어 리눅스 운영체제는 리눅스 커널을 의미한다. 하지만 커널만을 가지고 할 수 있는 일은 그렇게 많지 않다. 커널위에 shell, 운영자 관리도구와 같은 필수적인 다른 프로그램이 있어야 비로서 컴퓨터를 제어할만한 환경이 갖추어진다. 이런이유로 일반적인 관점에서 커널 + 필수 프로그램까지를 운영체제라고 부르고 있다.

Categories

List of OS

1,000줄로 운영체제 구현하기

시작하기

  • 기본적인 컨텍스트 전환, 페이징, 사용자 모드, 명령줄 셸, 디스크 장치 드라이버, 파일 읽기/쓰기 작업을 C 언어로 구현할 것임
  • 이 모든 것이 1,000줄의 코드로 가능함
  • OS를 직접 만드는 데 있어 가장 어려운 부분은 디버깅임
  • printf 디버깅을 구현하기 전까지는 사용할 수 없으며, 애플리케이션 개발에서는 필요 없었던 다양한 디버깅 기술과 스킬을 배워야 함
  • 특히 "처음부터" 시작할 때 부팅 과정과 페이징 같은 어려운 부분을 만나게 됨
  • 하지만 걱정하지 말 것! OS 디버깅 방법도 배울 것임
  • 디버깅이 어려울수록 성공했을 때의 만족감이 큼
  • OS 개발의 흥미로운 세계로 뛰어들어 보자!

기타 정보

  • 구현 예제는 GitHub에서 다운로드 가능함.
  • 이 책은 CC BY 4.0 라이선스 하에 제공되며, 구현 예제와 소스 코드는 MIT 라이선스 하에 있음
  • C 언어와 UNIX 유사 환경에 익숙해야 하며, gcc hello.c && ./a.out를 실행할 수 있다면 준비 완료임
  • 이 책은 원래 일본어로 작성된 "마이크로커널의 설계 및 구현" 책의 부록으로 작성되었음
  • 즐거운 OS 해킹을 기원함!

책의 목차

  • Intro
  • Getting Started
  • RISC-V 101
  • Overview
  • Boot
  • Hello World!
  • C Standard Library
  • Kernel Panic
  • Exception
  • Memory Allocation
  • Process
  • Page Table
  • Application
  • User Mode
  • System Call
  • Disk I/O
  • File System
  • Outro

See also

Favorite site

Tutorials

References


  1. Concept_Theorem_-_7_Operating_System.pdf