ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS101] 운영체제 역사 및 기능
    테크 2023. 9. 5. 17:24

     

    본 글은 2023.09.05에 새롭게 업데이트되었습니다.

     

    서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 <Operating System Concepts> 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다.

     

    목차

    • 운영체제의 역사
    • 운영체제의 기능

     

    운영체제의 역사

    운영체제의 역사는 크게 3단계로 나눌 수 있다.

    • Phase 1: 운영체제의 시작, 메인 프레임 컴퓨터의 보편화 (1950 - 1960)
    • Phase 2: 운영체제 기반 설립, 인터넷 보편화 전 (1960 - 1990)
    • Phase 3: 인터넷 보편화 후, 오늘날 (1990 - 현재)

     

    Phase 1: 운영체제의 시작

    노동력은 값싸고 하드웨어는 매우 비싸던 시절이다. 그래서 CPU 사용률을 최대화하는 것이 매우 중요했다. 연구자들이 이를 위해 어떠한 노력을 했는지 시간 순서대로 살펴보자.

     

    1. 사람의 노동 = 운영체제
    2. 사람의 개입을 최소화시키기
    3. I/O 처리동안 CPU 사용하기
    4. 동기적 I/O의 경우에도 CPU 사용하기

     

    1. 사람의 노동 = 운영체제

    사람이 어떻게 운영체제처럼 동작했는지 알아보기 위해서 운영체제 역할을 했던 노동자의 사이클을 살펴보자. 그전에 일(job)이란 프로세스라는 개념이 생겨나기 전에 사용한 단어이며, 다른 일들과 종속성이 없는 일종의 프로그램을 뜻한다.

     

    1. 사용자로부터 펀치 카드 형태의 일을 받는다.
    2. 펀치 카드를 컴퓨터에 로딩하고 수행한다.
    3. 수행 결과를 프린터로 출력한다.
    4. 출력 결과를 사용자에게 전달한다.

     

    사이클을 살펴보면 상당히 체계적이다. 하지만 커다란 문제점이 있다. 사람의 개입이 너무 많아서 일과 일 사이의 전환(job-to-job translation)을 하는데 많은 시간이 들었다.

     

    2. 사람의 개입을 최소화시키기

    간단한 배치 모니터(batch monitor)가 등장하던 시기이다. 여기서 배치(batch)란 여러 개의 동일한 요소를 갖는 묶음을 말한다. 이전의 사람 개입 문제를 최소화시키기 위해서 I/O 프로세스를 수행하는 기계를 만들었다. 일 묶음(batch of jobs)을 하나의 테이프에 기록하고, 컴퓨터는 테이프에 있는 일들을 순차적으로 처리하여 일과 일 사이의 전환을 하는데 걸렸던 속도 문제를 해결했다.

     

    3. I/O 처리동안 CPU 사용하기

    이제까지는 I/O 작업을 수행하는 동안 CPU를 사용하지 못했다. 이러한 상황을 전문적인 용어로 'CPU가 busy waiting 또는 idle한 상태'라고 말할 수 있다. 이를 해결하기 위해서 SPOOL(Simultaneous Peripheral Operation OnLine)이라는 개념이 등장했다. SPOOL이란 CPU가 I/O의 시작과 끝만 관리하고 그 사이에는 다른 일들을 수행하는 것을 말한다. 인터럽트(interrupt)를 지원하는 배치 모니터가 등장한 것이다. 하지만 여전히 한계점이 존재했다. 비동기적 I/O 처리는 가능하지만 동기적인 I/O 처리는 수행하지 못했다.

    • 동기적 I/O (Synchronous I/O): 어떤 작업이 I/O 수행을 하면 그 작업의 I/O 수행이 종료될 때까지 기다린 후에 CPU가 수행하는 방식을 뜻한다. 예를 들어서 입력 작업(input operation)이 동기적 I/O에 속할 수 있다. 입력을 받아야만 수행이 가능한 프로그램이 있다고 가정해보자. 이 프로그램은 입력을 받지 않으면, 입력을 받고 난 후의 작업을 처리할 수 없을 것이다.
    • 비동기적 I/O (Asynchronous I/O): 어떤 작업이 I/O 수행을 하면 그 작업의 I/O 수행이 종료될 때까지 기다리지 않아도 CPU가 다른 작업을 하다가 I/O 수행이 종료되면 그에 대한 추가 작업을 CPU가 다시 수행하는 방식을 뜻한다. 예를 들어서 출력 작업(output operation)이 비동기적 I/O에 속한다. 대부분의 프로그램은 출력이 일종의 결과물이기 때문에, 출력을 하는 동안 다른 일을 수행한다고 하더라도 일을 수행하는 것에 지장이 없다. 

     

    4. 동기적 I/O의 경우에도 CPU 사용하기

    동기적 I/O의 경우에도 CPU를 수행시키는 방법이 있을까? 이를 위해 멀티 프로그램이 가능한 배치 모니터(multiprogrammed batch monitor)가 등장하게 된다. 여기서 멀티프로그래밍 차수(degree of multiprogramming)이라는 개념이 생겼다. 멀티프로그래밍 차수는 현재 메인 메모리에 존재하는 활성화된 일(active job)의 개수를 뜻한다. 활성화된 일이란 수행 시작은 했지만 종료는 안된 것을 말한다. 멀티 프로그램이 가능한 배치 모니터는 멀티프로그래밍 차수의 값이 1 초과인 것을 뜻한다.

     

    연구자들은 CPU 사용률을 높이기 위해 멀티 프로그램이 가능한 배치 모니터를 만들기로 결심했다. 하지만 이러한 모니터를 만들기 위해서는 반드시 3가지(메모리 보호, 메모리 재배치, 동시성 프로그래밍)의 문제를 해결해야만 했다.

     

    1. 메모리 보호 (Memory Protection)

    어떤 일이 다른 일이나 운영체제 영역을 침범하여 발생하는 문제를 막는 것을 뜻한다. 먼저 일이 사용하는 메모리의 시작 주소를 베이스 레지스터(base register)에 저장한다. 그리고 일이 사용하는 메모리의 크기를 경계 레지스터(limit register)에 저장하여, 현재 접근하려는 주소의 값이 베이스 값과 베이스+경계 값 사이에 있는지 확인한다.

    메모리 보호

     

    2. 매모리 재배치 (Memory Relocation)

    일이 메모리의 어느 위치에 로드되는지 알 수 없기 때문에 임의의 주소에서도 문제없이 수행 가능하도록 하는 것을 뜻한다. 일이 항상 0번지에 로드된다고 가정한다. 그리고 주소 값을 계산한다. 이때의 주소 값을 논리 주소라고 한다. 실제 메모리에 로딩될 때는 베이스 레지스터에 저장된 값을 더해서 물리 주소를 계산한다. 메모리 보호와 메모리 재배치를 성공적으로 수행하기 위해 하드웨어인 MMU(Memory Management Unit)가 서포트한다.

    • 논리 주소 (Logical Address): CPU가 생성하는 주소이다.
    • 물리 주소 (Phisical Address): MMU에 의해 일련의 변환 과정을 거친 실제 메모리 주소를 뜻한다. 

     

    MMU - relocation register는 base register와 같음

     

     

    3. 동시성 프로그래밍 (Concurrent Programming)

    여러 일들이 메모리에 올라가면서 공유 자원이나 공유 데이터에 동시에 접근해서 발생하는 문제를 막는 것을 뜻한다. 이에 대한 내용은 별도로 포스팅을 하겠다.

     

    Phase 2: 운영체제 이론의 정립

    Phase 2는 Phase 1과는 달리 하드웨어가 점점 값싸지고 노동력이 비싼 시기다. 이 때문에 노동의 효율성의 극대화를 꿈꾸기 시작한다. 당시 한 개의 중앙 컴퓨터(server)에 CRT를 여러 개 연결하여 여러 사람들이 동시에 서버를 사용하도록 했다. 서버 사용자들이 혼자 서버를 사용한다는 느낌을 주는 것이 중요하게 되었다. 그래서 응답 시간(response time)이 얼마나 짧은지, 개인정보가 얼마나 잘 보관되는지가 운영체제의 중요한 척도가 되었다.

     

    Phase 3: 인터넷의 보편화

    인터넷이 보편화되면서 운영체제는 인터넷 프로토콜 이해도가 높으며 동시에 멀티미디어를 효과적으로 처리한다. Youtube의 보편화를 생각해보라. 동영상 재생이 끊기지 않게 처리하는 것이 얼마나 중요한 것인지 쉽게 상상할 수 있다. 이 때문에 중요한 일을 먼저 처리하는 우선순위 기반 스케줄링에서 연속적인 미디어(continuous media)를 원활히 처리하기 위한 대역폭(bandwidth) 스케줄링으로 변화했다.

     

    운영체제의 기능

    • 시스템 매니저 (Coordinator)
    • 컴퓨터 도우미 (Illusion Generator)
    • 표준 라이브러리 제공 (Standard Library Provider)

     

    시스템 매니저 (Coordinator)

    CPU 스케줄러(CPU scheduler), 메모리 관리 시스템(memory management system), 입출력 장치 시스템(I/O device system), 네트워크 시스템(network system), 그리고 파일 시스템(file system)을 관리한다.

     

    UNIX 기준으로는 I/O 디바이스 타입을 세 가지로 나눌 수 있다.

    • Character I/O device: I/O 단위가 바이트(byte)이다. 예) 마우스, 키보드
    • Block I/O device: I/O 단위가 블록(block)이다. 예) 하드디스크
    • Network I/O device: 네트워크를 통해 이루어지는 I/O 처리를 담당한다. 이를 위해 별도의 큐(queue)가 존재한다.

     

    컴퓨터 도우미 (Illusion Generator)

    대부분의 사람들이 자신의 컴퓨터에 연결되어 있는 장치들이 어떻게 컴퓨터와 상호작용하는지 알 수 없을 것이다. 하지만 이에 대해서 잘 몰라도 우리는 컴퓨터를 쉽게 사용할 수 있다. 왜 이런 것이 가능하냐고? 운영 체제는 사용자가 하드웨어를 잘 몰라도 컴퓨터를 사용할 수 있도록 도와준다.

     

    표준 라이브러리 제공 (Standard Library Provider)

    운영체제는 사용자가 알게 모르게 여러 가지 기능을 가지고 있는 함수들을 제공한다. 용도에 맞게 카테고라이징 되어있는 함수들의 묶음을 라이브러리라고 한다.

     

Designed by Tistory.