ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [혼공컴운]운영체제 시작하기
    네트워크/CS Study 2024. 3. 15. 11:03
    개요
    1. 운영체제를 알아야 하는 이유

     

     

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


    운영체제란?

    📦 운영체제란?

    실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램으로 여느 프로그램과 같이 메모리에 적재되어야하지만 매우 특별한 프로그램이기에 커널 영역이라는 공간에 따로 적재되어 실행된다.
    • 메모리 관리: 프로그램을 어디에 위치할지도 운영체제가 결정한다.
    • CPU 관리: 하여 프로그램 실행 순위와 지속 시간과 같은 요소를 결정한다.
    • 입출력장치 관리: 여러 프로그램이 특정 입출력장치를 사용하려 할 때 순서를 결정하게끔하여 충돌이 일어나지 않도록 한다.
    • 하드웨어와 가까운 곳에 위치해서 프로그램이 요구하는 자원을 할당하고 올바르게 실행하는 것을 돕는다.

     

     

    🎉 자원

    더보기

    프로그램 실행에 있어서 마땅히 필요한 요소로 모든 프로그램은 실행을 위해 자원을 필요로 한다. 이는 컴퓨터의 네가지 핵심 부품을 포함하지만 단순히 하드웨어만을 지칭하진 않으니 주의하자

     

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

    개발자가 단순한 기능을 하는 프로그램을 만들려고할 때에도 운영체제의 도움을 받지 않는다면 메모리를 적재하는 것부터 시작해서 CPU 관리와 입출력과 관련된 모든 처리를 따로 해주어야하기에 운영체제의 도움이 없이는 개발이 매우 힘들다. 운영체제를 사용하면 하드웨어에 접근하고 조작하는 코드를 직접 작성할 필요가 없다
    • 운영체제는 프로그램 실행 관리를 위한 프로그램이지 사용자를 위한 프로그램이 아니다.(프로그램을 위한 프로그램)
    • 하드웨어(CPU, 기억장치)의 경우 문제가 생겼을 때 실행을 중단하지만 운영체제는 프로그램이기에 문제에 대한 오류 메세지를 주는 등 소통이 가능하다.

     

     

     

    ✅ 운영체제의 큰 그림


     

    📦 운영체제의 심장, 커널

    현존하는 프로그램 중 가장 큰 규모를 가진 운영체제는 다양한 종류가 있듯 매우 다양한 서비스를 제공한다. 하지만 이 중에도 프로그램을 관리하거나 자원에 접근하고 조작하는 기능과 같이 가장 핵심적인 서비스가 존재하고 이러한 핵심 서비스를 담당하는 부분을 커널이라고 한다.
    • 운영체제에는 속하지만 커널에 속하지 않는 기능이 있으며 대표적으로 UI(User Interface)가 있다.

     

    🎉 UI

    더보기

    유저 인터페이스라고 불리는 이 기능은 단순히 사용자와 컴퓨터 간의 통로 역할을 하기에 핵심 기능(커널)이 아니다. 이러한 UI는 그래픽 유저 인터페이스(GUI)와 커멘드 라인 인터페이스(CLI)로 나뉜다.

     

    이중모드

    사용자가 실행하는 프로그램은 자원에 직접 접근하는 것은 위험하기에 일반적인 응용 프로그램은 운영체제를 통해서 자원에 접근을 하게 된다. 즉 운영체제의 코드를 실행해야 한다. 그렇기에 CPU가 명령어를 실행할 때 운영체제의 코드를 실행하는 커널 모드와 운영체제의 도움없이 실행될 수 있는 사용자 모드로 구분하는 방식이 이중 모드이다.
    • 사용자 모드: 운영체제의 도움없이 실행될 수 있는 실행 모드로 자원 접근이 불가능하고 커널 영역의 코드를 실행할 수 없다. 대부분의 응용 프로그램은 사용자 모드로 실행된다.
    • 커널 모드: 운영체제의 도움을 제공 받을 수 있는 실행 모드로 커널 영역의 코드를 실행할 수 있으며 자원 접근을 비롯한 모든 명령어를 실행 가능하다. 대표적으로 입출력 명령어와 같이 하드웨어에 접근해야 하는 명령어가 있다.
    • CPU가 어떤 모드로 실행 중인지는  플래그 레지스터 내 슈퍼바이저 플래그를 통해 확인할 수 있다.

     

    시스템 호출

    사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받기 위해서는 운영체제에 보내는 요청
    • 커널모드로 전환하여 실행하기 위한 소프트웨어 인터럽트로 운영체제마다 정해져 있다.
    • 하드웨어 인터럽트 처리 방식과 유사하다.
    • 일반적으로 사용되는 응용 프로그램은 자원에 빈번하게 접근하기에 시스템 호출 빈도가 잦다.

     

     

    📦 운영체제의 핵심 서비스

    프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리이다.

     

    프로세스 관리

    메모리에 적재되어 지금 실행 중인 프로그램을 프로세스라고 하며 이러한 여러 프로세스를 관리해 준다.

    윈도우의 작업관리자 > 프로세스 항목을 열어보면 현재 실행 중인 프로세스를 알 수 있다.

    페이징과 스와핑을 통해 실행 중인 프로세스가 모두 메모리에 적재되지 않게 하는 기법도 있다.

    동시다발적으로 생성 / 실행 / 삭제되는 다양한 프로세스를 일목요연하게 관리가 가능해야 한다.

     

     

    자원접근 및 할당

    CPU 스케줄링: 어떤 프로세스를 먼저, 얼마나 오래 실행할까? 에 대한 방법

    페이징과 스와핑: 새로운 프로세스를 적재할 때 비어있는 주소공간에 적재를 하게되는데 비어있는 공간을 어떻게 찾을 것인지와 실행 중인 프로세스를 메모리에 어떻게 효율적으로 적재할 것인지와 메모리 공간보다 큰 프로세스를 어떻게 실행할지를 결정한다.

    입출력장치 접근 및 할당: 응용프로그램이 입출력 프로그램에 접근하고 할당받아 실행되고자 할 때 운영체제는 인터럽트 서비스 루틴를 제공하여 입출력장치의 접근 및 할당을 조절한다.

    파일 시스템 관리: 보조기억장치에 있는 정보 덩어리를 파일이라는 단위로 묶어 저장장치에 보관하고 이를 폴더(디렉토리) 단위로 저장장치에 보관하게 하는 방법  

     

     

    댓글

Designed by Tistory.