운영체제

gang_shik·2022년 3월 8일
0

Operating System

목록 보기
1/14
post-custom-banner

운영체제

  • 시스템 하드웨어관리할 뿐 아니라 응용 소프트웨어실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어

  • 입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제가 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 함

  • 그리고 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등자원들을 사용할 수 있도록 만들어 줌, 그리고 이들을 추상화하여 파일 시스템등의 서비스를 제공함

  • 그리고 멀티 태스킹 등 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제가 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 냄


운영체제의 구성

  • 운영 체제는 많은 부분을 이룸

  • 그 중 커널이 중요한 부분을 차지하는데, 일반적으로 보지 못하는 낮은 수준의 프로세스제어

  • 어느 프로세스를 실행할 것인지, 모니터, 키보드, 마우스와 같은 장치를 통해 어떠한 정보를 주고받을 것인지, 네트워크를 통해 받은 정보를 어떻게 해석할 것인지 등을 제어

  • 사용자 인터페이스(UI)는 컴퓨터 사용자가 직접 프로그램을 제어하고, 사용할 수 있게 하는 운영 체제의 기능임(아이콘과 바탕 화면을 지닌 그래픽이나 명령 줄을 지닌 문자등)

  • 이와 비슷하게 API가 있는데 이것은 응용 프로그램이 다른 프로그램과 상호 작용할 수 있게 하는 서비스와 코드 라이브러리가 한데 모여 있으며 운영 체제 그 자체라고 할 수 있음


운영체제의 목적

  • 사용자에게 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공함

  • 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적 할당, 관리, 보호하는 것

  • 운영 체제는 제어 프로그램으로서 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하는 것과 입출력 장치 등의 자원에 대한 연산과 제어를 관리함

  • 이런 것들은 각각, 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축과 연결됨

  • 시스템 처리에 있어서 운영체제의 성능을 평가하는 기준이 됨, 위의 요소들은

시스템 구성

  • 일반적인 응용 프로그램들을 제외한 컴퓨터 시스템은 개념적으로 세 개의 구성 요소로 구분함

  • 각각, 운영체제, 셸, 필수 유틸리티(낮은 수준의)

  • 은 사용자가 시스템을 운용할 수 있게끔 해주는 기본적인 응용 프로그램임, 이런 셸의 행동은 운영 체제에 명령을 내리는 일이 됨

  • 여기서 셸은 운영 체제의 일부는 아니고 운영 체제 입장에서 셸이나 필수 유틸리티 들이나 모두 응용 프로그램일 뿐임

  • 하드웨어 < - > 운영체제 < - > 셸 / 응용 프로그램 < - > 사용자


운영체제의 기능

  • 시스템 하드웨어를 관리할 뿐만 아니라 응용 프로그램을 실행하기 위한 환경을 제공함, 프로그램에 메모리와 CPU를 할당하고 디스크를 사용할 수 있도록 하는 것도 운영체제의 역할임

  • 아래와 같은 기능을 하고 세부적으로 본다면

프로세스 관리

  • 운영체제에서 응용 프로그램의 실행프로세스 생성으로 이루어짐, 프로세스를 생성하고 종료, 프로세스간 통신등 프로그램 실행을 위한 가장 기본적인 기능임

메모리 관리

  • 응용 프로그램에 메모리를 할당하고 사용하지 않는 메모리를 회수하는 역할과 함께 디스크를 사용해 부족한 메모리는 가상메모리로 운영하는 등의 관리 기능임

파일 시스템

  • 하드디스크를 물리적 혹은 논리적으로 분할하고 운영체제에서 사용할 수 있도록 마운팅 기능을 제공함, 파일이나 디렉토리생성하고 관리할 수 있으며 운영체제에 따라 관리할 수 있는 파일시스템 종류가 다를 수 있음

장치 드라이버

  • 컴퓨터에 연결된 각종 하드웨어를 응용 프로그램에서 사용할 수 있도록 연결해주는 소프트웨어를 말함

  • 예를 들어 프린터를 컴퓨터에 연결했을 때 정상적으로 사용하기 위해서는 해당 프린터 장치에 대한 드라이버 소프트웨어를 설치해야함(응용 프로그램과 달리 운영체제의 일부로 동작하게 됨)

네트워크

  • 컴퓨터와 컴퓨터를 연결해주는 네트워크 기능을 말함

  • 인터넷 역시 컴퓨터 네트워크가 전세계적으로 연결된 개념이며 운영체제는 TCP/IP, UDP등의 프로토콜을 이용해 컴퓨터간 네트워크 연결을 지원함

보안

  • 보안은 메모리나 프로세스에 대한 보호를 기본으로 파일시스템, 네트워크에 대한 보안 기능을 기본적으로 제공함

  • 다중 사용자 시스템의 경우 사용자 관리 및 권한관리 등도 보안영역에 속함

입출력

  • 컴퓨터에 연결된 장치들로부터 데이터를 입력받을 수 있도록 하고 처리된 결과를 내보내는 기능을 말함

  • 입력은 마우스, 키보드, 터치모니터 등과 같은 입력 장치를 통해 이루어지고 출력은 모니터, 스피커, 프린터 등 출력장치를 통해 이루어짐

  • 각각의 장치를 사용하기 위해서는 장치 드라이버가 필요하며 운영체제는 입출력에 필요한 폴링과 인터럽트 같은 기능을 제공함

폴링과 인터럽트?

폴링

폴링은 하나의 장치가 충돌 회피 또는 동기화 처리의 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료 처리를 하는 방식을 말함

결국 입출력에서의 폴링방식은 주변 입출력 장치를 기준으로 변화를 지속적으로 계속 확인하고 처리하는 것을 말함, 하지만 이 방식을 사용하면 CPU가 제대로 된 성능을 활용하는데 있어서 부족한 것이 있음

인터럽트

인터럽트는 위와 같은 폴링 방식을 개선한 방식 중에 하나로 위와 같이 계속해서 확인하고 처리하는게 아닌 처리가 필요한 상황 즉, 예외적 상황의 발생을 처리가 필요한 방식의 경우, 그 때 CPU를 불러 처리하는 방식을 말함

이렇게 된다면, 입출력 장치 사용에 있어서 다른 입출력 장치가 인터럽트 요청하여서 CPU 작업이 그쪽으로 가기 때문에 폴링 방식처럼 CPU가 계속해서 변화를 보거나 처리할 이유가 없음


운영체제의 구성 요소

  • 운영체제를 이루는 요소는 컴퓨터의 다른 부분들과 함께 동작하게 만들기 위하여 존재함

  • 어떤 방식이던지 하드웨어를 이용하기 위하여 운영 체제로 말미암아 실행해야함

커널

  • 펌웨어장치 드라이버의 도움을 받아 커널은 모든 컴퓨터 하드웨어 장치에 대한 가장 기초 수준의 제어권을 제공함

  • 커널을 통해 프로그램을 위한 메모리 접근관리하며 어느 프로그램이 어느 하드웨어 자원접근할지를 결정하며 CPU의 동작 상태를 늘 최적으로 설정 및 초기화하고 디스크, 테이프, 플래시 메모리와 같은 매체의 파일 시스템을 갖춘 장시간 비휘발성 기억 장치를 위한 데이터를 정리

  • 운영 체제 내에서의 커널의 영역과 그 구성에 따라 모놀리식 커널, 마이크로 커널 등으로 분류함


펌웨어?

펌웨어

펌웨어는 특정 하드웨어 장치에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나 수정하는 것도 가능한 장치를 뜻함

하드웨어 제어구동을 담당하는 일종의 운영체제임

BIOS를 그 예를 들 수 있음, 초기 컴퓨터 부팅 후 BIOS를 통해서 하드웨어 부품을 초기화하고 검사하는 등의 역할을 수행할 수 있음, 이런 일을 처리할 수 있는 것을 펌웨어임

모놀리식 커널, 마이크로 커널?

모놀리식 커널

모놀리식 커널은 커널의 구조 및 설계를 말하는 것으로 단일형 커널을 의미함, 운영 체제의 일반적인 기능커널과 동일한 메모리 공간적재, 실행하는 기법을 말함

마이크로 커널

마이크로 커널은 운영 체제에 추가되어야 하는 매커니즘을 최소한으로 제공하는 초소형 커널

여기서 위의 구조와 모놀리식 커널에 대해서 OS를 구성하는 몇 개의 요소, 기능을 커널 공간으로부터 떼어내어, 외부 모듈화하는 등으로 추가하는 기법이 마이크로 커널이라고 함


프로그램 실행

  • 운영 체제는 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 하고, 응용 프로그램 개발을 단순하게 하는 서비스의 집합

  • 프로그램 실행운영 체제프로세스를 만들고 커널메모리다른 자원할당하여 프로세스를 만듬

  • 멀티태스킹 환경에서 프로세스에 대한 우선 순위확립하고, 메모리프로그램 코드적재하며 프로그램실행함, 그 뒤 프로그램은 사용자 및 장치상호작용한 다음 원하는 명령수행하게됨

  • 운영 체제는 프로세스들을 생성하거나 삭제하고, 중단시키거나 재개시킴, 프로세스 간의 동기화와 통신, 교착상태 처리에 관한 매커니즘을 제공함

인터럽트

  • 인터럽트는 자동으로 로컬 레지스터 컨텍스트저장하고 이벤트반응하는 특정 코드를 실행하는 방법을 컴퓨터에 제공함

  • 이러한 인터럽트는 주변 환경반응하고 상호작용하는 데에 효율적인 방법을 운영체제에 제공함

  • 프로그램이 운영 체제에 인터럽트발생시킬 수 있음, 프로그램이 하드웨어에 접근하고자 한다면 운영 체제의 커널을 가로막을 수 있고 이를 통해 제어권을 커널에 넘겨줌, 그 뒤 커널을 요청함

  • 프로그램이 메모리(또는 공유 자원)와 같은 추가 자원필요하면 커널이 집중할 수 있게 인터럽트를 발생시킴

모드

  • 현대의 CPU는 여러 모드의 명령을 지원함, 보호모드수퍼바이저 모드

  • 수퍼바이저 모드의 경우 메모리의 기록 및 삭제 방식을 제어하는 것과 그래픽 카드와 같은 장치와 통신하는 것과 같이 운영 체제의 커널이 하드웨어에 제한 없이 액세스해야 하는 낮은 수준의 태스크를 위해 사용함, 반대로 보호 모드는 그 밖의 거의 모든 용도로 사용됨

  • 응용 프로그램들은 보호 모드 안에서 동작하며, 수퍼바이저 모드의 모든 것을 제어하는 커널과 통신해야만 하드웨어를 이용 할 수 있음

메모리 관리

  • 멀티프로그래밍 운영 체제 커널은 현재 프로그램이 이용하는 모든 시스템 메모리를 관리해야함

  • 그렇게 해서 어느 특정한 프로그램이 다른 프로그램이 이미 사용하고 있는 메모리와 상호 작용하지 않게함

  • 프로그램이 시분할하므로 각 프로그램은 메모리에 독립적으로 접근해야함

가상 메모리

  • 페이징이나 세그먼테이션과 같은 가상 메모리 어드레싱을 이용하면 커널은 어느 메모리를 각 프로그램이 주어진 시간에 사용할 수 있게 할 지 설정할 수 있음, 그래서 운영체제가 여러 개의 Task에 같은 메모리 위치를 사용할 수 있게 함

  • 프로그램이 접근할 수 있는 메모리 범위에 없는 메모리에 접근하지만 그곳에 할당되면 커널은 프로그램이 마치 할당된 메모리를 초과 사용한 것과 같은 방식으로 인터럽트 처리함, 유닉스에서는 이런 종류의 인터럽트를 페이지 실패라고 함

  • 커널이 페이지 실패를 하면 이런 문제를 일으킨 프로그램의 가상 메모리 영역을 수정함, 이로써 요청된 메모리에 프로그램이 접근할 수 있게함

  • 현대의 운영 체제에서 자주 접근하지 않는 메모리는 일시적으로 디스크나 다른 매체에 저장하여 다른 프로그램에게 사용할 수 있는 공간을 제공해줌, 이를 스왑처리라고 하며 이를 통해 여러 개의 프로그램이 특정한 메모리 영역을 차지할 수 있음


페이징? 세그먼테이션?

페이징

페이징은 프로세스를 일정한 크기의 페이지분할해서 메모리에 적재하는 방식임

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법

세그먼테이션

세그먼테이션은 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위세그먼트분할해서 메모리에 적재하는 방식임

잘 설명된 링크


멀티태스킹

  • 여러 개의 독립적인 컴퓨터 프로그램을 하나의 컴퓨터에 실행시키는 것을 가르킴, 마치 Task들이 동시에 수행하는 것처럼 보여줌

  • 일반적으로 시분할 즉, 각 프로그램이 컴퓨터의 실행 시간의 일부를 사용함

  • 운영 체제 커널스케줄러라는 프로그램이 포함되어 있는 이 프로그램은 얼마나 많은 시간을 각 프로그램이 실행에 소비하게 할 것인지를 결정하며 여기서 실행 제어권이 프로그램에 넘어갈 수 있게함

  • 제어권은 프로그램이 CPU와 메모리에 접근할 수 있게 하는 커널로 말미암아 프로세스로 넘어감

  • 나중에 다른 프로그램이 CPU를 사용할 수 있게 하기 위해 제어권은 같은 메커니즘을 통하여 커널로 반환됨, 커널과 응용 프로그램 간의 제어권 이동을 컨텍스트 스위칭이라고 함

장치 드라이버

  • 장치 드라이버는 하드웨어 장치들과 상호 작용할 수 있도록 개발된 특정한 종류의 컴퓨터 소프트웨어임

네트워킹

  • 네트워크는 컴퓨터의 운영 체제가 원격 컴퓨터의 자원접근하는 데 필수적임

  • 마치 리소스가 로컬 컴퓨터에 바로 연결되어 있는 것처럼 보이게 만들어줌, 이는 컴퓨터의 그래픽, 사운드 하드웨어를 공유하거나 네트워킹 파일 시스템을 이용하는 등 단순한 통신에서 나오는 모든 것을 포함함

보안

  • 수많은 기술이 올바르게 동작하고 있는지에 달려있음

  • 운영체제는 보안을 위하여 특정 환경에 대한 권한을 사용자나 프로그램에 개별적으로 설정하고 인증 프로세스를 제공함

사용자 인터페이스

  • 사람이 컴퓨터와 소통할 수 있게 하는 사용자 인터페이스가 필요함

  • 키보드, 마우스와 같은 장치들이 이러한 역할을 하지만 사용자 인터페이스는 이를 위한 소프트웨어로 이루어짐

  • 사용자 인터페이스는 컴퓨터 명령어를 한줄씩 입력해 나가는 Command-Line Interface(CLI), 일반적으로 창, 단추, 아이콘을 이루는 시각 환경이 존재하는 Graphical User Interface(GUI)로 나뉨

profile
측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선시킬 수도 없다
post-custom-banner

0개의 댓글