스터디 1주차 Chapter 01.운영체제의 개요 질문
Q. 운영체제의 역할에 대해 말해주세요.
A : A. 운영체제는 시스템의 자원을 관리하고, 사용자와 시스템 간의 인터페이스를 제공하고, 하드웨어와 시스템 간의 인터페이스(드라이버)를 제공하는 역할을 합니다. 사용자는 운영체제를 거치지 않고는 자원에 접근할 수 없습니다.
Q. 알고있는 운영체제의 종류를 말해주세요.
A : 윈도우, MacOS, Linux가 있으며, 스마트폰 분야에서는 Android와 iOS가 있습니다.
Q. 임베디드 운영체제에 대해 말해주세요.
A : 임베디드 운영체제는 CPU 성능이 낮고, 메모리 크기가 작은 시스템에 적합합니다. 특정 장치나 시스템에 특화된 용도로 설계됩니다.
Q. 왜 운영체제가 필요한가요?
A. 운영체제는 여러 응용 프로그램이 동시에 실행되면서 발생하는 자원의 경합 문제를 해결하고, 작업의 효율성을 높이기 위해 필요합니다. 또한 운영체제를 통해 추가적인 응용프로그램을 추가하여 사용할 수 있습니다.
Q. 사용자는 운영체제를 통해 어떻게 컴퓨터 자원을 사용할 수 있는가?
A. 시스템 호출(System call)을 통해서 호출할 수 있습니다. 이러한 시스템 호출이 Interface이다. 이를 통해 사용자가 직접적으로 자원에 접근하는 것을 방지하고, 안전하게 자원을 사용하도록 합니다.
Q: 운영체제의 주요 역할은 무엇인가요?
A: 운영체제의 역할은 크게 4가지로 나눌 수 있습니다.
첫째, 자원관리를 통해 사용자가 원활하게 작업을 할 수 있도록 돕습니다.
둘째, 자원보호를 통해 악의적인 사용자나 미숙한 사용자로부터 자원을 보호합니다.
셋째, 하드웨어 인터페이스( 드라이버 )를 통해 다양한 하드웨어 장치의 사용을 지원합니다.
넷째, 사용자 인터페이스 제공을 통해 사용자가 운영체제를 편리하게 사용하도록 지원합니다.
Q: 일괄 작업 시스템(Batch Processing System)의 특징은 무엇인가요?
A: 일괄 작업 시스템은 1950년대에 등장했으며, 진공관을 전선으로 연결했던 초창기 컴퓨터가 IC 칩으로 발전하면서 나타났습니다. 천공카드 리더와 라인 프린터를 사용하였고, 모든 작업을 한꺼번에 처리해야 하며, 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능했습니다.
Q: 대화형 시스템(Interactive System)에 대해 설명해주세요.
A: 대화형 시스템은 1960년대에 키보드와 모니터가 등장하면서 개발되었습니다.
이 시스템에서는 프로그램 실행 도중에 사용자로부터 입력을 받을 수 있었고, 사용자에게 중간 결과값을 보여줄 수 있었습니다. 이로 인해 프로그램의 실행 흐름을 바꾸는 것이 가능해졌고, 문서 편집기나 게임과 같은 다양한 종류의 응용 프로그램을 만들 수 있게 되었습니다.
Q: CPU 집중작업과 입출력 집중작업에 대해 설명해주세요.
A: CPU 집중작업은 일괄작업 시스템에서 주로 보았던 작업으로, 대부분의 작업이 계산 작업이었습니다. 이는 CPU만을 사용하는 작업을 의미합니다. 반면에 입출력 집중작업은 대화형 시스템에서 생겨났으며, 대부분의 작업시간을 주변장치의 입력과 출력에 사용합니다. 이러한 작업은 동영상 플레이어나 데이터베이스 같은 프로그램에서 주로 볼 수 있습니다.
Q: 시분할 시스템(time sharing system)이란 무엇인가요?
A: 시분할 시스템은 여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 컴퓨팅 시스템을 말합니다. CPU 사용시간을 잘게 쪼개어 작업들에 나누어주는 방식으로, 모든 작업이 동시에 처리되는 것처럼 보입니다. 이때 잘게 나뉜 시간 한 조각을 타임 슬라이스(time slice) 또는 타임 퀀텀(time quantum)이라고 합니다.
Q: 시분할 시스템(time sharing system) 의 장점과 단점은 무엇인가요?
A: 시분할 시스템의 장점은 한번에 여러 작업을 처리할 수 있다는 점입니다. 단점은 여러 작업을 동시에 처리하기 위한 추가 작업이 필요하다는 점과 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못한다는 점입니다. 이 때문에 실시간 시스템(real-time system)이 필요한 경우에는 시분할 시스템이 적합하지 않을 수 있습니다.
Q: 분산 시스템(distributed system)이란 무엇인가요?
A: 분산 시스템은 네트워크 상에 분리되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템을 말합니다. 기존의 대형 컴퓨터에 버금가는 계산 능력을 가진 시스템을 구축하는 데 사용됩니다.
Q: 클라이언트/서버 시스템의 특징은 무엇인가요?
A: 클라이언트/서버 시스템은 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중구조로 이루어져 있습니다. 이 구조는 서버에서 모든 요청을 처리하기 때문에 서버 과부하가 발생할 수 있지만, 요청과 응답이 명확하게 나뉘어 있어서 관리가 용이합니다.
Q: P2P (Peer-to-Peer) 시스템이란 무엇인가요?
A: P2P(Peer-to-Peer) 시스템은 네트워크에 연결된 모든 컴퓨터가 동등한 위치에 있고, 각각이 클라이언트와 서버의 역할을 동시에 수행할 수 있는 분산 네트워크 시스템을 말합니다. 이 시스템은 중앙 서버의 부하를 줄이고, 네트워크의 효율성을 높이는 데 기여합니다.
Q: P2P (Peer-to-Peer) 시스템의 예시 중 하나인 메신저는 어떻게 작동하나요?
A: 메신저에서 P2P 기술을 사용하면, 사용자가 로그인하고 서버에서 인증 및 출석 정보를 받은 후에는 서버를 거치지 않고 사용자 간에 직접 채팅을 하거나 데이터를 전달할 수 있습니다.
Q: 서버가 없는 P2P 시스템이란 무엇이고 예시는?
A: 서버가 없는 P2P 시스템은 서버 없이 사용자 간에 직접 데이터를 주고받는 시스템입니다. 비트코인의 블록체인이 대표적인 예시입니다.
Q: 커널(Kernel)이란 무엇인가요?
A: 커널(Kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것을 의미합니다.
Q: 인터페이스(Interface)란 무엇인가요?
A: 인터페이스(Interface)는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 하는 시스템입니다.
Q: 시스템 호출(System Call)이란 무엇인가요?
A: 시스템 호출(System Call)은 커널이 자신을 보호하기 위해 만든 인터페이스입니다. 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단합니다. 따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 합니다. 이를 통해 사용자나 응용 프로그램의 잘못된 동작이나 악의적인 행동에 의해 컴퓨터 자원이 훼손되는 것을 방지합니다.
Q: API와 SDK의 차이점은 무엇인가요?
A: API(Application Programming Interface)는 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스입니다. 반면에, SDK(System Developer's Kit)는 프로그램 개발자를 위해 API 및 API 사용 메뉴얼 뿐만 아니라 프로그램 개발에 필요한 코드 편집기와 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 도구를 말합니다.
Q: 드라이버(driver)란 무엇인가요?
A: 드라이버는 커널과 하드웨어의 인터페이스를 담당하는 소프트웨어입니다. 컴퓨터 하드웨어의 종류가 다양하기 때문에 운영체제가 많은 하드웨어를 다 사용할 수 있는 환경을 제공하려면 각 하드웨어에 맞는 프로그램을 직접 개발해야 합니다. 이를 위해 하드웨어 제작자가 소프트웨어를 만들어 제공하는데, 이를 디바이스 드라이버라고 부릅니다.
Q: 커널의 주요 역할은 무엇인가요?
A: 커널은 운영체제의 핵심 기능을 담당하며, 그 주요 역할은 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 그리고 프로세스 간 통신(IPC, Inter-Process Communication) 관리 등입니다.
Q: 단일형 구조 커널(monolithic architecture kernel)이란 무엇인가요?
A: 단일형 구조 커널은 초창기의 운영체제 구조로, 커널의 핵심기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있는 것을 의미합니다. 이는 프로그램에서 main()에 모든 기능을 구현한 형태와 유사하며, 이로 인해 모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능하게 됩니다. 하지만, 유지보수가 및 기능추가가 어렵습니다.
Q: 계층형 구조 커널(layered architecture kernel)이란 무엇인가요?
A: 계층형 구조 커널은 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현하는 방식입니다. 이로 인해 버그나 오류를 쉽게 처리할 수 있게 되며, 오류가 발생했을 때 전체 커널을 고치는 것이 아니라 해당 계층만 따로 수정하면 되기 때문에 디버깅이 쉽습니다.
Q: 마이크로 구조 커널(micro architecture kernel)이란 무엇인가요?
A: 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공하며, 커널의 구조를 살펴보면 다른 커널에 비해 많은 부분이 사용자 영역에 구현되어 있습니다. 이로 인해 각 모듈은 독립적으로 작동하며, 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않습니다. 가볍고 이식성이 높아 CPU 용량이 적은 시스템에도 적용이 가능합니다.
Q: 가상머신(Virtual Machine)이란 무엇인가요?
A: 가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램입니다. 가상머신을 통해, 개발자는 하나의 코드만 작성하면 여러 운영체제에서 동일하게 실행할 수 있습니다. 가상머신을 사용하면 호환성이 높아지지만, 응용 프로그램이 가상머신을 거쳐서 작동하기 때문에 실행 속도가 느려질 수 있다는 단점도 있습니다.
'스터디 > 운영체제' 카테고리의 다른 글
[스터디][운영체제] Chapter 06. 교착 상태 (0) | 2024.02.04 |
---|---|
[스터디][운영체제] Chapter 05. 프로세스 동기화 (0) | 2024.01.28 |
[스터디][운영체제] Chapter 04. CPU 스케줄링 (0) | 2024.01.28 |
[스터디][운영체제] Chapter 03. 프로세스와 스레드 (0) | 2024.01.14 |
[스터디][운영체제] Chapter 02.컴퓨터의 구조와 성능 향상 (0) | 2024.01.14 |