[면접 예상 질문] 운영체제(3/3)
1. 컴퓨터 부팅 과정?
- 전원이 켜지거나 재부팅되면 부트스트랩 프로그램(Bootstrap program)이 로드된다.
- 부트 스트랩 프로그램은 일반적으로 펌웨어라고 알려진 ROM 또는 EEPROM에 저장되어 있다.
- 이 프로그램은 장치 제어기, 메모리 내용 등을 포함한 시스템의 모든 부분을 초기화하며, 운영체제의 커널을 메모리에 적재하고 실행시킨다.
2. 파일에 대한 읽기 및 쓰기, 즉 입출력 작업 전에 해야되는 파일 연산은 무엇인가?
- 파일에 대한 생성과 삭제를 제외한 모든 연산을 하기 전에 반드시 open() 시스템 콜을 해야 한다. open() 시스템 콜이 성공하면 열린 파일 핸들(파일 디스크립터)을 반환한다.
3. 운영체제의 정의와 목적은?
- 정의 : 컴퓨터 하드웨어를 관리하는 소프트웨어
- 목적
- 처리 능력(Throughput) 증대: 일정 시간 동안 시스템이 처리하는 일의 양
- 반환 시간(Turn around time, 응답 시간) 단축 : 작업 의뢰 시간부터 처리 완료까지 걸리는 시간
- 사용가능도(Availability) 증대 : 시스템 내의 한정된 자원을 사용할 필요가 있을 때 얼만큼 즉시 사용 가능한지에 대한 정도
- 신뢰도(Reliability) 향상 : 시스템이 주어진 문제를 정확하게 해결하는 정도
4. 다음 네 개의 저장 장치 [메모리, 하드디스크, 캐시, 레지스터]를 빠른 순서대로 나열하면?
- 캐시 - 하드디스크 - 메모리 - 레지스터
5. 디렉토리 내 파일 배치 방법은?
- 연속 할당
- 각 파일을 연속된 디스크 블록에 저장한다.
- 외부 단편화가 발생한다.
- 연결 할당
- 디스크 블록들을 연결 리스트 형태로 관리한다.
- 연속 할당의 문제점(외부 단편화)을 해결한다.
- 파일은 저장장치 블록의 연결 리스트 형태로 저장되고, 이 블록들은 장치 내에 흩어져 저장될 수 있다.
6. [CPU 클럭 계산 문제] 2GHz 클럭의 컴퓨터 A에서 10초에 수행되는 프로그램을 6초동안 실행할 컴퓨터 B를 설계할건데 A보다 1.2배 많은 클럭 사이클이 필요하다고 하면, B의 클럭 속도는?
$$프로그램의\;CPU\;실행\;시간 = \begin{cases}CPU\;클럭\;사이클\;수\;*\;클럭\;사이클\;시간\\CPU\;클럭\;사이클\;수\;/\;클럭\;속도\end{cases}$$
- $10초 = x / 2 * 10^9 Hz \\ x = 20 * 10^9 Hz = 20GHz$
- $6 초 = 1.2 * 20 * 10^9 Hz / y \\ y = 4 Ghz$
7. 직접 시스템 호출(system call)을 수행하는 대신 API를 통해 하는 이유는?
- 구현해서 사용하기 어렵고, 사용자가 직접 커널에 접근할 수도 없다.
- os 환경이 다 다르기때문에 호환되게 처리하기가 어렵다. C나 C++같이 high-level 언어로 호출하게 될 경우 프로그램 이식성 및 호환성이 좋아지기 때문에 API를 사용한다.
8. 인터럽트가 무엇이며, 실행 흐름은 어떻게 되는가?
- CPU 하드웨어는 인터럽트 요청 라인(interrupt request line)이라는 한 선을 갖는데, CPU는 각 명령어를 끝내고 다음 명령어를 수행하기 전에 항상 이 선을 검사한다.
- 인터럽트는 입출력 컨트롤러가 인터럽트 요청 라인에 신호를 보내면 CPU가 알아차리고 각종 레지스터 값과 상태 정보를 저장한 다음, 인터럽트 핸들러 함수로 분기하는 행위를 말한다.
- CPU가 인터럽트 되면, 하던 연산까지는 마치고 중단한 채 인터럽트 핸들러 루틴을 실행한다. 인터럽트 핸들러의 실행이 완료되면, CPU는 인터럽트 되었던 연산을 재개한다. 프로그램 카운터는 다음 명령어의 주소가 들어가 있다.
9. (번외 문제) Sequential Access vs. Random Access, SDD는 왜 빠를까?
- Random Access(임의 접근)이란 임의의 주소가 주어질 때 어떤 작업이든 똑같은 시간으로 접근이 가능하다는 의미를 갖는다. 무작위 접근이란 뜻이 아니다.
- 위치와 무관하게 직접 레코드에 접근할 수 있기 때문에 직접 접근이라는 용어로도 쓰인다.
- HDD는 순차 접근 방식인 것에 반면, SSD는 임의 접근 방식을 사용한다. SSD는 HDD에 비해 탐색 시간 없이 데이터에 접근이 가능하므로 접근 시간이 빠르다.
- HDD는 금속 디스크를 사용하지만, SSD는 메모리 반도체를 사용한다. 따라서, HDD는 데이터를 디스크에 저장하는 반면, SSD는 반도체 소자에 저장하므로 SSD의 속도가 더 빠르다.
댓글남기기