본문 바로가기

CS지식/운영체제

OS 구조

OS 가 User를 위해 제공하는 서비스들

- User interface

   -- CLI (Command Line) : 직접적인 명령어 입력을 허용한다.

   -- Shell : OS서비스에 접근할 수 있도록 하는 유저인터페이스. 우리가 내린 command를 해석한다. 

                  ex) BASH, CSH, SSH

   -- GUI ( Graphic user interface ) : 사용자 친화적인 데스크톱 인터페이스 

 

- 프로그램 실행

- I/O 연산 

- 파일 시스템 관리

- 컴퓨터와 컴퓨터 사이 혹은 네트워크를 통한 Communication

- 에러 탐지

 

OS가 효율적인 운영을 위해 제공하는 서비스들

  • 자원 할당자
  • 로깅
  • 보안/보호

System Call vs API

system call : OS가 제공하는 서비스를 사용하기 위한 프로그램 인터페이스

ex) open() read() write() …

 

API (Application Programming Interface) : 하부 시스템에서 상위에 존재하는 어플리케이션이나 앱에 제공하는 각종 기능들의 집합.시스템 콜 보다 더 많이 사용된다 ex) Win32 API

→ 시스템콜이 더 정교하고 어렵다

 

API

API는 애플리케이션에 포함되지 않고 어플리케이션 외부의 기능을 호출하는 데에 사용된다.

 

Library

소프트웨어를 만들 때 쓰이는 클래스나 함수들의 모임. 어플리케이션 안에 포함된다.

  • static library : 실행 전에 실행파일을 생성하는 데에 사용된다. .exe 파일
  • dynamic library : 프로그램 실행 도중 필요하면 불러 쓰는 모듈이다. .dll 파일 메모리를 적게 차지하여 실행파일의 크기가 작아진다.

Frameworks

특정 목적의 어플리케이션을 제작하기 쉽게끔 작업흐름을 미리 만들어 둔 소프트웨어 반제품. 손쉽게 어플리케이션 제작 가능

 

System call

종류

  • Process control 

(1) 끝내기(end), 중지(abort)

(2) 적재(load), 수행 (execute)

(3) 프로세스 생성, 프로세스 종료

(4) 프로세스 속성 획득, 속성 결정

(5) wait for time : 실행이 끝나기를 기다림

(6) wait event, signal event

  • 특정 사건이 일어날 때까지 기다릴 수 있어야 한다(wait event)
  • 그 사건이 일어나면 신호를 보낼 수 있어야 한다(signal event)
  • File Manipulation(파일 조작)
    • 파일 생성 파일 삭제 create delete
    • Open, Close
    • 읽기, 쓰기, 위치 변경
    • 파일 속성 획득 및 결정
  • Device Manipulation (장치 조작)
    • 장치를 요구, 장치를 방출
    • 읽기, 쓰기, 위치 변경
    • 장치 속성 획득, 장치 속성 결정
    • 장치의 논리적 부착 또는 분리
  • Information Maintenance (정보 유지 보수)
    • 시간과 날짜의 설정과 획득
    • 시스템 데이터의 설정과 획득 : 현재 사용자 수, version number, free memory에 대한 정보
    • 프로세스, 파일, 장치 속성의 획득과 설정
  • Communication(통신)
    • 통신 연결의 생성, 제거
    • 메세지의 송수신
    • 상태 정보 전달
    • 원격 장치의 부착 및 분리
  • Protection(보호)

system call은 OS 마다 다르다.

 

— C program이 printf()를 사용하면 standard C library가 호출되어 write() 시스템 콜을 호출하게 된다!

 

프로그램이 어떻게 컴파일되는지??

소스코드는 object 파일로 컴파일된다. - 재배치 가능한 목적 파일 (executable module)

Linker는 이러한 각각의 목적파일들 그리고 라이브러리를 가져와 연결하여 실행 가능한 파일로 만든다.

프로그램 (executable file)은 secondary storage(하드디스크 등)에 저장되어있다.

Loader는 프로그램을 메모리로 가져와 적재한다.

 

OS 디자인 목표

유저 목표 : OS는 사용하기 편리해야 하고, 배우기 쉬워야 하고, 안전해야 하고 빨라야 한다.

시스템 목표 : OS는 만들기 쉬워야 하고, 구축하기 쉬워야 하며, 효율적이고 flexible, reliable, error_free 해야 한다.

 

정책(Policy) 과 매커니즘(Mechanism)

정책은 어떤 것을 끝낼 지, 매커니즘은 어떻게 처리할지..

 

Arduino

  • Single-tasking
  • No operating system
  • 프로그램을 메모리에 로드해야 하니 Boot loader는 존재함
  • 아두이노는 두 개 이상의 프로그램을 동시에 실행할 수 없다. 두 개의 프로그램이 메모리에 올라왔을 때 제어하는 OS가 없기 때문 → 멀티프로그래밍이 안된다.

Microkernels

  • 원래 OS 커널에서 하는 기능을 user 단으로 올리자.
  • 새로운 기기를 만들 때 OS 사용을 쉽게 할 수 있다.
  • ex ) MACH - Mac OS X kernel

'CS지식 > 운영체제' 카테고리의 다른 글

운영체제 : Synchronization  (0) 2023.09.23
운영체제 : CPU 스케줄링 간단 정리  (0) 2023.09.23
운영체제 : Thread 란?  (0) 2023.09.23
운영체제 : Process란? (개념, 용어 정리)  (0) 2023.09.23
OS가 하는 일  (0) 2023.09.23