2장도 마찬가지로 저자가 홈페이지에서 제공하는 답 위주로 적었고 내용 보충이 필요한 경우 내가 생각하는 답을 추가하였다.
1. 시스템 콜의 목적은 무엇인가?
시스템 콜은 사용자 수준 프로세스가 운영체제의 서비스를 요청할 수 있는 것에 목적이 있습니다.
2. 명령 인터프린터의 목적은 무엇인가? 통상 커널에포함되지 않는 이유는 무엇인가?
명령 인터프린터는 사용자 또는 명령 파일에서 명령을 읽고 일반적으로 하나 이상의 시스템 호출로 변환하여 실행합니다. 명령 인터프리터는 변경될 수 있으므로 일반적으로 커널의 일부가 아닙니다.
3. UNIX 시스템에서 새 프로세스를 시작하기 위해 명령 인터프린터나 셸에서 어떤 시스템 콜이 실행되어야 하는가?
새 프로세스를 시작하려면 fork() 시스템 호출과 exec() 시스템 호출을 수행해야 합니다. fork() 호출은 현재 실행 중인 프로세스를 복제하는 반면 exec() 호출은 호출 프로세스에 대해 다른 실행 파일을 기반으로 하는 새 프로세스를 오버레이합니다.
4. 시스템 프로그램의 목적은 무엇인가?
시스템 프로그램은 유용한 시스템 호출의 묶음으로 생각할 수 있습니다. 사용자가 일반적인 문제를 해결하기 위해 자체 프로그램을 작성할 필요가 없도록 사용자에게 기본 기능을 제공합니다.
5. 시스템 설계 시 계층화된 접근 방식의 주요 장점은 무엇인가? 계층화된 접근 방식의 단점은 무엇인가?
모듈식 설계의 모든 경우와 마찬가지로 모듈식 방식으로 운영 체제를 설계하면 몇 가지 장점이 있습니다. 변경 사항은 모든 섹션을 건드리지 않고 시스템의 제한된 섹션에만 영향을 미치기 때문에 시스템을 디버그하고 수정하기가 더 쉽습니다. 정보는 필요한 곳에만 보관되고 정의되고 제한된 영역 내에서만 액세스할 수 있으므로 해당 데이터에 영향을 미치는 모든 버그는 특정 모듈 또는 계층으로 제한되어야 합니다. 계층화된 접근 방식의 주요 단점은 운영 체제에서 제공하는 서비스를 얻기 위해 다른 계층을 통과하는 오버헤드로 인해 성능이 저하된다는 것입니다.
6. 운영체제에서 제공하는 5가지 서비스를 나열하고 각 서비스가 사용자에게 편의를 제공하는 방법을 설명하라. 사용자 수준 프로그램이 이러한 서비스를 제공할 수 없는 경우는 언제인가? 여러분의 답을 설명하라.
a. 프로그램 실행 : 운영 체제는 파일의 내용(또는 섹션)을 메모리에 로드하고 실행을 시작합니다. 사용자 수준 프로그램이 CPU 시간을 적절하게 할당하도록 신뢰할 수 없습니다.
b. 입/출력 운영 : 디스크, 테이프 및 기타 장치와 매우 낮은 수준에서 통신해야 합니다. 사용자는 장치와 그 장치에서 수행할 작업만 지정하면 되며 시스템은 해당 요청을 장치 또는 컨트롤러별 명령으로 변환합니다. 사용자 수준 프로그램은 액세스 권한이 있어야 하는 장치에만 액세스하고 그렇지 않은 경우에만 액세스하도록 신뢰할 수 없습니다.
c. 파일 시스템 조작 : 파일 생성, 삭제, 할당, 이름 지정에는 사용자가 수행하지 않아도 되는 세부 사항이 많이 있습니다. 디스크 공간 블록은 파일에서 사용되며 추적해야 합니다. 파일을 삭제하려면 이름 파일 정보를 제거하고 할당된 블록을 해제해야 합니다. 적절한 파일 액세스를 보장하기 위해 보호 기능도 확인해야 합니다. 사용자 프로그램은 보호 방법에 대한 준수를 보장할 수 없으며 사용 가능한 블록만 할당하고 블록을 할당 해제하도록 신뢰할 수 없습니다.
d. 통신 : 시스템 간에 메시지를 전달하려면 메시지가 정보 패킷으로 변환되어 네트워크 컨트롤러로 전송되고 통신 매체를 통해 전송되고 대상 시스템에서 재조립되어야 합니다. 패킷 주문 및 데이터 수정이 이루어져야 합니다. 다시 말하지만, 사용자 프로그램은 네트워크 장치에 대한 액세스를 조정하지 않거나 다른 장치로 향하는 패킷을 수신할 수 있습니다.
e. 오류검출 : 오류 감지는 하드웨어 및 소프트웨어 수준 모두에서 발생합니다. 하드웨어 수준에서 모든 데이터 전송을 검사하여 데이터가 전송 중에 손상되지 않았는지 확인해야 합니다. 미디어의 모든 데이터는 미디어에 기록된 이후 변경되지 않았는지 확인해야 합니다. 소프트웨어 수준에서 미디어는 예를 들어 할당된 저장소 블록과 할당되지 않은 저장소 블록 수가 장치의 총 수와 일치하는지 여부와 같은 데이터 일관성을 확인해야 합니다. 여기서 오류는 종종 프로세스와 무관하므로(예: 디스크의 데이터 손상) 모든 유형의 오류를 처리하는 전역 프로그램(운영 체제)이 있어야 합니다. 또한 운영 체제에서 오류를 처리할 때 시스템에서 발생할 수 있는 모든 오류를 포착하고 수정하기 위해 프로세스에 코드가 포함될 필요가 없습니다.
7. 일부 시스템은 운영체제를 펌웨어에 저장하고 다른 시스템은 디스크에 저장하는 이유는 무엇인가?
임베디드 시스템과 같은 특정 장치의 경우 파일 시스템이 있는 디스크를 해당 장치에 사용하지 못할 수 있습니다. 이 경우 운영 체제를 펌웨어에 저장해야 합니다.
8. 부팅할 운영체제를 선택할 수 있도록 시스템을 설계하는 방법은 무엇인가? 부트스트랩 프로그램이 해야할 일은 무엇인가?
Windows와 세 가지 다른 Linux 배포판(예: RedHat, Debian 및 Ubuntu)을 모두 실행하려는 시스템을 고려하십시오. 각 운영 체제는 디스크에 저장됩니다. 시스템 부팅 중에 특수 프로그램(부트 매니저라고 함)이 부팅할 운영 체제를 결정합니다. 즉, 처음에 운영 체제로 부팅하지 않고 부팅 관리자가 시스템 시작 중에 먼저 실행됩니다. 부팅할 시스템을 결정하는 것은 이 부팅 관리자입니다. 일반적으로 부팅 관리자는 시스템 시작 중에 인식될 수 있도록 하드 디스크의 특정 위치에 저장해야 합니다. 부팅 관리자는 종종 사용자에게 부팅할 시스템 선택을 제공합니다. 부트 관리자는 일반적으로 사용자가 선택하지 않은 경우 기본 운영 체제로 부팅하도록 설계되었습니다.
'컴퓨터 공학·과학 이론 > 운영체제(Operating System)' 카테고리의 다른 글
[운영체제] 3장 프로세스 - 연습문제 해답 (2) | 2022.06.06 |
---|---|
[운영체제] seL4 소개 (0) | 2021.11.17 |
[운영체제] 1장 서론 - 연습문제 해답 (0) | 2021.11.04 |
댓글