하다보니

운영체제란 본문

CS 지식/운영체제

운영체제란

claire 2022. 1. 21. 18:10

운영체제 의미

좁은 의미의 운영체제를 커널이라고 부른다.

 

소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다.

마찬가지로 운영체제 자체도 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라가야 한다.

하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것이다.

 

따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 

이때 운영체제의 핵심 부분으로 메모리에 상주하는 부분을 커널이라고 한다.  

 

넓은 의미의 운영체제는커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념이다. 

 

광의의 운영체제에 포함되는 것들은 메모리에 상주하지 않는 독립적인 프로그램들도 있다. 

보통 전공자 입장에서는 커널만을 의미하게 된다. 


운영체제의 목적

컴퓨터 시스템의 자원을 효율적으로 관리하기 위해. 여기서 자원은 cpu, 메모리, 각종 입출력 장치 등을 말한다. 

컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공.

 

주어진 자원으로 최대한의 성능을 내도록. 사용자간 형평성 있는 자원 분배 필요. 

 

프로세스, 파일, 메시지는 소프트웨어 자원.

프로세서, 기억장치, 입출력 장치는 하드웨어 자원. 

 

하나의 컴퓨터에 프로그램을 동시에 실행을 시킨다. 이때 각각의 사용자는 독자적인 컴퓨터가 있다고 생각하게 된다. 

실행 중인 프로그램들에게 짧은 시간씩 cpu를 번갈아 할당한다. 실행 중인 프로그램들에 메모리 공간을 적절히 분배한다. 

 

운영 체제의 분류. 

  • 동시 작업 가능 여부.
  • 단일 작업 : 한 번에 하나의 작업만 처리. 
  • 다중작업 : 동시에 두 개 이상의 작업 처리. 현재의 운영체제는 다중작업을 지원한다. 

 

  • 사용자의 수. - 여러 사용자가 동시 사용이 가능한지. 
  • 단일 사용자. 
  • 다중 사용자.

 

  • 처리 방식에 따른 분류. 
  • 일괄 처리(batch processing) : 작업 요청의 일정량 모아서 한꺼번에 처리, 작업이 완전히 종료될 때까지 기다려야 한다. 현대에는 찾아보기 힘들다. interactive 하지 않다.  
  • 시분할 방식 : 우리 컴퓨터 방식, 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용. 일괄 처리 시스템에 비해 짧은 응답 시간을 가진다. interactive 한 방식. 내가 입력을 주면 바로 반응이 나오는 것. 사람에 특화된 시스템.  
  • 실시간 : 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 os.

제한 시간을 지키지 못하면 치명적인 결과가 나오는 것을 경성 실시간 시스템.(hard realtime system)

그거에 비해 가벼운 느낌의 결과를 초래하는 것을 연성 실시간 시스템이라고 한다. (soft realtime system)

실제 운영체제는 실시간 처리방식을 쓰고 있지는 않다. 현재 우리의 운영체제는 시분할 방식 위에서 돌아가고 있다.

하지만 deadline을 필요로하는 작업들이 많아지고 있다. 따라서 이러한 애플리케이션을 어떻게 지원해야 하는지 연구되고 있다. 실시간성을 지키기 위한 방법. 

 

현재의 운영체제는 다중 작업을 지원하고 다중 사용자를 대상으로 하는 시분할 방식 운영이 되고 있다. 

 

몇 가지 용어

Multitasking - cpu에서는 매순간 한 가지 일만 하지만 짧은 시간 간격으로 배치하여 동시에 실행되는 것처럼 보인다. 

 

Multiprogramming - 여러 프로그램이 메모리에 올라가 있음을 강조. 

 

time sharing - cpu의 시간을 분할하여 나누에 쓴다는 의미를 강조. 

 

multiprocess 

 

위의 것들은 하나의 cpu에서 시간을 나누어 동시 실행이 가능한 시스템을 말하고

 

multiprocessor는 하나의 컴퓨터에 cpu(processor)가 여러 개 붙어 있음을 의미. 

여러 프로그램이 각각의 cpu에 들어갈 수 있다. cpu가 여러 개 있는 시스템. 

 

운영체제의 예 

- 유닉스 : 코드의 대부분을 C언어로 작성.

             대형 컴퓨터를 위해 만들어진 운영체제이다.

             유닉스 운영체제를 만들기 위해 언어를 만들었다. 그게 바로 c언어. c언어는 초창기에 주로 유닉스를 만들고                 시스템 소프트웨어를 만들 때 사용을 했다.

             기계어와 굉장히 가까운 언어이다. 기존의 고급 언어와 달리 기계와 가까우면서 사람과도 가까운 언어이다. 

             초창기에는 소스코드를 공개했다.

             이식성이 높고 프로그램 개발에 용이하다.

             커널의 크기를 아주 작게 만들어 놨다. 핵심적인 것만 집어넣은 형태.

             확장성이 좋다. 현재는 소스코드도 공개하지 않고 있다. 

 

공개 소프트웨어 정신에 입각해서 나온 유닉스 계열의 운영체제가 리눅스이다. 누구나 가져다가 자유롭게 사용이 가능하다. 개인이 쓰기에도 좋다. 안드로이드도 리눅스 커널을 쓰고 있다. 

 

- DOS는 단일 사용자용 운영체제이다. 메모리 관리 능력의 한계. 주 기억 장치:640kb

 

- MS windows- 개인 컴퓨터를 위해 만들어진 운영체제. 

 

운영체제의 구조. 

- cpu는 어떤 프로그램한테 cpu를 할당할지 : cpu 스케줄링. 

 

cpu는 아주 빠른 장치여서 짧은 간격으로 프로그램에 cpu를 줬다 뺐었다 하는 것이 일반적인 cpu 스케줄링이다. 

주어진 자원의 특성을 최대한 활용하는 쪽으로 운영체제가 발전했다.

선착순으로 처리하면 비효율적일 수 있다. cpu를 가장 짧게 사용할 프로그램에 cpu를 먼저 주는 것이 좋다 라는 내용도 뒤에 나온다. 그러면 평균적인 성능이 좋아진다. 결국엔 이런 방법보다는 cpu를 짧은 시간 간격으로 줬다 뺐다 하는 것이 좋다는 쪽으로 결론이 난다. 

 

- 한정된 메모리를 어떻게 쪼개어 쓰지? : 메모리 관리

 

- 디스크에 파일을 어떻게 보관하지? : 파일 관리 

 

디스크도 스케줄링이 필요하다. 

cpu스케줄링과 디스크 스케줄링은 성격이 다르다.

cpu는 너무 빨라서 어떻게 관리해야하는가이고 디스크는 head가 움직이면서 처리해서 어떻게 움직임을 최소화하며 처리할 수 있는가가 중점적이다. 

 

- io 디바이스 어떻게 관리할 것인가. io디바이스가 속도가 느려서 cpu와 어떻게 정보를 주고받냐. interrupt에 기반해서 관리를 하고 있다. 

 

이밖에도 프로세스 관리. 보호 시스템 등을 배운다. 

 

'CS 지식 > 운영체제' 카테고리의 다른 글

Process 2,3  (0) 2022.02.07
Process  (0) 2022.02.06
컴퓨터 구조와 프로그램 실행  (0) 2022.02.04
하드웨어 구조와 프로그램 실행 방식  (0) 2022.01.22
운영체제 개요  (0) 2022.01.18