반응형


학습전략

  • Operating System Concepts 책 (공룡책)
  • 핵심에 집중할 것
  • 50% 이해를 목표로 할 것
  • 노트에 그림과 글로 적어보며, 곰곰히 생각해볼 것
  • 곰곰히 여러 가지 각도에서 생각해보며, 깨닫는 과정을 익히는 것이 필요함
  • 말로 설명할 수 있도록 해보기


운영체제란?

  • OS (Operating System)
  • 주요 운영체제: 윈도우, UNIX계열 OS(리눅스), MacOS


사용자, 응용 프로그램, 운영체제, 컴퓨터 하드웨어와 관계

  • OS는 더 정확히는 커널(kernel)을 의미함
  • 일반적으로는 커널에 여러가지가 추가된 상태를 OS라고 통칭함



안드로이드는 OS일까요?
kernel과 프로그램 사이에 많은 시스템 프로그램과 함수(라이브러리)들이 존재


운영체제는 사용자 인터페이스 제공: 쉘
쉘 (Shell)

  • 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
  • 쉘은 터미널 환경(CLI)과, GUI환경 두 종류로 분류
  • 유명한 쉘: 리눅스 bash



쉬어가기: 터미널 환경
mdir

  • MS-DOS용 파일관리 쉘 프로그램



운영체제는 응용 프로그램 인터페이스 제공: 시스템 콜
시스템 콜 (System Call)

  • 시스템 콜 또는 시스템 호출 인터페이스
  • 운영체제가 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공

http://man7.org/linux/man-pages/man2/open.2.html

open(2) - Linux manual page

open(2) — Linux manual page OPEN(2) Linux Programmer's Manual OPEN(2) NAME         top open, openat, creat - open and possibly create a file SYNOPSIS         top #include int open(const char *pathname, int flags); int open(const char *pathname, i

man7.org



프로그래밍 언어별 해당 운영체제에 맞는 API 구현
API (Application Programming Interface)

  • 모호한 용어이지만, 간단히 함수 또는 라이브러리(library)라고 이해하면 됨

API 내부에는 필요시 해당 운영체제의 시스템 콜을 호출하는 형태로 만들어짐

  • 함수든 변수든 결국 주소가 있고, 해당 주소에서 코드를 실행하는 형태
  • 참고: SystemCall[System Call and API]



운영체제를 만든다면?

  • 1. 운영체제를 개발 (kernel)
  • 2. 시스템 콜을 개발
  • 3. 시스템 콜 기반, 프로그래밍 언어별 라이브러리 개발 (API)
  • 4. 지원되는 프로그래밍 언어로 Shell 프로그램 개발
  • 5. 지원되는 프로그래밍 언어로 응용 프로그램 개발

User
Application Shell
Library or API
System Call
Operating System
Hardware
CPU Memory Storage Network



반응형

+ Recent posts