운영체제 개요(CH02)

이도훈·2025년 3월 19일
0

운영체제

목록 보기
5/6

운영체제란?

  • 응용 프로그램의 실행을 제어하는 프로그램
  • 컴퓨터 사용자와 하드웨어 사이에 중재자 역할을 하는 프로그램

커널

  • 주 메모리에 상주하는 운영체제의 핵심 코드들
  • 딱 뭐다라고 할 수 없음

운영체제의 발전

1) 순차처리

  • 운영체제가 없이 사용자와 컴퓨터가 1:1로 소통
  • 프로그램을 준비할 때 준비시간(setup time)이 필요한데, 준비시간(setup time)은 사람이 직접 컴파일러와 소스 프로그램의 적재, 컴파일된 프로그램의 저장, 그리고 적재와 링킹을 포함하여 준비시간(setup time)이 오래 걸렸음.
  • 이로 인해 CPU 사용률이 매우 낮고 비효율적인 시스템 구조였음

2) 단순 일괄 처리 시스템

  • 운영체제가 없는 순차 처리 시스템과 달리, 단순 일괄 처리 시스템은
    모니터라는 초기 형태의 운영체제가 도입되어 작업 준비 과정(= 준비 시간)을 사람이 직접 하지 않아도 되도록 자동화한 시스템.
  • 작업이 완료되면 제어는 다시 모니터로 넘어가고, 모니터는 즉시 다음 작업을 읽음.
  • Job Control Language라는 특수한 형태의 프로그래밍 언어를 통해 모니터에 명령어를 제공하였음.

하드웨어 기능

  • 메모리 보호 - 모니터를 포함하고 있는 메모리 영역이 변경되지 않도록 함. 또한 사용자 프로그램은 사용자 모드에서 수행되어 특정 명령어는 수행되지 않을 수 있음. 모니터는 시스템 모드(커널 모드)에서 수행. 시스템 모드는 특권 명령어가 수행될 수 있고 보호된 메모리 영역을 접근할 수 있음.
  • 타이머 - 단일 작업이 시스템을 독점하지 못하도록 함.
  • 특권 명령어 - 특정 기계 수준의 명령어는 모니터에 의해서만 수행되게 함.
  • 인터럽트 - 처리기 제어를 운영체제와 사용자 프로그램 사이에 융통성 있게 전달.

단일 프로그래밍

  • 한 첫 번째 작업이 전부 끝나야 두 번째 작업 수행....
  • 만약 I/O작업을 수행한다면 처리기(CPU)는 대기해야 하기 때문에 비효율적
  • 보통 인터럽트라고 하면 CPU 이용률을 높일 것 이라고 생각하지만, 인터럽트 기능이 있지만 I/O작업이 시작되었거나 완료된 것을 알려주는 정도로만 동작하기 때문에 대기 시간이 있음.

시스템 이용률 예제

3) 멀티 프로그래밍

  • 여러 개의 프로그램이 메모리에 올라와 CPU를 번갈아가며 사용하며 수행.
  • 멀티 프로그래밍에서는 여러 개의 job이 메모리에 할당되기 때문에 메모리 관리를 해야한다.
  • CPU 스케줄링 : 준비 상태에 있는 job 중 하나를 선택해 CPU를 할당.
  • CPU 이용률을 극대화할 수 있지만 수행중인 job과 상호작용이 되지 않음. 즉, 사용자와 실행중인 프로그램 간의 실시간 상호작용이 제한적이다.
  • 한 작업이 입출력을 대기해야 할 때, 처리기는 다른 작업으로 제어를 넘김.

4) 시분할 시스템

  • 처리기(CPU)를 여러 사용자가 나눠서 사용
  • 다수의 사용자들은 터미널을 통해 동시에 시스템에 접근 OS는 CPU 시간을 조금씩 쪼개어 각 사용자 프로그램을 실행시킴
  • 여러명의 프로세스가 사용하는 시스템에서 컴퓨터가 자원을 시간적으로 분할해주어 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 프로세스에게 독립된 하나의 컴퓨터를 사용하는 느낌을 주는 것이다.
  • putty 같은 프로그램을 생각하면 된다.

프로세스 관리

  • 아래 세 가지 컴퓨터 시스템 개열이 개발되면서 타이밍동기화라는 문제를 야기했고, 타이밍과 동기화가 프로세스 개념 탄생에 큰 기여를 함.
  • 여기서 프로세스란 실행중인 프로그램을 의미함. 운영체제에서는 작업의 기본 단위.

메모리 관리

가상 메모리

  • 가상 메모리는 프로그램 전체를 메인 메모리에 모두 적재하지 않고, 필요한 부분만 메모리에 올려서 메모리 사용의 효율성을 높이는 기술이다. 자세한 내용은 8장에서 다룬다고 한다.
  • MMU를 통해 가상메모리가 구현된다.

최근 운영체제로의 발전

마이크로 커널 구조

  • 몇몇 핵심 기능들만 커널에 포함된 커널 구조이다.

프로세스(Proccess)란?

  • 쉽게 말해서 작업관리자에 있는 앱 하나가 프로세스이다. 운영체제 1-1장에서 설명했던(코드영역, 데이터 영역, 스택 영역, 힙 영역) 메모리 구조에 나와있는 그림이 한 프로세스이다. 실제로 메모리에는 여러 프로세스가 들어간다.

쓰레드(Thread)란?

  • 프로세스 내에서 독립적으로 실행되는 작업의 흐름
  • 게임 프로그램을 예시로 들면, 게임 그래픽을 화면에 표시하는 쓰레드, 키보드와 마우스 입력에 대한 I/O작업을 하는 스레드, 배경음악, 효과음을 재생하는 쓰레드 등으로 나눌 수 있다(이것이 멀티 쓰레딩이긴 하다).

멀티쓰레딩

  • 쓰레드는 프로세스보다 더 작은 단위의 실행 개체
  • 멀티 쓰레딩은 한 프로세스를 여러 개의 쓰레드로 나누어 병행적으로 실행시키는 기법
  • 위의 게임 프로그램을 예시가 멀티 쓰레딩이라고 할 수 있다.

0개의 댓글