본문 바로가기
CS지식

[운영체제 기초] 운영체제 용어 및 면접 예상 질문

by Alkaloid 2022. 1. 23.
반응형
운영체제
   
  [프로세스와 스레드]
  //---------------------------------------------------------------//.
  프로세스는 실행중인 프로그램.
  스레드는 프로세스 내의 독립적으로 실행되는것을 의미한다.
  또한
  프로세스는 운영체제에게 자원을 할당 받지만, 스레드는 프로세스에 의해 자원을 할당 받는다.
   
  스레드는 적은 메모리를 사용하고, 전역 메모리를 공유한다는 장점이 있지만 교착상태가 발생할수 있다는 단점이 있다.
  여기서 멀티 스레드 프로그래밍은 무엇일까?
  하나의 프로세스에서 여러개의 스레드를 만들어 자원을 생성및 관리하고 중복을 최소화 한다.
  //---------------------------------------------------------------//.
   
  [동기 및 비동기]
  //---------------------------------------------------------------//.
  동기 : 요청을 보낸후 응답을 받아야만 다음 동작이 이루어진다. (블럭)
  비동기 : 요청을 보낸후 응답과 상관없이 다음 동작을 한다. (논블럭)
   
  프로세스 동기화란? 프로세스가 공유 자원을 사용하는 상황에서 공유 자원을 신뢰할수 없기 때문에(경쟁 조건) 이것을 방지하기 위해
  실행 순서 규칙을 정하여 공유 자원의 일관성을 보장하는 것이다.
   
  //---------------------------------------------------------------//.
   
  [교착상태]
  //---------------------------------------------------------------//.
  교착상태 : 하나이상의 프로세스가 서로 상대방의 작업이 끝나기를 기다리는 상태.
   
  발생조건: 상호배제 : 한 리소스는 하나의 프로세스만 이용할수 있다.
  비선점 : 리소스를 자발적으로 반환하기를 기다린다.(뺏지 않음)
  원형대기 : 프로세스들이 서로를 기다린다.
  점유와대기 : 하나의 프로세스가 리소스를 점유하고 있으면서 다른 리소스를 기다린다.
   
  해결방법: 예방 : 발생조건이 만족되지 않게 한다.
  회피 : 발생조건을 없애는 것이 아닌, 알고리즘을 이용하여 해결한다. ex)은행원 알고리즘
  탐지 : 원인을 규명하여 해결한다. ex)자원할당 그래프
  회복 : 교착상태가 발생하면 그 후에 해결하는 방법
  //---------------------------------------------------------------//.
   
   
  [기아상태]
  //---------------------------------------------------------------//.
  기아상태 : 프로세스가 필요한 자원을 할당 받지 못하고 계속 기다리고 있는 상태이다.
  //---------------------------------------------------------------//.
   
  [경쟁상태]
  //---------------------------------------------------------------//.
  경쟁상태 : 여러 프로세스가 공유자원에 접근할때 공유 데이터에 대한 실행 순서에 따라 결과가 달라지는 상황이다.
  //---------------------------------------------------------------//.
   
  [임계영역]
  //---------------------------------------------------------------//.
  임계영역 : 둘 이상의 프로세스가 동시에 접근하면 안되는 공유 자원(임계영역)에 접근하는 영역(코드 영역)
  즉, 프로그램에서 공유 데이터(임계 자원)를 이용하는 부분이다.
   
  문제점: 동시에 접근하게 되면 예상치 못한 결과가 나오게 된다. -> 경쟁상태
  //---------------------------------------------------------------//.
   
  [LRU]
  //---------------------------------------------------------------//.
  페이지 교체 알고리즘의 하나로, 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘이다.
   
  페이지 교체 알고리즘을 사용하는 이유는 페이지 부재가 생겼을때 주기억장치에 적재하기 위해 어떤 페이지 프레임을
  선택하여 교체할것인지를 정한다.
  //---------------------------------------------------------------//.
   
   
  [메모리 누수]
  //---------------------------------------------------------------//.
  프로그램이 필요없는 메모리를 점유하고 있는 현상이다.
  자바의 경우는 GC가 있어 사용하지 않는 객체는 회수하여 메모리 공간을 확보한다.
   
  누수를 막기위해 Local변수로 만들어 자동으로 GC가 되게 만들면 된다.
  즉 참조값을 갖는 변수가 최소 유효범위 안에 있도록 하면 된다.
  //---------------------------------------------------------------//.
   
   
  [도커]
  //---------------------------------------------------------------//.
  도커는 컨테이너 기반의 가상화 기술이다.
  초기에는 OS를 가상화 하였고, HOST OS위에 GUEST OS를 설치했기 때문에 무겁고 느렸다는 한계가 있었다.
  그렇기 때문에 프로세스를 격리시킨 컨테이너를 통해 가상화를 하는 도커라는 기술이 등장하였다.
   
  장점: 실행 환경 구축이 쉽고 빠르다.
  공유 환경을 제공한다.
  하드웨어 자원이 절감된다.
  단점: 개발 초기의 오버헤드 (도커를 처음 쓰는 개발자일때, 초반 환경 설정시 시행착오가 많음)
  리눅스 친화적이다. (도커를 제대로 쓰기 위해서는 linux기반os에서 사용해야 한다.)
  //---------------------------------------------------------------//.
   
  [프로그램 과 프로세스]
  //---------------------------------------------------------------//.
  프로세스란 현재 실행되고 있는 프로그램을 프로세스 라고한다.
  그럼 프로그램이 프로세스인가?
   
  프로그램 : 실행 파일로 파일 시스템에 존재하는 실행 파일이다.
  프로세스 : 프로그램을 실행시켜주는 주체(인스턴스)
  라고 세부적으로 말할수 있다.
   
  대게 프로세스란 위에서 말한대로 -> 실행되고 있는 프로그램이라고 말해도 된다.
   
  하나 예를 들면,
  인터넷 창(크롬)을 3개 켰을때, 하나의 크롬(프로그램)을 실행시켜 3개(프로세스)를 만든것이다.
  //---------------------------------------------------------------//.
반응형