본문 바로가기
Computer Science

운영체제의 구조

by 개발자 데이빗 2021. 12. 19.

운영체제란 (Operating System 또는 OS)

운영체제 역할 

1. 시스템 자원 관리자

시스템 자원이란 ?

CPU (중앙처리장치), Memory (RAM), I/O Devices (입출력장치), 저장매체 (SSD, HDD) 등 컴퓨터 하드웨어

컴퓨터 하드웨어는 스스로 할 수 있는 것이 없으며 운영체제가 관리한다.

 

2. 사용자와 컴퓨터간의 커뮤니케이션 지원

3. 응용 프로그램 제어

응용 프로그램이란?

응용 프로그램 (Application) = 소프트웨어

운영체제 또한 소프트웨어이다.

운영체제는 저장매체에 설치되며 컴퓨터를 켜면 운영체제는 Memory에 올라간다.

참고: https://namu.wiki/w/%ED%8F%B0%EB%85%B8%EC%9D%B4%EB%A7%8C%20%EA%B5%AC%EC%A1%B0

(모든 프로그램은 메모리에 올라간다.)

 

운영체제의 목표

사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원

운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어이다.

 

운영체제와 응용 프로그램간의 관계

  • 운영체제는 응용 프로그램을 관리하고 실행한다.
  • 응용 프로그램간의 권한을 관리해준다.
  • 응용 프로그램을 사용하는 사용자 관리
  • 응용 프로그램은 누구나 만들 수 있기 때문에 아래와 같이 응용 프로그램을 제어한다. 
    • 비정상적인 동작을 하는 응용 프로그램 제어
    • 모든 파일 삭제 제어 (권한/사용자 관리)
    • CPU 독점 제어

 

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

  • 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고, 분배한다.
  • 운영체제는 응용 프로그램이 요청하는 CPU 시간을 제공한다.
  • 운영체제는 응용 프로그램이 요청하는 IO Devices 사용을 허가/제어한다.

 

사용자 인터페이스 제공

쉘 (Shell) - 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램

쉘은 터미널 환경(CLI)과 GUI 환경으로 분류된다.

쉘도 일종의 응용프로그램이다

 

운영체제는 응용 프로그램을 위해서도 인터페이스(API: Application Programming Interface)를

함수로 제공하며 각 언어를 지원하는 라이브러리 형태로 제공된다.

ex) https://en.wikipedia.org/wiki/C_standard_library

 

C standard library - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Standard library for the C programming language The C standard library or libc is the standard library for the C programming language, as specified in the ISO C standard.[1] Starting f

en.wikipedia.org

 

운영체제의 구조

운영체제의 큰 구조는 아래와 같다.

유저
앱 (응용 프로그램) 쉘 
API
System Call
OS
하드웨어 (cpu, memory, storage, network, etc...)

 

시스템 콜 (System Call) 제공

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

이 시스템 콜을 API라는 형태로 감싸 각 언어마다 제공한다.

API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분

 

시스템 콜 정의 예시로 https://ko.wikipedia.org/wiki/POSIX 가 있으며 UNIX 계열 운영체제가 보통 따른다.

UNIX 계열 OS란 UNIX와 사용법이나, OS 구조가 유사한 OS를 말한다. ex) LINUX

 

정리하자면 

API는 각 언어별 운영체제 기능 호출 인터페이스이며

시스템 콜은 운영제체 기능 호출 함수이다.

 

CPU Protenction Rings

CPU도 권한 모드라는 것을 가지고 있다.

ring0부터 ring3까지 구체적인 권한이 있지만 포스트에서는 크게 사용자 권한인 ring3와 운영체제 권한인 ring0만을 고려한다.

사용자 모드( ring 3 ): 응용 프로그램이 사용

커널 모드( ring 0 ): 운영체제가 사용

커널 모드란 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드이다.

 

커널이란 ?

사전적 의미: 알맹이, 핵심

OS 핵심 소프트웨어를 커널이라고 한다.

응용 프로그램 ( 사용자 영역 )
API
----------System Call----------
메모리, 디스크, 네트워크 ( 커널 영역 )

응용 프로그램은 System Call 호출을 가능하게 하는 API들로 구현되며 이는 사용자 영역이라고 한다.

커널 모드에서만 실행 가능한 기능들이 있는데 이를 실행하기 위해 반드시 System Call을 거쳐야 한다.

이러한 System Call 들은 운영체제에서 제공된다.

리눅스는 C언어로 되어있어 System Call을 바로 사용할 수 있기도 하다

함부로 응용 프로그램이 전체 컴퓨터 시스템을 헤치지 못하기 위한 구조이다.

 

응용 프로그래머와 시스템 프로그래머의 차이

응용 프로그래머: API를 이용해 응용 프로그램 제작

시스템 프로그래머: 운영체제 + shell + API + System call 제작 하드웨어 이해

 

제공되는 API의 실행순서

API -> system call -> 커널모드에서 실제 처리하는 운영체제 함수 호출 -> 사용자 모드 다음 코드 실행

 

보너스

Node.js에도 System Call에 접근할 수 있는 API들이 있다.

Node.js의 경우 C언어로 만들어졌는데 이러한 API들이 곧 C언어에 제공되는 API를 호출 하는 것이고

C언어에 제공된 API들이 System Call을 호출하는 구조이다.

즉,  Node.js API -> C API -> SystemCall -> 커널모드에서 실제 처리하는 OS 함수호출 -> Node.js의 다음 코드 실행

의 구조가 된다.

'Computer Science' 카테고리의 다른 글

프로세스간 커뮤니케이션 (IPC)  (0) 2021.12.28
프로세스의 구조와 컨텍스트 스위칭  (0) 2021.12.27
인터럽트  (0) 2021.12.26
프로세스 스케줄링 알고리즘  (0) 2021.12.25
운영체제 스케줄링의 종류  (0) 2021.12.20

댓글