[혼공컴운]4주차_Chap09 | 운영체제 시작하기

곽나현·2024년 1월 23일
0

혼공컴운

목록 보기
10/16
post-thumbnail
post-custom-banner

<학습목표>

  • 운영체제가 무엇인지 이해한다.
  • 개발자가 운영체제를 알아야 하는 이유를 알아본다.
  • 커널이 무엇인지 학습한다.
  • 시스템 호출과 이중 모드에 대해 이해한다.
  • 운영체제가 제공하는 핵심 서비스의 종류를 학습한다.

🎇 운영체제를 알아야 하는 이유

🔗 운영체제 (Operating System)

실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램

  • 자원 (시스템 자원) : 프로그램 실행에 마땅히 필요한 요소들

  • 운영체제도 프로그램이기 때문에 메모리에 적재 되어야 함

    • 다만, 운영체제는 특별한 프로그램이기 때문에 컴퓨터 부팅 시 메모리 내 커널 영역이라는 공간에 따로 적재됨

    ➡ 즉, 운영체제커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움

  • 운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 필요하지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리함

  • 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당함

  • 운영체제는 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리함

  • 운영체제는 관리할 자원별로 기능이 나뉘어 있음. 예를 들어 운영체제의 어느 한 부분에서는 CPU를, 어느 한 부분에서는 메모리를, 어느 한 부분에서는 하드 디스크를 관리함

🔍운영체제를 알아야 하는 이유

운영체제가 하드웨어를 조작하고 관리하는 기능들을 제공하기 때문에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요 없이 운영체제의 도움을 받아 간편하게 개발 가능

  • 운영체제는 현재 하드웨어의 상태, 코드가 어떻게 실행되었는지, 하드웨어 상의 문제 정보들을 제공해 줌
    ➡ 이를 통해 우리는 문제 해결의 실마리를 찾음
  • 운영체제를 깊이 이해하면 운영체제가 제공하는 정보를 제대로 이해할 수 있고, 운영체제에 제대로 명령할 수 있게 됨. 결과적으로 하드웨어와 프로그램을 더 깊이 이해할 수 있음
    • 대표적으로 운영체제가 제공하는 정보는 오류 메세지

🎇 운영체제의 큰 그림

🔗 커널 (kernel)

자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능과 같은 운영체제의 핵심 서비스를 담당하는 부분

  • 운영체제가 설치된 모든 기기에는 커널이 존재
  • 어떤 커널을 사용하는지에 따라 프로그램이 하드웨어를 이용하는 양상이 달라지고, 결과적으로 컴퓨터의 전체 성능도 달라질 수 있음

🔗 사용자 인터페이스 (UI : User Interface)

운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스

UI의 종류
그래픽 유저 인터페이스 (GUI : Graphical User Interface)그래픽을 기반으로 컴퓨터와 상호작용 할 수 있는 인터페이스
커맨드 라인 인터페이스 (CLI : Command Line Interface)명령어를 기반으로 컴퓨터와 상호작용 할 수 있는 인터페이스

➡ UI는 운영체제가 제공하는 서비스이지만, 컴퓨터와 상호작용하기 위한 통로일 뿐, 커널에 속하는 기능은 아님

🔗 이중모드와 시스템 호출

  • 응용 프로그램들이 자원에 접근하려고 할 때, 운영체제를 통해서만 접근하도록하여 자원을 보호함

  • 응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행함

⚙ 이중모드 (Dual mode)

CPU가 명령어를 실행하는 모드를 크게 사용자 모드커널 모드로 구분하는 방식

  • 사용자 모드 (User mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드로 커널 영역의 코드를 실행할 수 없음
    • 일반적인 응용 프로그램은 사용자 모드로 실행됨.
  • 커널 모드 (Kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드로 커널 영역의 코드를 실행할 수 있음

➡ 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널모드로 전환되어야 함

⚙ 시스템 호출 (System call)

운영체제 서비스를 제공받기 위한 요청

사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받음

  • 시스템 호출도 일종의 인터럽트
    • 정확히는 소프트웨어 인터럽트라고 함
    • 소프트웨어 인터럽트 : 인터럽트를 발생시키는 특정 명령어에 의해 발생하는 인터럽트

🔗 운영체제의 핵심 서비스

  • 프로세스 관리
  • 자원 접근 및 할당
  • 파일 시스템 관리

⚪ 프로세스 관리

  • 프로세스 : 실행 중인 프로그램
  • 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있음

➡ 운영체제는 다양한 프로세스를 일목요연하게 관리하고 실행할 수 있어야 함

⚪ 자원 접근 및 할당

  • 모든 프로세스는 실행을 위해 자원을 필요로 함

  • 운영체제는 프로세스들이 사용한 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 줌

    • 운영체제가 CPU, 메모리, 보조기억장치, 입출력장치를 어떻게 관리하고 어떤 기능을 제공하나?

      • CPU : 운영체제는 CPU 스케줄링을 통해 프로세스들에 공정하게 CPU를 할당

      • 메모리 : 운영체제는 새로운 프로세스가 적재될 때마다 메모리의 어느 주소에 적재할 지를 결정

      • 입출력장치 : 운영체제는 커널 영역에 있는 인터럽트 서비스 루틴을 제공함으로써 입출력작업을 수행

⚪ 파일 시스템 관리

  • 운영체제는 파일들을 한데 묶어 디렉토리로 관리
post-custom-banner

0개의 댓글