기초 리눅스 API Vol.1 (1)

Erdos·2025년 6월 1일

LINUX/UNIX

목록 보기
1/8
post-thumbnail

정말 좋은 책이고, 깊은 내용을 담은 책은 시작하는 것부터 애를 먹는데 이 책이 좀 그러했다.
책 제목도 무척 긴데, 원서 이름은 다소 심플하게 The Linux Programming Interface이다. 책은 무척 두껍다. 하하
아주 차근차근 조금씩.. 발췌하면서 정리할 예정이다.

ABOUT


☕1차적으로 읽으려는 부분

-- 프로세스 위주로
[Vol.1]
1~5장까지는 가볍게 읽기
6장 프로세스
24장 프로세스 생성
25장 프로세스 종료
26장 자식 프로세스 감지
27장 프로그램 실행
28~31장 읽기

-- 파이프란?
[Vol.2]
7장 파이프와 FIFO 정독

프로세스와 함께 커널과 운영체제가 어떤 식으로 동작하는지 개략적으로 이해해보자!! 😹


1장 역사와 표준

리눅스의 철학: 사용자 컴퓨팅을 위한 자유(freedom in their computing)

Free software means that the software's users have freedom.
(The issue is not about price.)
We developed the GNU operating system so that users can have freedom in their computing.

출처: https://www.gnu.org/philosophy/philosophy.html

꽤 멋있는 말이라고 생각한다.🧐

2장 기본 개념

2.1 핵심 운영체제: 커널

운영체제를 표현한 그림
그림출처

  • 컴퓨터 자원을 관리하는 가장 중요한 소프트웨어와 그에 따른 command-line inpterpreter, 그래픽 사용자 인터페이스, 파일 유틸리티, 편집기 등 표준 소프트웨어 도구로 구성된 전체 패키지
  • 좁은 의미로 컴퓨터 자원(CPU, RAM, 디바이스)를 관리하고 할당하는 가장 중요한 소프트웨어 = kernel
  • 커널 없이도 프로그램은 실행할 수 있지만, 커널이 있기 때문에 다른 프로그램을 아주 쉽게 작성하고 사용할 수 있다. 이는 커널이 제한된 컴퓨터 자원을 관리하는 소프트웨어 계층을 제공하기 때문.

커널이 하는 일

  1. 프로세스 스케쥴링:
    • 리눅스는 선점형 멀티태스킹 운영체제(preemptive multitasking)
    • 멀티태스킹: 여러 프로세스(실행 중인 프로그램)가 동시에 메모리에 존재하면서 cpu를 사용할 수 있음
    • 선점형: 어떤 프로세스가 cpu의 사용권을 받고 얼마나 오랫동안 쓸지를 결정하는 규칙 → 커널 프로세스 스케쥴러에 의해 결정됨
  2. 메모리 관리
  3. 파일 시스템 제공: 파일 생성, 검색, 갱신, 삭제 등 파일 시스템을 제공한다.
  4. 프로세스 생성과 종료: 새로운 프로그램을 메모리에 올리고, 실행에 필요한 자원을 제공한다. → process, 프로세스가 실행을 마치면 커널은 프로세스가 사용하던 자원을 회수해서 나중에 다른 프로세스가 쓸 수 있게 해준다.
  5. 디바이스 접근: 프로그램에게 디바이스 접근을 위한 간단하고 표준화 된 인터페이스를 제공함과 동시에 각 디바이스에 대한 여러 프로세스의 접근 중재
  6. 네트워크: 사용자 프로세스를 대신해서 네트워크 메시지(packet)을 전송하고 받는다.
  7. 시스템 호출 api 제공: 프로그램은 system call을 이용해 커널에게 다양한 작업을 요청할 수 있음

2.2 셸

  • 사용자의 명령을 읽고 적절한 프로그램을 실행하도록 설계된 특수 목적 프로그램
  • 명령 인터프리터(command interpreter)

셸의 종류

  1. sh(bourne shell): Steve Boure이 작성. 유닉스 7판의 표준 쉘.

  2. csh(C shell): Bill Joy가 작성한 쉘. 이 쉘의 여러 흐름 제어 구문이 c 프로그래밍 언어와 닮아서 지어젔다고 한다.

  3. ksh(Korn shell): David Korn이 sh후계자로 작성한 쉘.

  4. bash(Bourne again shell): sh를 GNU 프로젝트에서 다시 구현한 것. 리눅스에서 가장 널리 쓰이는 쉘이다.

  5. zsh: zsh는 bash, ksh, tcsh의 일부 기능을 포함하여 수많은 개선 사항이 갖추어진 확장형 본 셸. 커스텀이 비교적 자유롭다(oh-my-zsh).

[복기]

  • 커널: 운영체제의 핵심 부분
    • 하드웨어와 직접적인 소통
    • 프로그램(프로세스)이 하드웨어를 직접 제어하지 못하게 하고, 안정적이고 안전하게 하드웨어를 관리한다
  • 쉘: 사용자와 커널 사이에서 명령을 중계하는 프로그램
    • 사용자가 입력한 명령어를 해석(파싱)해서 커널에 전달한다
    • 명령어를 입력받는 인터페이스

함께 읽기 좋은 자료: 리눅스 커널(운영체제) 강의노트

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글