본문 바로가기

⚙️ Computer Science/명품 운영체제

[명품 운영체제] - Chapter02 연습문제 + 복합문제 풀이

 

 

생능출판 - 황기태 - 명품 운영체제

명품 운영체제 연습문제 Chapter 02

 

 

1. 컴퓨터 시스템에서 주소를 발생시킬 수 있는 하드웨어를 있는 대로 골라라 

  1. CPU
  2. 메모리
  3. 캐시 메모리
  4. 디스크

📝 CPU는 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 주용 기능을 관할하는 장치이다. 컴퓨터의 가장 핵심 장치이며, 전원이 공급될 때 작동을 시작한다. 메모리에 적재된 프로그램을 실행하고 컴퓨터 시스템에서 주소를 발생시키는 하드웨어이다.

 

 

2. CPU의 주소 선이 총 24개 있다면 이 CPU가 액세스할 수 있는 메모리의 최대 크기는?

  1. 1MB
  2. 16MB
  3. 1GB
  4. 2GB

📝 CPU의 주소 선이 24개면 2^24개의 주소를 표현할 수 있다. 주소 선의 개수는 CPU가 직접 액세스할 수 있는 메모리의 크기를 결정한다. 각 주소는 메모리의 바이트를 가리킬 수 있으므로, CPU가 액세스할 수 있는 메모리의 최대 크기는 2^24바이트이다. 이를 다른 단위로 변환하면 16,777,216 바이트 또는 16MB가 된다. 

 

 

3. 캐시 메모리가 있는 컴퓨터에서 CPU가 실행할 명령어와 코드가 반드시 있어야 하는 곳은?

  1. 캐시 메모리
  2. 메모리
  3. 하드디스크
  4. USB 메모리

 

4. 다음 CPU 레지스터 속에 저장된 값의 의미는 무엇인가?

  1. PC 레지스터
  2. IR 레지스터
  3. SP 레지스터

 

5. 현재 실행 중인 프로그램에 관한 일체의 실행 상황 정보를 무엇이라고 하는가?

  1. 스택
  2. 커널
  3. 프로세스
  4. 컨텍스트

📝 컴퓨터 시스템이 동작하거나 프로그램이 실행되는 환경과 관련된 정보를 컨텍스트라고 한다. 컨텍스트는 운영체제, 프로세스, 스레드, 메모리 상태 등과 관련된 정보를 포함한다.

 

 

6. 컨텍스트 스위칭이란?

  1. 현재 실행중인 프로그램을 중단시키고 CPU에게 다른 프로그램을 실행시키는 행위
  2. 메모리에 적재된 사용중이지 않는 코드나 데이터를 하드 디스크로 이동시키는 행위
  3. 메모리에 있는 코드나 데이터를 캐시 메모리로 복사하는 행위
  4. 프로그램의 실행 모드를 사용자 모드에서 커널 모드로 변경하는 행위

📝 컨텍스트 스위칭은 운영체제에서 실행 중인 프로세스 간에 제어권을 전환하는 작업을 말한다. 컨텍스트 스위칭은 다중작업(Multi Tasking)을 가능하게 하며, 여러 프로세스가 동시에 실행되는 것처럼 보이도록 한다. 컨텍스트 스위칭의 실행 단계는 [현재 프로세스의 상태 저장] -> [다음 프로세스의 상태 복원] -> [제어권 전환] 의 단계로 이루어진다. 컨텍스트 스위칭은 상대적으로 오버헤드가 큰 작업이므로, 불필요한 스위칭이 발생하지 않도록 최적화되어야 한다. 

 

 

7. 운영체제가 지원하는 서비스를 응용프로그램이 활용할 수 있도록 해주는 소프트웨어 인터페이스를 무엇이라고 부르는가?

  1. 시스템 호출
  2. 인터럽트
  3. 이벤트
  4. 동기화

 

8. 다음 중 운영체제의 목적이 아닌 것은?

  1. 사용자가 컴퓨터 하드웨어에 대해 잘 알지 못해도 컴퓨터를 사용할 수 있게 한다. 
  2. 자원을 독점적으로 관리하여 여러 응용프로그램이 자원을 사용하고자 할 때 충돌을 방지한다.
  3. 컴퓨터에 장착된 여러 개의 CPU를 다 활용하지 않고 최소 개수의 CPU로 프로그램을 실행시켜 CPU를 아껴 사용할 수 있도록 한다. 
  4. 자원을 효율적으로 관리하여 컴퓨터 시스템의 처리율을 높인다. 

📝 운영체제의 주요 목적은 자원 관리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출려규관리, 사용자 인터페이스 제공이다. 이 외에도 보안 관리, 네트워크 관리, 에러 처리 등 다양한 기능과 목적을 갖고 있다. 총제체적으로 운영체제는 하드웨어와 응용 프로그램 사이에서 중개자 역할을 수행하여 컴퓨터 시스템의 효율성, 안정성, 사용자 편의성을 증진시키는 것이 목적이다. 

 

 

9. 운영체제를 구성하는 요소가 아닌 것은?

  1. 커널 코드
  2. 도구 소프트웨어
  3. 디바이스 드라이버
  4. 컴파일러

📝 운영체제는 여러 요소로 구성이 된다. 주요한 구성 요소는 커널, 디바이스 드라이버, 셸(shell), 파일 시스템, 네트워킹, 보안 관리, 사용자 인터페이스가 있다. 

 

 

10. 디바이스 드라이버에 대한 설명 중 틀린 것은?

  1. 디바이스 드라이버는 호환성이 뛰어나서 Windows에서 작성된 마우스 드라이버를 리눅스에도 사용할 수 있다. 
  2. 디바이스 드라이버는 하드웨어 장치들을 직접 제어하므로 일반적으로 커널 모드에서 작동한다. 
  3. 디바이스 드라이버는 장치 제작자들의 의해 작성되어 배포되는 것이 일반적이다. 
  4. 디바이스 드라이버는 커널 코드가 입출력 장치들의 하드웨어 구조에 무관하게 작성되도록 한다. 

 

11. 메모리 공간을 사용자 공간과 커널 공간으로 나누는 이유는?

  1. 응용프로그램이 적재되는 공간과 커널 코드와 데이터가 적재되는 공간을 분리하여 커널 공간에 대한 응용프로그램의 직접 접근을 막아 보호하기 위해 
  2. 메모리를 늘릴 때 사용자 공간을 늘릴 지 커널 공간을 늘릴 지 선택하기 쉽도록 하기 위해 
  3. 작은 메모리에서도 여러 응용프로그램을 실행시키기 위해 
  4. 높은 우선순위의 응용프로그램을 커널 공간에서 실행시키기 위해 

 

12. 사용자 공간과 커널 공간에 대해 말한 것 중 틀린 것은?

  1. 사용자 공간은 응용프로그램의 코드가 실행되는 메모리의 주소 공간이다. 
  2. 커널 코드는 커널 공간에만 탑재된다.
  3. 대부분의 경우 디바이스 드라이버는 커널 공간에 탑재된다.
  4. 응용프로그램이 커널 공간에 쓰는 것은 금지되지만 읽는 것은 허용된다.

 

13. 응용프로그램이 커널에 작성된 코드를 활용할 수 있는 방법은 무엇인가?

  1. 시스템 호출
  2. 인터럽트
  3. 표준 라이브러리 함수 호출
  4. 방법이 없다. 

 

14. 사용자 모드와 커널 모드에 대한 설명 중 틀린 것은?

  1. 시스템 호출이 발생하면 사용자 모드에서 커널 모드로 바뀐다. 
  2. 사용자 모드와 커널 모드의 구분은 본질적으로 CPU에 의해 이루어진다. 
  3. 사용자 모드에서는 커널 코드 중 허용된 부분의 코드만 액세스할 수 있다. 
  4. 커널 모드에서는 메모리 공간 전체를 액세스할 수 있다. 

 

15. 다음은 무엇에 대한 설명인가?

입출력 장치나 타이머, 인터럽트 처리, 시스템 중단 등 사용자 모드에서는 사용할 수 없고 커널 모드에서 사용할 수 있는 특별한 CPU 기계 명령
  1. 커널 명령
  2. 시스템 호출 명령
  3. 특권 명령
  4. 시스템 제어 명령

 

16. 특권 명령이 사용되는 경우가 아닌 것은?

  1. CPU 작동을 중지시키는 halt 명령
  2. 타이머를 설정하는 명령
  3. CPU에 컨텍스트를 저장하는 명령
  4. 시스템 호출 명령

 

17. 다음 중 같지 않는 용어는?

  1. 시스템 호출
  2. 감독자 호출
  3. 커널 호출
  4. 트랩

 

18. C프로그램에서 printf("hello")의 실행에 대해 잘못 설명한 것은?

  1. printf()는 표준 라이브러리 함수이다. 
  2. printf()는 디스플레이에 hello를 출력해줄 커널의 도움을 받기 위해 결국 시스템 호출을 할 것이다. 
  3. printf()는 직접 디스플레이에 출력하는 함수이다. 
  4. printf()에 의해 디스플레이에 hello가 출력되었다는 것은 시스템 호출이 불려졌다는 의미이다. 

 

19. 인터럽트에 대한 설명 중 틀린 것은?

  1. 인터럽트가 발생하면 CPU의 실행 모드를 굳이 커널 모드로 변경할 필요 없이 현재 모드에서 인터럽트 서비스 루틴이 실행된다. 
  2. 인터럽트는 입출력 장치들이 입출력 작업을 끝냈을 때, 커널에게 알리는 방법으로 사용된다. 
  3. 인터럽트 서비스 루틴의 주소가 기록된 테이블을 인터럽트 벡터 테이블이라고 하며 커널 공간에 저장된다. 
  4. 응용프로그램 개발자는 인터럽트 서비스 루틴을 작성하여 커널에 등록할 수 있다. 

📝 인터럽트는 컴퓨터 시스템에서 발생하는 이벤트나 신호로, CPU가 현재 수행 중인 작업을 일시적으로 중단하고 다른 작업을 처리할 수 있도록 하는 메커니즘이다. 인터럽트는 하드웨어 또는 소프트웨어에서 발생할 수 있다. 하드웨어 인터럽트에는 타이머 인터럽트, 입출력 장치 인터럽트 등이 있고, 소프트웨어 인터럽트에는 시스템 호출, 예외 상황, 특정 명령어 실행 등이 있다. 인터럽트는 매우 중요한 개념으로, 컴퓨터 시스템에서 다중 작업, 입출력 처리, 예외 처리 등 다양한 기능을 지원한다. 

 

 

20. 운영체제의 커널 코드를 장치와 무관하게 개발할 수 있도록 하는 것은 어느 요소의 역할인가?

  1. 시스템 호출
  2. 메모리 관리 기능
  3. 디바이스 드라이버 
  4. 인터럽트

 

21. 응용프로그램을 운영체제와 무관하게 작성할 수 있도록 하는 것은 어느 요소의 역할인가?

  1. 표준 라이브러리 
  2. 시스템 호출 라이브러리 
  3. 디바이스 드라이버
  4. 인터럽트

 

22. 시스템 호출에 대해 잘못 설명한 것은?

  1. 시스템 호출은 기계 명령에 의해 CPU에 의해 진행된다. 
  2. 시스템 호출을 일으키는 기계 명령이 실행되면 CPU는 사용자 모드에서 커널 모드로 바꾼다. 
  3. 응용프로그램은 시스템 호출을 통해 커널 프로세스에게 커널 코드를 실행해 줄 것을 요청한다. 
  4. 시스템 호출을 일으키는 기계 명령은 CPU마다 다르다. 

 

23. 시스템 호출에 대해 잘못 설명한 것은?

  1. 모놀리식 운영체제에서 커널 코드는 함수들의 집합이다. 
  2. 커널에는 시스템 호출이 일어나면 실행될 함수가 미리 정해져 있다.
  3. 응용프로그램이 시스템 호출을 요청할 때, 시스템 호출 번호를 넘겨주는데 이 번호는 커널 내 함수들의 주소가 담긴 테이블의 인덱스이다. 
  4. 시스템 호출은 커널 코드를 실행시키기 때문에 응용프로그램 개발자의 입장에서 프로그램의 실행 속도를 높이는 매우 좋은 방법이다. 

 

24. 표준 라이브러리 함수와 시스템 호출 함수들에 대한 설명으로 틀린 것은?

  1. 표준 라이브러리 함수는 컴파일러나 운영체제에 따라 다르지 않아 호환성이 높다.
  2. 시스템 호출 함수는 운영체제에 따라 이름이나 호출 방법이 달라 호환성이 부족하다. 
  3. 표준 라이브러리 함수는 필요에 따라 시스템 호출 라이브러리의 시스템 호출 함수를 호출하기도 한다 .
  4. 응용프로그램 개발 시 표준 라이브러리 함수보다 시스템 호출 함수를 사용하면 응용프로그램의 실행 속도를 높일 수 있다. 

 

 

 

 

 

 

 

복합문제

 

1. 응용프로그램을 작성할 때 표준 라이브러리 함수(예:printf())를 호출하는 것이 시스템 호출 함수(예:write())를 호출하는 것보다 나은 방법인 이유를 설명하라.

표준 라이브러리 함수인 printf()를 사용하면 커널로 진입하는 횟수가 줄어들어 커널에 대한 부담이 적다. 응용프로그램의 입장에서 printf()의 빠른 return 으로 인해 응답 속도가 빠르기 때문에 더 효율적이다. 

 

 

2. 인터럽트 서비스 루틴이 커널 영역에 있어야 하는 이유가 무엇일까?

인터럽트 서비스 루틴은 대부분의 경우 장치를 제어하거나 CPU의 인터럽트 플래그를 제어하는 등 특권 명령을 사용하기 때문에 커널 모드에서 실행되어야 한다. 

 

 

3. 컴퓨터 시스템과 운영체제의 목표는 CPU의 활용률을 극대화하는데 있다. 인터럽트는 이 목적을 달성하게 하는데 중요한 역할을 한다. 인터럽트가 어떤 식으로 CPU 활용률을 높이는데 기여하는지 설명하라. 

인터럽트를 사용하면 입출력 장치가 입출력이 완료됐음을 알려줄 때까지 CPU는 다른 일을 할 수 있기 때문에 활용률은 높아진다.

 

 

 

728x90