ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 운영체제(Operating System)의 정의
    Computer Science/운영체제 2021. 2. 17. 23:28

     

     

     

     

    1. 운영체제(Operating System)의 정의

     

    컴퓨터 시스템은 하드웨어, 운영체제, 응용 프로그램, 사용자로 구성된다.
    하드웨어는 CPU(중앙 처리 장치), 메모리, 입출력 장치로 구성된다. -> 기본 계산용 자원 제공.

    운영체제는 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조정한다.
    자원을 적절하게 사용할 수 있는 방법을 제공하여, 그 자체로는 유용한 기능을 수행하지 못하고 다른 프로그램이 유용한 작업을 수행할 수 있는 환경을 제공한다.

     

     

     

    2. 시스템의 종류

    일괄처리 시스템 (Batch System) : 비슷한 작업을 일괄적으로 처리하여 속도를 확보하는 시스템.
    기계식 입출력 장치와 전자 장치의 속도의 차이로 cpu가 종종 쉬는 문제가 발생.

    다중 프로그래밍 시스템 (Multiprogramming System) : 메모리에 여러 개의 프로그램을 동시에 적재하여, 실행하던 프로그램이 대기 상태에 들어가면, 그 동안에 다른 프로그램을 실행할 수 있는 시스템.

    시분할 시스템 (Time-sharing System): cpu가 여러 프로그램들을 짧은 시간에 전환하여 여러 프로그램이 동시에 실행되고 있는 듯한 효과를 만들어 상호 작용을 원활하게 만들어주는 시스템.

    시분할 시스템과 멀티프로그래밍 시스템은 여러 작업들을 동시에 메모리에 올리는 방식이다. 때문에 운영체제는 메모리에 자리가 없는 경우를 고려해 어떤 작업을 먼저 처리할지 정해야한다.

    이러한 과정을 작업 스케줄링(Job scheduling), CPU 스케줄링(CPU Scheduling)이라고 한다. 만약 메모리를 너무 많이 사용하게 되는 경우, 반응 시간을 줄이기 위해 가상 메모리(Virtual memory)를 사용한다. 가상 메모리는 보조기억장치의 일부를 메인 메모리처럼 사용하는 기술로, 실제 물리 메모리(Physical memory)보다 더 큰 프로그램을 구동할 수 있도록 해준다.

    프로그램(Program) : 실행할 수 있는 명령어의 집합.
    프로세스(Process) : 메모리에 적재되어 실행되고 있는 프로그램.
    가상 메모리(Virtual memory) : 메모리를 실제보다 용량이 더 큰 것처럼 활용할 수 있게 하는 기법. 페이징 기법과 보조기억장치를 활용하여 구현한다.

    다중 프로세서 시스템 == 병렬 시스템

    멀티 프로세서 시스템(Multiprocessor Systems) : 멀티 프로세서 시스템은 이젠 일반적인 컴퓨터 시스템이 되었다. 멀티 프로세서 컴퓨터는 2개 이상의 프로세서를 가지고 있다. 처음에는 서버 컴퓨터에 적용됐는데, 지금은 모바일 기기도 멀티 프로세서 시스템으로 만들어진다. 멀티 프로세서 시스템은 몇가지 장점을 가지고 있다.

    처리량(Throughput)의 증가: 당연하겠지만 프로세서가 늘어나면 더 빠른 시간 안에 연산을 수행할 수 있다. 물론 프로세서를 계속 늘린다고 성능이 한없이 좋아지는 것은 아니며, 증가 비율이 1:1인 것도 아니다.
    규모의 경제: 멀티 프로세서 시스템은 여러 대의 싱글 프로세서 시스템을 구축하는 것보다 돈이 적게 든다. 멀티 프로세서 시스템은 주변장치(Peripherals)를 공유할 수 있기 때문이다.
    신뢰성의 증가: 만약 기능이 여러 프로세서에 분산될 수 있다면, 하나의 프로세서가 작동을 멈춰도 전체 시스템은 느려질 뿐 멈추지 않는다. 이런 식으로 성능이 나빠지지만 작동은 가능하도록 하는 것을 우아한 성능 저하(Graceful degradation)라고 부른다. 그리고 이렇게 성능을 저하함으로써 작업을 계속 유지하는 시스템을 장애 허용 시스템(Fault tolerant)이라고 부른다.
    멀티 프로세서 컴퓨터는 2개 이상의 프로세서를 가지고 있다. 멀티 프로세서 시스템은 비대칭 멀티프로세싱(Asymmetric multiprocessing)과 대칭 멀티프로세싱(Symmetric multiprocessing) 두 가지로 나뉜다. 비대칭 멀티프로세싱은 관료주의적인 회사다. 보스 프로세서(Boss processor)가 시스템을 제어하고, 다른 프로세서들은 보스의 지시를 받게 된다. 이렇게 하면 부하 분산(Loadbalancing)을 효율적으로 할 수 있다. 대신 보스 프로세서가 작동을 멈추면 일꾼 프로세서들도 멈추게 된다. 대칭 멀티프로세싱은 보스가 없는 자유로운 회사다. 모든 프로세서들은 하나의 메모리를 공유하고, 동일한 작업을 병렬적으로 수행한다. 만약 프로세서에 이상이 생겨 작동을 멈춰야 한다면 자신이 수행하던 작업을 다른 프로세서들에게 나눠주고 자신만 재부팅한다.

    대부분의 컴퓨터 시스템은 대칭 멀티프로세싱을 사용한다. 대칭 멀티프로세싱은 보스가 없는 자유로운 회사다. 모든 프로세서들은 하나의 메모리를 공유하고, 동일한 작업을 병렬적으로 수행한다. 만약 프로세서에 이상이 생겨 작동을 멈춰야 한다면 자신이 수행하던 작업을 다른 프로세서들에게 나눠주고 자신만 재부팅한다. 그리고 재부팅 후 문제가 해결된다면 다시 작업을 나눠 받는다. 비대칭 멀티프로세싱 시스템의 단점을 보완할 수 있는 아키텍처다.

    멀티 프로세서 시스템의 CPU들은 각자의 레지스터와 캐시를 갖고 있다. 만약 CPU가 여러 개라면 돌아가면서 작업을 해야 하는데, 그러면 다른 CPU가 작업을 하는 동안 다른 CPU들은 놀게 된다.

     

    멀티코어 (Multicore) : CPU가 늘어나면 프로세서간 통신을 하는 데 많은 비용이 들기 때문에 효율이 계속 좋아지지는 않는다. x축을 CPU 수, y축을 성능이라고 하면 그래프는 로그함수 형태로 나타난다. 조별 과제를 생각해보자. 내 아이큐 150, 네 아이큐 150을 합치면 총 300이지만, 머리가 많다고 좋은 것은 아니다. 사람이 늘어날수록 커뮤니케이션의 어려움은 커진다.
    최근 CPU 설계 트렌드는 하나의 칩(Chip)에 코어(Cores)를 늘리는 것이다. 이러한 멀티 프로세서 시스템을 멀티코어(Multicore)라고 부른다. 코어는 동일한 성능의 CPU 여러 개를 1개의 칩 속에 집접한 것이라고 보면 된다. 칩 내부의 통신(On-chip communication)이 칩 사이의 통신(Between-chip communication)보다 더 빠르기 때문에 여러 개의 칩에 하나의 코어만 두는 시스템보다 더 효율적이다. 뿐만 아니라 하나의 칩에 여러 코어를 담으면 전력을 더 적게 사용한다.


    클러스터드 시스템 (Clustered Systems) : 멀티프로세서 시스템의 일종인 클러스터 시스템(Clustered system)은 여러개의 CPU을 모아 놓은 구조다. 클러스터 시스템은 여러개의 개별 시스템(또는 노드)들이 하나로 모여있다는 점에서 앞서 설명한 멀티프로세서 시스템과는 조금 다르다. 멀티프로세서 시스템은 여러 CPU가 하나의 시스템을 이루는 것이지만, 클러스터 시스템은 여러 독립적인 시스템이 모여 하나의 시스템을 이루는 것이다. 이런 시스템을 약결합(Loosely coupled)라고 부르며, 각 노드들은 싱글 프로세서 시스템일수도 있고, 멀티코어 시스템일 수도 있다.

    클러스터의 정의가 딱 명확히 정해져 있지는 않다. 단지 클러스터 컴퓨터들이 하나의 저장소를 공유하고, 이를 LAN(Local-Area Network)과 같은 네트워크로 연결한 시스템을 보통 클러스터 시스템이라고 부른다. 클러스터링은 고가용성(High-availability) 서비스를 제공하기 위해 사용되며, 단일 컴퓨터보다 훨씬 저렴하게 비슷한 성능을 낼 수 있다.

    클러스터 시스템은 비대칭 클러스터링(Asymmetric clustering)과 대칭 클러스터링(Symmetric clustering)으로 나뉜다. 비대칭 클러스터링에서 하나의 장비는 상시 대기 모드(Hot-standby mode)로 작동하며, 서버를 동작시키고 있는 다른 노드들을 모니터링할 뿐 별도의 작업은 수행하지 않는다. 만약 서버에 문제가 생기면 이 상시 대기 노드가 서버로서 작동하게 된다. 대칭 클러스터링은 두개 이상의 노드가 작업을 수행하는 동시에 다른 노드들을 모니터링하는 구조다. 이러한 구조는 하드웨어의 자원을 최대로 사용할 수 있어 더 효율적이다.

    클러스터 시스템은 여러개의 컴퓨터 시스템이 네트워크로 연결되어 있는 구조이기 때문에 고성능 컴퓨팅 환경(High-performance computing environments)을 제공할 수 있다. 다만 단일 시스템에 비해 유지보수가 힘들고, 시스템의 성능이 네트워크 환경에 많은 영향을 받는다는 단점이 있다.

    분산 시스템 : 네트워크를 이용해 작업 처리. 적절한 자원 공유로 계산 속도와 신뢰성 증가.
    - 클라이언트 서버 시스템
    - P2P 시스템 : 각 컴퓨터가 서버이자 클라이언트
    - 클러스터 시스템 : 물리적으로 많은 cpu를 한곳에 모아서 특정 작업 수행. 각 cpu는 서로 연결되어 상호작용하여 고속 처리 서비스 지원.
    -- 대칭적 클러스터 시스템
    -- 비대칭형 클러스터 시스템 (호스트 cpu가 있음)

    실시간 시스템 : 시간 제약이 엄격한 목적에 사용
    - 연성 실시간 시스템 : 절대적으로 시간만을 중요시하지 않음
    - 경성 실시간 시스템 : 빠른 시간이 절대적으로 요구될 때

     

     

     

    3. 컴퓨터 부팅 과정

    1. ROM에 저장된 부츠트랩을 실행.
    2. 부츠트랩은 메모리, cpu 레지스터를 초기화.
    3. 부츠트랩이 OS를 메모리에 로드.
    4. os는 첫번째 프로세스를 실행.

    현대의 일반적인 컴퓨터 시스템은 여러개의 CPU와 장치 컨트롤러(Device controllers)로 구성되어 있다. 그리고 이들은 공통버스(Commmon bus)로 이어져 메모리를 공유한다.디바이스 컨트롤러가 작업을 도와주며 모든 기계들이 동기화되어 적절히 작동한다.

    'Computer Science > 운영체제' 카테고리의 다른 글

    인터럽트(Interrupt)와 폴링(Polling)  (0) 2021.02.18
Designed by Tistory.