[운영체제] 2. Introduction to Operating Systems

이건회·2022년 3월 5일
0

운영체제

목록 보기
1/27

  • 운영체제는 하드웨어 바로 위에서 사용자와 소프트웨어가 하드웨어에 접근하고자 할때 이를 연결하는 소프트웨어 계층이다.
  • 협의의 운영체제(커널)은 메모리에 상주하는 운영체제의 핵심이며, 광의의 운영체제는 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념이다. 보통 운영체제는 커널읠 의미한다.


  • 운영체제의 목적은 CPU,메모리,입출력 장치 등의 리소스를 효율적으로 관리하는 것이고, 또 사용자가 컴퓨터를 편리하게 사용하도록 하는 환경을 제공하는 것이다.

운영체제의 분류

  • 다음 기준에 따라 운영체제를 분류할 수 있다.

-먼저 동시 작업 가능 여부에 따라 단일 작업과 다중 작업으로 분류 가능한데, 현재 사용하는 운영체제는 대부분 다중 작업을 지원한다.

  • 지원하는 사용자의 수에 따라서도 단일 사용자와 다중 사용자 운영체제로 구분 가능하다.

  • 처리방식에 따라 운영체제를 구분할 수도 있다. 먼저 일괄 처리방식은 batch 프로세싱이라고도 하는데, 어떤 작업을 바로바로 처리하는 것이 아닌 모아서 한꺼번에 처리하는 방식이다. 현대에는 거의 안 쓰인다.

  • 시분할 방식은 현대에 사용하는 방식으로 여러 가지 작업이 동시에 실행 될 때 운영체제가 일정 시간 단위로 컴퓨터 처리 능력을 할당하여 작업을 처리한다. interactive하게 바로바로 사용자가 작업 결과를 확인할 수 있다.

  • 또 실시간 운영체제가 있다. 정해진 시간안에 어떤 일을 반드시 종료됨이 보장돼야 하는 시스템을 위한 os다. 특수한 목적을 가진 시스템에서 사용한다.
  • 데드라인을 지키지 않으면 치명적인 결과가 나오면 하드 리얼타임 시스템이고, 데드라인이 지켜지지 않아도 그닥 치명적이지 않으면 소프트 리얼타임 시스템이다.

  • 여러 작업이 동시에 실행되는 것은 "멀티태스킹"이라 부른다.
  • "멀티프로그래밍"은 멀티태스킹에 속하나 메모리에 여러 작업이 동시에 올라가는 것을 특정해서 의미한다.
  • 타임 셰어링도 시분할 방식을 의미하며 멀티태스킹과 비슷한데 CPU 쪽에서 좀 더 강조된 설명이다.
  • 멀티 프로세스 또한 멀티태스킹과 비슷하다.
  • "멀티프로세서" 는 CPU가 여러개 존재하는 컴퓨터를 의미한다.
  • "멀티태스킹"은 CPU 하나에서 여러가지 작업이 수행되는 것이라 멀티프로세서와는 하드웨어적으로 다르다.

  • 유닉스 계열의 운영체제가 있다. 위와 같은 특성이 있다. 유닉스 운영체제를 만들기 위해서 만든 언어가 C언어다. 어셈블리어를 쉽게 만든 언어다. 한 컴퓨터에서 만든 운영체제를 다른 컴퓨터로 옮길수 있어 이식성이 높다.

  • 다음은 마이크로소프트가 만든 운영체제다. ms dos, windows 운영체제가 있다.
  • 맨 아래는 소형 디바이스를 위한 운영체제들이다.

### 운영 체제의 구조

  • cpu는 어떤 프로그램에 어떤 순서대로 cpu를 할당할지 고민하는데 이것이 cpu 스케줄링이다.
  • 또 메모리 공간은 한정되어 있는데 어떤 프로그램에 어떻게 메모리를 할당할지를 고민하기도 해야 한다. 또 메모리를 사용중인 프로그램 중 누구를 쫓아낼지도 프로그램의 재사용성 등을 고려해 고민해야 한다.
  • 디스크에 파일을 어떻게 보관할지, 조각조각 나눌지 연속적으로 저장할 지 고민하는 것도 필요하다. 디스크는 요청에 따라 헤드가 계속 움직이므로 어떻게 하면 헤드가 적게 움직임을 가져가며 효율적으로 처리할지를 고민해야 한다. 택배 기사가 어떻게 물건을 효율적으로 배송할지 고민하는 것과 같다.
  • 또 다수의 i/o 디바이스(입출력장치)를 어떻게 관리할지도 고민해야 한다. 입출력장치는 cpu보다 훨씬 느리므로 둘 사이에 어떻게 정보를 주고받을지 정해야 한다. 이는 인터럽트라는 것에 기반하여 관리하는데, cpu가 입출력장치를 신경쓰지 않고 자기 할 일을 하다가 입출력장치로부터 요청이 들어오면 인터럽트를 걸어 cpu에게 알려주면 cpu가 그 일을 처리한다.
    -마지막으로 위처럼 하드웨어적 관리 말고도 cpu에서 돌아가는 소프트웨어 프로그램을 어떻게 관리할지, 그외에도 여러가지 보호기능과 네트워크 기능, 명령어를 해석하고 실행하는 기능도 한다.

  • 운영체제 공부는 본인이 직접 운영체제라 생각하고 본인이 컴퓨터를 어떻게 통치하고 통제할지를 고민할 필요가 있다.
profile
하마드

0개의 댓글