Chap2. Operating System Overview

hgh1472·2024년 7월 11일
0

운영체제

목록 보기
2/11

Operating System

OS는 애플리케이션 프로그램을 실행 및 중단시키는 프로그램이다 = 애플리케이션 프로그램과 하드웨어 사이의 인터페이스

User/Computer Interface

  • 프로그램 개발과 관련된 툴 제공
    • 컴파일러
  • 프로그램 실행
  • IO 디바이스 접근
  • 파일 접근
  • 시스템 접근
  • 오류 detect, response
  • PC의 권한

Resource Manager

시스템 안에는 리소스를 많이 사용하는 사람도 있고 조금 사용하는 사람들도 있는데 이런 것들을 전부 OS가 관리한다. CPU를 많이 사용한 사람에게는 CPU를 안주고 적게 사용한 사람은 CPU를 더 많이 사용할 수 있게 해준다.

결국 OS의 역할은 크게 두가지다.

  1. 유저랑 하드웨어 사이의 인터페이스
  2. 시스템 안에 있는 모든 리소스를 관리하는 리소스 매니저의 역할

인터페이스로서의 역할은 거의 정리가 되었다. 하지만 리소스 매니저로서의 역할은 계속 새로운 것이 생긴다. 새로운 디바이스가 생기고, 메모리도 점점 커진다. 결국 리소스 매니저로서의 역할은 계속 새로운 역할이 부여되고 어려워진다.

리소스 매니저로서 OS가 일을 하는데 제일 중요한 것은 얼마나 효율적으로 관리를 하느냐이다.

옛날에는 OS = kernel이다. 전체 OS가 작아서 OS 프로그램 전체가 메인 메모리 안에 다 들어갔다. 그러나 점점 OS가 해야하는 일들이 많아지면서 메인 안에다가 다 집어넣지 않는다. 프로그램을 여러 개의 모듈로 잘라서 프로그램을 작성하고 어떤 모듈은 항상 메모리에 있는다.

그래서 전체 OS 프로그램중 항상 메인 메모리에 올라와있어야 하는 부분커널이라 부른다.

Evolution of Operating Systems

  • Serial Processing
    • OS가 없다.
    • 사람이 한번에 하나씩 프로그램 실행
  • Simple Batch Systems
    • 사람이 한번에 프로그램 10개를 실행
    • 순차적으로 하나씩 실행

Uniprogramming

한 번에 한 프로그램만 실행을 시킨다. 일단 실행을 시작하면 끝날 때까지 다른 프로그램을 실행시키지 않는다.

I/O 작업을 하는동안은 CPU가 쉬게된다.

Multiprogramming

동시에 여러 프로그램들을 메모리에 집어넣을 수 있다. 메모리 안에는 여러 프로그램들이 들어있고 실행하다가 중단시키게 되면 중단했을 때의 CPU의 상태를 저장할 수 있다.

  • Multiprogrammed Batch Systems
    • I/O 작업을 하는동안 CPU 사용을 할 수 없기 때문에 다른 프로그램을 실행시켜기 위해 시작된 것이 Batched multiprogramming system이다.
    • 메모리에 동시에 여러 프로그램을 집어넣고 프로그램들을 번갈아가면서 실행시키는 작업을 OS가 한다.
    • 유니 프로그래밍의 매우 낮은 cpu utilization → 멀티 프로그래밍

멈추는 작업은 OS가 해야한다. 따라서 Combined는 사실 A - OS - B - OS - C 이렇게 프로그램 실행을 시작시키고 중단시키는 작업은 OS가 한다.

Multiprogrammed Batch System에서는 IO작업을 할 때만 프로그램을 바꾼다 → IO 없이 굉장히 오래동안 실행하는 상황이 있을 수 있음

  • Time Sharing System
    • CPU를 여러 프로세서가 번갈아가면서 사용
    • 한 프로세스당 사용할 수 있는 시간이 정해져 있다.
    • 타임 쉐어링 시스템도 IO 작업을 할 때 프로그램이 바뀐다. 타임 쉐어링은 추가적으로 프로그램이 타임아웃이 되어도 바꿔주는 것이다.
    • 시스템 관점에서는 불필요한 프로그램 교체 ⇒ OS 작업에 상당 부분 소요 But, Response time 최소화

  • Multiprogrammed Batched 시스템은 CPU의 사용을 최대화 하는 것이 목적
  • 타임 쉐어링 시스템은 응답 시간을 최소화하는 것이 목적

Major Achievements

  • Process
    • os가 프로그램을 관리하려면 자료들이 필요
    • 프로그램과 관련된 모든 정보들이 적힌 자료 구조
  • memory management
    • 전체 프로그램 중 일부만 메모리에 집어넣는다.
    • 어떤 프로세스한테 얼만큼의 메모리 공간을 줄지 결정
  • infomation protection and securiy
    • 각각의 유저한테 권한이 있는 정보를 다른 유저가 건드리지 못하게 한다.
  • scheduling and resource management
    • 모든 프로그램마다 우선순위가 존재한다. 우선순위가 낮으면 CPU를 더 조금 사용하게 한다.
    • 시스템안에는 하드웨어 자원, 프로세스, 여러 파일들, 데이터, 동기화에 필요한 여러 가지 툴 등등 OS가 관리한다.

Modern Operating Systems

  • 마이크로 커널 아키텍쳐

OS는 굉장히 큰 프로그램이다. 너무 큰 프로그램이기 때문에 한번에 메모리가 다 들어가지 못하고 잘라서 메모리에 집어넣는다. 항상 메모리에 들어있는 부분을 커널이라 한다.

마이크로 커널이란 이 커널을 최소화하는 것이다. 그리고 나머지 프로그램들을 별도의 OS 프로세스로 만든다. 커널 이외의 나머지 OS 서비스들을 별개의 OS 프로세스로 만들어서 실행시킨다.

모든 OS 모듈 간 통신은 커널을 통해서 이루어진다. 모듈 하나를 바꾸고 싶다면 해당하는 모듈이 맞닿는 부분만 수정하면 된다 ⇒ 확장성이 좋다.

마이크로 커널을 사용하는 이유 : 확장성

  • 멀티 쓰레드(Multithreading)

프로그램을 여러 개 동시에 실행할 수 있게 구성한다. 멀티 쓰레드를 사용하면 실행 속도가 빨라진다. CPU가 1개여도 멀티 쓰레드의 속도가 빨라지는 이유는 IO작업이 나와도 자신의 프로그램이 계속 실행되기 때문이다.

  • Symmetric multiprocessing (SMP)

CPU가 여러 개이고, 메모리가 하나이면 여러 개의 CPU가 동시에 OS를 실행시키게 된다. 이 상황에서는 동시에 실행이 되면 안되는 작업이 존재할 수 있다. 그래서 동기화가 필요하게 되고 CPU의 개수에 따라 속도가 배가 되지 않는다.

여러 개의 CPU를 가진 멀티 프로세서에서의 OS 설계. 하나의 시스템 안에 CPU가 많이 있다.

  • distributed OS

각각의 pc들을 연결해서 OS를 한겹 더 씌운다. 그 후 하나의 컴퓨터처럼 사용한다. 동기화부터 시작해서 해야할 일들이 많다.

하나의 CPU를 가지는 여러 시스템을 네트워크로 연결해서 하나의 시스템처럼 사용한다.

  • Object-Oriented Design

마이크로 커널을 사용하게 되면서 OS를 서로 완전히 분리된 별개의 오브젝트로 나누어서 디자인한다. 윈도우 시스템이 마이크로 커널을 사용하고 Object-Oriented Design을 사용하는 대표적인 OS이다.

반면에 유닉스는 마이크로 커널도, Object-Oriented Design도 사용하지 않는다. 그래서 커널을 하나의 덩어리로 사용한다. 리눅스도 비슷하지만 최근에는 Obejct-Oriented Design을 사용한다.

유닉스가 가지는 장점은 속도다. 스위칭 되는 횟수가 적기 때문에 시간 차이가 발생한다.

0개의 댓글