diff --git a/contents/operating-system/README.md b/contents/operating-system/README.md index 0722553..4456a41 100644 --- a/contents/operating-system/README.md +++ b/contents/operating-system/README.md @@ -1,6 +1,6 @@ # Operating System (운영체제) -> 작성자 : [권혁진](https://github.com/KimKwon), [이세명](https://github.com/3people), [장주섭](https://github.com/wntjq68) +> 작성자 : [권혁진](https://github.com/KimKwon), [윤가영](https://github.com/yoongoing), [이세명](https://github.com/3people), [장주섭](https://github.com/wntjq68)
Table of Contents @@ -232,4 +232,157 @@ Example ## 질의응답 -> 아직 없습니다. +
+프로그램과 프로세스의 차이에 대하여 설명해보세요. +

+ +**프로그램**: 작업을 위해 실행할 수 있는 파일의 단위를 의미함. + +**프로세스**: 메모리에 적재되어 ```CPU```를 할당받아 실행중인 프로그램을 프로세스라 일컬음. + +

+
+ +
+프로그램이 실행중이라는게 어떤 상태를 말하나요? +

+ +`메모리에 적재되어 CPU를 할당`받아 실행 중인 프로그램을 실행 중인 프로그램 이라고함. + +

+
+ +
+프로세스가 도중에 중지되는 경우, 그 원인과 다시 실행할 수 있는 방법은 무엇일까요? +

+ +`인터럽트` 혹은 `시스템 콜` 등에 의해 프로세스가 중지될 수 있다. + +PCB 안에 해당 프로세스의 정보(프로그램카운터와 같은 실행 정보 등)가 저장되어 있기 때문에 추후에 실행 가능한 상태가 되면 PCB를 통해 다시 실행할 수 있다. +

+
+ +
+프로세스에 힙 또는 스택영역이 있는데, 이중에서 힙 또는 스택영역에는 어떤 정보가 있나요? +

+ +**힙 영역**: 동적 할당되는 모든 요소들 + +**스택 영역**: 매개변수, 로컬변수, 복귀주소 +

+
+ + +
+스레드와 멀티 스레드의 차이에 대하여 설명하고, 멀티 스레드의 장단점을 설명해보세요. +

+ +**스레드**는 할당받은 자원을 이용한 프로세스의 실행 흐름의 단위이다. + +`멀티 스레드`는 한 프로세스 내에서 이러한 스레드가 여러개 동작하는 방식을 의미한다. + +스레드는 프로세스 내에서 스택을 제외한 영역을 같은 프로세스 내의 스레드들과 공유한다. + +즉 자원을 공유한다는 것인데, 이는 스레드간 `자원 동기화 관련 문제`를 유발한다. + +또한 프로세스가 종료되면 내부 스레드들 역시 모두 종료되므로 한 스레드가 프로세스를 의도치않게 종료했을 경우 나머지 스레드들도 모두 종료 될 수 있다는 단점이 있다. + +반면 프로세스를 여러개 두는 방식에 비해 멀티스레드 방식은` 컨텍스트 스위칭 비용이 적게 들며 응답시간 역시 빠르다`는 장점이 있다. +

+
+ +
+멀티 스레드와 멀티 프로세스의 차이를 말해주세요. +

+ +**멀티 스레드** : 적은 메모리 공간 차지, context switch 빠름. 하지만, 동기화 문제가 있고 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음. + +**멀티 프로세스** : 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않음. 하지만, 많은 메모리 공간을 차지하고 CPU시간을 많이 차지함. +

+
+ + +
+스택을 스레드마다 독립적으로 할당하는 이유가 무엇인가요? +

+ +각 스레드가 독립적인 실행 흐름 단위를 가진다는 것에서 유추할 수 있다. + +스레드가 독립적인 실행 흐름을 갖기위해서는 `독립적인 함수호출이 보장`되어야 하기 때문이다. +

+
+ +
+Context Switching에 대하여 설명해보세요. +

+ +위에서 말했듯이 프로세스는 CPU를 할당받은 상태의 프로그램이다. + +현재 CPU를 할당받아 실행중인 프로세스 A와 대기중인 프로세스 B가 있다고 가정했을 때, + +A 프로세스에서 B 프로세스로 CPU 사용/제어권이 이전되는 것을 `Context Switching` 이라고한다. +

+
+ +
+스케쥴링이 왜 필요한가요? +

+ +한정적인 메모리(자원)를 효율적으로 관리하기 위해, 공정성을 주기 위해 필요하다. +

+
+ +
+스케줄러와 CPU 스케줄러의 차이에 대하여 설명해보세요. +

+ +스케줄러(=Job Scehduler, 장기 스케줄러)는 디스크와 메모리 간 스케줄링을 담당한다. + +CPU 스케쥴러(= 단기 스케줄러)는 메모리와 CPU 간 스케줄링을 담당한다. +

+
+ +
+중기 스케쥴러에서 suspended 상태와 blocked 상태의 다른점은 무엇인가요? +

+ +blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready queue로 돌아갈수 있지만, suspended는 외부적인 이유로 유예됐기 때문에 스스로 돌아갈 수 없다. +

+
+ +
+FCFS 스케줄링을 개선한 스케줄링 방식에 대하여 설명해보세요. +

+ +FCFS는 먼저 도착한 프로세스에게 CPU를 할당하는 기법이다. + +하지만 먼저 도착한 프로세스가 실행 시간이 긴 경우 나중에 도착한 프로세스들의 대기 시간이 길어지는 ```Convoy Effect``` 라는 문제점을 가지고 있다. + +이를 개선한 `SJF(Shortest Job First)` 기법이 있다. + +SJF는 짧은 실행시간을 갖는 프로세스에게 CPU를 먼저 할당하는 기법이다. + +Convoy Effect는 해결하였지만, 실행시간이 긴 프로세스는 계속 CPU를 할당받지 못하는 `Starvation 현상`이 일어날 수 있다. +

+
+ +
+Round Robin 스케줄링 방식에서 time quantum 설정에 따른 결과를 설명해보세요. +

+ +RR 기법에서 + + - 타임퀀텀이 긴 경우: 타임퀀텀이 프로세스의 실행시간과 비슷해진다면 FCFS랑 다를 바 없어진다. + + - 타임퀀텀이 짧은 경우: 타임퀀텀이 짧아 Context Switching이 자주 일어나게 되어 오버헤드가 발생한다. +

+
+ +
+오버헤드가 어떤건가요? +

+ +프로그램의 실행 흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때, 추가적으로 시간, 메모리, 자원이 사용되는 현상을 오버헤드라 한다. + +

+