Linux 질의응답
2025. 6. 10. 14:38

 

 

 

 

 

 

 

 

 

1. 폰 노이만 구조와 컴퓨터 발전

문제: 초창기 컴퓨터는 어떤 구조로 작동했으며, 폰 노이만 구조의 특징은 무엇인가? 입출력장치가 포함되며 컴퓨터는 어떤 방식으로 진화했는가?

답변: 초기 컴퓨터는 회로를 직접 바꾸는 방식이었지만, 폰 노이만 구조에서는 프로그램을 메모리에 저장해 실행할 수 있게 되었음. 이를 ‘프로그램 내장형 구조’라고 하며, 이후 컴퓨터는 더 유연하고 효율적으로 발전했음. 입출력 장치도 천공카드에서 키보드, 터치스크린, VR 등 다양한 방식으로 발전해왔음.

 

 

2. 어셈블리어의 특징

문제: 어셈블리어가 하드웨어에 종속적인 이유와, 고급 언어와의 주요 차이점을 설명하세요.

답변: 어셈블리어는 기계어를 사람이 조금 더 이해하기 쉽게 만든 언어임. CPU에 따라 명령어가 달라서 특정 하드웨어에 종속됨. 반면 고급언어는 다양한 환경에서 사용할 수 있는 이식성이 강한 언어임.

 

 

3. 프로그램이란?

문제: "프로그램"이란 무엇이며, 컴퓨터에서 어떤 역할을 하는가?

답변: 컴퓨터가 수행할 작업을 순서대로 지시하는 명령어들의 집합. 우리가 사용하는 모든 소프트웨어는 프로그램에 기반함.

 

 

4. 유닉스와 멀틱스의 등장 배경

문제: 멀틱스(MULTICS)와 유닉스(UNIX)는 어떤 배경과 필요에 의해 개발되었는가?

또한 ‘동기’ 실행 방식과 ‘비동기/시분할 시스템’의 차이점을 설명하시오.

답변: 멀틱스는 여러 사용자가 하나의 컴퓨터를 함께 쓰기 위해 만든 대형 운영체제임. 유닉스는 이를 간단하고 효율적으로 개선해 만든 시스템임. 또한, 동기 방식은 하나씩 실행하는 방식이고, 시분할 방식은 여러 작업을 동시에 처리하는 것처럼 나눠 실행하는 방식임.

 

 

5. 유닉스와 C언어의 관계

문제: 유닉스가 C언어와 어떤 관계를 맺고 있으며, C언어가 운영체제 개발에서 갖는 장점은 무엇인가?

또한 POSIX와 ANSI/ISO C 표준, C 표준 라이브러리란 무엇인지 각각 설명하시오.

답변: 유닉스는 처음엔 어셈블리어로 작성되었지만, 나중에 C언어로 다시 작성됐음. C언어는 빠르고 이식성이 높아 운영체제 개발에 적합했음. POSIX는 유닉스 시스템의 호환성을 위한 표준이고, ANSI/ISO C는 C언어 문법을 정한 국제 표준임. C 표준 라이브러리는 자주 쓰는 함수들을 모아놓은 기본 도구임.

 

 

6. 리눅스의 개념과 상업적 성공

문제: 리눅스는 어떤 철학과 개발 방식으로 만들어졌는가?

또한 상업적으로 성공할 수 있었던 이유와 대표 사례를 설명하시오.

답변: 리눅스는 유닉스를 기반으로 한 오픈소스 운영체제로, 누구나 자유롭게 수정하고 배포할 수 있다는 특징을 가짐. 이러한 개방성과 유연성 덕분에 기업들은 리눅스를 커스터마이징하여 서버, 스마트폰, 임베디드 시스템 등 다양한 분야에 상업적으로 활용했음. 특히 구글의 안드로이드도 리눅스 커널을 기반으로 하고 있다는 점은 상업적 성공의 대표 사례임. 리눅스는 C 언어로 개발되어 높은 이식성과 효율성을 갖고 있으며, 이는 다양한 하드웨어 플랫폼에서 리눅스가 널리 사용될 수 있었던 핵심 요소임.

 

 

7. GNU와 GCC

문제: GNU 프로젝트의 목적과, GCC(GNU Compiler Collection)의 역할을 설명하시오.

답변: GNU 프로젝트는 1980년대 자유 소프트웨어 운동의 일환으로 시작되었으며, 비유닉스 상업 소프트웨어에 대한 대안으로 '자유롭게 사용할 수 있는 운영체제'를 만들기 위해 출범했음. 이 프로젝트의 핵심 도구 중 하나가 바로 GCC(GNU Compiler Collection)임. GCC는 C를 포함한 여러 언어를 컴파일할 수 있는 컴파일러로, 리눅스를 비롯한 다양한 시스템에서 오픈소스 소프트웨어의 빌드와 실행을 가능하게 함. 이로 인해 GNU와 GCC는 오픈소스 생태계의 기반이자 중심 역할을 하고 있음.

 

 

8. 컴파일러 환경 구분

문제: MSVC, MinGW, WSL 각각의 특징과 차이점을 설명하시오.

답변: MSVC는 마이크로소프트에서 제공하는 공식 Windows용 C/C++ 컴파일러로, 비주얼 스튜디오 환경에 최적화되어 있음. 반면 MinGW는 Windows에서 GCC 기반의 컴파일러를 사용할 수 있도록 만든 환경으로, 리눅스 스타일의 빌드 도구도 함께 활용할 수 있지만 일부 POSIX 기능은 지원하지 않음. WSL은 Windows Subsystem for Linux의 줄임말로, Windows에서 리눅스 환경을 직접 실행할 수 있게 해주며, 리눅스용 GCC를 그대로 사용할 수 있다는 장점이 있음. 각각의 환경은 개발자 목적에 따라 선택되며, 개발 효율성과 호환성 측면에서 차이가 있음.

 

 

9. 빌드와 실행

문제: 빌드(Build)와 실행(Execution)의 차이점은 무엇이며, 각각의 과정은 어떻게 되는가?

답변: '빌드(Build)'는 소스 코드를 기계가 이해할 수 있는 실행 파일로 변환하는 과정임. 이 과정에서는 컴파일과 링킹이 포함되며, 최종적으로 .exe나 .out과 같은 실행 파일이 생성됨. '실행(Execution)'은 이렇게 만들어진 실행 파일을 실제로 컴퓨터에서 동작시키는 단계임. 예를 들어, main.c 파일을 컴파일하여 main.exe로 만든 후, 이를 더블 클릭하거나 명령어로 실행하는 것이 실행 과정임. 이 두 단계는 소프트웨어 개발에서 명확히 구분되며, 각각의 역할을 이해하는 것이 중요함.

 

 

10. VS Code 개발 환경 구축

문제: VS Code를 활용하여 C 프로그램을 개발하려면 어떤 확장 프로그램 설치 및 환경 설정이 필요한가?

또한 소스코드 작성 → 빌드 → 저장 → 실행까지의 과정을 설명하시오.

답변: VS Code에서 C 프로그램을 개발하려면 먼저 C/C++ 확장 프로그램을 설치해야 함. 이 확장 기능은 코드 자동 완성, 오류 표시, 디버깅 등을 도와줌. 빠른 실행을 원한다면 Code Runner 확장도 함께 설치하면 편함. 그리고 컴파일을 위해선 MinGW나 Build Tools 같은 컴파일러가 필요함.
개발 과정은 작성, 저장, 빌드, 실행 순으로 이루어짐. 먼저 .c 파일을 만들어 코드 작성부터 시작함. 작성한 코드는 반드시 저장해야 이후 빌드에 반영됨. 그다음 터미널에서 gcc 파일명.c -o 파일명.exe 명령어로 컴파일을 수행하면 실행 파일이 생성됨. 마지막으로 이 실행 파일을 명령어로 실행하면 프로그램이 동작함. 이 흐름은 실제 개발에서도 기본이 되는 구조로, tasks.json 같은 설정 파일을 활용하면 빌드와 실행 과정을 자동화할 수도 있음.

 

 

 

 

 

 

 

 

 

 

 

미리보기용
eull
eull
eull 님의 블로그 입니다.