1. 운영체제란?
- 운영체제는 하드웨어와 사용자를 연결해주는 소프트웨어입니다. 자원을 효츌적으로 관리하고 프로세스, 파일 시스템, 네트워크 등을 제어합니다.
2. 실행 파일 생성 과정
- 실행 파일 생성 과정은 소스코드를 컴파일하고 이를 라이브러리와 연결하여 실행 가능한 파일로 생성합니다.
3. 프로그램 실행 과정
- 프로그램 실행 과정은 실행 파일을 메모리에 적재하고 프로세스를 생성합니다. 코드, 데이터, 스택, 힙 공간을 확보하고 PC로부터 명령어 실행을 시작합니다.
4. 캐시란?
- 캐시는 CPU의 처리속도와 주 기억장치의 접근 속도 차이를 줄이기 위한 고속 메모리입니다.
5. 메모리 영역
- 메모리 영역은 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 구성되어있습니다.
- 코드 영역에는 소스 코드가 존재하고, 데이터 영역에는 전역,정적 변수가 존재합니다.
- 힙 영역에는 동적 할당된 데이터가 존재하고, 스택 영역에는 함수 호출시 생성되는 지역 변수와 같은 데이터가 존재합니다.
6. 전역변수와 정적변수의 차이
- 전역변수는 프로그램 전체에서 접근이 가능합니다.
- 정적변수는 선언된 함수/파일 내에서만 접근이 가능합니다. 수명은 프로그램 종료시까지 유지됩니다.
7. Heap과 Stack의 차이
- Heap은 프로그램 실행 중에 필요한 공간의 크기를 파악하며, 빈 공간을 찾기 때문에 스택에 비해 느리지만 공간이 매우 큽니다.
- Stack은 정해진 위치에 컴파일 타임에 정해진 크기만큼 할당 및 해제를 하기 때문에 속도가 빠릅니다.
8. 프로세스
- 프로세스는 실행 중인 프로그램을 의미합니다. 프로세스 생성 시 독립된 메모리 공간(Code, Data, Heap, Stack)을 할당 받습니다.
9. 스레드
- 스레드는 프로세스 내 실행 흐름 단위를 의미합니다. 스레드끼리는 메모리 공간(Heap, Data)을 공유하는데, Stack은 스레드 마다 할당됩니다.
10. 멀티 프로세스와 멀티 스레드
- 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지하는 단점이 있습니다.
- 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있습니다.
11. 스레드와 프로세스 Context Switching 차이
- Context Switching : CPU/코어에서 실행중이던 스레드가 다른 스레드로 교체되는 것으로 여러 프로세스/스레드를 동시에 실행시키기 위해 필요합니다.
- PCB에 현재 프로세스의 CPU 상태(레지스터, 프로그램 카운터 등)를 저장하고, 다음에 실행할 프로세스의 PCB에서 상태를 복원하여 실행을 넘겨주는 과정입니다. 주소 공간, 페이지 테이블 등 프로세스 단위 정보까지 교체하기 때문에 비용이 큽니다.
- 같은 프로세스 내에서 실행할 스레드를 바꾸는 과정입니다. TCB에 스레드의 레지스터 상태, 스택 포인터만 저장/복원하므로 프로세스 스위칭보다 훨씬 빠릅니다. 메모리 주소 공간은 공유하기 때문에 MMU context 변경은 필요 없습니다.
12. CPU 스케줄러
- FCFS, SJF, Round Robin, SRT, Multilevel Queue등이 존재합니다.
- 비선점형 : FCFS, SJF
- 선점형 : Round Robin, SRT, Multilevel Queue
13. IPC(Inter-Process Communication)
- 하나의 PC안에서 실행 중인 프로세스 간에 발생하는 통신을 의미합니다.
14. 가상 메모리
- 가상 메모리는 프로세스를 페이지 단위로 나누고 실행 시 필요한 페이지만 물리 메모리에 올립니다. 나머지는 디스크에 남겨둡니다.
15. 페이징 기법과 세그먼테이션 기법
- 페이징 기법은 메모리를 고정 크리 페이지로 분할하는 기법입니다.
- 세그먼테이션 기법은 논리적 단위(코드, 데이터)로 메모리를 분할하는 기법입니다.
16. MMU(Memory Management Unit)
- CPU와 메모리 사이에서 메모리 주소 변환 및 보호 기능을 수행하는 하드웨어 장치입니다.
- 가상 주소를 물리 주소로 변환하는 역할을 합니다.
17. Blocking과 Non-Blocking
- Blocking은 작업이 완료될 때까지 대기하는 것을 의미합니다. 자신의 작업을 진행하다 다른 작업이 진행되면 작업의 제어권을 넘겨주고 다른 작업이 끝날때까지 기다리는 것 입니다.
- Non-Blocking은 호출은 하되 자신의 작업은 그대로 수행하는 것을 의미합니다. 즉, 호출된 다른 작업에게 제어권을 넘겨주지 않으므로 다른 작업과는 관련없이 자신의 작업을 진행합니다.
18. 동기와 비동기
- 동기는 작업을 요청하고 해당 작업이 종료되면 다음 동작을 처리하는 방식입니다. 호출한 작업이 완료될 때까지 대기 하기 때문에 여러 작업을 동시에 처리할 수 없습니다.
- 비동기는 현재 작업을 실행하는 도중 다른 작업을 실행하고 해당 작업의 결과와는 관계없이 다음 동작을 처리하는 방식입니다. 작업을 호출한 곳에서 처리하지 않고 콜백 함수를 통해 결과를 처리합니다.
20. 데드락 발생 조건
- 데드락은 프로세스들이 서로가 가진 자원을 기다리며 무한 대기하는 상태를 의미하는 것으로 상호 배제, 점유와 대기, 비선점, 순환 대기 4가지 조건이 모두 충족되어야 발생합니다.
- 상호 배제 : 자원을 동시에 공유할 수 없는 상태
- 점유와 대기 : 자원이 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태
- 비선점 : 다른 프로세스가 사용중인 자원을 강제로 빼앗지 못하는 상태
- 순환 대기 : 프로세스들이 원의 형태로 서로의 자원을 대기하는 상태
21. 데드락의 해결방법
- 데드락을 해결하는 방법에는 예방, 회피, 탐지-회복, 무시 4가지 방법이 있습니다.
- 예방 : 데드락을 유발하는 네 가지 조건 무력화
- 회피: 안전 상태임을 확인하면서 자원 배분
- 탐지-회복 : 시스템 검사를 통해 데드락 발생을 탐지하고 이를 회복
- 무시 : 데드락 발생 확률이 낮은 시스템에서 주로 사용, 아무런 조치를 취하지 않는 것
'면접준비' 카테고리의 다른 글
| [면접준비] WEB (2) | 2025.09.17 |
|---|---|
| [면접준비] 네트워크 (0) | 2025.09.17 |
| [면접준비] DB (0) | 2025.09.17 |
| [면접준비] Spring (0) | 2025.09.17 |
| [면접준비] JAVA (0) | 2025.09.16 |