ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2.OS 역사
    CS/OS 2022. 5. 6. 14:46

     

    운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다. 초기 컴퓨터는 크게 3가지로 구성되었다. 카드 리더, 프로세서, 프린터이다.

    카드 리더는 입력기이다. 입력은 종이에 입력할 코드에 맞는 구멍을 뚫어서 넣어주는 방식이었다.

    프로세서는 현재와 비슷한 계산하는 역할이었고, 프린터는 입력에 대한 결과를 종이에 찍어서 보여주었다. 

     

    1. Batch Processing System


    프로그램을 수행할 때마다 컴파일->링크->로딩 순서를 오퍼레이터가 직접 입력해주었다. 이러한 과정을 자동화한 것이 batch processing system 이다

     

    위 과정을 하나의 프로그램으로 작성하여 프로세서의 메모리안에 할당해주었는데, 이 프로그램을 resident monitor라고 불렀다.

     

    2. Multi Programming System


    초창기 메모리의 상태는 resident monitor를 제외하고 단 하나의 애플리케이션만을 할당하여 사용하였다. 하지만 이는 매우 비효율적인 방법이었다.

     

    프로그램을 수행하는 도중에는 계산을 하는 CPU 외에도 입출력을 담당하는 I/O장치가 수행한다. 즉, CPU와 I/O장치가 교대로 동작하는데 I/O장치가 수행하는 동안에는 CPU가 아무것도 할 일이 없었다. CPU가 아무일도 안하는 상태를 idle 상태라고 말한다. 그리고 I/O장치는 CPU에 비해 매우 느리기때문에 idle 상태의 비율이 너무 높았다. 이러한 비효율적인 수행을 해결하기 위해 multiprogramming system이 나왔다.

     

    Multiprogramming system은 메모리에 여러 애플리케이션(프로그램)을 올리는 시스템이다.

    예를 들어 user1, user2 두 개의 애플리케이션이 있을 떄, 처음에는 user1에서 CPU 수행을 하다가 I/O장치 수행으로 넘어간다. 이 순간 CPU는 idle 상태에 있지 않고 user2가 있다는 것을 보고 user2의 CPU 수행을 시작한다. 이렇게 idle상태의 시간을 최대한 줄이고자 하였다.

     

    메모리에 여러 프로그램을 올리면서 많은 문제점 -> 어떤 프로그램을 먼저 수행할 것인가? ( CPU Scehduling )

     

    3. Time Sharing System


    Multiprogramming

    각 사용자(User)들은 모니터와 키보드만을 가지고, 실제 프로세서는 하나의 단말기에 존재하여 이를 공유하여 사용하였다.

     

    예를 들어, 단말기 메모리에 User1 프로그램, User2 프로그램, User3 프로그램이 할당되어 있고 User1이 먼저 CPU를 사용한다고 하자. 멀티프로그래밍에서는 User1이 CPU를 수행하고 있는 도중에는 다른 사용자는 CPU자체를 사용할 수 없다. (CPU가 하나인 환경) 그러므로 다른 사용자들은 User1이 CPU수행을 모두 마칠 때까지(또는 I/O를 만날 때까지) 기다려야한다. 하지만 이는 매우 비효율적이다.

     

    이를 해결하기 위해 나온 것이 time-sharing system이다. 시분할 시스템은 CPU가 하나의 프로그램을 수행하는 시간을 제한하는 것이다.

     

    4. Interrupt


    Program이 Process가 되어 Running 상태일 때, 입출력 연산 혹은 예외상황이 발생하여 처리가 필요할 때 CPU에게 알려 처리를 할 수 있도록 하는 것을 말합니다.
    현대 운영체제는 인터럽트 기반 시스템이다.

    Interrupt

    1. 하드웨어 인터럽트(Hardwore Interrupt)

    부팅이 끝나고 운영체제가 동작하는 동안 수 많은 인터럽트가 발생할 수 있다. 예를 들어, 사용자가 마우스를 움직인다고 가정하자. 이 동작을 컴퓨터는 어떻게 알 수 있을까? 바로 인터럽트를 통해 알 수 있다. 마우스를 움직이는 순간, 마우스에서 인터럽트 전기 신호가 발생하여 이를 CPU에게 보낸다. CPU는 이를 감지하고, 자신이 하던 일을 멈춘 후에 이 인터럽트 신호를 처리하기 위해 운영체제 내부에 있는 인터럽트를 처리하는 코드(interrupt service routine, ISR)로 이동한다.

     

    2. 소프트웨어 인터럽트(Software Interrupt)

    Trap 이라고 불리기도 한다. ( System call 에 의해 발생한다 )

    프로그램 내부의 명령어에 의하여 고정적인 위치에서 발생하는 인터럽트로 동기적 특성을 가집니다.

    소프트웨어 인터럽트는 명령어로 직접 인터럽트 전기 신호를 CPU에게 보낼 수 있다. 즉, 프로그램에서 swi, int 와 같은 어셈블리어 명령어를 수행하는 것이다.

     

    예를 들어, 마우스로 워드 작성 프로그램을 실행시킨다고 하자. 워드 작성 프로그램을 실행시키는 것까지는 하드웨어 인터럽트가 수행된다.(마우스가 이동하여 더블 클릭으로 실행하는 경우이다.) 이 프로그램에서 사용자가 하드디스크에 있는 다른 워드 파일을 읽고 싶은 경우, 소프트웨어 인터럽트를 발생시킨다.

    Software Interrupt(File Open Example)

     

    3. 내부 인터럽트(Internal Interrupt)

    프로그램을 수행하는 도중에 발생하는 예외 상황을 처리한다. 대표적인 예로 0으로 나누는 동작이다. 프로그램의 내부에 result = a / 0; 이와 같은 코드가 있을 때, CPU는 내부 인터럽트를 발생시켜 운영체제안에 있는 ISR로 이동한다. 이 경우에는 DividedByZero 라는 ISR로 이동한다. 여기서 잘못된 동작을 수행한 프로그램을 강제로 종료시킨다.

     

    Reference


    https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-2.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%97%AD%EC%82%AC

     

    [운영체제(OS)] 2. 운영체제 역사

    1. 초기 컴퓨터 운영체제는 컴퓨터가 발전하면서 같이 발전하게 되었다. 초기 컴퓨터는 크게 3가지로 구성되었다. 카드 리더, 프로세서, 프린터이다. 카드 리더는 입력기이다. 입력은 종이에 입

    velog.io

    https://latter2005.tistory.com/43

     

    [운영체제] 시스템 콜과 인터럽트

    시스템 콜 정의를 보면 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스라고 합니다. 간단하게 말하자면 운영체제 서비스를 접근하

    latter2005.tistory.com

     

    'CS > OS' 카테고리의 다른 글

    XV6 - 이론 정리_1  (0) 2022.05.13
    3. Dual Mode / System Call / OS Service  (0) 2022.05.11
    1. 운영체제(OS)란?  (0) 2022.05.06
    6. Thread  (0) 2022.04.27
    4. Process  (0) 2022.04.27

    댓글

Designed by Tistory.