[CS 면접] 운영체제 - 4
보초님의 github에 있는 질문들을 보며 답변을 달아본 것입니다.
문제사항, 잘못된점 혹은 궁금한점이 있다면 댓글로 남겨주시면 감사하겠습니다.
이전 글을 읽지 않았다면 먼저 읽어보시면 좋습니다.
TLB는 무엇인가요?
TLB는 Translation Lookaside Buffer의 약자로 가상 메모리 주소 변환의 효율성을 향상시키기 위해 사용하는 하드웨어 캐시입니다. TLB는 최근에 사용된 가상-물리적 주소 매핑을 캐싱해 속도를 향상시킵니다.
TLB를 쓰면 왜 빨라지나요?
- 메모리 엑세스 감소 : 전체 페이지 테이블을 조회하는 시간이 감소됩니다.
- 하드웨어적 이점 : 빠른 조회를 위해 설계된 고속 하드웨어로 속도에 이점이 있습니다.
- 지역성 : 한번 참조한 메모리는 재참조할 확률이 높아지므로 액세스 시간을 줄일 수 있습니다.
MMU가 무엇인가요?
Memory Mangement Unit 의 약자로 다음과 같은 기능들을 수행합니다.
- 가상주소공간을 물리 주소공간으로 변환하는 역할
- 메모리를 보호하는 역할
- 메모리 분할 및 페이징
- 캐시 제어
- TLB 관리
TLB와 MMU는 어디에 위치해 있나요?
TLB와 MMU는 CPU 내에서 메모리를 관리하는 역할을 합니다.
동기화를 구현하기 위한 하드웨어적인 해결 방법에 대해 설명해 주세요.
TAS, CAS 와 같은 atomic 명령어를 이용해 비교와 연산을 한번에 수행합니다.
volatile 키워드는 어떤 의미가 있나요?
가시성 : 해당 값이 캐시되지 않고 항상 메인 메모리에서 읽고 써야하며 모든스레드의 최신 업데이트를 반영하도록 합니다.
원자성 : 해당 변수에 대한 읽기 쓰기 작업이 원자적입니다.
다른 동기화 방식과 동일한 수준의 동기화를 제공하지 않아 간단한 경우에 주로 사용합니다.
싱글코어가 아니라 멀티코어라면, 어떻게 동기화가 이뤄질까요?
- Atomic Operation : 하드웨어 수준의 동기화 연산
- Lock, Semaphore, condition variable 과 같은 동기화 연산
File Descriptor와, File System에 대해 설명해 주세요.
File Descriptor : 파일을 읽고 쓸 수 있는 파일 식별자 번호, 해당 파일을 열게되면 운영체제는 해당 파일에 대한 File Descriptor 값을 할당하여 그 값을 통해 파일을 읽고 쓸 수 있습니다.
File System : 파일을 관리하기 위한 방식으로 흔히 사용하는 폴더를 이용한 계층 구조가 있습니다. 파일의 이름, 크기, 권한 및 위치와 같은 메타데이터와 함께 파일을 저장하고 검색하기 위한 구조를 제공합니다.
I-Node가 무엇인가요?
파일 시스템에서 파일이나 폴더를 가리킬때 사용하는 데이터 구조를 의미합니다.
각 파일 또는 디렉토리는 고유한 i-node 와 연결되며 파일 유형, 권한, 크기, 소유 등의 정보를 포합합니다.
이 구조를 이용하여 파일 시스템은 저장 장치의 파일을 효율적으로 관리 및 구성하 수 있습니다.
동기와 비동기, 블로킹과 논블로킹의 차이에 대해 설명해 주세요.
동기 : 요청한 작업에 대해 순서가 지켜저 요청 순서대로 응답을 받아 처리함.
비동기 : 요청한 작업에 대해 순서가 지켜지지 않아 작업이 빨리 끝나는대로 응답을 받아 처리함.
블로킹 : 한 작업을 수행하는 동안 다른 작업을 진행할 수 없음
논블로킹 : 한 작업을 수행하는 동안 다른 작업을 진행 가능
그렇다면 동기이면서 논블로킹이고, 비동기이면서 블로킹인 경우는 의미가 있다고 할 수 있나요?
동기이면서 논블로킹인 경우는 다른 작업을 진행하며 중간중간 요청 결과를 확인하여 작업을 순차적으로 진행합니다. 예시로는 로딩바, 다운로드 진행 바 같은 경우가 있습니다.
비동기 블로킹인 경우는 한작업을 수행 후 다른 처리를 하지 못해 결국 동기 블로킹 방식으로 동작하게 됩니다.
I/O 멀티플렉싱에 대해 설명해 주세요.
단일 스레드/프로세스 내에서 동시에 여러 입출력 작업을 처리하는데 사용되는 기술을 의미합니다.
- I/O 소스 등록 : 모니터링 하려는 소스를 식별하고 등록합니다.
- 이벤트 대기
- 이벤트 알림 : 모니터링 되는 소스 중 하나가 작업을 위해 준비 될때까지 프로그램 실행을 차단합니다.
- 이벤트 처리 : 준비가 된 소스를 결정합니다.
- I/O 작업 수행
이벤트 기반 프로그램이 또는 비동기 I/O와 같은 기술을 함께 사용하여 성능과 확장성을 향상 시킬 수 있습니다.
출처