Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions operating-system/daehun/summary/FEEDBACK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# 운영체제 Overall 피드백
## Interview

- ### Q) 프로세스와 스레드의 차이에 대해서 설명해주세요

A) 둘의 가장 큰 차이로는 Stack 영역을 공유하는 지입니다.
프로세스는 Heap, Stack, Data, Code 영역을 공유하지만
Thread같은 경우는 하나의 작업을 처리하는 단위로 하나의 프로세스 내에서 Code/Data/Heap 영역이 생성이 됩니다.
Comment on lines +6 to +8
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스타일 차이 일 수 있으나,

  1. 프로세스에 대한 설명
  2. 스레드에 대한 설명
  3. 그래서 뭐가 다른데?

로 가는 방향이 더 좋을 것 같습니다!


<br>

- ### Q) 그렇다면 Thread의 문제점은 무엇이 있을까요?

A) 데이터의 일관성 문제가 생길 수 있습니다.
어떤 프로세스가 작업을 처리할 때, 여러 스레드가 작업을 처리하게 되는데,
그때 공유되는 자원이 있기 때문에 데이터의 일관성문제가 생길 수 있습니다.
Comment on lines +12 to +16
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

면접자의 의도대로 답을 진행해야합니다.

첫번째 질문이 스레드와 프로세스의 차이를 물어봤으니, 프로세스는 거기에서 무슨 문제가 있는지 파악해야합니다.
스레드의 문제가 아닌데, 프로세스의 문제를 설명하는 것이 더 좋아보입니다.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

따라서 여기에서는 Context Switch 비용이 크다.가 더 적절한 답변이 될 것 같습니다.


<br>


#### 정균
> 제가 잘못 들었을수도 있긴한데 Thread 같은 경우는 Code/Data/Heap 영역이 따로 생성되는게 아니라 Stack영역만 생성되고 세개의 영역같은 경우는 공유가 됩니다!<br><br>
프로세스의 경우에는 운영체제로부터 Code, Data, Heap, Stack 모두를 독립된 메모리 공간을 할당받습니다!



---

- ### Q) Context Switching에 대해서 설명해주세요

A) 한 프로세스에서 다른 프로세스로 넘어갈때, 이 전 프로세스에 대한 정보를 저장하고, 다음 프로세스에 대한 내용을 불러오는 과정에서 생기는 개념이다.

컨텍스트 스위칭은 작업을 할 때 불필요한 비용이 생길 수 있어서 최소한의 비용을 산정해야한다.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 답변이 조금 모호한 것 같습니다.
최소한의 비용을 산정해야한다.
어떤 의미로 답변하신건가요?


- ### Q) 프로세스의 이동간에 정보를 저장한다고 하셨는데 정보를 어디에 저장할까요?

A) PCB에 저장하며 PCB에는 프로세스의 전반적인 메타데이터,

즉 프로세스의 상태나 프로그램 카운터 주소, 프로세스 스케줄링에 대한 정보들이 포함됩니다.
Comment on lines +35 to +39
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게 답변하면 좋은 답변 인 것 같습니다👍

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

근데 저는 Process Control Block이라고 답변할 것 같아요. 이게 면접이다보니,
내가 해당 내용에 잘 알고 있다라는 인상을 주기 위해서요!


<br>


#### 정균
> 잘 대답해주신 것 같습니다!! 다만 뒤에 꼬리질문에서 잘 대답해주신 내용을 첫번째 질문에 대한 답변에 포함이 되었다면 좋을 것 같습니다!!

<br>

- ### Q) 동시성과 병렬성의 차이에 대해서 설명해주세요

A) 잘 모르겠습니다

#### 정균
> 동시성은 하나의 자원을 사용해서 여러 작업을 번갈아가며 처리하는것이고
병렬성은 여러개의 자원을 사용해서 여러 작업을 동시에 처리하는 능력입니다!

제가 이 파트에서 질문을 드린 이유는 동시성을 구현하기 위해서 잦은 ContextSwitching이 발생해서 여기서 질문을 드려봤습니다!!

최근에 친구가 면접에서 이런 질문을 받았다고 해서 알아두시면 좋을 것 같습니다!

<br>
Comment on lines +49 to +61
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요새 동시성, 병렬성이 면접 필수 문항입니다!
어떤 곳에서는 동시성인지, 어떤 곳에서는 병렬성이 사용되는지 비교하시면서 공부하시면 더 좋을 것 같습니다.


---

- ### Q) 멀티스레드 프로그래밍에 대해서 설명해주세요

A) 멀티스레드 프로그래밍은 여러개의 스레드가 작업을 동시에 처리하는 기법입니다.

멀티프로세스는 코드, 데이터, 힙 영역을 공유하기 때문에 IPC 같은 기법 없이 멀티프로세스보다 빠르게 작업을 처리할 수 있습니다.
Comment on lines +65 to +69
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

점점 답변 스킬이 늘어가네요 ㅎㅎ



- ### Q) Context Switching은 스레드와 프로세스 중에서 뭐가 더 빠를까요?

A) 스레드가 스택영역을 제외하고 나머지 데이터 영역을 공유하기 때문에 빠를 것 같습니다.

#### 정균
> 답변을 하실 때 잘못 얘기하시는 경우가 종종 있는 것 같아요!<br><br>
개념을 모르는게 아니라 그냥 설명을 해주실 때, 천천히 답변하셔도 좋으니 어떤 말을 할건지 간단하게라도 정리 후에 말하는 습관이 들이시면 좋을 것 같아요!

위의 답변에서도 멀티스레드 환경이 코드, 데이터, 힙을 공유하는 건데 멀티프로세스 환경이 공유한다고 답변을 하셨어서,, 요 부분만 신경쓰시면 좋을 것 같습니다!!

<br>


---

- ### Q) 프로세스 동기화에 대해서 설명해주세요

A) 잘 모르겠습니다.


- ### Q) Race Condition 에 대해서 설명해주세요

A) 여러 개의 프로세스들이 하나의 자원에 동시에 접근을 할 때 발생하는 것이 Race Condition 입니다.

Race Condition의 발생 조건으로는 점유와 대기, 비선점 등이 있습니다.


#### 정균
> 정의는 맞는데 발생 조건에서 말씀해주신 점유와 대기, 비선점 등은 Deadlock의 발생 조건 입니다!! 개념이 헷갈려서 그런 것 같아요!<br><br>
잘 짚고 넘어갈 수 있도록 합시당

<br>
Comment on lines +87 to +103
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분은 그냥 넘어가면 안됩니다..!
이번 기회에 확실히 정리하고 가면 좋을 것 같습니다.



---

- ### Q) Deadlock과 Starvation에 대해서 설명해주세요

A) Deadlock은 여러개의 프로세스가 본인이 점유하고 있는 내놓지 않고 다른 프로세스의 자원을 얻으려고 시도를 할 때, 순환을 이루면서 영원히 서로의 자원을 요구하는 상황이 되면서 다음 상태로 진행하지 못하는 상태입니다.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전반적으로 말씀 잘해주시긴 했지만 순환이라는 단어가 모호합니다

예를들어
P1 -> R1 필요, R2 점유
P2 -> R2 필요, R1 점유
도 데드락이니까요


Starvation은 비선점형 스케줄링에서 본인의 우선순위가 계속 밀려서 할당받지 못하는 상태를 뜻합니다.

#### 정균
> 전반적으로 잘 답변해주셨어요! 다만 아까 피드백에서 말씀드렸던 것 처럼 비선점형 스케줄링에서 주요하게 발생하긴 하지만 필수가 아니라는 것만 알고 가면 좋을 것 같아요

<br>

---

- ### Q) Semaphore와 Mutex의 차이에 대해서 설명해주세요

A) 둘다 상호배제를 구현하기 위한 구현체라고 볼 수 있다.

둘 간의 차이는 뮤텍스는 0과 1로 자원을 표현하는 방법이고

세마포어는 자원이 여러개 있는 상태에서 0과 1로 바이너리 세마포어가 뮤텍스처럼 작동할 수 있지만 기본적으로는 여러개의 자원을 카운팅하는 개념이다.

#### 정균
> 전반적으로 잘 설명해주신 것 같습니다!!

<br>