개발/코딩자율학습단

[코딩자율학습단 13기] 1일차, 리눅스 소개

codesparkling 2025. 3. 15. 18:18

커리큘럼

1장 리눅스 소개

1.1 운영체제란?

운영체제는 컴퓨터나 스마트폰 등의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어이다. 운영체제는 한 컴퓨터에서 여러 애플리케이션이 동작할 수 있도록 도와주는 소프트웨어라고 할 수도 있다.

커널

하드웨어를 초기화해서 사용할 수 있도록 하는 운영체제의 핵심이다. 메모리와 프로세스를 관리하고, 네트워크 연결 등의 주요 기능을 제공한다.

장치 드라이버

하드웨어 장치를 초기화하고 운영체제와의 통신을 담당하는 소프트웨어다. 여기서 장치는 크래픽 카드, LAN 카드, 마우스 키보드 등 컴퓨터와 연결되어 사용하는 모든 기기를 의미한다.

장치 드라이버가 중요한 이유

개인적인 경험인데, 노트북에 우분투를 설치해서 사용하려고 한 적이 있다. 어느 정도 사용은 되는데, 노트북 하드웨어가 리눅스를 지원하는데 최적화가 되어 있지 않아서 드라이버 문제인지, WIFI를 인식하는데 복불복이었다. 어떨 때는 연결이 되고, 어떨 때는 되지 않는 현상이 발생했다. 이외에도 하드웨어가 정상적으로 동작할 수도 있고 안할 수도 있는 상황이 계속 발생하여, 결국 우분투를 밀고 윈도우를 설치했다.

파일 시스템

파일 시스템의 종류로는 여러 가지가 있다. 윈도우에서 사용하는 NTFS, 리눅스에서 사용되는 EXT4, 맥에서 사용되는 APFS, 그 외에도 XFS, ZFS 등의 예시가 있다. 가장 쉽게 확인할 수 있는 방법은 USB 포맷이다. 포맷 설정에서 파일 시스템을 어떤 것으로 설정할 것인지 선택할 수 있는 창을 볼 수 있다.

운영체제의 역할

프로그램을 실행해주고, 그 프로그램이 동시에 여러 개가 동작할 수 있도록 멀티 태스킹을 도와주는 것 모두 운영체제의 역할이다. 멀티 태스킹을 위해 여러 프로세스 스케줄링 알고리즘을 이용하는데 이에 대해서는 컴퓨터 구조나 운영체제에 대해 공부하면 나오는 내용이라 여기서 자세하게 언급하지는 않겠다.

그 외에도 IO 작업이 끝나면 발생하는 IO 인터럽트와 같은 인터럽트의 처리, 가상 메모리와 스와핑 등을 활용하는 메모리 관리를 하기도 하며, UI(유저 인터페이스)를 제공하기도 한다. 여기서 UI는 GUI와 CLI를 모두 포함하며 GUI는 그래픽을 통해 마우스 클릭 등으로 사용자가 직관적으로 상호작용하는 것을 의미하고, CLI는 텍스트 기반으로 커맨드라인을 사용하여 사용자와 상호작용하는 것을 의미한다.

1.2 리눅스 배포판

리눅스는 1991년 리누스 토르발즈가 만든 운영체제이다. 최초로 리누스 토르발즈가 만들었을 때는 네트워크 시스템, 파일 시스템 등이 없고, 리눅스 커널 만 존재하는 형태였다. 리눅스 운영체제에 대해서는 리눅스 배포판이 정확한 표현이라 한다.

그래서 리눅스 배포판이 뭐냐고 물어보면, OS의 목적에 맞게 리눅스 커널 + 여러 프로그램을 묶어 제공하는 패키지를 의미한다. 데비안 계열, 레드햇 계열, 아치 계열 등 여러 계열이 있고 그 하위에 세분화된 OS가 우리가 아는 리눅스 배포판이다. 예를 들어, 데비안 계열로는 라즈비안(라즈베리파이 OS)나 데비안을 기반으로 한 우분투가 있고 레드햇으로는 CentOS, Rocky 등이 있다.

이런 배포판 마다 각자 추구하는 방향이 다르다. 예를 들어, 데비안 계열은 안정성을 중심으로 개발된다. 그래서 2013년에는 ISS에서 사용되는 노트북들이 윈도우에서 데비안으로 변경되기도 했다. 우분투는 데비안을 기반으로 하지만 사용자 친화적이고 사용자 경험을 향상시키는데 초점을 맞추어 데비안 보다는 새로운 기능 도입 속도가 빠르다. 정리하면, 데비안은 철저한 테스트와 검증을 거쳐 매우 안정적인 시스템을 제공하는 것을 최우선으로 하며, 이러한 안정성 때문에 ISS의 시스템에도 채택되었다. 반면 우분투는 데비안의 안정성을 기반으로 하되, 더 최신의 소프트웨어와 기능을 빠르게 제공하면서 일반 사용자들이 쉽게 사용할 수 있는 환경을 만드는 데 초점을 맞추고 있다.

1.3 리눅스의 쓰임과 학습 이유

  • 서버
    • IT 서비스를 구성할 때는 여러 서버를 사용하는데, 이 때 설치되는 운영체제가 대부분 리눅스이다.
  • 클라우드 컴퓨팅
  • 임베디드 시스템
    • 제한적인 자원으로 인해 하드웨어 성능이 PC에 비해 떨어진다. 이런 환경에서도 성능을 보장하기 위해 리눅스를 사용한다.
  • 모바일 기기
    • 안드로이드는 리눅스를 기반으로 만들어진 OS이다.

대부분의 개발자들에게 필수적으로 사용된다. 특히 BE, 데브 옵스 등 직무 담당자들은 잘 알아야 한다.

단어 정리

  • 운영 체제
    • 컴퓨터나 스마트폰 등의 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어
  • 부팅
    • 컴퓨터가 운영체제를 초기화하는 과정
  • 응용 소프트웨어(애플리케이션 소프트웨어)
    • 어떤 목적에 맞는 기능을 제공하는 소프트웨어, 응용 프로그램 혹은 애플리케이션으로 부르는 소프트웨어가 속한다.
  • 커널
    • 운영체제의 핵심 부분으로 메모리와 프로세스를 관리하고, 하드웨어 드라이버를 사용할 수 있도록 도와주는 것
    • 커널이 제공하는 기능을 커널의 서브 시스템이라고도 한다.
    • 초기화?
      • CPU, 메모리, 주변 장치 등을 인식해서 사용할 수 있는 상태로 만드는 것
  • 장치 드라이버
    • 하드웨어 장치를 초기화하고 운영체제와의 통신을 담당하는 소프트웨어
    • 그래픽 카드, LAN 카드, 마우스, 모니터 등의 모든 장치
  • 파일 시스템
    • 파일을 저장 장치에 저장하고 관리하는 소프트웨어
    • 파일 이름, 생성 날짜, 크기 등의 데이터를 저장하고 파일에 대한 읽기/쓰기/실행 권한을 제어
  • 프로세스
    • 프로세스는 실행 중인 프로그램의 인스턴스로, 메모리에 로드되어 실행되는 프로그램을 의미
  • 네트워크 스택
    • 네트워크 프로토콜을 구현한 소프트웨어로, 네트워크 트래픽을 처리한다.
  • 네트워크 프로토콜
    • 네트워크에서 데이터를 주고 받기 위해 사용하는 통신 규약

학습 3줄 후기

  1. 운영체제에 대해 가볍게 리마인드할 수 있었다.
  2. 중얼중얼 해보면서 내가 아는 지식인지 다시 확인하는 계기가 되었다.
  3. 내 경험과 엮어보면서 학습할 수 있도록 생각했다.