largando

운영체제 과제(1) 본문

Operating System

운영체제 과제(1)

ensoojn 2019. 8. 25. 15:09

1. 인터럽트가 발생했을 때, 처리하는 방법에 대해 hardware측면과 software측면에서 설명하시오.

    Hardware는 시스템 버스를 통해서 CPU에 신호를 보내 interrupt를 발생시킬 수 있고, Software System Call이라 불리는 연산을 실행하여 인터럽트를 발생시킬 수 있다.

 

Hardware측면에서 Interrupt 처리과정

1) Hardware가 시스템 버스를 통해CPU interrupt 신호를 전달한다. 

2) CPU interrupt 신호를 받고 현재 명령어를 완료한다.

3) CPU가 인터럽트 확인 신호를 보낸다.

4) CPU PC PSW 같은 현재 상태 정보를 제어 스택에 저장하고 현재 수행중인 프로그램을 중 단하며, 프로세스의 상태정보를 PCB에 저장한다. 

5) CPU interrupt에 대한 PC값을 가져와 적재한다. 

 

Software측면에서 Interrupt 처리과정

4) Process의 나머지 정보를 PCB에 저장한다.

6) 인터럽트를 처리한다.

7) Process의 상태정보를 복구한다.

8) 이전 PSW PC를 복구한다.

 

2. 장치에서 사건을 받아들일 때 인터럽트(interrupt)방식과 polling 방식을 비교 설명하시오.

1) Polling: 어떤 하나의 장치가 독립적인 기능을 하는 다른 장치의 상태를 검사할 수 있도록 하는 기술이다. Polling 방식은 디바이스의 드라이브에서 스레드를 주기적으로 돌려 해당 디바이스 로부터 어떤 처리를 원하는 시그널이 들어오는지 검사한다. 커널과 같은 Interrupt handler가 필요 하지 않아 Interrupt 방식보다 구연하기 쉽다. 그러나 주기적으로 스레드 처리가 있기 때문에 시스템 성능 저하라는 단점이 있다.

-  프로그램에 의한 우선순위를 조절할 수 있다. 

-  최소한의 하드웨어만으로 구성이 가능하다.

-  각 장치를 polling 하여야 하므로 응답 시간이 길다.

 

2) Interrupt: 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 전달하는 것 이

. 인터럽트 방식은 지정된 시그널을 받도록 구현하는 방식으로 kernel Interrupt handler Interrupt를 검사하고 Interrupt가 발생하면 Interrupt 스레드로 해당 인터럽트를 알려준다. 따라서, 이는 시스템의 부하를 줄일 수 있다.

    Polling은 모든 경우의 IO 변화에 대응하여 처리가 가능하지만 interrupt의 경우 하드웨어서 지원하는 몇 개의 입력 변화에 대해서만 처리가 가능하다.

 

3. 다중프로그래밍 시스템과 다중처리시스템을 비교 설명하시오.

1)  Multiprogramming: 여려 프로그램을 한 메모리에 적재하여 동시에 처리한다.

 관련기술:

- interrupt 개념도입 (timer interrupt)

- 메모리 보호 

- 재배치

- I/O processor

- DMA

- SPOOLing

2)  Multiprocessing: 2개 이상의 processor computer bus, clock, memory를 공유하여 작업을 처리한다. 

- 장점: 부사 분산- throughput 증가, more fault tolerant

    Multiprogramming system동시성 Multiprocessing system병렬성의존한다. 싱글 코어에서는 아무리 병렬성으로 짠다고 해도 시분할처리로 돈다. 따라서 병렬성은 하드웨어 환경이 바탕이 되고 동시성은 소프트웨어 기반으로 애기된다.

    즉, multiprogramming system하나의 메모리 여러 개의 프로그램을 적재하여 동시에 실행하는 것처럼 처리하고 multiprocessing system 2개 이상의 processor가 2개 이상의 CPU를 사용하여 memory, clock 등을 공유하여 작업을 처리하는 system이다. 따라서 multiprocessing system multiprogramming system에 비에 부하를 분산시킬 수 있어 시스템의 안정성 신뢰성높지만 CPU를 추가해야 하므로 추가비용 든다.  

 

4.  저장장치 계층구조(storage-device hierarchy)란 무엇이며, 이들 중 CPU가 직접 access할 수 있는 장치는?

    저장장치 계층구조란 저장 장치 시스템의 속도(+가격) 따라 계층적으로 구성한 것이다. 빠른 저장장치는 단위 공간당 가격이 높기 때문에 적은 용량을 사용하며, 느린 저장 장치는 가격이 저렴하여 대용량을 사용한다. 저장장치 계층 구조는 아래와 같이 7단계로 나눌 수 있다.

    CPU는 이중에서 CPU 내부에 있는 register, cache CPU 외부에 있는 main memory 3계층에 access 가능하며, 이것들은 모두 휘발성 메모리이다. 반도체디스크, 자기 디스크, 광학 디스크, 자 기테이프 등 레지스터와 캐시, 주 메모리를 제외한 저장장치를 묶어 보조기억장치로 두고 4단계 로 분류하기도 한다.

 

5.  모니터 모드와 사용자 모드를 구별하는 것이 어떻게 보호 시스템의 기본 형태가 되는가?

    Mode bite에 의해 사용자 모드와 감시자 모드로 구분된다. 운영체제가 제어권을 가지면 있으면 mode bite 0으로 감시자 모드가 되고 제어권이 사용자의 프로그램으로 넘어가면 mode bite 1이 되어 사용자 모드가 된다.

    이런 이중 모드 수행은 운영체제를 보호하는 수단으로 사용되며, 운영체제를 손상시킬 수 있는 기계 명령을 특권 명령으로 설계하여 감시자 모드에서만 동작이 허용되게 한다. 만약 사용자 모드에서 특권 명령을 수행하려고 하면 그 명령을 불법적인 것으로 인지하여 운영체제에 trap을 발생시킨다. Trap이 발생되면 제어권을 사용자 프로그램에서 운영체제로 넘겨 감시자 모드에서 작 업을 실행하고 다시 사용자 모드로 바꾸어 사용자 프로그램에 제어권을 넘김으로써 운영체제와 다른 사용자의 프로그램을 보호한다.

 

6.  트랩(trap)과 인터럽트의 차이점은 무엇인가? , 각 기능의 용도는 무엇인가?

1) Interrupt: 컴퓨터가 수행 동작을 하다 예기치 않은 일이 발생하여 작업중이던 task를 중지하 고 발생한 일을 처리하는 것으로, 하드웨어소프트웨어가 시스템의 수행 흐름을 바꾸기 위해 발생시킨다. 따라서 발생 시점이 일정하지 않아 비동기적이다. 인터럽트는 트랩과 달리 발생시점의 값을 저장하고 문맥 교환이 일어난다.

Ex) 입출력장치를 사용하는 순간 

2) trap: 소프트웨어가 발생시키는 동기적 인터럽트이다. 오류(exception)나거나 사용자 프로 그램이 OS 서비스를 요구할 때 사용된다.

 

7.  시스템 호출이란 무엇인가? , 목적은 무엇인가?

    System call이란 사용자 프로그램이 운영체제에게 작업을 처리를 요구하는 것으로 Software Interrupt이다. System call이 일어나면 Interrupt vector를 통해 OS내의 서비스 루틴으로 제어를 전 달한다. 제어권을 사용자 프로그램에서 운영체제로 넘긴다(mode bit kernel mode로 설정). Kernel interrupt를 발생시킨 명령어를 검사하여 어떤 시스템 호출인지를 결정한다. 이때 전달된 인수가 서비스 위험을 표시한다. 요청이 필요로 하는 추가정보(OS에 전달하는 매개변수)

register, memory및 stack으로 전달하며, 수행 후 제어를 시스템 호출 다음의 명령어로 복구한다. System call user 수준에서 OS의 서비스를 요청하기위해 실행중인 프로그램과 OS 사이의

interface를 제공한다.  

    시스템 호출은 프로세스 제어, 파일 조작, 장치 관리, 정보 유지, 통신 다섯가지로 구분한다.

 

8.  프로세스들 사이에 문맥(context)을 교환하기 위해 커널이 수행해야 할 행동을 설명하시오.

    커널은 문맥을 교환할 때 기존 프로세스의 상태, 레지스터 값, PC (Program Counter) 등의 정보를 PCB에 저장하고, 스케줄 된 새로운 프로세스의 문맥을 복구한다. 문맥 교환이 진행될 동안은 시스템은 다른 처리를 못하므로 오버헤드가 일어난다. 

 

9.  3가지 이상의 프로세스 상태를 정의하여 설명하고, 그들 간의 상태전이는 어떤 경우에 발생하는지 그림으로 보이시오.

 

1) Ready: 프로그램이 실행되기를 기다리는 상태. running 상태에서 time(run) out 되거나 새로 메모 리에 적하여 new상태에서 admit되거나 waiting상태에서 이벤트를 처리하고 wake up(event complete) 되거나. Suspend 상태에서 resume되어 이전된 상태.

2) Running: 프로세스의 명령어를 CPU가 실행중인 상태. Ready상태에서 dispatch하여 이전된 상태.

3) Waiting: I/O request event wait이 발생하여 I/O event를 기다리는 상태. Running에서 block 하여 상태이전.

4) Suspend: 시스템이 원활해 질때까지 대기하는 상태. Ready나 wait 상태에서 suspend되어 이전된 상태. 

5) New: 프로그램이 아직 메모리에 적재되어 있지 않은 상태

6) Terminated: 프로세스가 실행을 모두 마치고 종료된 상태. 프로세스가 끝나고 running 상태에서 release되어 이전된 상태.

 

10. 사용자 수준 쓰레드와 커널 수준 쓰레드의 두 가지 차이점은 무엇인가?

1) 사용자 쓰레드는 커널 위에서 지원되며 커널과는 관계없이 완전한 사용자 수준의 패키지를 가 지고, 커널 스레드는 OS가 직접 지원하며 커널에 의해 내부적으로 필요한 경우에 생성& 소 멸 될 수 있으며 특정 함수를 수행할 책임이 있다.

 

2) 사용자 수준의 스레드는 고유의 사용자 스택, 레지스터 문맥, 기타 상태 정보를 보유하지만 커 널 스레드는 자신의 커널 스택을 보유하고 커널의 텍스트, 전역 데이터를 공유한다.

 

11. 사용자 수준 쓰레드 사이에 문맥 교환이 일어날 때의 쓰레드 라이브러리에 의해 행해지는 동 작들을 기술하시오.

    사용자 수준 문맥교환은 커널 문맥 교환과 비슷하다. CPU를 다른 프로세스(스레드)로 교환하려 면 이전의 프로세스(스레드) 상태를 보관하고 새로운 프로세스(스레드)의 보관된 상태를 복구해야 하는데 이를 문맥교환이라 한다. 

    문맥 교환이 일어나면, 커널은 과거 스레드의 문맥을 PCB에 저장하고, 실행이 스케줄 된 새로 운 스레드의 저장된 문맥을 복구한다. 스레드 라이브러리는 스레드 생성, 동기화, 스케줄링, 관리 기능 등을 제공한다.

 

12.  선점과 비선점 스케줄링의 차이점을 설명하시오. , 그에 해당하는 스케줄링 알고리즘들을 나열하시오.

    선점 스케줄링은 우선권이 있는 프로세스가 CPU를 사용중인 프로세스로부터 CPU를 강제로 빼앗아 먼저 실행하고, 비선점 스케줄링은 한번 실행하면 해당 프로세스가 끝나거나 할당 받은 시간을 모두 쓰기 전까지 CPU를 사용한다. , 선점 스케줄링은 우선권이 있는 프로세스가 먼저 실행되고 비선점 스케줄링에는 우선권이 있는 프로세스가 없다.

    선점 스케줄링에는 최소 잔여시간 우선(SRT), 라운드 로빈, 다단계 큐, 다단계 피드백 큐, 비율단조(RMS), EDF 등이 있고, 비선점 스케줄링에는 선입선처리(FCFS), 최단 작업 우선(SJF), 우선순 위, HRN이 있으며 우선순위 scheduling은 선점 알이지만 비선점 scheduling으로 변경이 가능하다.

 

13. 단기, 중기, 장기 스케줄링의 차이점을 설명하시오.

    장기 스케줄러는 보조기억장치에서 프로세스를 선택하여 주기억장치에 적재한다. 장기 스케줄러는 실행 빈도수가 적고 degree of multiprogramming을 제어하고 new state에서 ready state으 로 admit되거나 프로세스가 system을 떠날 때 호출된다. 반면 중기 스케줄러는 load control을 할 때 호출되며 suspend resume, swap in이나 swap out 할 때 호출되어 interactive system에서 호출된다. 단기 스케줄러는 실행준비가 된 프로세서 중에서 선택하여 CPU를 할당한다. time quantum에서 1회이상 수행되며 ready state에서 running state으로 dispatch될 때 호출한다.

 

14. 다음 프로세스들의 집합을 생각해보자. CPU burst 시간 단위는 millisecond이다.

                프로세스                          CPU 버스트 시간              우선순위

                    P1                                       10                                 3

                    P2                                        1                                  1

                    P3                                        2                                  3

                    P4                                        1                                  4

                    P5                                        5                                  2

프로세스들은 시간 0 P1, P2, P3, P4, P5 순서로 도착된다고 가정한다.

1)  선입선처리, SJF, 비선점 우선순위(작은 우선순위 값이 높은 우선순위를 의미) 그리고 라운드 로빈(시간 할당량=1) 스케줄링을 이용해서 프로세스들의 실행을 보이는 Gantt chart를 그리시오.

 

선입선처리  

SJF  

비선점 우선순위

라운드 로빈  

2)  1)번에서 각 스케줄링 알고리즘의 각 프로세스에 대한 총처리시간(turnaround time)과 대기시간

(waiting time)은 얼마인가?

3)  1)번에서 어느 알고리즘이 최소의 평균대기시간(모든 프로세스들에 대해)을 가지는가?

선입선처리 평균 대기시간: 48ms / 5 = 9.6ms SJF

평균 대기시간: 16ms / 5 = 3.2ms

비선점 평균 대기시간: 41ms / 5 = 8.2ms

라운드 로빈 평균 대기시간: 27ms / 5 = 5.4ms 로 

SJF가 최소의 평균 대기시간을 가진다.

 

15.  CPU 스케줄러가 실행되어야 할 상황을 기술하시오.

    CPU 스케줄러는 한 프로세스가 실행 상태에서 대기 상태로 전환될 때, 프로세스가 실행 상태에서 준비 완료 상태로 전환될 때, 프로세스가 대기 상태에서 준비 완료상태로 전환될 때, 그리고 프로세스가 종료될 때 호출된다.

  

'Operating System' 카테고리의 다른 글

Ch.7 교착상태 (Dead Lock)  (0) 2019.08.11
운영체제 과제(2) DeadLock_MainMemory_VirtualMemory  (0) 2017.12.12