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

운영체제 (공룡책) 목차정리

Chapter 1. 서론

  • 운영체제가 할 일
  • 컴퓨터 시스템의 구성
  • 컴퓨터 시스템 구조
  • 운영체제의 작동
  • 자원 관리
  • 보안과 보호
  • 가상화
  • 분산 시스템
  • 커널 자료구조
  • 계산 환경
  • 무료 및 공개 소스 운영체제
  • 요약

Chapter 2. 운영체제 구조

  • 운영체제 서비스
  • 사용자와 운영체제 인터페이스
  • 시스템 콜
  • 시스템 서비스
  • 링커와 로더
  • 응용 프로그램이 운영체제마다 다른 이유
  • 운영체제 설계 및 구현
  • 운영체제 구조
  • 운영체제 빌딩과 부팅
  • 운영체제 디버깅
  • 요약

Chapter 3. 프로세스

  • 프로세스 개념
  • 프로세스 스케줄링
  • 프로세스에 대한 연산
  • 프로세스 간 통신
  • 공유 메모리 시스템에서의 프로세스 간 통신
  • 메시지 전달 시스템에서의 프로세스 간 통신
  • IPC 시스템의 사례
  • 클라이언트 서버 환경에서 통신
  • 요약

Chapter 4. 스레드와 병행성

  • 개요
  • 다중 코어 프로그래밍
  • 다중 스레드 모델
  • 스레드 라이브러리
  • 암묵적 스레딩
  • 스레드와 관련된 문제들
  • 운영체제 사례
  • 요약

Chapter 5. CPU 스케줄링

  • 기본 개념
  • 스케줄링 기준
  • 스케줄링 알고리즘
  • 스레드 스케줄링
  • 다중 처리기 스케줄링
  • 실시간 CPU 스케줄링
  • 운영체제 사례들
  • 알고리즘의 평가
  • 요약

Chapter 6. 동기화 도구들

  • 배경
  • 임계구역 문제
  • Peterson의 해결안
  • 동기화를 위한 하드웨어 지원
  • Mutex Locks
  • 세마포
  • 모니터
  • 라이브니스
  • 평가
  • 요약

Chapter 7. 동기화 예제

  • 고전적인 동기화 문제들
  • 커널 안에서의 동기화
  • POSIX 동기화
  • Java에서의 동기화
  • 대체 방안들
  • 요약

Chapter 8. 교착 상태

  • 시스템 모델
  • 다중 스레드 응용에서의 교착 상태
  • 교착 상태 특성
  • 교착 상태 처리 방법
  • 교착 상태 예방
  • 교착 상태 회피
  • 교착 상태 탐지
  • 교착 상태로부터 회복
  • 요약

Chapter 9. 메인 메모리

  • 배경
  • 연속 메모리 할당
  • 페이징
  • 페이지 테이블의 구조
  • 스와핑
  • 사례: Intel 32비트와 64비트 구조
  • 사례 : ARM 구조
  • 요약

Chapter 10. 가상 메모리

  • 배경
  • 요구 페이징
  • 쓰기 시 복사
  • 페이지 교체
  • 프레임의 할당
  • 스래싱
  • 메모리 압축
  • 커널 메모리의 할당
  • 기타 고려 사항
  • 운영체제의 예
  • 요약

Chapter 11. 대용량 저장장치 구조

  • 대용량 저장장치 구조의 개관
  • 디스크 스케줄링
  • NVM 스케줄링
  • 오류 감지 및 수정
  • 저장장치 관리
  • 스왑 공간 관리
  • 저장장치 연결
  • RAID 구조
  • 요약

Chapter 12. 입출력 시스템

  • 개관
  • 입출력 하드웨어
  • 응용 입출력 인터페이스
  • 커널 입출력 서브시스템
  • 입출력 요구를 하드웨어 연산으로 변환
  • STREAMS
  • 성능
  • 요약

Chapter 13. 파일 시스템 인터페이스

  • 파일 개념
  • 접근 방법
  • 디렉터리 구조
  • 보호
  • 메모리 사상 파일
  • 요약

Chapter 14. 파일 시스템 구현

  • 파일 시스템 구조
  • 파일 시스템 구현
  • 티렉터리 구현
  • 할당 방법
  • 가용 공간의 관리
  • 효율과 성능
  • 복구
  • 예: WAFL 파일 시스템
  • 요약

Chapter 15. 파일 시스템 내부구조

  • 파일 시스템
  • 파일 시스템 마운팅
  • 파티션과 마운팅
  • 파일 공유
  • 가상 파일 시스템
  • 원격 파일 시스템
  • 일관성의 의미
  • NFS
  • 요약

Chapter 16. 보안

  • 보안 문제
  • 프로그램 위협
  • 시스템과 네트워크 위협
  • 보안 도구로서 암호 기법
  • 사용자 인증
  • 보안 방어의 구현
  • 예: Windows 10
  • 요약

Chapter 17. 보호

  • 보호의 목표
  • 보호의 원칙
  • 보호 링
  • 보호의 영역
  • 접근 행렬
  • 접근 행렬의 구현
  • 접근 권한의 취소
  • 역할 기반 액세스 제어
  • 강제적 접근 제어
  • 자격-기반 시스템
  • 기타 보호 개선 방법
  • 언어 기반의 보호
  • 요약

Chapter 18. 가상 머신

  • 개요
  • 역사
  • 장점 및 특징
  • 빌딩 블록
  • VM유형 및 구현
  • 가상화와 운영체제 구성요소
  • 사례
  • 가상화 연구
  • 요약

Chapter 19. 네트워크 및 분산 시스템

  • 분산 시스템의 장점
  • 네트워크 구조
  • 통신 구조
  • 네트워크 및 분산 운영체제
  • 분산 시스템의 설계 문제
  • 분산 파일 시스템
  • DFS 명명 및 투명성
  • 원격 파일 액세스
  • 분산 파일 시스템에 대한 최종 생각
  • 요약

See also

Favorite site

Tutorials

References


  1. Concept_Theorem_-_7_Operating_System.pdf