computer science/operation system

[오늘 CS] 운영체제 - 개요

nani-jin 2023. 11. 16. 14:34

[출처] https://www.prepbytes.com/blog/operating-system/operating-system-architecture/

 

1. 운영 체제(Operating System)

  • 운영체제는 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원하는 소프트웨어로 다음과 같은 역할을 수행한다
    • 응용 프로그램을 관리하고
    • 응용 프로그램이 요청하는 시스템 자원을 효율적으로 분배하며
    • 사용자와 컴퓨터간 커뮤니케이션을 지원한다
  • 운영체제는 하나의 프로그램(=소프트웨어)로 반드시 메모리에 적재되어야 한다
    • 운영체제는 '매우 특별한 프로그램'으로 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 실행된다
    • 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역(커널 영역을 제외한 나머지 영역)이라고 한다
  • 즉, 운영체제는 특별한 프로그램으로 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 돕는 특별한 프로그램이다

 

 

2. 왜 운영체제를 알아야 할까?

  • 결국 모든 코드는 운영체제 위에서 돌아간다. 따라서 운영체제에 대해 이해하는 것은 적절하고 효율적이고 안전한 프로그래밍을 위해 필수적이다
    • 운영체제는 시스템 자원과 프로그램에 대해 아주 잘 알고 있다
    • 운영체제는 딱딱한 하드웨어가 아닌 프로그램이기 때문에 우리와 대화할 수 있다
    • 따라서 운영체제가 주는 메시지(예를 들어, 에러 메시지)를 통해 문제 해결의 실마리를 찾을 수 있다!

 

 

3.  운영체제의 역할

  1. 시스템 자원 관리자다
    • 각 시스템 자원들은 자신이 어떻게 얼마나 쓰일지 스스로 결정할 수 없다
    • 운영체제는 이런 시스템 자원들을 분배하고 관리하는 역할을 수행한다
  2. 사용자와 커뮤니케이션을 지원한다
    • 효율적이고 유연한 시스템 관리를 위해 쉘(인터페이스)을 제공해 사용자와 커뮤니케이션을 지원한다 
  3. 응용 프로그램을 제어한다
    • 응용 프로그램은 누구나 만들 수 있기 때문에 무한 반복문이 들어가는 등 잘못 만들어질 가능성이 크다
    • 따라서 운영체제는 응용 프로그램에 대한 중지 및 실행 등을 결정하고,
    • 응용 프로그램에 대한 권한(예. 관리자 권한)과 사용하는 사용자(예. 로그인)도 관리한다

 

 

4. 사용자 모드(user mode)와 커널 모드(kernel mode)

  • 사용자 모드의 응용 프로그램은 함부로 컴퓨터 시스템을 해치지 못한다. 항상 커널을 통해 요청하기로 되어있다
    • 컴퓨터에 영향을 미치는 아주 중요한 기능들은 응용 프로그램이 직접 접근하지 못하며, 운영체제만 접근할 수 있도록 커널 모드에서만 실행된다
    • 따라서 사용자 모드에서 실행되는 응용 프로그램이 중요한 기능을 사용하고 싶으면, 시스템 콜을 통해 커널에 요청하며 커널이 커널 모드로 요청을 처리한다

 

 

 5. 시스템 콜(system call)

  • 사용자 모드에서 실행되는 응용 프로그램이 중요한 동작을 실행해야 할 때 운영체제의 서비스를 요청하게 되는데, 이때 사용되는 인터페이스다
  • 이를 통해 프로그램은 하드웨어 자원에 직접 접근하지 않아도 파일 시스템, 메모리 관리, 프로세스 제어, 네트워크 통신 등의 작업을 수행할 수 있다

[출처] Operating System Concepts(2019)

 

 

 

6. '운영체제를 만든다'의 의미

  1. Operating system 개발
  2. system call 개발
  3. 이를 기반한 언어별 API 개발
  4. (지원되는 언어로) Shell 프로그램 개발
  5. (지원되는 언어로) 응용 프로그램 개발

 

 

 

 

[출처] 잔재미코딩, 혼자 공부하는 컴퓨터구조 + 운영체제