운영체제

1. 프로세스와 스레드의 차이

프로세스는 실행 중인 프로그램의 인스턴스이고, 스레드는 프로세스 내의 실행 단위이다.
프로세스가 다른 프로세스에 접근하려면 IPC(파이프, 파일, 소켓 등을 이용)를 사용해야 한다.
스레드는 다른 스레드와 Stack 영역을 제외한 메모리 영역을 공유해 통신 과정을 거칠 필요가 없어 효율적이다.

2. LRU 캐싱에 대해 설명

페이지에서 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘

구현방법

  1. 첫 번째 방법은 페이지에 저장된 데이터가 언제 사용되었는지를 알 수 있게하는 부분을 구현해서 제일 오랫동안 참조되지 않은 데이터를 제거하는 방법
  2. 두 번째 방법은 페이지에 데이터를 큐형식으로 저장하는 방식입니다. 페이지 내에 필요한 데이터가 존재한다면 데이터를 페이지 내에서 제거하고 맨 위로 다시 올리고, 만약 데이터가 존재하지 않는다면 바로 입력하여 맨 아래에 있는 데이터를 삭제하는 과정을 통해 LRU 를 구현
  3. 세번째 방법은 set과 list를 이용한 방법. set을 통해 존재하는 데이터를 확인 새로운 데이터 추가시 기존데이터는 삭제후 새로추가.

3. Race Condition

4. Race Condition을 제어하는 방법

5. 데드락이란

둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황이다.

6. 데드락의 해결 방법

7. 인터럽트와 트랩

8. Process 상태 변화 과정

프로세스 상태 전이도
Submit - Hold - Ready - Run - Wait/Exit

9. 페이징이란

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법입니다. 외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론으로, 물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리됩니다.

페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점 이 있습니다.

단점은 내부 단편화 문제는 페이징으로 해결해주지 못합니다.

예를들어 페이지는 디폴트 크기가 4KB입니다. 그런데 전체크기가 11KB인 프로세스이 있을때 4KB 블럭씩 나누게 되면 총 3블럭이 나오지만 1블럭은 기본크기인 4KB를 다채우지못 하여 내부 단편화가 발생이 되는것입니다.

10. 페이지 교체 알고리즘의 종류 설명

11. 메모리구조에대해서 설명하시오.

12. 뮤텍스와 세마포어의 차이.

세마포어의 변수 -> 공유자원의 개수를 나타내는 변수.

0과 1의 값의 값만 갖는 세마포어 -> binary semaphore

도메인 제한이 없는 세마포어 (0,1뿐만아니라 2,3,4 등의 값들 또한 가질수 있는) -> counting semaphore

13. 커널모드와 유저모드에 대해서 설명.

14. Round Robin에 대해 설명.

Round Robin은 CPU Job Scheduling 기법으로, 선점형 스케줄링방식이다.
프로세스에 동일한 할당 시간만큼 순서대로 CPU를 할당한다. 응답시간이 빠르며, 모든 프로세스가 공정하게 CPU를 할당받을 수 있음을 보장한다.

15. PC(Program Counter) 역할

16. 세그멘테이션이란?

17. 가상 메모리란?

가상 메모리는 프로세스에서 실제로 사용되는 영역만 메모리에 적재해 적재하는 총 용량을 줄이는 기법이다. 가상 메모리의 크기는 cpu의 비트로 표현할 수 있는 주소 값의 최대이다. ex. 32bit CPU의 경우 4GB, 64bit CPU는 8TB 프로세스 내의 개별 페이지들은 페이저에 의해 관리된다.

18. 동기와 비동기의 차이

19. critical section의 3요소.

20. RAID

21. Thrashing과 해결법 설명

Thrashing은 메모리에 페이지 부재율이 높은 것을 의미하며, 심각한 성능 저하를 초래한다.
CPU 이용률이 낮을 때 운영체제는 새로운 프로세스를 추가하는데, 이때 전역 페이지 교체 알고리즘을 사용한다. 이로 인해 교체되어버린 페이지를 필요로 하는 프로세스에 페이지 폴트가 발생하고, 다른 프로세스에서 부족한 프레임을 가져오게 되어 연쇄적으로 페이지 폴트가 발생한다. 해결 방법은 한 프로세스가 Thrashing을 유발했을 때, 다른 프로세스로부터 프레임을 뺏어올 수 없도록 하거나, 각 프로세스가 필요로 하는 최소한의 프레임 개수를 보장하는 것이다.

22. IPC와 구현 방법

23. 스케줄러 종류 3가지

24. Blocking/Non-Blocking IO와 동기/비동기 IO 차이

동기/비동기는 인터럽트 발생으로 인한 제어권 반환 시점에 중점을 두고, Blocking/Non-bloking은 제어권 자체에 중점을 둔다는 점에서 차이가 있다. 비동기와 Non-Bloking 모두 즉시 제어권을 반납하지만, 동기는 입출력 완료 시점과 결과 반환 시점이 불일치하고 Non-Blocking은 일치한다 (빈 값이라도 결과를 먼저 반환).

25. x86과 x64 차이

각각 32비트와 64비트를 의미하며 x86 이라는 뜻은 인텔(INTEL)의 CPU 시리즈 이름이자 그 CPU의 명령체계 아키텍쳐 이름입니다.

26. 콘보이 현상이란? 콘보이 현상이 발생될 수 있는 cpu 스케줄러 알고리즘은?

콘보이 현상이란 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상이다. FCFS(First Come First Start) 스케줄링 알고리즘은 비선점으로, 순차적으로 먼저 큐에 들어온 작업부터 실행하므로 콘보이 현상이 발생할 수 있다.

27. 선점형 스케쥴링과 비선점형 스케줄링의 차이

선점형은 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할수 있다는 뜻이다.

비선점형**은 **하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없다.

28. context switching 이란?

29. 논리적 주소와 물리적 주소의 차이

30. 메모리 계층구조 설명

31. 캐시 메모리란?

32. 지역성 두가지 설명

33. fork(); fork(); fork(); 시 프로세서의 갯수는 ?

34. spin lock, busy waiting에 대한 설명

35. 캐시 매핑 방식 3가지

36. 프로세스와 관련된 시스템콜 함수 아는대로 설명

37. 중기 스케줄러로 인해 추가된 프로세스 상태 2가지 설명

38. 컴파일러와 인터프리터의 차이

39. 메모리 할당 알고리즘 First fit, Next fit, Best fit의 결과

40. 커널에 대해서 아는대로 설명

41. 메모리 할당방식을 연속, 불연속 나눠서 설명

42. 가상 메모리 설명

43. 가상 머신 설명

44. page fault

45. DMA에 대한 설명


46. busy waiting 을 해결하기 위한 방법

47. 요구 페이징이란?

48. 카운팅 세마포어와 이진 세마포어에 대해서 설명

49. 부동 소수점 설명

50. Paged Segmentation 기법

51. 워킹셋 알고리즘, 페이지 부재 빈도 알고리즘의 목적, 원리 설명