본문으로 바로가기

운영체제 시스템 개념

category IT인터뷰면접질문 2016. 3. 26. 18:09
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

운영체제란 ?

운영체제는 디바이스를 유연하고 예측 가능한 방식으로 동작하도록 하기 위해 소프트웨어와 하드웨어를 제어하는 프로그램입니다. 

컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역활을 하는 시스템 소프트웨어이다, 컴퓨터의 시스템을 편리하게 이용할 수 있고 자원(CPU, IO, HDD, Memory)을 잘 관리해 주는 것이다. 자원관리를 잘 해주는 것이 좋은 운영체제라고 할 수 있다.


운영체제 컴포넌트들은 다음과 같습니다.

  • 프로세스 관리
  • 메모리 관리
  • 파일 관리
  • 장치 관리 
메인 메모리에서 실행중인 현재 프로그램을 프로세스라고 합니다.
운영체제에는 여러 종류가 있습니다.

  • 일괄처리 운영(Batched) 체제 
    다량의 작업을 모아서 한꺼번에 일괄적으로 처리하는 자동화 방식, 다량의 데이터 처리 및 단순 반복 처리, 초창기 컴퓨터에 주로 사용되었다.
    한번에 하나의 프로그램이 수행되며, 운영체제는 항상 메모리에 상주하게 됩니다. 처리 속도를 향상시키기 위해 유사한 요구를 필요로 하는 작업을 일괄처리 합니다.
    장점 : 유사한 작업들을 일괄 처리하므로 처리속도 향상
    단점 : 작업이 실행되고 있는 중에 사용자와 상호 작용 부족, CPU 이용률이 낮음, (CPU속도 > 입출력 장치속도), 작업 준비시간(setup Time)많이 소요.
    ex)급여 계산, 전화, 전기 및 수도 요금 계산 등의 업무
  • 멀티 프로그래밍(Multi-programming) 운영체제
    일괄 처리 방식이 CPU를 비효율적으로 사용하는 것을 착안해 이를 개선하여 발전시킨 것이 다중 프로그래밍 시스템(multi-programming system)입니다. 이 방식은 CPU유휴시간에 다른 프로세스를 처리하여, 입출력 장치와의 속도차이를 해소한다. 따라서 실제 CPU 에서는 한 개의 프로그램만 실행되며, 나머지 프로그램은 입출력을 수행하거나 대기 상태가 된다. 동시에 여러 개의 프로그램을 실행할 수 있습니다. 

    하나의 CPU에 여러 프로그램을 실행시키는 방법 ● 메모리를 여러 부분으로 나누고, 각 부분마다 다른 작업을 할당 하는 기법을 이용한다. 즉, 한 작업이 입출력을 기다리고 있을 동안 다른 작업이 CPU를 사용 ● 일괄처리 시스템의 단점 보완 (동시에 여러 프로그램 실행) ● CPU 사용량 증가, 기억장치 관리기법 필요 (운영체제 복잡) ● 최근의 OS는 다중 프로그래밍 지원

  • 시분할(Timesharing) 운영체제
    다수의 사용자가 컴퓨터를 공유할 수 있도록, 각 사용자들에게 CPU에 대한 일정시간( Time Slice )을 할당하여 주어진 시간 동안 컴퓨터를 사용할 수 있는 시스템입니다.

  • 멀티 프로세서(Multi-processor) 시스템 또는 병렬 시스템
     한 시스템에 2개 이상의 CPU를 갖는 시스템 , 단일 운영체제에 의해 관리, 서버용 OS에서 주로 사용됩니다. 여러 개의 CPU (프로세서)가 메모리를 공유하는 시스템,강결합 (Tightly Coupled) 시스템이라고도 불리고 있습니다.
    장점 : 작업 처리속도 향상됩니다, 하나의 CPU가 고장나도 다른 CPU로 처리 가능하므로 신뢰성, 안정성 높습니다.
    단점 : CPU간의 기억장치 공유 및 스케줄링이 복잡하고, 응용 프로그램 개발 시 복잡합니다.

  • 분산(Distributed) 운영체제

  • 실시간(Real-time) 운영체제
     한정된 시간 제약 조건에서 자료를 분석 처리하는 방식으로 주로 기계 제어 시스템에 사용됩니다. 데이터 발생 즉시, 또는 데이터 처리 요구 시 즉시 처리,  매우 빠른 입력 및 처리 속도, 실시간 시스템을 위한 OS를 RTOS(Real Time OS)라고 불립니다.

  • 시스템 콜(System call)
    프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.

  • 커널(Kernel)
    운영 체제의 핵심 부분으로서, 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공합니다. 시스템의 자원은 제한되어 있지만 프로그램은 많기 때문에 커널은 프로그램의 수행상태인 프로세스 간의 보안 접근을 책임지는 소프트웨어입니다. 커널이 이러한 프로세스마다 얼마만큼의 자원을 사용해야 하는 결정해야 하는데 이것을 스케줄링이라고 합니다.

  • 컨텍스트 스위칭(Context-switching)
    프로세스에서 다른 프로세스로 제어를 변경해야 할 때 이전 프로세스의 상태를 저장하고 새로운 프로세스의 저장된 상태를 불러오는 것을 컨텍스트 스위칭이라고 합니다. 

  • 협동 프로세스 (co-operating processes)
    상호간 데이터로 자원을 공유하는 프로세스들입니다. 또한 프로세스들은 프로세스간 통신 기능(일반 적으로 분산 시스템에서 사용됩니다)을 통해 서로 통신합니다. 예를 들어 채팅 프로그램이 있습니다. 

  • 스레드 (Thread)
     프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 대부분 공유하면서 실행된다. 가벼운 프로세스로 불리는 스레드는 CPU활용의 기본 단위이며 스레드 아이디, 프로그램 카운터, 레지스터 세트, 그리고 스택으로 이루어집니다.

  • 프로세스 동기화(Process synchronization)
    프로세스 동기화는 여러 프로세스들이 동일한 데이터를 동시에 접근하고 실행의  결과가 특정한 접근이 일어나는 순서에 달려 있을 때 요구됩니다. 경쟁 상태를 방지하기 위해 한번에 하나의 프로세스가 동일한 데이터를 조작하도록 해야 합니다. 

  • 위험 영역 문제(Critical Section)
    위험 영역은 공통 변수들을 변경, 테이블을 갱신, 파일을 작성하는 등의 프로세스의 코드 세그먼트입니다. 주어진 시간에 오직 하나의 프로세스만이 위험 영역에 진입할 수 있습니다. 위험 영역 문제는 프로세스 들이 협동을 위해 사용할 수 있는 프로토콜을 설계하는 것입니다. 위험 영역의 기본적인 세가지 요구 사항은 다음과 같습니다.
    상호 배재
    진행
    한정 대기

  • 교착 상태(Deadlock)
    두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킵니다.

  • 세마포어(Semaphor)
    프로세스 간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있습니다. 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데, 이를 위하여 고안된 것이 바로 Semaphore 세마포어 입니다.
    세마포어는 간단히 말해 복잡한 위험 영역 문제를 풀기 위해사용되는 동기화 도구입니다. 세마포어는 초기화와는 별개로 대기와 신호(두 가지 값)만을 가질 수 있는 정수형 변수입니다.

  • 가상메모리(Virtual Memory)
    가상 메모리는(페이징 파일은) 실제 물리적인 메모리 공간(RAM) 외에 하드 디스크에 파일 형태로 따로 준비하는 가상의 메모리 공간으로, 부족한 시스템 메모리를 보조해주는 역할을 하게 됩니다.

  • 캐시(Cache)
    캐시란 사용자의 속도 향상을 위해 자주 사용되는 데이타를 보관하는 기능입니다. 하드의 느린 기억장치와 CPU의 빠른 처리장치의 중간에서 적절한 속도를 유지하기 위해서 존재하는 기능입니다.

  • 캐시메모리(Cache Memory)
    캐쉬 메모리란 컴퓨터 처리장치(processor)에 가장 빈번히 전달되어야 하는 명령어나 데이터를 원활히 전송할 수 있도록 제작된 고속도의 특수 메모리를 말합니다. 캐쉬 메모리안에 보전되어 있는 정보 및 데이터는 컴퓨터에 주 기억 장치에 저장 되어 있을 때 보다 약 10배는 빠릅니다. 

  • 컴파일러와 인터프리터
    컴파일러는 특정 프로그램 언어로 작성된 문장(원시 프로그램, 고급 언어)를 처리하여 기계어 또는 컴퓨터가 사용할 수 있는 코드(목적 프로그램)로 번역해 주는 특수한 프로그램이고, 인터프리터는 고급 언어로 작성된 명령문들을 한 번에 한줄씩 번역하고 실행하는 프로그램이다.

    컴파일러와 인터프리터의 차이 
    컴파일러는 프로그램은 디스크에 저장되어 있고 인터프리터는 ROM에 저장되어 있습니다.

  • 컴파일러의 실행 
  • 원시 프로그램 -> 컴파일러 -> 목적 프로그램 

  • 인터프리터의 실행 
  • 원시 프로그램 -> 인터프리터 -> 실행 명령문

  • 컴파일러는 프로그램 단위로 프로그램 전체를 함께 번역하고 수행하기 때문에 번역 시간이 조금 걸리지만 프로그램 수행 속도가 빠릅니다. 인터프리터는 한 줄씩 한 줄씩 번역하고 수행하기 때문에 프로그램 수행 속도가 느리다. 이로 인해, 인터프리터는 CPU 사용 시간을 낭비하게 됩니다. 

  • 컴파일러는 프로그램을 번역한 뒤, 번역된 기계어(프로그램 코드)를 저장하기 위하여 메모리를 많이 사용하게 됩니다. 그와 반대로, 인터프리터는 프로그램 한 줄씩 번역하고 곧바로 수행하기 때문에 메모리를 사용하지 않습니다. 

    컴파일러는 실행 시간의 효율을 중하는 프로그래밍 언어에서, 인터프리터는 사용자의 융통성을 중시하는 프로그래밍 언어에서 사용됩니다.

  • 선점 그리고 비선점 스케쥴링
    선점 스케쥴링 : 우선 순위가 높은 다른 프로세스가 할당된 CPU를 강제로 빼앗을 수 있는 방법
    비선점 스케쥴링 : 프로세스에게 이미 할당된 CPU를 강제로 빼앗을 수 없고, 사용이 끝날 때까지 기다려야 하는 방법


 


'IT인터뷰면접질문' 카테고리의 다른 글

자바 면접 손코딩 예상 문제  (10) 2018.10.04
개발자 면접 질문(자바, 스프링)  (5) 2018.10.04
프로그래머 면접 질문2  (6) 2016.03.31
데이터베이스 질문들  (0) 2016.03.26
데이터베이스 용어  (0) 2016.03.26