본문 바로가기

운영체제/linux

운영체제 기본적인 개념과 그에 대한 답변

1. 다음 용어들에 대하여 설명하여라.


(a) Batch process : 


일괄 처리(batch processing)란 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식이다. 초기의 일괄처리 방식은 사용자와 상호작용하는 것이 불가능했지만, 운영 체제가 발전함에 따라 프로그램 입출력를 통해 상호작용하는 것이 가능해졌다. 일괄 처리는 1950년대 전자 컴퓨팅 초기 시절 이후 메인프레임 컴퓨터와 함께하고 있다.


(b) interactive system :


컴퓨터 시스템 상에서 임의의 작업을 처리할 때 이용자와 컴퓨터 사이의 실시간 대화를 기반으로 하는 시스템으로 시스템의 이러한 운영방식은 일괄 처리 시스템과 대조된다. 대화식 시스템의 장점은 이용자가 프로그램 실행이 초기 단계로부터 수신된 완료되지 않은 부분 결과에 근거하여 입력과 제어 지시를 선택할 수 있다는 것이다. 대화식 사용자 환경에서는 한 프로세스가 CPU를 독점하여 다른 사용자의 서비스를 방해하는 것을 막기 위해 서 선점이 필수적이다. 비록 프로세스가 고의적으로 영원히 수행하지는 않겠지만 프로그램 버그 때문에 이한 프로세스가 무기한 다른 사용자의 수행을 불가능하게 할 지 모른다. 선점은 이러한 행위를 막기 위해 필요하다. 서버는 다수의 사용자를 서비스하고 이들은 또한 신속함을 원하기 때문에 여기에 속한다. 


(c) multi-task system: 


멀티태스킹(영어: multitasking) 또는 다중작업(이하 멀티태스킹)은 다수의 작업(혹은 프로세스, 이하 태스크)이 중앙 처리 장치(이하 CPU)와 같은 공용자원을 나누어 사용하는 것을 말한다. 엄밀히 말해 한 개의 CPU를 가진 개인용 컴퓨터가 특정 순간에 수행할 수 있는 태스크의 개수는 하나뿐이다. 따라서 멀티태스킹은 스케줄링이라는 방식을 사용하여 컴퓨터 사용자에게 병렬 연산이 이루어지는 것과 같은 환경을 제공한다. 스케줄링 방식은 CPU 사용시간을 일정한 기준에 따라 나누어 각 태스크가 사용할 수 있도록 분배한다. 분배받은 시간동안 태스크가 CPU를 사용할 때 다른 태스크들은 자신의 차례가 오기를 기다린다. 분배받은 시간이 종료되어 태스크가 사용하던 CPU를 다른 태스크가 사용할 수 있도록 재배정하는 것을 문맥교환이라 하는데 스케줄링에서 이 문맥교환이 충분히 자주 발생하게 되면 컴퓨터 사용자는 병렬 연산이 이루어진 것처럼 느끼게 된다. 멀티태스킹은 다수의 CPU를 내장한 컴퓨터(즉, 멀티프로세서)에서도 유효한데, 멀티태스킹을 사용하게 되면 탑재한 CPU의 숫자보다 많은 수의 태스크를 동시에 수행할 수 있게 된다. 일반적으로 운영 체제는 아래 나열된 스케줄링 방식중 하나를 채택해서 사용한다.

멀티프로그래밍 시스템에서는 현재 실행되고 있는 태스크는 다른 외부 이벤트를 기다려야 하는 상황이 되거나, 컴퓨터의 스케줄러가 강제로 실행 중인 태스크를 중단시킬 때까지 계속 진행된다. 멀티 프로그램 시스템은 CPU 사용률을 극대화할 수 있도록 설계되었다.

시분할 시스템에서는 현재 실행되고 있는 태스크가 스스로 혹은 하드웨어 인터럽트 따위의 외부적인 이유로 중앙 처리 장치의 점유를 포기해야 한다. 시분할 시스템은 다수의 프로그램이 거의 동시에 수행될 수 있도록 해준다. "시간을 분할한다"라는 표현은 단말에 위치한 사용자가 함께 공유할 수 있는 IBM사의 TSO, CP/CMS와 같은 컴퓨터를 가리키기 위해 쓰였다.

실시간 시스템에서는 외부 이벤트가 발생하였을 때 몇 개의 대기 중인 태스크들이 CPU를 점유할 수 있도록 보장해 준다. 실시간 시스템은 시간 내에 처리하여야 하는 산업 로봇과 같은 기계적인 장치를 제어하기 위해 사용된다.


(d) multi core processor : 


멀티코어 프로세서는 보다 강력한 성능과 소비 전력 절감, 그리고 여러 개의 작업을 보다 효율적으로 한 번에 처리하기 위해 두 개 이상의 프로세서가 붙어있는 집적회로를 가리킨다. 듀얼코어는 한 컴퓨터 내에 두 개 이상의 독립된 프로세서가 설치된 경우와 종종 비교되곤 하는데, 듀얼코어의 경우 두 개의 프로세서가 실제로는 하나의 소켓을 통해 꽂혀지기 때문에 연결이 더 빠르다. 이론적으로는 듀얼코어 프로세서가 싱글코어 프로세서보다 두 배나 더 강력해야 하지만, 실제로는 듀얼코어 프로세서가 싱글코어 프로세서보다 약 1.5배 정도 더 강력하기 때문에, 약 50% 정도의 성능 향상만을 기대할 수 있는 것으로 알려지고 있다.


(e) multi processing system : 

시스템은 프로세서(처리기)를 많이 사용해 신뢰성, 가용성, 컴퓨터능력 등을 증가시킬 수 있다. 하드웨어 비용이 저렴해짐에 따라 단위 시간당 처리량을 늘리기 위해 마이크로프로세서 여러 개를 연결해 다중 프로세서를 만드는 것도 많이 보편화되었다. 이 방법으로 고가의 초고속 프로세서를 사용하지 않고도 대형 컴퓨터에 근접하는 능력을 얻을 수 있다. 이렇게 다중처리는 막대한 비용을 들이지 않고도 단일프로세서 컴퓨터 시스템의 계산능력을 증대 시킬 수 있는 길을 제공해준다. 다중 처리를 위해 운영체제를 구성하는 기본 방법에는 비대칭(주/종)적 구성과 대칭적 구성이있다


(e) distributed system :


시스템 마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요할 때 통신하는 시스템을 일반적으로 분산 처리 시스템(Distributed Processing System)이라고 한다. 최근의 컴퓨터시스템은 여러 개의 물리적 프로세서에 연산을 분산하는 경향이 있다. 이유는 자원 공유, 연산속도향상, 신뢰성과통신때문이다. 분산 시스템을 구성하는 방법은 기본적으로 두 가지다. 첫째, 강결합(단단히 결합된) 시스템으로프로세서(처리기)가 기억 장치와 클록(Clock)을 공유하며, 공유된 기억장치를 통해 통신한다. 둘째, 약결합(느슨하게 결합된) 시스템으로 둘 이상의 독립된 컴퓨터시스템을 통신선으로 연결한다. 


(f) Cloud services : 


클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다.



2. 하드웨어를 방어하기 위하여, 세 가지를 사용한다. 즉, CPU 방어, 메모리 방어, IO 방어가 있다. 각각의 원리를 설명하라


(1) CPU 방어 : 


특권모드에서 프로세스의 running 시간을 설정할 수 있다. (하나의 프로세스가 CPU를 무한히 사용해서는 안 된다. )

운영체제가 CPU에 대한 제어를 유지할 수 있도록 보장해야한다. 사용자 프로그램이 무한루프체 빠지거나 시스템 서시브를 호출하지 않아서 제어가 운영체제로 복귀하지 않는 경우가 발생해서는 안된다. 이러한 목적을 위해 타이머를 사용한다. 지정한 시간이 지나면 인터럽트가 발생되어 제어권이 운영체제로 넘어간다. 이러면 운영체제는 인터럽트를 치명적인 오류로 취급하거나 또는 프로그램에 더 많은 시간을 줄 수 있다. 


(2) 메모리 방어 : 


사용 메모리의 범위를 벗어나면 하드웨어적으로 fault가 발생한다. (다른 프로세스의 메모리 영역을 침범할 수 없다)

메모리 보호는 컴퓨터 메모리의 사용을 제어하는 방법이며 모든 운영 체제에서 중요한 쟁점사항 중 하나이다. 운영 체제에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것이 메모리 보호의 주된 목적이다. 이를 통해 프로세스 내의 버그가 다른 프로세스의 동작에 영향을 미치는 것을 예방하며 악성 소프트웨어가 시스템에서 허가되지 않은 접근권한을 갖고 시스템에 영향을 끼치는 것을 막아준다.

세그먼트 방식은 컴퓨터 메모리를 여러 개의 크기가 다른 작은 조각(이하 세그먼트)으로 나누어 세그먼트를 프로세스에게 할당하고, 다른 세그먼트에 대한 접근은 제한하는 방식을 말한다.

페이지 테이블은 가상 메모리를 물리 메모리에 매핑하는 데 사용한다. 일반적으로 프로세스는 이러한 페이지 테이블의 존재 여부를 판단하지 못한다. 페이지 테이블은 새로운 메모리 할당을 쉽게 하고 새로운 각 페이지는 물리 메모리의 어느 곳으로부터라도 할당될 수 있다. 이러한 설계로 응용 프로그램은 할당되지 않은 페이지에는 접근하지 못한다. 그 까닭은 응용 프로그램이 사용하기로 결정한 임의의 메모리 주소가 할당된 페이지를 가리키거나 페이지 실패 (PF) 오류를 만들 수 있기 때문이다. -> 페이지 테이블을 통해 메모리 어디든 할당이 가능해졌음. 따라서 내가 할당한 공간을 다른 프로세스가 건드릴 수 있으니까 남의 프로그램이 할당한 영역은 침범할 수 없게 끔 설계되어있다.


(3) I/O 방어


하드웨어에 의해서만 접근이 가능하다.

운영체제의 목정 중 하나는 사용자에게 특정 하드웨어의 장치의 특성을 숨기는 것이다. 예를 들면 UNIX에서 입출력장치의 특성은 서브 시스템에 의해 운영체제 자체의 나머지 부분으로 숨겨져 있다. 입출력 시스템은 다음과 같이 구성된다. 

 - 버퍼링, 캐싱, 스풀링을 포함한 메모리 관리 구성 요소

 - 일반적인 장치 드라이버 인터페이스,

 - 특정 하드웨어 장치들을 위한 드라이버

오직 장치 드라이버만이 자신에게 지정된 특정 장치의 특성을 알고 있다.



3. 컴퓨터 시스템은, CPU와 메모리가 버스로 연결되어 있고, 이 버스에 독립적인 I/O가 연결되어 있는 방식으로 구성 되어 있다.


(a) 메모리를 컨트롤하는 유닛의 이름이 무엇인가 ?


인터럽트 구동 방식의 입출력은 적은 양의 데이터를 전송하는 데에는 문제가 없으나 디스크 입출력과 같은 대량의 데이터를 전송하는 데에는 높은 오버헤드를 초래한다. 이 문제를 해결하기 위해 직접 메모리 접근(DMA : Direct memory Access) 장치가 사용된다. 장치에 대한 버퍼 및 포인터, 입출력 카운트를 세팅한 후 장치 제어기는 CPU의 개입 없이 메모리로부터 자신의 버퍼 장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송한다. 속도가 느린 장치처럼 한 바이트마다 인터럽트가 발생하는 것이 아니라 블록 전송이 완료될 때마다 인터럽트가 발생한다. 장치 제어기가 전송 작업을 실행하고 있는 동안 CPU는 다른 작업을 실행할 수 있다.


(b) I/O 와 CPU 가 통신하는 방식이 무엇인가?


입출력장치는 CPU, 주기억장치와 시스템 버스를 통해 서로 접속된다. 그러나 이들 입출력장치들은 고속으로 동작하는 CPU나 주기억장치에 비해서는 동작 속도가 아주 느리기 때문에 시스템 버스에 직접 접속된 형태로 CPU가 이들의 입출력 동작을 직접 제어하는 것은 비효율적이다. 따라서 주변장치들은 입출력 인터페이스(I/O Interface)를 거쳐서 시스템 버스에 연결된다. 여기서 시스템 버스란 CPU, 주기억장치, 주변장치 제어기 등을 서로 연결해 주는 전기적 연결선들을 말한다. 

I/O 장치들은 대체로 컨트롤러와 장치 자체라는 두 부분으로 구분된다. 컨트롤러는 칩 또는 칩의 집합으로 장치를 물리적으로 조정한다. 이는 장치로부터 데이터를 읽으라는 명령과 같은 운영체제의 명령을 받아 수행한다. 컨트롤러는 운영체제게 보다 간단한 인터페이스를 제공하도록 프로그램된 작은 임베디드 컴퓨터를 가지고 있다. 

각 컨트롤러 종류가 다르기 때문에 각각을 제어하기 위한 소프트웨어가 별도로 필요하다. 컨트롤러와 이야기하는 소프트웨어를 장치 드라이버라고 부른다.  


(c) 이때 CPU는 어떤 방식으로 해당 I/O 상태를 확인 하는가?


폴링방식 : 드라이버는 I/O를 시작하고 그 작업이 완료되었는지 확인하기 위해 장치를 계속 폴링하는 순환 루프를 돈다 . 이는 장치가 완료도었는지 풀링하기 위해 CPU를 잡고 있어야 한다는 단점이 있다. 

인터럽트 방식 : 드라이버그 장치를 시작해놓고 일이 마무리되면 인터럽트를 걸어달라고 설정하는 방법이다. 운영체제는 호출자를 기다리게 하고 할 수 있는 다른 일을  찾아 처리한다. 컨트롤러가 모든 전달이 완료되었다고 판단하면 완료를 알리는 인터럽트를 발생시킨다. 

특수한 하드웨어 활용 : CPU의 계속적인 개입 없이 메모리와 특정 컨트롤러 간의 비트들의 흐름을 제어할 수 있는 DMA칩을 사용한다. CPU는 얼마나 많은 바이트를 이동시킬지, 관련 장치와 메모리의 주소, 그리고 방향을 DMA 칩에 설정해 놓고 나간다. DMA 칩이 작업을 완료하면 인터럽트를 발생시키게 되며 이후의 작업은 앞어 설명하 내용과 동일하다. 



4. 메모리 구성(Hierarchy)를 그림으로 그려서, 위에서부터 밑으로, 각 특성이 어떻게 변하는지 설명하라?

아래로 갈 수록 접근 시간은 길어지고 저장 수용공간은 증가한다. 또한 메인메모리 까지는 휘발성이나 그 아래는 비휘발성이다.

(speed : 아래로갈수록느려짐, cost : 아래로 갈 수록 저장공간당 가격은 싸짐, volatility : 메인메모리 이후로 비휘발성)


1) 레지스터

2) 캐쉬

3) 메인메모리

4) SSD(solid-state-disk)

5) 하드디스크

6) optical disk

7) 마그네틱 테잎



5. CPU 캐쉬(cache)를 설명하라?


캐시(Cache)란 프로그램이 수행될 때 나타나는 지역성(locality)을 이용하여 메모리나 디스크에서 사용 되었던 내용을 특별히 빠르게 접근할 수 있는 곳에 보관하고 관리함으로써 이 내용을 다시 필요로 할 때 보다 빠르게 참조하도록 하는 제어장치를 뜻한다. 

프로그램의 실행 패턴이 참조되었던 근처의 메모리를 다시 참조한다는 지역성의 특성을 이용해서 마이크로프로세서 내에 CPU의 클 록 사이클만큼 빠르게 접근할 수 있는 온칩 캐시 메모리를 두게 되었다.

CPU가 참조하고자 하는 메모리가 캐시에 존재하고 있을 경우를 캐시 히트(Cache Hit)라 하며, 이때는 캐시의 데이터를 즉시 CPU에 돌려줌으로써 빠른 정보 를제공하게된다. 이와 반대로 캐시에 요청한 데이터가 없을 경우를 캐시 미스(Cache Miss)라하며, 이때는 메인 메모리로부터 일정한 블록 사이즈의 데이터를 가져와서 캐시에 저장한 후 그 데이터에서 특정 워드크기의데이터만을 CPU에 전달하게된다

마이크로 프로세서 <----워드사이즈----> 캐시 <----블록사이즈----> 메인메모리

블록의 사이즈는 캐시의 성능을 좌우하는 데 매우 큰 영향을 미치게 되는데, 그 이유는 실제 프로그램의 실행 시 참조된 메모리에 대한 공간적 지역성과 시간적 지역성을 가지고 있기 때문이다. 여기서 참조의 공간적 지역성(spatial locality of reference)이란 대부분의 실제 프로그램이 참조되어진 주소와 인접한 주소의 내용이 다시 참조된다는 특성을 이야기하며, 시간적 지역성(temporal locality of reference)이란 한 번 참조된 주소의 내용은 곧 다음에 다시 참조된다는 특성을 이야기하는 것이다. 이러한 지역성의 특성은 블록의 사이즈가 클수록 캐시의 히트율이 올라갈 수 있다는 사실을 보여주는 특성이도 하지만 블록의 크기가 커지면 이에 따른 전송 시의부담과 캐시 데이터 교체 작업이 자주 일어날 수 있다는 부담이 증가하기 때문에 쉽게 그 수치를 늘릴 수는 없는 것이다.

캐시에서의 교체 알고리즘은 주로 LRU(Least Recently Used) 방식을 많이 사용하며 이 방식 의 구현을 위하여 각각의 라인에 추가적인 비트를 두고 각 라인에 대한 데이터 참조 시 그 발생 하는시점을기록함으로써이 방식을실현하고있다.

프로세서에서 메모리에 대한 읽기 요청 시에는 캐시로부터 그 데이터가 있는지를 확인하고, 데 이터가 캐시에 존재하고 있다면 그 내용을 돌려주면 되었다. 하지만 프로세서에서 메모리에 대한 쓰기 작업을 요청할 경우에는 어떻게 수행해야 할까? 우선 캐시에 저장되어 있는 내용을 변 경해야 할 것이며, 변경된 내용을 언젠가는 메인 메모리에 저장해 주어야 할 것이다. 이때 언제 메인 메모리의 내용을 변경할 것인지를 결정하기 위하여 아래와 같은 두 가지 정책이 주로 사용 되어진다.


1) Write Through 정책 : 


프로세서에서 메모리에 쓰기 요청을 할 때마다 캐시의 내용과 메인 메모리의 내용을 같이 바꾸 는 방식으로 이 방식은 구조가 단순하다는 장점을 가지고 있지만 데이터에 대한 쓰기 요청을 할 때마다 항상 메인 메모리에 접근해야 하므로 캐시에 의한 접근 시간의 개선이 없어지게 되며, 따 라서쓰기시의 접근시간은주 메모리의접근시간과같게 되는단점을가지게된다. 하지만 실제의 프로그램에서 메모리 참조 시 쓰기에 대한 작업은 통계적으로 10~15%에 불과하 며 따라서 그 구조가 단순하고, 메모리와 캐시의 데이터를 동일하게 유지하는 데 별도의 신경을 쓰지않아도되므로많이 사용되어지는방식이다.


2) Write Back 정책 :


이 방식은 CPU에서 메모리에 대한 쓰기 작업 요청 시 캐시에서만 쓰기 작업과 그 변경 사실을 확인할 수 있는 표시를 하여 놓은 후 캐시로부터 해당 블록의 내용이 제거될 때 그 블록을 메인 메모리에복사함으로써메인메모리와캐시의내용을동일하게유지하는방식이다. 이 방식은 동일한 블록 내에 여러 번 쓰기를 실행하는 경우 캐시에만 여러 번 쓰기를 하고 메인 메모리에는한 번만쓰게 되므로이경우에 매우효율적으로동작하게될 것이다.


3) Cache Coherency :


데이터가 분실되거나 겹쳐 쓰이지 않도록 캐시를 관리하는 것. 데이터가 캐시 내에서는 갱신되었으나 주기억장치 또는 디스크로 아직 전달되지 않았을 때 데이터가 파손되거나 오염될 가능성이 크다. 캐시 일관성은 캐시의 내용과 그에 대응하는 주기억 장치 또는 디스크의 내용이 항상 일치하도록 캐시를 관리하는 알고리듬을 잘 설계함으로써 확보된다. 캐시 일관성은 복수의 처리 장치가 주기억 장치나 디스크를 공유하는 대칭적 다중 처리(SMP)에서 특히 더 중요하다.



6. Process와 Program 의 차이를 비교하여 설명하라?


1) 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일(실행파일이라 불림)과 같은 수동적인 존재


2) 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터 및 관련된 자원의 집합을 가진 능동적인 존재이다. 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다.



7. Process의 상태 변화를 그리고, 어떤 조건에서 하나의 상태에서 다른 상태로 천이하는지 각각 설명하라?


프로세스가 가질 수 있는 상태는 다음 3가지와 같다.


1) running(실행) : 이 순간 실제로 CPU를 사용하고 있음


2) ready(준비) : 실행 가능하지만 다른 프로세스가 실행할 수 있도록 일시적으로 정지


3) blocked(대기) : 외부 이벤트가 발생할 때 까지 실행할 수 없음


4) new(새로운) : 프로세스가 생성중임


5) terminated(종료) : 프로세스가 실행을 종료함




네 가지 상태 전이의 가능하다.


상태전이 1 : 어떤 프로세스가 수행을 지속적으로 수행할 수 없음을 운영체제가 발견한 경우이다. 몇몇 시스템의 경우 스스로 대기 상태가 되기 위해 프로세스는 pause와 같은 시스템 호출을 부를 수 있다. UNIX와 같은 다른 시스템에서 프로세스가 파이프나 특별한 파일(예, 터미널)로부터 읽으려고 하는데 입력이 주어지지 않으 경우 프로세스는 자동적으로 대기 상태가 된다. (입출력 요청, 자식프로세스를 기다릴 때)


상태전이 2 : 프로세스 자신은 이러한 상태 전이에 대해 모르는 상태에서 운영체제의 일부분인 프로세스의 스케줄러에 의해 야기된다. 스케줄러가  현재 수행중인 프로세스가 충분히 오랫동안 수행되었으며 이제 다른 프로세스에게 CPU 시간을 할당해야한다고 결정했을 때 발생한다.(인터럽트 발생 시)


상태전이 3 : 상태전이 2와 같이 프로세스 스케줄러에의해 야기된다. 다만 다른 모든 프로세스가 공평하게 자신의 몫을 받았으며 이제 다시 처음 프로세스가 CPU를 할당 받아야 한다고 스케줄러가 결정했을 때 발생한다. 전체 시스템의 효율성과 개별적인 프로세스들의 공평성 간에 존재하는 상충되는 요구 사이에서 균형을 이루기 위해 다양한 알고리즘이 고안되었다. 


상태전이 4 : 프로세스가 기다리던 (입력이 주어지는 것과 같은) 외부 이벤트가 발생했을 때 생긴다. 만약 그 순간 수행중인 다른 프로세스가 없다면 다시 상태전이 3이 발생하고 해당 프로세스는 실행을 시작한다. 수행중인 다른 프로세스가 존재하면 이 프로세스는 자신의 순번이 되어서 CPU가 이용 가능해질 때까지 준비 상태에서 기다려야할 것이다. (입출력의 종료 시)



8. 시스템 성능 측정 기준


1) CPU 이용율(utilization)  : 종종 배치 시스템의 측정에 사용된다. 시간당 엔진이 몇 번 회전하는지를 기준으로 자동차를 측정하는 것과 유사하다. 


2) 처리량(thoughput) : 단위 시간 당 완료된 프로세스의 개수


3) 총 처리 시간(turnaround time) : 프로세스 제출시간과 완료시간의 간격을 총 처리 시간이라 한다. 총 처리시간은 메모리에 적재되기 위해 기다리며 소비한 시간, 준비완료 큐에서 대기한 시간, CPU에서 실행하는 시간, 그리고 입출력 시간을 합한 값이다. 배치 작업이 제출된 순간부터 끝날때까지 걸린 통계적인 평균 시간.


4) 응답시간(response time) : 대화식 시스템에서 총 처리 시간은 최선의 기준이 아닐 수 있다. 명령을 입력한 후 결과를 받게 되는데 걸린 시간이다. 



9. Schedule 방식에서 FCFS와 RR 방식을 비교하여 설명하라?


1) FCFS : 선입 선처리 스케줄링 : 


이 알고리즘에서 프로세스들은 요청 순서대로 CPU를 할당받는다. 기본적으로 준비상태의 프로세스를 위해 단일 큐가 존재한다. 첫 번째 작업이 들어오면 원하는 만큼 실행된다. 이 작업은 아무리 오래 수행되어도 방해 받지 않는다. 다른 작업이 도착하면 이들은 큐의 끝부분에 놓인다. 실행중인 프로세스가 대기 상태가 되면 큐의 첫번째 프로세스에 이어 실행 된다. 구현방법이 매우 쉬우나 앞에 스케줄링이 매우 길 경우 뒤에 있는 스케줄링이 실행이 안되는 단점이 존재한다. 


2) RR : 라운드로빈방식 : 


각  프로세스에게는 시간 할당량이라 불리는 시간 주기가 할당되며 한 번에 이 시간 동안 만큼만 실행된다. 프로세스가 할당 시간 동안 실행하면 CPU는 선점되어 다른 프로세스에게 주어진다. 프로세스가 할당 시간에 끝나기 전에 대기하거나 종료되면 CPU는 다른 프로세스로 전환한다. 여러 프로세스가 공평하게 CPU를 할당받을 수 있으나 자주 context switch가 일어나 CPU의 시간이 관리 작업으로 사라진다.따라서 적절한 교환시간이 설정되어야 한다.



10. Context switch 가 무엇인지? 왜 하는지 설명하라?


Context Switching은 문맥교환으로 번역되며, 하나의 Task에서 다른 Task로 전환을 하는 경우 필요한 과정을 의미한다. 운영체제는 시분할을 통해 CPU가 다수의 작업들을 교대로 실행할 수 있게 한다. 인터럽트는 운영체제가 CPU를 현재 작업으로부터 빼았어 커널 루틴을 실행할 수 있게 한다. 이러한 연산은 범용 시스템에서 자주 발생한다. 인터럽트가 발생하면 시스템은 인터럽트 처리가 끝난 후에 상태를 복구할 수 있도록 현재 실행 중인 프로세스의 현재 상태를 저장할 필요가 있다. 이는 결국 프로세스를 중단했다가 재개하는 작업이다. 상태는 PCB에 표현되고 CPU 레지스터의 값, 프로세스 상태, 메모리 관리 정보등을 포함한다. CPU를 다른 프로세스로 교환 하려면 현재 프로세스의 상태를 저장하고 다른 프로세스의 저장된 상태를 복구하는 작업이 필요하다. 이 작업을 Context switch라고 한다. 



11. Process Synchronization을 위한 3가지 조건을 정확하게 이해할 수 있게 설명하라


1) 상호배제(mutual exclusion) : 프로세스가 자신의 임계 영역에서 실행된다면, 다른 프로세스들은 그들 자신의 임계 영역에서 실행될 수 없다.  

 - 오로지 하나의 프로세스만 임계 구역에 들어갈 수 있다.

 - 두개의 프로세스가 동시에 자기의 임계구역 내에 존재하는 경우는 없어야 한다.


2) 진행 or 진전(progress) : 자기의 임계 영역에서 실행 중인 프로세스가 없고 자신의 임계 영역으로 진입하려고 하는 프로세스들이 있다면 , 나머지 영역에서 실행 중이지 않은 프로세스 들만 임계 영역으로 진입할 프로세스를 결정하는데 참여할 수 있으며, 이선택은 무기한 연기될 수 없다. 

 - 비 임계구역에 있는 프로세스 때문에 다른 프로세스가 임계구역에 못들어가면 안된다.

 - 임계구역 외부에서 실행하고 있는 프로세스는 다른 프로세스 들을 블록시켜서는 안된다.


3) 한정된 대기 : 프로세스가 자기의 임계 영역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 자신의 임계 영역에 진입하도록 허용되는 횟수는 한계 또는 제한이 있어야 한다. 

 - 임계영역을 누구나 들어갈 수 있도록 기회가 주어져야 한다.

 - 임계구역에 진입하기 위해 무한히 기다리는 프로세스는 없어야 한다. 



12. OS의 역할


운영체제는 오랫동안 두 가지 주요 목적을 달성하기 위해 발전해왔다. 바로 사용자가 프로그램을 개발하고 사용하는데 좀 더 편리한 환경을 제공하는 것(편리성)과 계산 시스템 성능의 향상(효율성)이다. 운영체제는 시스템 운영 요소를 적절하게 사용할 수 있도록 제어하며(조정자), 프로그램 실행 환경과 필요한 자원(프로세스, 메모리, 파일, 장치)을 제공하고 관리해주며(자원 할당자 또는 관리자), 다양한 입출력장치와 사용자 프로그램을 제어한다.


(a) 사용자 관점 (User View) : 컴퓨터 시스템을 편리하게 사용할 수 있게 해주는 프로그램.

실행되려 하는 프로그램의 일련의 작업(메모리 할당, 버퍼 할당, 이벤트 처리 등)들을 사용자에게 맡기지 않고 사용자가 하기 어려운 일들을 운영체제에서 대신 처리해주는 것을 말한다.


(b) 시스템 관점 (User View) : 컴퓨터 시스템을 편리하게 사용할 수 있게 해주는 프로그램.

컴퓨터 시스템의 자원에는 CPU, 메모리, 디스크, 프린터, 키보드 등과 같은 하드웨어.파일, 서비스 루틴과 같은 소프트웨어가 있다. 운영체제는 하나의 프로그램을 실행 하기 위해서 필요한 메모리를 확보해야 하며, 또한 내부 혹은 외부에서 발생한 이벤트들(키입력 등)을 위해 임의의 버퍼를 마련하고 적절한 순서로 그 이벤트들을 처리해 주는 것이다. 그리고 현재 실행되고 있는 프로세스마다 CPU의 수행시간을 알맞게 분배해야 한다.



13. 버퍼링과 스풀링의 차이


1) 버퍼링 :


버퍼링(Buffering)은 운영체제의 기능 중 하나다. 일반적으로 상주 모니터 혹은 장치 드라이버는 각 입출력장치를 위해 시스템 입출력버퍼를 가지는데, 이는 입출력 장치의 느린 속도를 보완하기 위해 이용된다. 버퍼링은 프로세서와 입출력장치를 항상 분주하게, 즉 유휴시간이 없도록 프로세서의 연산 과정과 함께 어떤작업의 입출력을 동시에 수행하는 아주 간단한 방법이다.


2) 스풀링 : 


디스크 시스템에서는 헤드가 디스크의 한 영역에서 다른 영역으로 빠르게 이동하기 때문에 추가 기록이 가능하다. 예를 들어, 디스크는 카드 판독기가 사용하는 영역에서다음카드를 읽기 위해 프로세서에 필요한 다른 영역으로 빠르게 이동할 수 있다. 이러한 디스크의 특성을 이용하여 스풀링(Spooling) 기법이 개발되었다. 스풀링은 ‘Simultaneous Peripheral Operation On-Line’이라는 의미로 디스크를 매우 큰 버퍼처럼 사용하는 것이다. 즉, 입력장치에서 미리 읽어들여 출력장치가 받을 수 있을 때까지 출력파일을저장한다.

스풀링은 카드 판독 작업, 출력 작업, 카드 펀치 작업 등을 오프라인으로 수행하는 과정으로 버퍼링이 컴퓨터의 하드웨어의 일부, 즉 버퍼를 사용한다면 스풀링은 별개의 오프라인장치를 사용한다는 차이가 있다. 


- 출처 :그림으로배우는운영체제(한빛미디어), 공룡 책8판(조유근 저), 운영체제론(노삼혁 교수님 저), 위키피디아

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

세마포어  (0) 2020.02.06
리눅스 디렉토리 구조 및 기능  (0) 2015.03.12
vmware를 이용한 IP 설정 방법  (0) 2014.11.09
처음시작 : 루트권한 암호 만들기  (0) 2014.11.09