diff --git a/operating-system/daehun/summary/FEEDBACK.md b/operating-system/daehun/summary/FEEDBACK.md new file mode 100644 index 0000000..aa3eb96 --- /dev/null +++ b/operating-system/daehun/summary/FEEDBACK.md @@ -0,0 +1,132 @@ +# 운영체제 Overall 피드백 +## Interview + +- ### Q) 프로세스와 스레드의 차이에 대해서 설명해주세요 + + A) 둘의 가장 큰 차이로는 Stack 영역을 공유하는 지입니다. + 프로세스는 Heap, Stack, Data, Code 영역을 공유하지만 + Thread같은 경우는 하나의 작업을 처리하는 단위로 하나의 프로세스 내에서 Code/Data/Heap 영역이 생성이 됩니다. + +
+ +- ### Q) 그렇다면 Thread의 문제점은 무엇이 있을까요? + + A) 데이터의 일관성 문제가 생길 수 있습니다. + 어떤 프로세스가 작업을 처리할 때, 여러 스레드가 작업을 처리하게 되는데, + 그때 공유되는 자원이 있기 때문에 데이터의 일관성문제가 생길 수 있습니다. + +
+ + + #### 정균 + > 제가 잘못 들었을수도 있긴한데 Thread 같은 경우는 Code/Data/Heap 영역이 따로 생성되는게 아니라 Stack영역만 생성되고 세개의 영역같은 경우는 공유가 됩니다!

+ 프로세스의 경우에는 운영체제로부터 Code, Data, Heap, Stack 모두를 독립된 메모리 공간을 할당받습니다! + + + +--- + +- ### Q) Context Switching에 대해서 설명해주세요 + + A) 한 프로세스에서 다른 프로세스로 넘어갈때, 이 전 프로세스에 대한 정보를 저장하고, 다음 프로세스에 대한 내용을 불러오는 과정에서 생기는 개념이다. + + 컨텍스트 스위칭은 작업을 할 때 불필요한 비용이 생길 수 있어서 최소한의 비용을 산정해야한다. + + - ### Q) 프로세스의 이동간에 정보를 저장한다고 하셨는데 정보를 어디에 저장할까요? + + A) PCB에 저장하며 PCB에는 프로세스의 전반적인 메타데이터, + + 즉 프로세스의 상태나 프로그램 카운터 주소, 프로세스 스케줄링에 대한 정보들이 포함됩니다. + +
+ + + #### 정균 + > 잘 대답해주신 것 같습니다!! 다만 뒤에 꼬리질문에서 잘 대답해주신 내용을 첫번째 질문에 대한 답변에 포함이 되었다면 좋을 것 같습니다!! + +
+ +- ### Q) 동시성과 병렬성의 차이에 대해서 설명해주세요 + + A) 잘 모르겠습니다 + + #### 정균 + > 동시성은 하나의 자원을 사용해서 여러 작업을 번갈아가며 처리하는것이고 + 병렬성은 여러개의 자원을 사용해서 여러 작업을 동시에 처리하는 능력입니다! + + 제가 이 파트에서 질문을 드린 이유는 동시성을 구현하기 위해서 잦은 ContextSwitching이 발생해서 여기서 질문을 드려봤습니다!! + + 최근에 친구가 면접에서 이런 질문을 받았다고 해서 알아두시면 좋을 것 같습니다! + +
+ +--- + +- ### Q) 멀티스레드 프로그래밍에 대해서 설명해주세요 + + A) 멀티스레드 프로그래밍은 여러개의 스레드가 작업을 동시에 처리하는 기법입니다. + + 멀티프로세스는 코드, 데이터, 힙 영역을 공유하기 때문에 IPC 같은 기법 없이 멀티프로세스보다 빠르게 작업을 처리할 수 있습니다. + + +- ### Q) Context Switching은 스레드와 프로세스 중에서 뭐가 더 빠를까요? + + A) 스레드가 스택영역을 제외하고 나머지 데이터 영역을 공유하기 때문에 빠를 것 같습니다. + + #### 정균 + > 답변을 하실 때 잘못 얘기하시는 경우가 종종 있는 것 같아요!

+ 개념을 모르는게 아니라 그냥 설명을 해주실 때, 천천히 답변하셔도 좋으니 어떤 말을 할건지 간단하게라도 정리 후에 말하는 습관이 들이시면 좋을 것 같아요! + + 위의 답변에서도 멀티스레드 환경이 코드, 데이터, 힙을 공유하는 건데 멀티프로세스 환경이 공유한다고 답변을 하셨어서,, 요 부분만 신경쓰시면 좋을 것 같습니다!! + +
+ + +--- + +- ### Q) 프로세스 동기화에 대해서 설명해주세요 + + A) 잘 모르겠습니다. + + +- ### Q) Race Condition 에 대해서 설명해주세요 + + A) 여러 개의 프로세스들이 하나의 자원에 동시에 접근을 할 때 발생하는 것이 Race Condition 입니다. + + Race Condition의 발생 조건으로는 점유와 대기, 비선점 등이 있습니다. + + + #### 정균 + > 정의는 맞는데 발생 조건에서 말씀해주신 점유와 대기, 비선점 등은 Deadlock의 발생 조건 입니다!! 개념이 헷갈려서 그런 것 같아요!

+ 잘 짚고 넘어갈 수 있도록 합시당 + +
+ + +--- + +- ### Q) Deadlock과 Starvation에 대해서 설명해주세요 + + A) Deadlock은 여러개의 프로세스가 본인이 점유하고 있는 내놓지 않고 다른 프로세스의 자원을 얻으려고 시도를 할 때, 순환을 이루면서 영원히 서로의 자원을 요구하는 상황이 되면서 다음 상태로 진행하지 못하는 상태입니다. + + Starvation은 비선점형 스케줄링에서 본인의 우선순위가 계속 밀려서 할당받지 못하는 상태를 뜻합니다. + + #### 정균 + > 전반적으로 잘 답변해주셨어요! 다만 아까 피드백에서 말씀드렸던 것 처럼 비선점형 스케줄링에서 주요하게 발생하긴 하지만 필수가 아니라는 것만 알고 가면 좋을 것 같아요 + +
+ +--- + +- ### Q) Semaphore와 Mutex의 차이에 대해서 설명해주세요 + + A) 둘다 상호배제를 구현하기 위한 구현체라고 볼 수 있다. + + 둘 간의 차이는 뮤텍스는 0과 1로 자원을 표현하는 방법이고 + + 세마포어는 자원이 여러개 있는 상태에서 0과 1로 바이너리 세마포어가 뮤텍스처럼 작동할 수 있지만 기본적으로는 여러개의 자원을 카운팅하는 개념이다. + + #### 정균 + > 전반적으로 잘 설명해주신 것 같습니다!! + +