티스토리 뷰


  • 참고 도서는 'Operating System Concepts 8th' 입니다. (포스팅 하단부 참고)
  • 개인공부 후 자료를 남기기 위한 목적으로 포스팅합니다. 내용 상에 오류가 있을 수 있습니다.




1.1 운영체제가 할 일 (What Operating System Do)

하드웨어는 중앙처리장치(프로세서, CPU), 메모리 및 입출력(I/O) 장치로 구성되어 사용자에게 자원을 제공한다. 운영체제는 이러한 자원을 제공하는 하드웨어와 사용자를 연결해주는 인터페이스를 제공해주는 역할을 하며, 크게 사용자 관점(User View)와 시스템 관점(System View)로 나눠 생각할 수 있다.


1.1.1 사용자 관점 (User View)

사용자 관점에서 운영체제는 서비스 제공자(Service Provider)가된다. 운영체제는 사용자에게 응용 프로그램, 네트워크 서비스, 계산 및 프린트 등을 제공할 수 있다. 물론 일부 컴퓨터는 사용자 관점이 존재하지 않거나 매우 작은 경우도 있다.


1.1.2 시스템 관점 (System View)

컴퓨터(시스템)의 관점에서 운영체제는 컴퓨터<->하드웨어간의 연결을 맺어주는 자원 할당자(Resource Allocator / Manager)로 볼 수 있다. 운영체제에 대한 또다른 시스템 관점으로 여러 가지 하드웨어 장치와 사용자의 장치를 제어할 필요성 때문에 제어 프로그램(Control Program)이 될 수 있다


1.1.3 운영체제(OS)의 정의

일반적으로 운영체제에 대한 완벽한 정의는 없다. 하지만 운영체제는 제어 프로그램(Control Program)으로써 컴퓨터의 부적절한 사용을 막거나, 사용자 프로그램의 실행을 제어한다.




1.2 컴퓨터 시스템의 구성

일반적으로 하드웨어(기본적으로 계산에 필요한 자원을 제공), 운영체제(사용자와 시스템간의 인터페이스를 제공), 응용 프로그램(사용자의 계산 문제를 시스템의 자원을 통해 해결하기 위해 정의된 프로그램), 사용자로 나뉜다.


1.2.1 컴퓨터 시스템 동작 (Computer-System Operation)

일반적인 현대의 컴퓨터 시스템은 공유 메모리의 접근을 지원하는 공용 버스(common bus)로 연결된 하나 이상의 프로세서(CPU)와 장치 제어기(Device Contorls)들로 구성되어 있다. 프로세서와 장치 제어기들은 메모리 사이클을 얻기 위해 경쟁하면서 병행 실행 될 수 있다.


부트스트랩 프로그램(bootstrap program)이란 놈이 있다. 이 프로그램은 컴퓨터가 구동을 시작하기 위한 초기 프로그램으로써 단순한 형태를 가지고 있으며, 시스템 초기화, 운영체제 로딩의 역할을 한다. 부트스트랩이 완료되면 init와 같은 초기 프로세스를 실행한 후 시스템의 이벤트(인터럽트, Interrupt)를 기다리는 상태가 된다. 하드웨어는 시스템 버스를 통해 프로세서(CPU)로 신호를 보내 인터럽트를 발생 시킬 수 있으며, 소프트웨어는 시스템 콜(System Call)을 통한 특별한 연산으로 인터럽트를 발생시킬 수 있다.



인터럽트가 발생했을 때 프로세서의 레지스터 정보를 변경해야할 필요가 있다면 인터럽트 루틴은 반드시 어딘가에 현재의 상태를 저장했다가 인터럽트가 종료된 후 인터럽트 호출 전의 상태로 복원해야 한다.


1.2.2 저장장치 구조

프로세서(CPU)는 주기억장치(RAM)을 통해서만 명령을 읽어들일 수 있으며, 실행 하려고하는 모든 프로그램은 반드시 메모리로 저장되어야 한다. 메모리는 워드(Word, 4byte)의 배열을 제공하며, 각 워드는 고유의 주소를 가진다. 기억장치 연산이 실행될 때 Load는 RAM->CPU Register 이며, Store는 CPU Register->RAM이 된다.

이상적으로 프로그램과 데이터들이 HDD와 같은 보조기억장치에 적재되는 거보다는 주기억장치(RAM)에 영구히 보존되기를 원하지만 다음과 같은 이유로 인해 불가능 하다.

1. RAM에 데이터를 영구히 저장하기에는 너무 작다.

2. RAM은 전원이 끊어지면 내용이 사라지는 휘발성 저장장치이다.




위 그림에서 상위 계층일 수록 용량은 작고 속도는 빠르나 가격이 비싸다. 하위 계층일 수록 용량도 크고 가격도 싼 편이지만 속도가 느리다.    

    

1.2.3 입출력 구조 (I/O Structure)

입출력 방식에는 '인터럽트 기반 전송'과 'DMA 기반 전송' 두가지가 있다.




1.3 컴퓨터 시스템 구조

컴퓨터 시스템은 사용된 프로세서의 수에 따라 범주를 나눌 수 있다.


1.3.1 단일처리기 시스템 (Single-Processor System)

단일처리기 시스템은 사용자 프로세서의 명령어를 포함하여 범용 명령어 집합을 실행할 수 있는 하나의 주 프로세서(CPU)를 가진다.


1.3.2 다중처리기 시스템 (Multiprocessor System)

병렬 시스템(Parallel System)이라 불리기도 한다. 2개 이상의 프로세서(CPU)로 구성된 하나의 시스템이다. 다수의 프로세서로 구성되지만 주기억장치를 공유한다.


다중처리 방식의 두가지 유형

  • 비대칭적 다중처리(asymmetric multiprocessing) : 하나의 프로세서가 다른 프로세서와 주,종 관계로써 종 프로세서가 주 프로세서의 명령을 처리. 주 프로세서는 종 프로세서로 작업을 할당한다.

  • 대칭적 다중처리(symmetric multiprocessing) : 모든 프로세서가 대등하다. 각 프로세서는 고유의 레지스터 집합과 지역적 성격의 캐시를 가지고 있다. (물리적 RAM은 공유한다)


( 대칭적 다중처리 구조 )


1.3.3 클러스터형 시스템 (Clustered System)

2개 이상의 독자적 시스템의 LAN 연결로 구성되어 있으며, 데이터 저장공간을 공유한다. 클러스터형 시스템 역시 다중처리 시스템과 같이 비대칭형, 대칭형으로 구분할 수 있다. 비대칭형 클러스터링 모드에서는 하나의 컴퓨터가 긴급 대기(hot-standby) 모드에서 다른 활성 컴퓨터들을 감시한다. 활성화된 컴퓨터 중 하나에서 문제가 발생한다면 긴급대기 모드의 호스트가 활성 상태가 된다. 대칭형 클러스터링 모드에서는 모든 컴퓨터가 응용 프로그램을 실행하고 서로를 감시한다. 가용한 하드웨어를 모두 사용하므로 비대칭 클러스터링 보다 효율이 좋다.


1.3.2의 다중처리기 시스템이나 1.3.3의 클러스터형 시스템의 두 경우 모두 다중 CPU 시스템(Multiple-CPU System) 으로 묶을 수 있으며 이로 인한 장점은 다음과 같다.

  1. 증가된 처리량 : 1개의 프로세서가 일하는것 보다. n개의 프로세서가 일을 처리하는게 더 빠르다. 하지만 속도 증가율은 n배가 되지않고 n배 보다는 작다. 

  2. 규모의 경제(economy of scale) : 규모의 경제.. 이게 무슨 말인지 감이 안잡힌다. 대충 프로세서가 같은 주변장치, 보조기억장치, 전원장치 등을 공유함으로써 발생하는 경제적 이득을 일컫는 것 같다. 

  3. 증가된 신뢰성 : 4개의 프로세서가 작동 중에 1개의 프로세서가 작동을 멈춰도 계속적인 서비스가 가능하다. 이를 '우아한 퇴보(graceful degradation)' 또는 '결함 허용(fault tolerant)'이라 한다.



Operating System Concepts

저자
Abraham Silberschatz, Peter B. Galvin, Greg Gagne 지음
출판사
홍릉과학출판사 | 2013-02-15 출간
카테고리
컴퓨터/IT
책소개
『Operating System Concepts』는 9개의 주요...
가격비교


저작자 표시 비영리 변경 금지
신고
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.